Как исправить ошибку автоподстановки исполнителей и настроить возврат статусов при интеграции 1С:ERP и 1С:Документооборот

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

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

Проблема №1: Ошибка «Не найдены исполнители для автоподстановки»

Рассмотрим ситуацию: при попытке автоматического запуска бизнес-процесса в 1С:ДО система генерирует критическую ошибку в журнале регистрации следующего вида:

{ОбщийМодуль.БизнесСобытияВызовСервера.Модуль(705)}: Ошибка при вызове метода контекста (Заполнить) БизнесПроцесс.Заполнить(ПараметрыЗаполнения); по причине: Ошибка при выполнении обработчика - 'ОбработкаЗаполнения' ... Не найдены исполнители для автоподстановки 'Заказ поставщику.Ответственный за документ'.

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

Выясняем причины пустого реквизита «Ответственный»

Для успешного решения проблемы нам необходимо проверить всю цепочку передачи данных:

  1. Заполнение реквизита на стороне 1С:ERP. Убедимся, что в самом документе-источнике (например, Заказ поставщику) реквизит Ответственный физически заполнен пользователем. Если поле пустое, интеграция передаст пустое значение.
  2. Настройка правил интеграции (передачи данных). Нам нужно проверить, настроено ли сопоставление полей между ERP и ДО. Если правила обмена не предусматривают перенос реквизита Ответственный из заказа ERP во внутренний документ ДО, карточка в 1С:ДО всегда будет создаваться без ответственного.
  3. Сопоставление пользователей. Пользователи в 1С:ERP и 1С:ДО должны быть сопоставлены в регистре соответствия объектов. Если ответственный в ERP не сопоставлен ни с одним активным пользователем в ДО (или сопоставленный пользователь помечен на удаление), система не сможет записать его в карточку документа.

Корректировка правил интеграции на стороне 1С:ERP

Рассмотрим, как программно предопределить заполнение ответственного или согласующего лица через правила интеграции, если стандартные механизмы не дают результата. Мы можем использовать выражения на встроенном языке для вычисления согласующего лица (менеджера) на основе направления деятельности или подразделения документа. Разберем пример кода, который можно прописать в правилах обмена на стороне ERP:


мСогласующий = Неопределено;

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

Если Не ЗначениеЗаполнено(мСогласующий) Тогда
    мСогласующий = Параметры.Источник.Подразделение.СТ_СогласующийРасходБюджета;
КонецЕсли;

Параметры.Результат = мСогласующий;

Этот алгоритм позволяет гибко определить ответственное лицо еще на этапе выгрузки данных, минимизируя человеческий фактор (например, когда пользователь забыл заполнить направление деятельности в документе ERP).

Рекомендации по предотвращению ошибок автоподстановки в 1С:ДО

Чтобы исключить жесткое падение бизнес-процессов, выполним следующие настройки в 1С:Документооборот:

Проблема №2: Статус согласования не возвращается из 1С:ДО в 1С:ERP

Вторая частая проблема интеграции — ситуация, когда процесс согласования в 1С:ДО успешно завершается, но в 1С:ERP статус документа (например, Состояние согласования) остается неизменным (например, «На согласовании» вместо «Согласован»).

Проанализируем архитектуру этой подсистемы. Обновление реквизитов в ERP на основе данных ДО — это асинхронный процесс, выполняемый через регламентные задания. Давайте разберем по шагам ключевые точки отказа этого механизма.

Шаг 1. Проверка работы регламентных заданий

Синхронизация статусов не происходит мгновенно. Изменение состояния документа в 1С:ДО регистрируется в очереди обмена и передается в ERP. Нам необходимо проверить:

  1. На стороне 1С:Документооборот должно без ошибок выполняться регламентное задание Формирование сообщений обмена для интегрированных систем.
  2. На стороне 1С:ERP должно стабильно работать регламентное задание Интеграция с 1С:Документооборот - Выполнить обмен данными. Откроем журнал регистрации в ERP и убедимся, что это задание завершается успешно, без генерации ошибок.

Шаг 2. Анализ соответствия видов состояний

Частой ошибкой настройки является путаница между различными типами состояний в 1С:ДО. В 1С:ДО у документа есть независимые состояния:

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

Шаг 3. Включение флага обновления в правилах получения

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

Шаг 4. Написание гибкого обработчика статусов на встроенном языке

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


// Пример сопоставления статусов согласования и регистрации
Если Параметры.statusApproval.name = "Согласован" Тогда
    Параметры.Результат = Перечисления.СтатусыЗаказовПоставщикам.Подтвержден;
ИначеЕсли Параметры.statusApproval.name = "Не согласован" Тогда
    Параметры.Результат = Перечисления.СтатусыЗаказовПоставщикам.Отклонен;
ИначеЕсли Параметры.statusApproval.name = "На согласовании" Тогда
    Параметры.Результат = Перечисления.СтатусыЗаказовПоставщикам.НаСогласовании;
ИначеЕсли ЗначениеЗаполнено(Параметры.РегистрацияНомер) Тогда
    // Если документ зарегистрирован, мы также можем считать его согласованным в ERP
    Параметры.Результат = Перечисления.СтатусыЗаказовПоставщикам.Подтвержден;
КонецЕсли;

Использование подобных выражений позволяет обойти любые жесткие ограничения типовой синхронизации и гарантирует корректное обновление статусов документов в ERP при любых изменениях в процессах 1С:Документооборота.

← На главную