1C8 + SOAP

11.04.13

Интеграция - WEB-интеграция

1C8 + SOAP Три способа работы из 1С с вебсервисами.

Обращение из 1С8 к вебсервисам можно делать разными способами.

Первое, что следует понимать, это то, что 1С посылает запросы (фактически это XML) файлы и получает ответы (обычно это так же XML, но не обязательно, т.к. программа вебпрограммиста отвечает так, как ей вздумается).

Работая с веб сервисом, придется обращаться к документации, которую написал вебразработчик, потому что без этого не получится подготовить адекватный запрос (XML). Примеры таких  запросов с разработчика можно требовать без всяких задних мыслей (ответом станет нечто вроде такого). Имея в руках пример, уже можно его опробовать (пощупать):

strЗапрос равен

< ? xml version="1.0" encoding="UTF-8" standalone="no" ? >

< SOAP-ENV:Envelope xmlns:SOAPSDK1="http://www.w3.org/2001/XMLSchema"

                                    xmlns:SOAPSDK2="http://www.w3.org/2001/XMLSchema-instance"  

                                    xmlns:SOAPSDK3="http://schemas.xmlsoap.org/soap/encoding/"

                                    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">

             < SOAP-ENV:Body>

                           < GetAirportsList xmlns="http://webservices.belavia.by/">

                                   < Language xmlns:SOAPSDK4="http://webservices.belavia.by/">RU< / Language >

                           < / GetAirportsList>

             < / SOAP-ENV:Body >

< / SOAP-ENV:Envelope >

(c текстом XML пришлось повозиться, т.к. не отображался. В кусочках типа < / SOAP-ENV:Envelope > пробелы не нужны)

oXMLHTTP = Новый COMОбъект("MSXML2.XMLHTTP");

стрURL="http://86.57.245.235/TimeTable/Service.asmx?op=GetAirportsList";

oXMLHTTP.open("POST", стрURL, 0);

oXMLHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8");

oXMLHTTP.setRequestHeader("SOAPAction", "http://webservices.belavia.by/GetAirportsList");

oXMLHTTP.send(strЗапрос);

Если oXMLHTTP.Status=200 тогда

                xmlВыборкаAirport = oXMLHTTP.responseXML.SelectNodes("//Airport");

                Для чКК=1 По xmlВыборкаAirport.Length Цикл

                       xmlВеткаAirport = xmlВыборкаAirport.item(чКК-1);

                       спВыбора.Добавить(xmlВеткаAirport.getAttribute("IATA"),"["+xmlВеткаAirport.getAttribute("IATA")+"] "+ xmlВеткаAirport.getAttribute("Name"))

                КонецЦикла;

КонецЕсли;

Как не трудно заметить, для обращения к сервису используется объект MSXML2.XMLHTTP. И нету совсем упоминания о сепециальных механизмах. Этот способ отличается гибкостью.

 

Однако самостоятельное составление запроса (XML-файла) крайне лениво, и хочется как то упростить процесс. Для этого понадобится описание сервиса (к примеру, такое). Это описание потребует от нас некоторого осмысления, в результате которого получится следующий фрагмент:

SOAPN = Новый COMОбъект("MSSoap.SoapClient30");

SOAPN.MSSOAPInit("http://86.57.245.235/TimeTable/Service.asmx?WSDL","OnlineTimeTable", "OnlineTimeTableSoap");

comSafeArray=SOAPN.GetAirportsList("RU");

Для чК=comSafeArray.GetLowerBound(0) по comSafeArray.GetUpperBound(0) Цикл

                    элемент=comSafeArray.GetValue(чК);

                    Если элемент.Length=2 тогда

                              спВыбора.Добавить(элемент.item(0).value,"["+элемент.item(0).value+"] "+ элемент.item(1).value);

                    ИначеЕсли элемент.Length=1 тогда

                              спВыбора.Добавить(элемент.item(0).value,"["+элемент.item(0).value+"] ");

                    КонецЕсли;

КонецЦикла;

На этот раз использован объект MSSoap.SoapClient30. И как известно, он совсем сырой (или, по крайней мере, я не умею это варить). Сложные и путанные строки XML превратились в вызов comSafeArray=SOAPN.GetAirportsList("RU").

Однако 1С пошло на встречу своим верным "друзьям" и наделало разные объекты. Код на 1С8.2 похож на это:

WSОпределение = Новый WSОпределения("http://86.57.245.235/TimeTable/Service.asmx?WSDL");

Service = Новый WSПрокси(WSОпределение, "http://webservices.belavia.by/", "OnlineTimeTable", "OnlineTimeTableSoap" ); cписокXDTO=Service.GetAirportsList("RU").ПолучитьСписок("Airport");

ВсегоАэропортов=cписокXDTO.Количество();

Для чК=0 по ВсегоАэропортов-1 Цикл

          обАэропорт=cписокXDTO.Получить(чК);

          спВыбора.Добавить(обАэропорт.IATA,"["+обАэропорт.IATA+"] "+ обАэропорт.name);

КонецЦикла;

Можно даже положить в конфигурацию описание сервиса, и тогда первые две строки можно заменить на:

Service=WSСсылки.WSСсылка1.СоздатьWSПрокси("http://webservices.belavia.by/", "OnlineTimeTable", "OnlineTimeTableSoap" );

 

Вот так не хитро и не кривляясь можно работать с вебсервисами.

 

 

См. также

Интеграция Альфа Авто 5 / Альфа Авто 6 и AUTOCRM / Инфотек

