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 разных брендов в одной информационной базе в ручном и автоматическом режиме.

36000 руб.

03.08.2020    16346    14    18    

15

Интеграция 1С и Битрикс 24 — модуль синхронизации для обмена задачами

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

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

5040 руб.

04.05.2021    18570    10    15    

16

Модуль для обмена "1С:Предприятие 8. УАТ. ПРОФ" с FortMonitor

WEB-интеграция 8.3.8 Конфигурации 1cv8 Автомобили, автосервисы Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Расширение предназначено для конфигурации "1С:Предприятие 8. Управление Автотранспортом. ПРОФ". Функционал модуля: 1. Заполнение регистров сведений по подсистеме "Мониторинг", а именно: события по мониторингу, координаты по мониторингу, пробег и расход по мониторингу, текущее местоположение ТС по мониторингу 2. Заполнение путевого листа: пробег по мониторингу, время выезда/заезда, табличная часть ГСМ, места стоянок по геозонам. 3. Отчеты по данным загруженным в регистры сведений. 4. Предусмотрена автоматическая загрузка данных в фоновом режиме (условия работы данной загрузке читайте в описании товара) Модуль работает без включенной константы по настройкам мониторинга. Модуль формы предоставляется с открытым кодом, общий модуль защищен. Любой заинтересованный пользователь, имеет возможность скачать демо-версию расширения.

22656 руб.

25.05.2021    13146    35    8    

14

Автоматическая загрузка файлов (например, прайс-листов) из электронной почты, FTP, HTTP, их обработка и выгрузка на FTP (на сайт) и для других целей

Прайсы WEB-интеграция Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Автомобили, автосервисы Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Программа с заданным интервалом времени (или по ручной команде) скачивает файлы (например, прайс-листы поставщиков) из различных источников: письма электронной почты, FTP или HTTP-адреса, и сохраняет их в каталог упорядоченной структуры. При этом извлекает файлы из архивов, может переименовывать файлы и менять их формат (csv, xls, txt). Можно настроить выгрузку обработанных файлов на сайт (через FTP-подключение). Программа будет полезна компаниям, у которых есть большое количество поставщиков и/или прайс-листы поставщиков обновляются часто (необязательно прайс-листы, файлы могут быть любого назначения). Собранные таким образом актуальные версии прайс-листов можно выгрузить с помощью программы себе на сайт (или на любой FTP-сервер) или выполнить другие необходимые задачи.

25200 руб.

28.05.2015    85969    26    51    

50
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 608 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 4258 17.05.16 15:00 Сейчас в теме
хороший текст, но оформлен грязновато
10. ХамитоваРайса 22.02.21 18:41 Сейчас в теме
Добрый вечер) А кто-нибудь писал обращение к веб-сервису 1С из VB? Каким образом можно обратиться к веб-сервису 1С из VB?
Оставьте свое сообщение