Как автоматически запустить бизнес-процесс 1С:Документооборота из другой конфигурации (УТ, ERP, КА)?

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

При внедрении бесшовной интеграции между учетными системами семейства 1С (например, 1С:Управление торговлей или 1С:ERP) и 1С:Документооборотом часто возникает задача автоматизации рутинных операций. Одна из наиболее востребованных задач — автоматический запуск процессов согласования, утверждения или исполнения непосредственно при записи или проведении документов в учетной системе, минуя необходимость ручного открытия форм пользователем.

В этой статье мы подробно разберем, как уйти от интерактивного взаимодействия и настроить «тихий» автоматический старт бизнес-процессов на стороне 1С:ДО по событиям в вашей основной конфигурации.

Анализ подходов к интеграции

Для начала проанализируем, какие инструменты предоставляет нам Библиотека интеграции с 1С:Документооборотом (БИД), встроенная в современные конфигурации УТ, ERP и КА. В зависимости от бизнес-требований мы можем пойти тремя путями:

  1. Программный интерактивный запуск (на клиенте) — когда система по событию открывает пользователю окно создания процесса.
  2. Полностью автоматический фоновый старт (на сервере через Web-сервис) — абсолютно «тихий» запуск без вывода каких-либо окон на экран.
  3. Использование механизма «Бизнес-событий» (рекомендуемый Low-Code подход) — асинхронный запуск силами самой СЭД на основе переданных данных.

Рассмотрим детально реализацию каждого из этих вариантов.

---

Вариант 1. Программный интерактивный запуск на клиенте

Если ваша задача состоит в том, чтобы упростить жизнь пользователю и при нажатии кнопки или при записи документа в УТ автоматически выводить на экран форму создания бизнес-процесса 1С:ДО с уже заполненным предметом, мы используем клиентские методы БИД.

Для этих целей в системе предусмотрен специализированный общий модуль. Выясним, как использовать процедуру СоздатьБизнесПроцесс. Обратите внимание, что вызов должен происходить в клиентском контексте:


// Пример вызова интерактивного создания бизнес-процесса из формы документа УТ
&НаКлиенте
Процедура ПослеЗаписи(ПараметрыЗаписи)
    
    // Ссылка на текущий документ (например, ЗаказКлиента или ДоговорКонтрагента)
    СсылкаНаОбъект = Объект.Ссылка;
    УникальныйИдентификаторФормы = ЭтотОбъект.УникальныйИдентификатор;
    
    // Вызов стандартного метода интеграции
    ИнтеграцияС1СДокументооборотКлиент.СоздатьБизнесПроцесс(СсылкаНаОбъект, УникальныйИдентификаторФормы);

КонецПроцедуры

Как это работает под капотом: Данный метод обращается к обработке ИнтеграцияС1СДокументооборот и открывает форму СозданиеБизнесПроцесса. Система автоматически проверяет, настроено ли правило интеграции для данного типа документа, создает связанный объект (карточку документа) в 1С:ДО и открывает перед пользователем окно выбора шаблона процесса или сразу форму конкретного процесса, если шаблон предопределен.

---

Вариант 2. Полностью автоматический фоновый старт на сервере

Если бизнес-процесс должен запускаться строго незаметно для пользователя (например, при проведении документа в фоне или при работе регламентного задания), клиентские методы нам не подойдут. Нам потребуется серверный код для работы с веб-сервисами 1С:ДО.

Реализуем этот механизм по шагам:

Шаг 1. Передача объекта-предмета в 1С:ДО. Бизнес-процесс не может существовать без предмета (документа-основания). Сначала мы должны убедиться, что документ из УТ синхронизирован с ДО.


