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

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

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

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

Проблема ролей и механизм «прыткого исполнителя»

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

Чтобы решить эту проблему и сделать так, чтобы задача пришла абсолютно каждому участнику роли или рабочей группы, мы должны использовать встроенный механизм развертывания:

  1. Откроем карточку настройки действия (или шаблона процесса ознакомления).
  2. В списке исполнителей выберем необходимую роль (например, Юристы) или подразделение.
  3. Установим флаг «Разворачивать до конкретных сотрудников».

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

Реализация собственной автоподстановки для динамического подбора участников

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

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

Для создания своей автоподстановки нам не нужно снимать с поддержки всю конфигурацию. Мы задействуем механизм переопределяемых модулей или создадим расширение конфигурации. Нам понадобится общий модуль ШаблоныБизнесПроцессовПереопределяемый.

Сначала зарегистрируем нашу новую функцию автоподстановки. Для этого найдем в указанном модуле процедуру ПолучитьСписокДоступныхФункций и добавим туда описание нашей функции:


Процедура ПолучитьСписокДоступныхФункций(СписокФункций) Экспорт

    // Регистрируем новую автоподстановку
    НоваяФункция = СписокФункций.Добавить();
    НоваяФункция.Имя = "ВсеЮристыВышестоящегоПодразделения";
    НоваяФункция.Представление = НСтр("ru = 'Все юристы вышестоящего подразделения'");
    НоваяФункция.ТипПредмета = Тип("СправочникСсылка.ВходящиеДокументы"); // или ИсходящиеДокументы

КонецПроцедуры

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


Функция ВычислитьВсеЮристыВышестоящегоПодразделения(Предмет) Экспорт

    МассивИсполнителей = Новый Массив;

    Если Не ЗначениеЗаполнено(Предмет) Тогда
        Возврат МассивИсполнителей;
    КонецЕсли;

    // Получаем подразделение документа
    ПодразделениеДокумента = Предмет.Подразделение;
    Если Не ЗначениеЗаполнено(ПодразделениеДокумента) Тогда
        Возврат МассивИсполнителей;
    КонецЕсли;

    // Находим вышестоящее подразделение (родитель)
    ВышестоящееПодразделение = ПодразделениеДокумента.Родитель;
    Если Не ЗначениеЗаполнено(ВышестоящееПодразделение) Тогда
        // Если вышестоящего нет, берем текущее
        ВышестоящееПодразделение = ПодразделениеДокумента;
    КонецЕсли;

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

    Запрос.УстановитьПараметр("РольЮристы", Справочники.РолиИсполнителей.НайтиПоНаименованию("Юристы"));
    Запрос.УстановитьПараметр("Подразделение", ВышестоящееПодразделение);

    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        МассивИсполнителей.Добавить(Выборка.Пользователь);
    КонецЦикла;

    Возврат МассивИсполнителей;

КонецФункции

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

Low-Code возможности и автоподстановки в 1С:Документооборот 3.0

Если вы работаете в новой редакции 1С:Документооборот 3.0, задача значительно упрощается благодаря концепции Low-Code/No-Code. Здесь больше нет жесткой привязки к конфигуратору для большинства подобных доработок.

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

  1. Автозаполняемые рабочие группы: В редакции 3.0 появился удобный справочник «Автозаполняемые рабочие группы». В карточке такой группы мы можем включить признак автозаполнения и написать произвольный скрипт на встроенном языке прямо в режиме «1С:Предприятие» (без изменения конфигурации). Программа будет сама регулярно обновлять состав группы по нашему алгоритму.
  2. Правила обработки документов: В правилах обработки (которые заменили старые шаблоны процессов) в качестве участников действий (например, «Ознакомление») мы можем указывать как раз те самые автозаполняемые рабочие группы. При этом сохраняется возможность разворачивать группу до конкретных сотрудников.
  3. Автоматическое ведение рабочей группы документа: Если в настройках вида документа включена опция «Автоматически вести состав участников рабочей группы», то все адресаты, вычисленные нашими правилами обработки и автоподстановками, автоматически получат права доступа на чтение самого документа. Это исключает проблему, когда задача пришла, но пользователь не может открыть документ из-за отсутствия прав.

Что делать, если не работают бизнес-события и автозапуск

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

Автозапуск процессов по событиям (например, по факту регистрации документа) завязан на механизм бизнес-событий 1С:Документооборот. Проанализируем три ключевые точки проверки:

1. Проверка работы регламентного задания «Детектор бизнес-событий»

За обработку очереди событий отвечает специальное фоновое задание. Если оно отключено или зависло, автозапуск работать не будет.

  1. Перейдем в раздел «Администрирование» -> «Поддержка и обслуживание» -> «Регламентные и фоновые задания».
  2. Найдем в списке регламентное задание «Детектор бизнес-событий».
  3. Убедимся, что у него стоит флаг «Включено» и проверьте дату и результат последнего выполнения.
  4. Если база файловая, убедимся, что запущен выделенный сеанс для выполнения регламентных заданий, либо настроен запуск через планировщик Windows.

2. Настройка правил генерации процессов

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

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

3. Ошибки в коде обработчиков событий

Если в системе используются самописные обработчики событий (написанные на встроенном языке), любая синтаксическая или логическая ошибка в коде обработчика может приводить к аварийному завершению работы Детектора бизнес-событий. Для проверки откроем «Журнал регистрации» и отфильтруем события по уровню «Ошибка» и метаданным регламентных заданий. При обнаружении ошибок в коде обработчиков их необходимо оперативно исправить.

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

← На главную