15.01.2024 Лев Туренко 5575
Веб-сервисы (SOAP) в 1С: Шина

Содержание:

Механизм Web (SOAP) сервисов в системе 1С: Шина представляет собой инструмент для реализации сервисно-ориентированной архитектуры.

         

Сервисно-ориентированная архитектура – это концепция разработки приложений, в которой функциональность представляется в виде независимых сервисов с вызываемыми интерфейсами. Взаимодействие с этими сервисами в определенной последовательности позволяет достичь более сложной бизнес-логики и реализовать различные бизнес-процессы.

         

SOAP-сервисы позволяют системе 1С: Шина обрабатывать входящие SOAP-запросы от информационных систем извне. Обращение к SOAP-сервису происходит при помощи HTTP POST-запроса по конкретному URL-адресу. А SOAP-сообщение передаётся внутри тела запроса.

         

При разработке интеграционной системы 1С: Шина также можно использовать SOAP-сервис для обработки SOAP-сообщений.

         

Для реализации функциональности SOAP-сервиса в 1С: Шина используется элемент проекта под названием «SOAP Сервис». Этот элемент проекта позволяет определить логику обработки SOAP-сообщений в рамках системы 1С: Шина и настроить необходимые взаимодействия с другими системами.    


1.     Клиент Web SOAP сервиса


Система 1С: Шина даёт возможность вызывать Web SOAP сервис извне и удобно обрабатывать полученные ответы. Для этого существует элемент проекта «Клиент Soap Сервиса», который отображён на скриншоте ниже:



Клиент Soap Сервиса

         

Для создания клиента SOAP-сервиса следует создать элемент проекта «Клиент Soap Сервиса» и выбрать у него следующие свойства:

-     Свойство  «UrlПоУмолчанию»  —  URL,  по  которому  по  умолчанию  будет  выполняться  запрос  к SOAP-сервису;

-    Свойство «ВерсияSoap» — версия SOAP,  используемая при формировании  исходящих и интерпретации входящих SOAP сообщений.

         

Например, программный код по выбору свойств будет выглядеть так:


Видэлемента: КлиентSoapCервиса

Ид: f65ac26f-0351-48cd-bc93-751912e05bc1

Имя: КлиентСервисаМагазина

ОбластьВидимости: ВПроекте

UrlПоУмолчанию: http://myserver:9090/applications/S0APservis/api/service

ВерсияSoap: Soap_1_1

         

В проект необходимо загрузить WSDL-описание сервиса: открываем панель «Свойства», где в поле «URL WSDL Soap-сервиса», указываем HTTP-адрес описания сервиса и кликаем по кнопке «Загрузить в проект», как в примере далее:



Загрузить в проект

         

При загрузке будет выполнена генерация типов встроенного языка, соответствующих WSDL-описанию сервиса. В типе клиента с именем элемента проекта будут сгенерированы методы для вызова операций сервиса.   


2.     Имя клиента сервиса 1С SOAP


В среде разработки на основе WSDL, полученного от SOAP-сервиса, будет создан тип «<Имя-клиента-soap-сервиса>». Этот тип содержит методы, которые соответствуют операциям сервиса, и структуры для передачи параметров, и возвращаемых значений. Имя этого типа совпадает с именем элемента проекта.

         

Имена структур данных и методов генерируются на основе описания разных секций WSDL по определённым правилам. Если указанное в WSDL имя не является валидным идентификатором встроенного языка 1С, то имя формируется путём замены непригодных символов на символ подчёркивание. Уникальность имён обеспечивается добавлением в конец увеличивающегося счётчика. Если полученное имя в результате замены будет состоять только из подчеркиваний и цифр, то будет использован префикс в 1С «Structure/Структура» для структуры, «Field/Поле» — для поля структуры, «Method/Метод» — для метода сервиса, «Exception/Исключение» — для исключений, «Enum/Перечисление» — для перечислений.   


3.     Создание типов встроенного языка 1С


Для каждого элемента, описанного в секции 


