Как настроить ознакомление с документом для всех исполнителей роли в 1С:Документооборот?

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

Приветствуем вас! При автоматизации совместной работы в программе 1С:Документооборот (будь то старая редакция 1.3, популярная 2.1 или современная 3.0) специалисты часто сталкиваются с одной и той же неочевидной логикой работы бизнес-процессов. Типичная ситуация: создается процесс Ознакомление, в качестве адресата выбирается Роль исполнителя (например, «Бухгалтерия» или «Юристы»), но стоит только первому сотруднику из этой роли нажать кнопку «Ознакомился», как задача мгновенно исчезает из списков задач всех остальных коллег. В итоге документ прочитан лишь одним сотрудником, а остальные даже не успевают узнать о его существовании.

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

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

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

Благодаря этому механизму:

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

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

Способ 1. Использование комплексного процесса и автоподстановок (разыменование ролей)

Самый надежный и штатный способ заставить систему создать персональную задачу ознакомления для каждого участника роли в редакциях 1.3 и 2.1 — это использование механизма Автоподстановок внутри шаблонов процессов.

Проанализируем этот сценарий по шагам:

  1. Перейдем в раздел управления процессами и создадим новый Комплексный процесс (или шаблон комплексного процесса). Настройки простых процессов часто ограничены, а комплексный процесс позволяет гибко управлять этапами.
  2. Добавим в структуру комплексного процесса этап с действием Ознакомление.
  3. Вместо того чтобы напрямую выбирать роль в качестве исполнителя, воспользуемся кнопкой выбора адресата и перейдем на вкладку Автоподстановки.
  4. В списке автоподстановок выберем элемент, который умеет «разыменовывать» роли (разворачивать их до конкретных физлиц). В типовой конфигурации это могут быть подстановки вроде «Все члены группы...» или специализированные программные автоподстановки.

При старте такого процесса система перед генерацией задач обратится к регистру ИсполнителиЗадач, найдет всех актуальных сотрудников, привязанных к роли на текущий момент, и подставит их в табличную часть исполнителей процесса как индивидуальных пользователей. В итоге будет сформировано столько задач ознакомления, сколько сотрудников реально привязано к роли. Каждый получит свою персональную задачу.

Способ 2. Программное развертывание роли в шаблоне процесса (для версии КОРП)

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

Рассмотрим пример кода, который считывает состав роли и заполняет список персональных адресатов процесса:


// Пример заполнения списка исполнителей на основе роли перед стартом действия
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ИсполнителиЗадач.Исполнитель КАК Исполнитель,
    |   ИсполнителиЗадач.ОсновнойОбъектАдресации КАК ОсновнойОбъект,
    |   ИсполнителиЗадач.ДополнительныйОбъектАдресации КАК ДопОбъект
    |ИЗ
    |   РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадач
    |ГДЕ
    |   ИсполнителиЗадач.РольИсполнителя = &ВыбраннаяРоль";

Запрос.УстановитьПараметр("ВыбраннаяРоль", Справочники.РолиИсполнителей.НайтиПоНаименованию("Бухгалтеры"));

Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    // Проверим, что исполнитель активен и не помечен на удаление
    Если ЗначениеЗаполнено(Выборка.Исполнитель) И Не Выборка.Исполнитель.ПометкаУдаления Тогда
        НовыйСтрока = Исполнители.Добавить();
        НовыйСтрока.Исполнитель = Выборка.Исполнитель;
        НовыйСтрока.ПредметАдресации = Выборка.ОсновнойОбъект;
    КонецЕсли;
КонецЦикла;

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

Способ 3. Использование механизма «Лист рассылки»

Еще один проверенный временем сценарий в 1С:Документооборот — это привязка задач ознакомления к Листам рассылки в карточке документа. Рассмотрим, как это работает:

  1. В карточке входящего, исходящего или внутреннего документа включается использование табличной части «Лист рассылки».
  2. Данный лист может заполняться как вручную, так и автоматически по шаблону документа (в том числе целыми подразделениями или группами).
  3. При запуске процесса ознакомления система берет получателей напрямую из этого списка. Поскольку листы рассылки хранят ссылки именно на конкретных пользователей, программа автоматически создает индивидуальные (персональные) задачи для каждого человека из списка.

А как это решено в современных версиях программы (1С:Документооборот 3.0)?

Если вы планируете переход или уже работаете в новой редакции 1С:Документооборот 3.0, то вам будет полезно узнать, что фирма «1С» кардинально переработала этот механизм, сделав его интуитивно понятным.

Посмотрим, какие нововведения появились в тройке для решения нашей проблемы:

Таким образом, для старых редакций (1.3 и 2.1) лучшим выходом является использование шаблонов комплексных процессов с автоподстановками или написание несложных скриптов разыменования ролей. В редакции 3.0 эта проблема полностью решена на уровне типового функционала.

← На главную