Получение данных от SOAP веб-сервиса из 1С 7.7

У нас в компании есть основная база (самописная) 1С 8 в которой хранится информация об всех клиентах, с которыми когда-либо имели дело подразделения компании. Специально обученные люди следят за тем, что бы информация в этой базе была актуальной и не задваивалась.

Кроме основной, есть еще некоторое количество баз (для разных подразделений) которые, при необходимости, получают информацию из основной базы (например, сообщают основной базе ИНН, а в ответ получают всю контактную информацию).

Получение информации происходит при помощи SOAP веб-сервиса запущенного на основной базе.

При разработке все этого встала задача получения данных от SOAP веб-сервиса из базы 1С 7.7 (с «восьмерками», понятно, никаких проблем не было).

Решена данная задача была двумя способами — простым и чуть более сложным.

Простой способ (Clients — название веб-сервиса):

Главное достоинство и главный недостаток данного метода заключается в библиотеке MS SOAP, которая, с одной стороны, предоставляет удобные средства для работы с SOAP веб-сервисами, а с другой — отсутствует в стандартной поставке Windows.

Чуть более сложный способ:

При помощи сниффера был сформирован текст запроса (clients — название веб-сервиса).

После этого запрос отправляется на сервер, а полученный ответ разбирается:

Данный метод, конечно, не так изящен, но не требует установки дополнительных библиотек.

Надеюсь эта запись кому-нибудь поможет и буду рад увидеть другой метод решения данной проблемы.

5 комментариев к “Получение данных от SOAP веб-сервиса из 1С 7.7

  1. «После этого запрос отправляется на сервер»
    Добрый день, во втором случаи, как сформированный запрос вы отправили на сервер ?
    а в 1ом при СоздатьОбъект(«MSSOAP.SoapClient30»); получаю ошибку, вы ЗагружалиВнешнююКомпаненту в 1с ? или просто зарегистрировали mssoup30.dll ? да и где лучше взять эту библиотеку ?

    • Добрый день.
      Я просто скачал и установил Microsoft SOAP Toolkit 3.0 — ничего больше.

      Взял я его по моему тут (хотя могу ошибаться): _http://download.cnet.com/SOAP-Toolkit-3-0-Redistributable/3000-2070_4-10733017.html

  2. Доброго времени суток, пытаюсь по Вашим примерам сделать отправку из 1с 7.7 на Кристалл 10, но что не получается. Оба способа не записывают данные.
    1-й СервисСОАП = СоздатьОбъект(«MSSOAP.SoapClient30»);
    СервисСОАП.MSSoapInit(«http://172.16.10.141:8090/SET-ERPIntegration/SET/WSGoodsCatalogImport?wsdl»);
    СервисСОАП.ConnectorProperty(«AuthUser»,»xxxxxxxx»);
    СервисСОАП.ConnectorProperty(«AuthPassword»,»xxxxxxxx»);
    СервисСОАП.ConnectorProperty(«WinHTTPAuthScheme»,1);

    зп = »
    |
    |<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"&quot; xmlns:plug=""http://plugins.products.ERPIntegration.crystals.ru/"&quot;
    |
    |
    |
    | «+СтрокаРезультат+»
    |
    |
    |
    |»;

    СервисСОАП.getGoodsCatalog.send(зп);
    и второй
    зп = »
    |
    |<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"&quot; xmlns:plug=""http://plugins.products.ERPIntegration.crystals.ru/"&quot;
    |
    |
    |
    | «+СтрокаРезультат+»
    |
    |
    |
    |»;

    об = СоздатьОбъект(«MSXML2.XMLHTTP»);
    об.open(«POST», «http://172.16.10.141:8090/SET-ERPIntegration/SET/WSGoodsCatalogImport?wsdl», 0, «xxxxxx», «xxxxxxx»);
    об.setRequestHeader(«Content-Type», «text/xml; charset=utf-8»);
    об.setRequestHeader(«SOAPAction», «http://172.16.10.141:8090/SET-ERPIntegration/SET/WSGoodsCatalogImport?wsdl»);
    об.send(зп);
    Сообщить(об);
    Может подскажете что я делаю не так

Оставить комментарий