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