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

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

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

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

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

  1. Откроем карточку Шаблона комплексного процесса.
  2. Перейдем на вкладку «Действия». Здесь перечислены все этапы нашего процесса.
  3. Выберем нужное действие (например, «Согласование») и откроем его внутренние настройки.
  4. Внутри настроек этого конкретного действия найдем флаг «Разрешить изменение состава участников». Если мы снимем эту галочку, система заблокирует кнопки «Добавить» и «Подобрать» именно для этого этапа.

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

Способ 2. Управление участниками в «1С:Документооборот 3.0»

В новой редакции 3.0 механизм комплексных процессов уступил место «Обработке документов». Здесь логика настройки стала еще более гибкой. Проанализируем, как ограничить состав участников в этой версии:

  1. В правилах обработки документа для конкретного действия можно указать участников как «Обязательных».
  2. Если у пользователя в полномочиях отсутствует право на «Изменение схем обработки», он сможет добавлять участников только в те блоки, которые помечены как необязательные или пустые, но не сможет редактировать предопределенный список.
  3. Также обратим внимание на настройку «Добавлять участников в начало/конец». Это позволяет ограничить произвол пользователя: он сможет добавить кого-то своего, но не сможет удалить ключевых согласующих или изменить порядок их следования, если это критично для бизнес-логики.

Способ 3. Ролевая адресация с запретом уточнения

Если мы хотим, чтобы кнопка «Подобрать» была фактически бесполезной на определенном этапе, проанализируем ситуацию с использованием ролей. Вместо указания конкретного Пользователь, мы можем назначить Роль исполнителя (например, «Главный бухгалтер» или «Юрист»).

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

Способ 4. Программное управление доступностью через расширение

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

Рассмотрим пример кода, который можно разместить в расширении формы процесса:


&НаСервере
Процедура Последовательность_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    // Проверяем текущий этап процесса
    Если Объект.НаименованиеТекущегоЭтапа = "Согласование в ФО" Тогда
        // Находим кнопку Подобрать и ограничиваем доступность
        ЭлементПодобрать = Автотесты.НайтиЭлементФормы(ЭтаФорма, "СписокИсполнителейПодобрать");
        Если ЭлементПодобрать <> Неопределено Тогда
            ЭлементПодобрать.Доступность = Ложь;
            ЭлементПодобрать.Видимость = Ложь;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

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

Способ 5. Скрипты автозаполнения (Метод «Жесткого контроля»)

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

Это реализуется через справочник «Алгоритмы», где прописывается логика формирования коллекции Исполнители. Система будет игнорировать ручные изменения, если алгоритм жестко задает массив участников на основе данных документа (сумма, подразделение, вид документа).

Комбинирование шаблонов: последовательный запуск

Часто возникает вопрос: можно ли сделать так, чтобы документ сначала шел по одному шаблону (с жесткими ограничениями), а затем по другому (где пользователь волен сам выбирать участников)?

В версии 2.1 это реализуется через Связанные процессы. Рассмотрим схему:

Таким образом, мы разберем задачу на две части, обеспечив безопасность на критически важных этапах и гибкость там, где она допустима.

Резюме: Самый эффективный и быстрый способ без программирования — это сочетание общей блокировки изменения шаблона и точечной настройки «Разрешить изменение состава участников» внутри каждого действия. Это позволяет создать гибкую, но при этом защищенную от ошибок «человеческого фактора» схему документооборота.

← На главную