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