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