В процессе документооборота крупной организации часто возникает задача: направить входящий или исходящий документ на ознакомление целой группе сотрудников. Это может быть рабочая группа документа, целый отдел или сотрудники определенной роли в вышестоящем подразделении (например, все юристы головного офиса). Если решать эту задачу вручную, то при штате в сотни и тысячи сотрудников процесс превращается в рутину, а ручное заполнение списков приводит к ошибкам.
В этой статье мы подробно разберем, как автоматизировать создание задач на ознакомление в программе «1С:Документооборот» (как для редакции 2.1, так и для новой редакции 3.0), решим проблему «прыткого исполнителя» при использовании ролей и разберем архитектурные подходы для реализации кастомных автоподстановок.
Рассмотрим ситуацию, когда задача на ознакомление адресуется роли (например, Юристы). По умолчанию в системе 1С:Документооборот ролевая адресация работает по принципу «первого выполнившего». Это означает, что как только самый быстрый сотрудник с ролью «Юрист» откроет задачу и нажмет кнопку «Ознакомился», задача будет считаться выполненной для всей роли и исчезнет из списков задач остальных сотрудников. Для процесса ознакомления это критично, ведь ознакомиться должен каждый причастный сотрудник лично.
Чтобы решить эту проблему и сделать так, чтобы задача пришла абсолютно каждому участнику роли или рабочей группы, мы должны использовать встроенный механизм развертывания:
Юристы) или подразделение.Проанализируем, как ведет себя система при установке этого флага. При старте процесса или при переходе к шагу ознакомления конфигурация автоматически определяет состав исполнителей, входящих в данную роль или подразделение, и создает для каждого сотрудника персональную (индивидуальную) задачу. Теперь задача не исчезнет у коллег после выполнения её одним из сотрудников.
Если список ознакомляемых лиц зависит от контекста документа (например, от его подразделения-автора), стандартных настроек адресации может не хватить. Рассмотрим пример, когда нужно направить документ на ознакомление всем юристам вышестоящего (родительского) подразделения. Всего в компании может быть более 1000 подразделений, и прописывать условия маршрутизации вручную для каждого случая невозможно.
В таких случаях идеальным решением является создание собственной автоподстановки. Разберем по шагам, как реализовать кастомную автоподстановку в конфигурации 1С:Документооборот версии 2.1.
Для создания своей автоподстановки нам не нужно снимать с поддержки всю конфигурацию. Мы задействуем механизм переопределяемых модулей или создадим расширение конфигурации. Нам понадобится общий модуль ШаблоныБизнесПроцессовПереопределяемый.
Сначала зарегистрируем нашу новую функцию автоподстановки. Для этого найдем в указанном модуле процедуру ПолучитьСписокДоступныхФункций и добавим туда описание нашей функции:
Процедура ПолучитьСписокДоступныхФункций(СписокФункций) Экспорт
// Регистрируем новую автоподстановку
НоваяФункция = СписокФункций.Добавить();
НоваяФункция.Имя = "ВсеЮристыВышестоящегоПодразделения";
НоваяФункция.Представление = НСтр("ru = 'Все юристы вышестоящего подразделения'");
НоваяФункция.ТипПредмета = Тип("СправочникСсылка.ВходящиеДокументы"); // или ИсходящиеДокументы
КонецПроцедуры
Теперь напишем сам алгоритм расчета исполнителей. Для этого создадим экспортную функцию в этом же (или связанном) общем модуле, которая будет вычислять и возвращать массив конкретных пользователей:
Функция ВычислитьВсеЮристыВышестоящегоПодразделения(Предмет) Экспорт
МассивИсполнителей = Новый Массив;
Если Не ЗначениеЗаполнено(Предмет) Тогда
Возврат МассивИсполнителей;
КонецЕсли;
// Получаем подразделение документа
ПодразделениеДокумента = Предмет.Подразделение;
Если Не ЗначениеЗаполнено(ПодразделениеДокумента) Тогда
Возврат МассивИсполнителей;
КонецЕсли;
// Находим вышестоящее подразделение (родитель)
ВышестоящееПодразделение = ПодразделениеДокумента.Родитель;
Если Не ЗначениеЗаполнено(ВышестоящееПодразделение) Тогда
// Если вышестоящего нет, берем текущее
ВышестоящееПодразделение = ПодразделениеДокумента;
КонецЕсли;
// Запрос для получения всех пользователей, входящих в роль "Юристы" данного подразделения
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| ИсполнителиРолей.Исполнитель КАК Пользователь
|ИЗ
| РегистрСведений.ИсполнителиЗадач КАК ИсполнителиРолей
|ГДЕ
| ИсполнителиРолей.РольИсполнителя = &РольЮристы
| И ИсполнителиРолей.ОсновнойОбъектАдресации = &Подразделение";
Запрос.УстановитьПараметр("РольЮристы", Справочники.РолиИсполнителей.НайтиПоНаименованию("Юристы"));
Запрос.УстановитьПараметр("Подразделение", ВышестоящееПодразделение);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
МассивИсполнителей.Добавить(Выборка.Пользователь);
КонецЦикла;
Возврат МассивИсполнителей;
КонецФункции
После сохранения изменений данная автоподстановка появится в интерфейсе настройки шаблонов процессов. При запуске бизнес-процесса по документу система автоматически вызовет написанный нами код, получит массив исполнителей и создаст персональную задачу для каждого юриста вышестоящего подразделения.
Если вы работаете в новой редакции 1С:Документооборот 3.0, задача значительно упрощается благодаря концепции Low-Code/No-Code. Здесь больше нет жесткой привязки к конфигуратору для большинства подобных доработок.
Выясним, какие инструменты редакции 3.0 мы можем использовать для решения нашей задачи:
В процессе автоматизации часто возникает проблема: правила автозапуска настроены, но процессы по созданным или зарегистрированным документам не стартуют автоматически. Пользователи вынуждены запускать процессы вручную. Выясним основные причины этой неполадки и методы их диагностики.
Автозапуск процессов по событиям (например, по факту регистрации документа) завязан на механизм бизнес-событий 1С:Документооборот. Проанализируем три ключевые точки проверки:
За обработку очереди событий отвечает специальное фоновое задание. Если оно отключено или зависло, автозапуск работать не будет.
Событие в системе может регистрироваться, но программа «не знает», что именно нужно запустить. Для этого должны быть четко настроены правила автозапуска:
Создание документа или Регистрация) с нужным шаблоном процесса ознакомления.Если в системе используются самописные обработчики событий (написанные на встроенном языке), любая синтаксическая или логическая ошибка в коде обработчика может приводить к аварийному завершению работы Детектора бизнес-событий. Для проверки откроем «Журнал регистрации» и отфильтруем события по уровню «Ошибка» и метаданным регламентных заданий. При обнаружении ошибок в коде обработчиков их необходимо оперативно исправить.
Используя предложенные методики настройки ролей, написания автоподстановок и механизмы редакции 3.0, мы можем полностью автоматизировать рассылку задач на ознакомление по любым сложным алгоритмам, минимизировав ручной труд сотрудников и исключив человеческий фактор при работе с документами.