При внедрении бесшовной интеграции между учетными системами семейства 1С (например, 1С:Управление торговлей или 1С:ERP) и 1С:Документооборотом часто возникает задача автоматизации рутинных операций. Одна из наиболее востребованных задач — автоматический запуск процессов согласования, утверждения или исполнения непосредственно при записи или проведении документов в учетной системе, минуя необходимость ручного открытия форм пользователем.
В этой статье мы подробно разберем, как уйти от интерактивного взаимодействия и настроить «тихий» автоматический старт бизнес-процессов на стороне 1С:ДО по событиям в вашей основной конфигурации.
Для начала проанализируем, какие инструменты предоставляет нам Библиотека интеграции с 1С:Документооборотом (БИД), встроенная в современные конфигурации УТ, ERP и КА. В зависимости от бизнес-требований мы можем пойти тремя путями:
Рассмотрим детально реализацию каждого из этих вариантов.
---
Если ваша задача состоит в том, чтобы упростить жизнь пользователю и при нажатии кнопки или при записи документа в УТ автоматически выводить на экран форму создания бизнес-процесса 1С:ДО с уже заполненным предметом, мы используем клиентские методы БИД.
Для этих целей в системе предусмотрен специализированный общий модуль. Выясним, как использовать процедуру СоздатьБизнесПроцесс. Обратите внимание, что вызов должен происходить в клиентском контексте:
// Пример вызова интерактивного создания бизнес-процесса из формы документа УТ
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
// Ссылка на текущий документ (например, ЗаказКлиента или ДоговорКонтрагента)
СсылкаНаОбъект = Объект.Ссылка;
УникальныйИдентификаторФормы = ЭтотОбъект.УникальныйИдентификатор;
// Вызов стандартного метода интеграции
ИнтеграцияС1СДокументооборотКлиент.СоздатьБизнесПроцесс(СсылкаНаОбъект, УникальныйИдентификаторФормы);
КонецПроцедуры
Как это работает под капотом: Данный метод обращается к обработке ИнтеграцияС1СДокументооборот и открывает форму СозданиеБизнесПроцесса. Система автоматически проверяет, настроено ли правило интеграции для данного типа документа, создает связанный объект (карточку документа) в 1С:ДО и открывает перед пользователем окно выбора шаблона процесса или сразу форму конкретного процесса, если шаблон предопределен.
---
Если бизнес-процесс должен запускаться строго незаметно для пользователя (например, при проведении документа в фоне или при работе регламентного задания), клиентские методы нам не подойдут. Нам потребуется серверный код для работы с веб-сервисами 1С:ДО.
Реализуем этот механизм по шагам:
Шаг 1. Передача объекта-предмета в 1С:ДО. Бизнес-процесс не может существовать без предмета (документа-основания). Сначала мы должны убедиться, что документ из УТ синхронизирован с ДО.
// Серверный код (например, в подписке на событие ПриЗаписи или ОбработкаПроведения)
&НаСервере
Процедура ЗарегистрироватьИСтартоватьПроцессНаСервере(Источник)
// Проверяем, включена ли интеграция с ДО
Если Не ИнтеграцияС1СДокументооборот.ДоступенПриемПередачаДанных() Тогда
Возврат;
КонецЕсли;
// Получаем прокси-подключение к веб-сервису ДО
Прокси = ИнтеграцияС1СДокументооборотПовтИсп.ПолучитьПрокси();
Если Прокси = Неопределено Тогда
ВызватьИсключение "Не удалось установить соединение с 1С:Документооборот";
КонецЕсли;
// Формируем XDTO-пакет изменений для отправки объекта в 1С:ДО
XDTOДанныеДокумента = ИнтеграцияС1СДокументооборот.ПолучитьXDTOИзмененийИзОбъекта(Источник);
// Отправляем данные в ДО для создания/обновления связанного документа
// (Код отправки может варьироваться в зависимости от используемой версии БИД)
КонецПроцедуры
Шаг 2. Программная инициация старта процесса через XDTO. После того как карточка документа создана в ДО, отправляется специальный XDTO-запрос на создание процесса по шаблону (например, с использованием типа запроса DMStartProcessRequest). Этот способ требует глубокого понимания схемы XML-пакетов веб-сервиса DMService и высокой квалификации разработчика.
Важное предостережение: Прямой вызов веб-сервисов в момент транзакции записи/проведения документа в УТ ухудшает отказоустойчивость системы. Если веб-сервер ДО будет временно недоступен, транзакция проведения документа в УТ аварийно завершится ошибкой. Именно поэтому мы рекомендуем использовать третий вариант.
---
Этот способ позволяет организовать полностью автоматический и асинхронный запуск процессов, не нагружая транзакции в основной базе и не требуя написания сложного кода интеграции.
Разберем этот изящный алгоритм по шагам:
Шаг 1. Настройка правил интеграции в УТ/ERP:
В настройках интеграции с 1С:ДО укажите, что при записи или проведении документа в УТ (например, «Договор с поставщиком») система должна автоматически создать связанный документ в 1С:ДО. БИД сделает это сама в фоновом режиме через механизм очереди отправки, незаметно для пользователя.
Шаг 2. Настройка в 1С:Документооборот:
Результат: Как только документ из УТ автоматически создается в ДО, СЭД фиксирует это событие своим внутренним обработчиком и тут же запускает процесс согласования по настроенному шаблону. Это происходит полностью в фоновом режиме, асинхронно и гарантирует стабильность работы обеих баз.
---
Проанализируем критически важный нюанс архитектуры. Механизмы запуска процессов в версиях 2.1 и 3.0 принципиально отличаются, что влияет на программный код интеграции:
В связи с этим, при интеграции с 1С:ДО 3.0 программный запуск через БИД инициализирует не старт шаблона процесса, а запуск обработки объекта. На стороне интеграции (УТ/ERP) за это отвечает вызов метода:
// Для ДО 3.0 вместо создания процесса используется запуск обработки
ИнтеграцияС1СДокументооборотКлиент.НачатьОбработку(СсылкаНаОбъект, УникальныйИдентификаторФормы);
Этот метод дает команду СЭД начать обработку документа по тем правилам, которые жестко привязаны к его виду внутри самой базы 1С:ДО 3.0.
Мы рассмотрели три подхода к интеграции. Для простых сценариев с участием пользователя отлично подходит вызов ИнтеграцияС1СДокументооборотКлиент.СоздатьБизнесПроцесс() (или НачатьОбработку() для версии 3.0). Однако для сложных промышленных решений лучшим выбором будет связка фоновой синхронизации объектов БИД и встроенного механизма Бизнес-событий в 1С:Документообороте, обеспечивающая надежность и простоту сопровождения.