При настройке бизнес-процессов в конфигурации 1С:Документооборот часто возникает задача динамического определения исполнителя задачи. Если основной сотрудник отсутствует (находится в отпуске, на больничном или в командировке), система должна автоматически назначить вместо него замещающего или передать задачу соответствующей роли. Рассмотрим подробнее, как корректно реализовать такую логику в коде автоподстановки и избежать распространенных ошибок.
Первая идея, которая часто возникает при решении подобной проблемы — использовать стандартный механизм делегирования прав. Однако разберем ситуацию подробнее и выясним, почему этот подход не работает при создании задач через автоподстановку.
Механизм делегирования прав предназначен для передачи прав доступа: замещающий сотрудник получает возможность видеть и выполнять задачи за отсутствующего колллегу. Но при запуске процесса и формировании задачи алгоритм автоподстановки всё равно вернет исходного сотрудника. Задача будет адресована именно ему, и в отчетах по исполнительской дисциплине ответственным останется первоначальный сотрудник.
Если же требуется, чтобы задача сразу формировалась на другого человека или роль, необходимо явно подменять исполнителя в самом алгоритме автоподстановки.
Для определения статуса сотрудника в конфигурации 1С:Документооборот предусмотрен программный интерфейс работы с отсутствиями. Логика проверки вынесена в общий модуль Отсутствия.
Проанализируем по шагам, как выстроить проверку в коде алгоритма автоподстановки:
Отсутствия проверяем, оформлен ли документ отсутствия на текущую дату или дату запуска процесса.Замещающие и помощники (или соответствующего регистра).При реализации собственного алгоритма в модулях АвтоподстановкиПереопределяемый или ШаблоныБизнесПроцессовПереопределяемый обязательно следует учитывать следующие технологические особенности:
1. Гарантированный возврат исполнителя (Fallback)
Если функция автоподстановки вернет значение Неопределено, пустую ссылку или вызовет необработанную ошибку, процесс остановится. Данная ошибка зафиксируется в регистре сведений Очередь маршрутизации комплексных процессов. В алгоритме обязательно должна быть предусмотрена логика по умолчанию — например, возврат руководителя подразделения или администратора системы, если ни основной сотрудник, ни его заместитель не найдены.
2. Отсутствие рекурсивного замещения
Штатный механизм замещения действует однократно. Если сотрудник А замещает сотрудника Б, но сам в данный момент находится в отпуске и на него оформлено замещение сотрудником В, система не передаст задачу автоматически сотруднику В. Если алгоритму автоподстановки требуется искать конечного исполнителя по всей цепочке замещений, такой поиск необходимо явно реализовать циклом в коде.
3. Ролевая адресация как альтернатива
Вместо возврата конкретного физического лица из автоподстановки можно возвращать роль (с объектами адресации или без). В таком случае задачу увидит и сможет принять в работу любой доступный участник роли, что избавляет от необходимости писать сложную логику проверки отсутствий для каждого отдельного пользователя.