Какой веб-сервис вызывается в 1С:ERP со стороны 1С:Документооборот 3.0 для обновления статусов документов и как его отладить?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

При переходе с интеграции с «1С:Документооборотом 2.1» на «1С:Документооборот 3.0» разработчики часто сталкиваются с изменением архитектуры взаимодействия. Если ранее 1С:ERP сама периодически опрашивала ДО регламентным заданием (модель Pull), то в новой редакции на базе «Библиотеки интеграции с 1С:Документооборотом» (БИД) реализован механизм обратных вызовов (модель Push / Callback). Как только в ДО 3.0 согласуется документ или меняется состояние процесса, система Документооборота незамедлительно обращается к ERP через SOAP веб-сервис.

Рассмотрим подробнее, какой веб-сервис задействован в этой цепочке, почему обращение сложно обнаружить в стандартном Журнале регистрации и как правильно настроить отладку серверного кода в 1С:ERP.

Определение веб-сервиса и метода интеграции

Проанализируем состав объектов конфигурации 1С:ERP, входящих в подсистему интеграции с Документооборотом. Для приема оповещений и пакетов изменений используется штатный веб-сервис:

Имя веб-сервиса: DMILService

Имя вызываемой операции: PutChangesRequest (или DMILPutChangesRequest в зависимости от версии WSDL-описания библиотеки БИД).

Именно в точку входа этой операции ДО 3.0 передает сведения об изменении состояний документов. Внутри этого сервиса полученный пакет распаковывается и передается в обработчики интеграции для изменения реквизитов и статусов документов учетной системы.

Формат передачи данных: почему XML завернут в двоичные данные

При анализе входящих параметров в операции PutChangesRequest разработчики обращают внимание на то, что данные передаются не в виде открытого XML-текста, а упакованы в ДвоичныеДанные (тип xs:base64Binary в SOAP-пакете).

Выясним причину такого решения разработчиков фирмы «1С». Это штатный платформенный подход, который решает сразу две ключевые задачи:

  1. Сжатие трафика: сериализованный XML перед передачей упаковывается алгоритмом сжатия (Deflate/Zip), что существенно уменьшает объем передаваемых по сети пакетов при интенсивном документообороте.
  2. Экранирование и целостность: упаковка в Base64 исключает конфликты парсинга служебных символов и спецсимволов XML внутри тела SOAP-конверта.

Внутри программного модуля веб-сервиса распаковка и чтение данных производятся с помощью стандартных объектов работы с потоками и архивами:


// Пример распаковки и чтения данных в методе веб-сервиса
ДвоичныеДанныеПакета = ВходящиеДанные;
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("zip");
ДвоичныеДанныеПакета.Записать(ИмяВременногоФайла);

ЧтениеАрхива = Новый ЧтениеZipФайла(ИмяВременногоФайла);
Для Каждого ЭлементАрхива Из ЧтениеАрхива.Элементы Цикл
    ЧтениеАрхива.Извлечь(ЭлементАрхива, КаталогВременныхФайлов(), РежимВосстановленияПутейФайловZIP.НеВосстанавливать);
КонецЦикла;
ЧтениеАрхива.Закрыть();

Почему вызов веб-сервиса не виден в Журнале регистрации

Платформа 1С:Предприятие по умолчанию не фиксирует в Журнале регистрации (ЖР) события вызова методов веб-сервисов, если в самом коде не прописана процедура ЗаписьЖурналаРегистрации(). Кроме того, веб-сервис выполняется в рамках отдельного сеанса, который быстро стартует и сразу завершается.

Разберем по шагам, как настроить фильтр Журнала регистрации в 1С:ERP, чтобы увидеть хотя бы факт подключения сторонней базы:

  1. Откроем Журнал регистрации в 1С:ERP и нажмем кнопку Установить отбор.
  2. В поле Приложение выберем значение Веб-сервис или WS-соединение.
  3. В поле Пользователь укажем того пользователя информационной базы, под которым база ДО 3.0 авторизуется в ERP (эти учетные данные прописаны в Документообороте в настройках подключения к внешней системе).
  4. Применим отбор и проверим события Сеанс. Начало и Сеанс. Аутентификация в моменты изменения статусов.

Пошаговая настройка отладки веб-сервиса в 1С:ERP

Чтобы отладчик в Конфигураторе 1С:ERP остановился на точке останова внутри процедуры веб-сервиса DMILService, необходимо подготовить серверную среду. Пройдем этот путь последовательно.

  1. Включение режима отладки на сервере: служба 1C:Enterprise Server должна быть запущена с флагом отладки (параметр -debug для TCP или соответствующий запуск службы отладки для HTTP).
  2. Коррекция дескриптора публикации (default.vrd): перейдем в каталог публикации информационной базы ERP на веб-сервере (IIS или Apache). Откроем файл default.vrd и убедимся, что там включена отладка. Секция должна содержать параметры подключения отладчика:
    
    <!-- Пример для отладки по протоколу TCP -->
    <debug enable="true" protocol="tcp" url="tcp://ИмяСервераОтладки:1560" />
    
  3. Настройка автоматического подключения в Конфигураторе: в Конфигураторе 1С:ERP откроем меню Отладка -> Подключение -> Настройка... и обязательно установим флаг Web-сервисы (или Web-сервисы на сервере). Если этот флаг не установлен, отладчик проигнорирует кратковременный входящий запрос.
  4. Установка точки останова: откроем дерево метаданных ERP, найдем Общие -> Web-сервисы -> DMILService, откроем его модуль и поставим точку останова в самом начале тела функции PutChangesRequest.

Поведение системы при сбоях и повторные попытки

Посмотрим на поведение связки в нештатных ситуациях. Если база 1С:ERP недоступна (например, веб-сервер остановлен, возникла ошибка соединения или отладка заблокировала выполнение по тайм-ауту), «1С:Документооборот 3.0» не теряет изменения.

Пакеты со статусами сохраняются во внутреннюю очередь сообщений ДО (регистр сведений Очередь сообщений обмена с интегрированными системами). Затем фоновое регламентное задание ДО 3.0 с заданной периодичностью опрашивает очередь и повторяет вызов веб-сервиса DMILService до успешной обработки пакета.

← На главную