в типе «КлиентSoapСервиса» создаётся структура. Имя структуры определяется через имя типа в WSDL схеме с учётом вышеуказанных ограничений. Полное имя типа структуры — «<Имя-элемента>.<Имя-cтруктуры>». Для всех элементов и атрибутов, описанных в схемах типов, генерируется поле структуры. Имя поля определяется по имени типа в схеме с учётом вышеуказанных ограничений. Тип поля определяется следующим образом, как отображено в таблице с типами ниже:




Помимо этого, есть ещё два вида ограничений, которые можно наблюдать в таблице, приведённой ниже:




Для каждой операции, описанной в секциях 


в типе будет создано следующее:

• Метод «<ИмяМетодаСервиса>» с именем, сформированным по описанным выше правилам.  Параметры  метода создаются на основе схемы WSDL;

• Обработчик с именем «НастроитьЗаголовкиSoap<ИмяМетодаСервиса>» функционального типа;

• Обработчик с именем «ОбработатьЗаголовкиSoap<ИмяМетодаСервиса>» функционального типа;

• Свойство с именем «ПередЗапросом<ИмяМетодаСервиса>»  функционального типа. Значение свойства — метод, который позволяет настроить свойства HTTP-запроса, выполняемого к сервису при вызове метода «<ИмяМетодаСервиса>»;

• Для SOAP-ошибок, описанных в WSDL, генерируются:

1.    Исключение. Базовый тип — «ИсключениеВызоваSoapСервиса»;

2.  Структура  с  деталями  ошибки.  Имя  структуры  формируется  из  имени  XML-типа  ошибки с постфиксом Detail с учетом правил формирования имён.

         

В общем виде методы, сгенерированные по WSDL описанию, выглядят так, как демонстрируется на примерах ниже:



Здесь «ТипРезультата» — тип структуры, сгенерированной для хранения результата, возвращаемого методом-функцией SOAP-сервиса.   


4.     Обращение к операциям сервиса SOAP


Чтобы вызвать какую-либо операцию сервиса, следует создать экземпляр типа «<Имя-клиента-soap-сервиса>». Он создаётся через такую строку:



В виде параметра конструктору передаётся значение типа «КлиентHttp». В него можно передать все необходимые настройки для выполнения HTTP-запроса 1С, как вариант, следующие настройки:



Если значение параметра «Неопределено», то используется значение типа «КлиентHttp» с настройками по умолчанию, к примеру, следующим образом:



Вызвать операцию SOAP-сервиса можно следующим образом:



Если операция возвращает какие-либо значения, можно получить результат вызова операции так:



Если для операции в сервисе реализована проверка доступа через WSS-токен «UsernameToken», тогда для вызова операции клиенту требуется передать сервису SOAP-заголовок с именем пользователя и паролем. Это можно сделать в обработчике «НастроитьЗаголовкиSoap<ИмяМетодаСервиса>».


При вызове метода, соответствующего операции внешнего SOAP-сервиса, происходит следующее:

1. Переданные в метод значения параметров сериализуются, после чего формируется секция «Body»  SOAP сообщения;

2. При наличии, вызывается обработчик  «НастроитьЗаголовкиSoap<ИмяМетодаСервиса>».  Формируется секция «Headers «SOAP сообщения;

3. Сформированное SOAP сообщение помещается в тело HTTP запроса 1С;

4. При  наличии,  вызывается обработчик «ПередЗапросом<ИмяМетодаСервиса>», которому  передаётся подготовленный HTTP запрос 1С;

5. Выполняется HTTP запрос, и происходит синхронный вызов метода SOAP-сервиса;

6. При наличии, вызывается обработчик «ОбработатьЗаголовкиSoap<ИмяМетодаСервиса>».  Он возвращает значение, которое будет записано в свойство «Заголовки» результата типа «ОтветSoap»;

7. В зависимости от кода  возврата и наличия в ответе  секции «Fault», в вызывающий  код  возвращается результат или выбрасывает исключение. При наличии в SOAP-ответе секции «Fault» выбрасывается исключение «ИсключениеВызоваSoapСервиса». В ином случае выбрасывается «ИсключениеHttp».   


