При работе в системе 1С:Документооборот 2.1 мы часто сталкиваемся с необходимостью делегировать полномочия одного сотрудника другому. Стандартный механизм делегирования, предусмотренный в конфигурации, позволяет передать права пользователя на определенный период. Однако, когда речь заходит о частичном делегировании процессов и задач, то есть передаче только определенных задач или задач по конкретным предметам/процессам, типовые средства системы оказываются недостаточными. Давайте вместе разберемся, почему это так и какие подходы существуют для решения этой задачи.
Прежде всего, давайте рассмотрим, как работает типовое делегирование в 1С:Документообороте 2.1. Настройка делегирования прав осуществляется администратором системы в справочнике Делегирование прав. Здесь мы указываем, от кого и кому передаются права, а также период действия делегирования.
Система предоставляет нам предопределенные Области делегирования прав, такие как "документы и файлы", "ежедневные отчеты", "мероприятия", "обсуждения", "контроль", "почта", "проекты", "процессы и задачи". Нам важно понимать, что эти области нельзя изменять или добавлять новые в режиме "Предприятия" без доработки конфигурации.
Ключевой момент, который нам необходимо усвоить: область "Процессы и задачи" делегирует все процессы и задачи пользователя. Это означает, что типовыми средствами 1С:Документооборот 2.1 невозможно осуществить частичное делегирование задач. То есть, мы не можем передать, например, только задачи по согласованию договоров, оставив остальные задачи у основного пользователя.
При делегировании прав также важно учитывать следующие особенности, которые мы должны держать в уме:
Применение настроек делегирования регулируется Регламентным заданием "Обработка правил делегирования прав", которое периодически обновляет права пользователей в соответствии с настроенными правилами.
Поскольку типовой функционал не позволяет решить нашу задачу, мы приходим к выводу, что для реализации частичного делегирования процессов и задач требуются доработки конфигурации. Рассмотрим подробнее несколько подходов, которые мы можем применить:
Один из подходов предполагает добавление нового реквизита, который будет служить "разрезом" для делегирования. Мы можем добавить такой реквизит, например, в объекты ЗадачаОбъект или БизнесПроцессОбъект, а также в какой-либо регистр сведений, который будет хранить правила частичного делегирования. Разберем по шагам, как это может выглядеть:
ВидыБизнесПроцессов или непосредственно в объекты задач.Например, при получении списка задач для пользователя, мы будем проверять, соответствует ли вид задачи разрешенным для делегирования правилам:
// Пример концептуального кода в модуле, отвечающем за фильтрацию задач
Функция ПолучитьДоступныеЗадачиДляПользователя(Пользователь)
Задачи = Новый СписокЗначений();
// Получаем все задачи, которые потенциально видны пользователю
ВсеЗадачи = ОбщиеФункции.ПолучитьЗадачиПоПользователю(Пользователь);
Для Каждого Задача Из ВсеЗадачи Цикл
Если ЭтоДелегированныйПользователь(Пользователь) Тогда
// Если пользователь - заместитель, проверяем частичное делегирование
Если РазрешеноЧастичноеДелегирование(Пользователь, Задача) Тогда
Задачи.Добавить(Задача);
КонецЕсли;
Иначе
// Обычный пользователь видит все свои задачи
Задачи.Добавить(Задача);
КонецЕсли;
КонецЦикла;
Возврат Задачи;
КонецФункции
Функция РазрешеноЧастичноеДелегирование(Делегат, Задача)
// Здесь будет логика проверки нашего нового реквизита
// Например, если у задачи есть реквизит "ГруппаДелегирования"
// и эта группа разрешена для данного Делегата в нашем спец. регистре
Возврат Истина; // Или Ложь в зависимости от проверки
КонецФункции
Этот подход требует глубокого понимания структуры бизнес-процессов и задач в 1С:Документообороте.
Другой, весьма интересной идеей, является подход, при котором мы отлавливаем момент отправки задачи и, если она не подходит под полномочия делегата, запрещаем ее создание для него. Проанализируем ситуацию:
ПриЗаписи или ПередЗаписью объекта ЗадачаОбъект, либо в модуле БизнесПроцессыИЗадачи).Пример концептуального перехвата:
// В обработчике события ПередЗаписью для объекта ЗадачаОбъект
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ЭтотОбъект.Исполнитель.Делегирован Тогда // Предположим, что мы можем определить, что это делегат
// Получаем информацию о делегировании
ИнформацияОДелегировании = ПолучитьИнформациюОДелегировании(ЭтотОбъект.Исполнитель);
// Проверяем, разрешена ли эта задача для частичного делегирования
Если НЕ РазрешенаКонкретнаяЗадачаДляДелегата(ЭтотОбъект, ИнформацияОДелегировании) Тогда
// Задача не разрешена для частичного делегирования
Отказ = Истина; // Отменяем запись задачи для этого исполнителя
// Также можно выдать сообщение пользователю или переназначить задачу
Сообщить("Задача '" + ЭтотОбъект.Предмет + "' не может быть делегирована данному сотруднику.");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Функция РазрешенаКонкретнаяЗадачаДляДелегата(Задача, ИнформацияОДелегировании)
// Здесь мы реализуем логику проверки по нашей спец. таблице
// Например, проверяем вид задачи, предмет задачи, или бизнес-процесс
// к которому относится задача, сравнивая с разрешенными в ИнформацияОДелегировании
Возврат Истина; // Или Ложь
КонецФункции
Этот подход позволяет нам контролировать процесс создания задач на лету, не затрагивая при этом глобальные права доступа.
Еще один путь — это вмешательство в права доступа в определенных модулях, чтобы запретить видимость и работу с "лишними" задачами. Мы не даем создать задачу, а делаем так, чтобы пользователь просто не видел те задачи, которые ему не предназначены для частичного делегирования.
ГДЕ, основываясь на наших правилах частичного делегирования.Этот способ может быть сложнее в реализации, так как требует глубокого понимания механизмов формирования списков и прав доступа в 1С:Документообороте. Если даже чтение отнять, то лишнего не увидят и не смогут работать.
Как было упомянуто на форуме, мы можем добавить новые области делегирования. Эта идея подразумевает расширение самого механизма областей делегирования в конфигурации. Мы выясним, что это более глобальная доработка:
ОбластиДелегированияПрав, например, "Процессы и задачи (по видам)".Этот подход позволяет встроить частичное делегирование более органично в интерфейс администратора, но является наиболее инвазивным с точки зрения изменения конфигурации.
В качестве альтернативного способа делегирования конкретных задач подчиненным мы можем рассмотреть механизм подзадач. Этот подход не является "частичным делегированием" в прямом смысле, но позволяет автору задачи сохранить контроль, в то время как подчиненный выполняет часть работы. Механизм прост:
Однако, мы должны помнить, что 1С:Документооборот 2.1 не контролирует сроки и выполнение подзадач относительно основной задачи. Это означает, что отслеживание их взаимосвязи и общей синхронизации ложится на плечи пользователя.
В заключение, мы видим, что реализация частичного делегирования процессов и задач в 1С:Документообороте 2.1 — это нетривиальная задача, требующая серьезных доработок конфигурации. Каждый из предложенных подходов имеет свои преимущества и недостатки, и выбор конкретного решения будет зависеть от специфики требований и готовности к изменениям в системе.
← К списку