В системе 1С:Документооборот 2.1 пользователи часто сталкиваются с ситуацией, когда автоматический старт процесса, настроенный на событие регистрации документа, не срабатывает «мгновенно» или не срабатывает вовсе, если документ был предварительно записан и закрыт. Разберем детально механику работы этого механизма и выясним, как обеспечить стабильный запуск бизнес-процессов.
Прежде всего, нам необходимо осознать, что в версии 2.1 «1С:Документооборот» автоматический запуск процессов работает асинхронно. Это означает, что в момент нажатия кнопки «Зарегистрировать» процесс не создается немедленно в той же транзакции. Вместо этого система создает запись в специальном техническом регистре, которую позже обработает регламентное задание. Проанализируем, почему это важно: если пользователь ожидает немедленного появления задачи, он может ошибочно решить, что система неисправна.
Рассмотрим работу фоновых процессов. В 1С:Документооборот за запуск бизнес-процессов отвечают несколько ключевых регламентных заданий. Если они выключены или зависли, «чуда не произойдет», как выразился автор темы. Проверим состояние следующих заданий:
Убедимся, что данные задания включены и выполняются по расписанию (обычно раз в 1–10 минут). Если нагрузка на сервер большая, время ожидания может увеличиваться.
Для глубокой диагностики ситуации, когда документ зарегистрирован, но процесс не пошел, нам нужно заглянуть «под капот» системы. Перейдем в Функции для технического специалиста (или «Все функции») и найдем регистр сведений ОчередьСтартаПроцессов. Посмотрим на его содержимое в момент возникновения проблемы:
СтартПроцессов.Разберем ситуацию, когда пользователь закрывает документ, а затем возвращается к нему для регистрации. В этот момент состав реквизитов документа может не соответствовать условиям, прописанным в шаблоне процесса. Проанализируем настройки шаблона:
Откроем шаблон бизнес-процесса и перейдем на вкладку Автостарт. Убедимся в следующем:
Если регламентное задание выполняется, но запись из очереди исчезает без создания процесса, причина всегда фиксируется в Журнале регистрации. Выясним причину сбоя, установив фильтр по событию «Ошибка». Ищем записи, связанные с объектами:
БизнесПроцессРегламентноеЗаданиеФоновоеЗаданиеЧасто там можно встретить ошибки прав доступа. Помните, что фоновые задания выполняются от имени специального системного пользователя (или под правами администратора, указанного в настройках). Если у этого пользователя нет прав на чтение конкретного вида документа или доступ к папке, процесс не запустится.
В некоторых случаях бывает полезно проверить программно, как система формирует очередь. Рассмотрим пример кода, который можно использовать во внешней обработке для анализа необработанных записей очереди:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Очередь.ДокументОбъект,
| Очередь.ШаблонПроцесса,
| Очередь.ДатаСобытия
|ИЗ
| РегистрСведений.ОчередьСтартаПроцессов КАК Очередь";
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщить("Документ: " + Выборка.ДокументОбъект + " ожидает запуска по шаблону: " + Выборка.ШаблонПроцесса);
КонецЦикла;
Выясним итоговый порядок действий, если процесс не стартует после «переоткрытия» документа:
Старт процессов вручную через консоль регламентных заданий и посмотрите, исчезнет ли запись из очереди.ОчередьОтложенногоСтартаПроцессов).Соблюдение этих шагов позволит вам локализовать проблему и восстановить корректную работу автоматизации в 1С:Документооборот 2.1.