5.     Клиент сервиса SOAP 1С


В проекте модуль, расширяющий тип «<Имя-клиента-soap-сервиса>», называется модулем клиента SOAP-сервиса. Он исполняется на сервере и выглядит так, как показано на скриншоте ниже:



Модуль клиента SOAP-сервиса

         

Дополнительно для каждой операции сервиса в модуле клиента SOAP-сервиса можно создать:

• Обработчик записи заголовка SOAP-сообщения. 

Это опциональный обработчик для настройки  элемента «Header» исходящего SOAP-сообщения для клиента сервиса версии SOAP 1С. В качестве параметров получает значения, переданные при вызове метода «<ИмяМетодаСервиса>». Данный обработчик вызывается автоматически перед выполнением запроса к SOAP сервису. В теле метода можно вызывать метод «ЗаписьSoap_1_1(2).СоздатьЗаголовок» таким образом:



• Обработчик чтения заголовка SOAP-сообщения. 

Это опциональный обработчик для чтения заголовков  ответа SOAP-сервиса в виде XML. Вызывается платформой при получении ответа от SOAP-сервиса. Элемент «Header» ответа сервиса передаётся в метод через параметр «Заголовок», это происходит так, как демонстрируется в примере программного кода ниже:



Специалист компании ООО "Кодерлайн"

Лев Туренко

Наши проекты

Внедрение 1С:Управление торговлей в оптово-розничной компании «Ална-Байк»
ИП Титов Виктор Сергеевич «Ална-Байк»

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

- Управление складами;
- Управление заказами поставщиков;
- Управление зак...

ЗАО «Инвестгеосервис»
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Объемно-календарное планирование производства Автоматизация бизнес-проце...

ООО ХДМ Рус
ООО ХДМ Рус

Отрасль:
Торговля

Внедренное типовое решение:
1С:Управление торговлей

Управление цепочками поставок Оптовая торговля ...

Автоматизация складских операций на базе «1С:Предприятие 8. WMS Логистика. Управление складом»
ОАО «Фрейт Линк»

Отрасль:
Логистика и грузоперевозки

Внедренное типовое решение:
1С:Управление холдингом

Реализовали разработку уникального модуля «Интернет-магазины» на базе прог...

Внедрение блока бухгалтерского учета «1С:Управление производственным предприятием»
ОАО «Издательство «Просвещение»

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление производственным предприятием

Бухгалтерский учет:
- Завершение периода;
- Регламентированная отчетнос...

Автоматизация контроля исполнительской дисциплины на базе ПП «1С:Документооборот 8 ПРОФ»
ООО «ФСК Лидер»

Отрасль:
Строительство и девелопмент

Внедренное типовое решение:
1С:Документооборот 8 ПРОФ

- Делопроизводство;
- Учет и хранение документов;
- Учет и контроль исполне...

ФГОУ ВПО «Горский государственный аграрный университет»
ФГОУ ВПО «Горский государственный аграрный университет»

Отрасль:
Образование

Внедренное типовое решение:
1С:Колледж ПРОФ

- Управление персоналом и кадровый учет (HRM):
Кадровый учет
Управление об...

Автоматизации бизнес-процессов учета и планирования на базе «1С:ERP Управление предприятием 2.0»
ООО «Буровая сервисная компания «ГРАНД»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

- Создание полноценной управленческой системы взамен существующих
- Внедр...

ООО «Еврорадиаторы»
ООО «Еврорадиаторы»

Отрасль:
1С:ERP 2.4

Внедренное типовое решение:

Специалисты «Кодерлайн» помогли перенести базу из текущей системы «1С:ERP 2.2» ...

Внедрение ПП "1С:Управление небольшой фирмой 8 ПРОФ" в ООО «Шокостайл»
ООО «Шокостайл»

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Планирование п...

АО «Аэроклуб»
АО «Аэроклуб»

Отрасль:
Услуги в области делового туризма

Внедренное типовое решение:
1С:Бухгалтерия 8 КОРП

Проведение серии интервью с руководством и ключевыми специалистами Разраб...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение