Как автоматически стартовать задачу на ознакомление заместителю при назначении задачи руководителю

Бизнес-аналитик 1С v8.3 (Управляемые формы) 1С:Документооборот
← На главную

В крупных организациях часто возникает потребность в автоматическом дублировании задач. Например, когда руководитель подразделения получает задачу на исполнение, его заместитель должен автоматически получить задачу на ознакомление с этим же документом. В системе 1С:Документооборот это можно реализовать несколькими способами — от настройки стандартных шаблонов до программной доработки. Рассмотрим подробно каждый из вариантов, проанализируем их преимущества и пошагово разберем логику настройки.

Вариант 1: Использование комплексных процессов и условий маршрутизации

Это наиболее гибкий стандартный способ, не требующий изменения конфигурации. Основная идея заключается в том, чтобы создать Шаблон комплексного процесса, который будет анализировать состав исполнителей и на основании этого запускать дополнительные ветки.

Разберем этот способ по шагам:

  1. Создание структуры процесса: В шаблоне комплексного процесса мы создаем два действия. Первое — «Исполнение» (для руководителей), второе — «Ознакомление» (для заместителей).
  2. Настройка порядка выполнения: Мы можем настроить их выполнение параллельно (одновременно) или последовательно. Если заместитель должен видеть задачу сразу, выбираем параллельный старт.
  3. Применение условий маршрутизации: Чтобы задача заместителю не улетала «всем подряд», для действия «Ознакомление» необходимо настроить Условие маршрутизации. Мы создаем условие на языке 1С, которое проверяет: «Есть ли среди исполнителей первого этапа конкретный руководитель?».

Рассмотрим пример логики условия маршрутизации (код на встроенном языке):


// Проверяем, есть ли в списке исполнителей текущего процесса роль "Руководитель"
Результат = Ложь;
Для Каждого СтрокаИсполнителей Из Объект.Исполнители Цикл
    Если СтрокаИсполнителей.Исполнитель = Справочники.РолиИсполнителей.НайтиПоНаименованию("Руководитель подразделения 1") Тогда
        Результат = Истина;
        Прервать;
    КонецЕсли;
КонецЦикла;

Проанализируем ситуацию: если у вас десятки подразделений, создание условий для каждой пары «начальник-зам» вручную может быть трудоемким. В этом случае мы рекомендуем использовать вложенные комплексные процессы, как упоминалось в сообщениях форума, или переходить к более автоматизированным методам, описанным ниже.

Вариант 2: Правила автозаполнения участников

Если вы используете комплексные процессы, можно задействовать механизм автозаполнения. Выясним, как это упрощает жизнь администратору системы. Вместо того чтобы жестко прописывать роли в шаблоне, мы можем создать Правило автозаполнения.

Для этого:

  1. Добавляем дополнительный реквизит к справочнику Структура предприятия или Роли исполнителей под названием «Заместитель для ознакомления».
  2. В правиле автозаполнения пишем алгоритм, который берет всех исполнителей из этапа «Исполнение», находит их заместителей через созданный реквизит и добавляет их в этап «Ознакомление».

Этот метод хорош тем, что при смене кадров вам не нужно менять шаблоны процессов — достаточно обновить информацию в справочнике ролей или подразделений.

Вариант 3: Использование скриптов в шаблонах (для версии КОРП)

В версии 1С:Документооборот КОРП существует мощный инструмент — скрипты в шаблонах бизнес-процессов. Рассмотрим подробнее, как их применить для нашей задачи. В настройках шаблона (например, процесса «Исполнение») на вкладке «Дополнительно» можно прописать обработчик события При старте.

Посмотрим на пример кода, который может быть размещен в таком скрипте:


// Скрипт при старте процесса Исполнение
ЗамРоль = Справочники.РолиИсполнителей.ПустаяСсылка();
Если Исполнитель = Справочники.РолиИсполнителей.НайтиПоНаименованию("Руководитель подразделения 1") Тогда
    ЗамРоль = Справочники.РолиИсполнителей.НайтиПоНаименованию("Зам. руководителя подразделения 1");
КонецЕсли;

Если ЗначениеЗаполнено(ЗамРоль) Тогда
    // Создаем новый процесс Ознакомление программно
    БП_Ознакомление = БизнесПроцессы.Ознакомление.СоздатьБизнесПроцесс();
    БП_Ознакомление.Дата = ТекущаяДата();
    БП_Ознакомление.Предметы[0].Предмет = Объект.Предметы[0].Предмет; // Копируем документ
    БП_Ознакомление.Автор = ПользователиИнформационнойБазы.ТекущийПользователь();
    БП_Ознакомление.Наименование = "Ознакомление с документом (авто)";
    
    // Добавляем заместителя в список исполнителей
    НоваяСтрока = БП_Ознакомление.Исполнители.Добавить();
    НоваяСтрока.Исполнитель = ЗамРоль;
    
    БП_Ознакомление.Записать();
    БП_Ознакомление.Старт();
КонецЕсли;

Такой подход позволяет полностью автоматизировать процесс, не заставляя пользователя выбирать сложные шаблоны. Система сама поймет, кому нужно отправить «фоновую» задачу.

Вариант 4: Программная доработка (Подписка на событие)

Если стандартных настроек шаблонов недостаточно, или задачи стартуются пользователями вручную без использования шаблонов, мы можем прибегнуть к расширению конфигурации. Проанализируем техническую суть этого метода.

Необходимо создать подписку на событие ПриЗаписи для объектов типа БизнесПроцессОбъект.Исполнение или БизнесПроцессОбъект.Ознакомление. В обработчике подписки мы проверяем свойство Состояние. Если состояние изменилось на «Стартован», мы запускаем наш алгоритм поиска заместителей и создания для них задач.

Важный момент: При использовании этого метода нужно быть осторожным, чтобы не зациклить систему (чтобы создание задачи заместителю не вызывало создание еще одной задачи и так далее). Для этого используем проверку ОбменДанными.Загрузка или анализируем автора/наименование процесса.

Вариант 5: Функционал «Ассистенты» в 1С:Документооборот 3.0

В новой версии программы (3.0) появился штатный механизм Ассистенты. Выясним, как он решает нашу задачу. В настройках полномочий можно указать, что один пользователь является ассистентом другого.

Особенности работы ассистентов:

Если же политика предприятия требует именно наличия отдельной задачи в отчетах для контроля ознакомления самого заместителя, то следует вернуться к вариантам с комплексными процессами или скриптами.

Итоги и рекомендации

Подводя итог, выберем оптимальный путь решения. Если ваша компания использует версию КОРП, наиболее элегантным решением будет скрипт в шаблоне процесса. Он позволяет избежать «раздувания» количества шаблонов и условий маршрутизации. Если же вы работаете в версии ПРОФ, то единственным надежным способом без программирования будет использование Комплексного процесса с четко заданными условиями старта для каждого этапа.

Помните, что использование Ролей (где один человек — одна роль) — это правильная стратегия, так как она позволяет не перенастраивать процессы при увольнении или переводе сотрудников. Достаточно просто поменять пользователя, привязанного к роли Заместитель руководителя, и автоматика продолжит работать корректно.

← На главную