При внедрении и эксплуатации системы 1C:ERP Управление предприятием пользователи часто сталкиваются с ситуацией, которая на первый взгляд кажется ошибкой программы. Речь идет о дублировании задач на согласование для одного и того же сотрудника. Рассмотрим типичный сценарий: руководитель или финансовый директор получает задачу согласовать документ ЗаявкаНаРасходованиеДС, успешно выполняет её, но спустя мгновение (или на следующем этапе) система снова присылает ему задачу по тому же самому документу.
Это вызывает раздражение у топ-менеджмента и вопросы к службе поддержки. Однако, в большинстве случаев, это не ошибка кода, а корректная (с точки зрения логики системы), но, возможно, неоптимально настроенная работа механизма бизнес-процессов. Давайте подробно разберем, почему так происходит и как мы можем настроить систему, чтобы избежать лишних кликов.
Первое, что нам необходимо усвоить для решения этой проблемы: механизмы согласования в 1C:ERP (и в других конфигурациях на базе БСП или 1С:Документооборота) оперируют понятием Роль исполнителя, а не конкретными фамилиями физических лиц.
Давайте проанализируем, как система строит маршрут. В настройках бизнес-процесса указаны этапы. Например:
Если инициатор заявки — сотрудник финансового отдела, то его непосредственным руководителем является Финансовый директор. При этом тот же Финансовый директор выполняет роль ответственного за бюджет (финансовый контроль).
Что видит система?
Для системы это две разные сущности согласования: одна подтверждает целесообразность затрат (нужен ли нам этот товар/услуга), вторая подтверждает наличие бюджета (есть ли у нас деньги).
Давайте систематизируем причины, по которым один и тот же человек вынужден нажимать кнопку "Согласовано" несколько раз, и разберем каждую из них.
Как мы уже упомянули, это самая частая причина. В сообщении на форуме верно подмечено: пользователь может быть одновременно и руководителем инициатора (куратором), и обязательным согласующим по маршруту. Если маршрут линейный и не содержит проверок на дубликаты, задачи будут приходить последовательно.
В 1C:ERP широко используется адресация задач на Группы пользователей. Рассмотрим пример:
В системе есть роль СогласующийПлатежи. В эту роль (группу) включены три сотрудника, включая нашего руководителя. Маршрут настроен так, что сначала идет согласование руководителем ЦФО (персонально), а затем — группой казначейства. Если руководитель входит и туда, и туда, он получит задачу дважды: сначала лично, потом как участник группы.
В системе реализован функционал назначения заместителей. Если руководитель уходит в отпуск, он назначает заместителя. Однако бывают ситуации коллизий:
В подсистеме Казначейства есть разделение на согласование по существу (зачем платим) и контроль лимитов (в бюджете ли мы). Если заявка идет "сверх лимита", может включаться дополнительная ветка согласования. Если ответственный за сверхлимитные заявки — тот же человек, что и основной согласующий, система потребует отдельного подтверждения именно факта превышения бюджета.
Прежде чем менять настройки, нам нужно точно понять, на каких этапах происходит дублирование. Для этого выполним следующие действия в режиме 1С:Предприятие.
Откройте проблемный документ ЗаявкаНаРасходованиеДС. Нам необходимо обратиться к отчету о прохождении процесса.
Если вы видите две записи с одним пользователем, но разными названиями этапов (например, "Согласование руководителем" и "Экономический контроль"), значит, гипотеза о пересечении ролей верна.
Теперь рассмотрим, как мы можем исправить ситуацию, чтобы облегчить жизнь руководителю.
В современных конфигурациях 1С (ERP, Управление Холдингом, Документооборот) разработчики предусмотрели специальную опцию для таких случаев. Она позволяет системе автоматически считать этап пройденным, если пользователь уже согласовал документ на одном из предыдущих шагов.
Нам необходимо проверить настройки подсистемы согласования:
Если глобальная настройка недоступна или нежелательна (например, для некоторых документов двойной контроль критически важен), мы можем изменить сам маршрут.
Необходимо зайти в справочник МаршрутыСогласования (или настройки правил обработки заявок). Проанализируйте условия перехода.
Мы можем добавить условие в маршрут. Рассмотрим логику условия на псевдокоде:
Если ИсполнительСледующегоЭтапа = ИсполнительПредыдущегоЭтапа Тогда
// Пропускаем этап создания задачи
ПерейтиНаСледующийШаг();
Иначе
СоздатьЗадачу();
КонецЕсли;
В режиме пользователя это обычно делается через конструктор маршрута, где можно задать условия пропуска этапа. Проверьте, не настроены ли у вас безусловные переходы, которые игнорируют контекст предыдущих виз.
Если дублирование происходит из-за того, что пользователь входит в Роль/Группу, проанализируйте состав исполнителей ролей:
Возможно, стоит исключить конкретного руководителя из общей группы "Казначейство", если он уже согласует заявки как "Финансовый директор". Оставьте в группе рядовых сотрудников, а для директора настройте отдельный этап, если это необходимо.
Двойной приход задачи на согласование заявки в 1C:ERP — это следствие гибкости ролевой модели системы. Система старается быть педантичной и получать подтверждение для каждой функции (административной, финансовой, проектной). Однако для удобства пользователей мы рекомендуем использовать штатные механизмы "схлопывания" повторяющихся согласований или более тонкую настройку условий маршрутизации. Это позволит сэкономить время руководства и снизить негатив при работе с программой.