Сайты и интернет-магазины WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Автомобили, автосервисы Россия Управленческий учет Платные (руб)

Интеграционный модуль обмена между конфигурацией Альфа Авто 5 и Альфа Авто 6 и порталом AUTOCRM. Данный модуль универсален. Позволяет работать с несколькими обменами AUTOCRM разных брендов в одной информационной базе в ручном и автоматическом режиме. Без существенных изменений типовой конфигурации. Проверено с брендами: Интеграция 1С и GEELY Интеграция 1С и HAVAL Интеграция 1С и KIA Интеграция 1С и FORD Интеграция 1С и LADA ГАРАНТИЯ 100% ВНЕДРЕНИЯ!

36000 руб.

03.08.2020    15729    10    17    

11

Интеграция 1С — Битрикс24. Обмен задачами

Сайты и интернет-магазины Интеграция WEB-интеграция Платформа 1С v8.3 Конфигурации 1cv8 Управленческий учет Платные (руб)

Интеграция 1С и Битрикс24. Разработка имеет двухстороннюю синхронизацию 1С и Битрикс24 задачами. Решение позволяет создавать пользователя в 1С из Битрикс24 и наоборот. Данная разработка технически подходит под все основные конфигурации линейки продуктов 1С:Предприятие 8.3 (8.3.18.1289). При приобретении предоставляется 1 месяц бесплатных обновлений разработки. Доступна демо-версия продукта с подключением Вашего Битрикс24

5040 руб.

04.05.2021    17545    6    15    

13

Интеграция с сервисом vetmanager

WEB-интеграция Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бытовые услуги, сервис Платные (руб)

Внешняя обработка разрабатывалась для загрузки документов из Ветменеджер в 1С: Бухгалтерия 3.0

12000 руб.

02.02.2021    16357    42    49    

23

[Расширение] БОР-Навигатор.Культура

Зарплата Бюджетный учет WEB-интеграция Обмен с ГосИС Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бюджетный учет Платные (руб)

Расширение конфигурации, включающее в себя объекты, необходимые для подготовки и сдачи отчета "Штатная численность" системы "БОР-Навигатор.Культура" в программе "1С:Зарплата и кадры государственного учреждения", редакция 3.1.

8400 руб.

01.02.2019    25736    9    0    

7

Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС

Обмен с ГосИС WEB-интеграция Платформа 1С v8.3 Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:Документооборот 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Обработка является альтернативой механизму, разработанному фирмой 1С и заполняющему реквизиты контрагента по ИНН или наименованию. Не требуется действующей подписки ИТС. Вызывается как внешняя дополнительная обработка, т.е. используется, непосредственно, из карточки контрагента. Заполнение по ИНН или наименованию реквизитов контрагента по данным сайта ФНС (egrul.nalog.ru) для БП 2.0, БП 3.0, БГУ 1.0, БГУ 2.0, УТ 10.3, УТ 11.x, КА 1.1, КА 2.x, УПП 1.x, ERP 2.x, УНФ 1.5, УНФ 1.6, УНФ 3.0, ДО 2.1

2400 руб.

28.04.2016    88576    160    215    

318
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. www2000 58 11.04.13 23:59 Сейчас в теме
Soap3 - уже лучше не использовать, начиная с Вин 7 он уже не поддерживается и достать для него адекватную инсталяцию не получится

А так за обзор спасибо. Пока у себя использую первый подход с xml, так как он отлично работает в 7.7 тоже, пожтому можно спокойно переносить логику между платформами.
2. CagoBHuK 32 17.04.13 10:00 Сейчас в теме
WS ссылки - тоже не лучший метод, т.к. не работают с сертификатами (только в 8.3). XMLHTTP - лучший выбор.
3. ryst 10.12.13 15:06 Сейчас в теме
То, что сделано 1С "для друзей" полный отстой. Зачастую сервис успешно проходит тесты различными чекерами на валидность, а с 1С не работает. Не грузится wsdl или вылетают ошибки про обращении к методам сервиса.
В общем как обычно - сделали для галочки. Типа универсальная платформа. Отстой.
4. AllexSoft 10.12.13 15:43 Сейчас в теме
любая инфа по 1C8 + SOAP полезна, за статью однозначно +
А по поводу того что наваяло 1С, думаю должны доделать, ведь они активно развивают работу в модели сервиса, а там без SOAP никуда
5. prodines 107 08.04.15 11:48 Сейчас в теме
Пока непонятно - а как составлять SOAP-запросы из клиента к веб-серверу 1С?
6. ture 606 10.04.15 16:33 Сейчас в теме
(5) prodines, нужно добавлять ссылку на сервис по старому образцу (.Net 2.0). 1Ссы не торопится за инновациями совсем.
7. Pertubator 14.05.15 14:29 Сейчас в теме
То, что 1с посылает запрос по SOAP расписано хорошо. Но можно ли отправить тоже запрос из сервера в 1С?
Например для получения списка сотрудников в ответ.
8. Turn123 18 12.03.16 15:57 Сейчас в теме
(7) Pertubator, Можно, любые методы синхронного обмена. К примеру ты посылаешь значение параметра и в зависимости от параметра возвращаются разные данные или делать два разных метода сервиса. Все зависит от конечной цели
9. fixin 4252 17.05.16 15:00 Сейчас в теме
хороший текст, но оформлен грязновато
10. ХамитоваРайса 22.02.21 18:41 Сейчас в теме
Добрый вечер) А кто-нибудь писал обращение к веб-сервису 1С из VB? Каким образом можно обратиться к веб-сервису 1С из VB?
Оставьте свое сообщение