// Серверный код (например, в подписке на событие ПриЗаписи или ОбработкаПроведения)
&НаСервере
Процедура ЗарегистрироватьИСтартоватьПроцессНаСервере(Источник)

    // Проверяем, включена ли интеграция с ДО
    Если Не ИнтеграцияС1СДокументооборот.ДоступенПриемПередачаДанных() Тогда
        Возврат;
    КонецЕсли;

    // Получаем прокси-подключение к веб-сервису ДО
    Прокси = ИнтеграцияС1СДокументооборотПовтИсп.ПолучитьПрокси();
    Если Прокси = Неопределено Тогда
        ВызватьИсключение "Не удалось установить соединение с 1С:Документооборот";
    КонецЕсли;

    // Формируем XDTO-пакет изменений для отправки объекта в 1С:ДО
    XDTOДанныеДокумента = ИнтеграцияС1СДокументооборот.ПолучитьXDTOИзмененийИзОбъекта(Источник);
    
    // Отправляем данные в ДО для создания/обновления связанного документа
    // (Код отправки может варьироваться в зависимости от используемой версии БИД)
    
КонецПроцедуры

Шаг 2. Программная инициация старта процесса через XDTO. После того как карточка документа создана в ДО, отправляется специальный XDTO-запрос на создание процесса по шаблону (например, с использованием типа запроса DMStartProcessRequest). Этот способ требует глубокого понимания схемы XML-пакетов веб-сервиса DMService и высокой квалификации разработчика.

Важное предостережение: Прямой вызов веб-сервисов в момент транзакции записи/проведения документа в УТ ухудшает отказоустойчивость системы. Если веб-сервер ДО будет временно недоступен, транзакция проведения документа в УТ аварийно завершится ошибкой. Именно поэтому мы рекомендуем использовать третий вариант.

---

Вариант 3. Использование механизма «Бизнес-событий» (Рекомендуемый Low-Code подход)

Этот способ позволяет организовать полностью автоматический и асинхронный запуск процессов, не нагружая транзакции в основной базе и не требуя написания сложного кода интеграции.

Разберем этот изящный алгоритм по шагам:

Шаг 1. Настройка правил интеграции в УТ/ERP:

В настройках интеграции с 1С:ДО укажите, что при записи или проведении документа в УТ (например, «Договор с поставщиком») система должна автоматически создать связанный документ в 1С:ДО. БИД сделает это сама в фоновом режиме через механизм очереди отправки, незаметно для пользователя.

Шаг 2. Настройка в 1С:Документооборот:

  1. Перейдем в раздел Настройки -> Настройки программы -> Общие настройки и установим флаг Использовать бизнес-события.
  2. Перейдем в справочник Детекторы бизнес-событий и создадим новый детектор. Настроим его на событие «Создание внутреннего документа» (или создание документа определенного вида, пришедшего из УТ).
  3. Перейдем в форму настроек Правила автозапуска процессов. Создадим новое правило, где свяжем наше бизнес-событие с необходимым шаблоном бизнес-процесса (например, «Согласование договора»).

Результат: Как только документ из УТ автоматически создается в ДО, СЭД фиксирует это событие своим внутренним обработчиком и тут же запускает процесс согласования по настроенному шаблону. Это происходит полностью в фоновом режиме, асинхронно и гарантирует стабильность работы обеих баз.

---

Существенные различия для 1С:Документооборот 2.1 и 3.0

Проанализируем критически важный нюанс архитектуры. Механизмы запуска процессов в версиях 2.1 и 3.0 принципиально отличаются, что влияет на программный код интеграции:

В связи с этим, при интеграции с 1С:ДО 3.0 программный запуск через БИД инициализирует не старт шаблона процесса, а запуск обработки объекта. На стороне интеграции (УТ/ERP) за это отвечает вызов метода:


// Для ДО 3.0 вместо создания процесса используется запуск обработки
ИнтеграцияС1СДокументооборотКлиент.НачатьОбработку(СсылкаНаОбъект, УникальныйИдентификаторФормы);

Этот метод дает команду СЭД начать обработку документа по тем правилам, которые жестко привязаны к его виду внутри самой базы 1С:ДО 3.0.

Резюме

Мы рассмотрели три подхода к интеграции. Для простых сценариев с участием пользователя отлично подходит вызов ИнтеграцияС1СДокументооборотКлиент.СоздатьБизнесПроцесс() (или НачатьОбработку() для версии 3.0). Однако для сложных промышленных решений лучшим выбором будет связка фоновой синхронизации объектов БИД и встроенного механизма Бизнес-событий в 1С:Документообороте, обеспечивающая надежность и простоту сопровождения.

← На главную