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

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

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

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

Анализ задачи

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

Решение через Конфигуратор (или расширение конфигурации)

Разберем алгоритм доработки программного кода. Для создания новой автоподстановки необходимо зарегистрировать ее в списке доступных функций и написать логику поиска и возврата нужного пользователя.

  1. Регистрация новой автоподстановки. В общем модуле ШаблоныБизнесПроцессов находим экспортную функцию ПолучитьСписокДоступныхФункций. В этой функции заполняется список значений, отображаемый на форме выбора подстановки. Добавим в него новую строчку:

    
    // Добавление новой автоподстановки в список доступных
    ДоступныеФункции.Добавить("ШаблоныБизнесПроцессов.НоваяПодстановка(ЭтотОбъект)", НСтр("ru = 'Руководитель из доп. реквизита'"));
    

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

  2. Написание функции-обработчика. В этом же модуле (или соответствующем модуле расширения) создаем экспортную функцию, которая принимает объект бизнес-процесса и возвращает нужного исполнителя:

    
    Функция НоваяПодстановка(БизнесПроцессОбъект) Экспорт
    
        // Получаем предмет бизнес-процесса (например, документ)
        ПредметПроцесса = БизнесПроцессОбъект.Предметы[0].Предмет;
        
        // Безопасное получение значения дополнительного реквизита через БСП
        СвойствоРуководитель = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Руководитель со старого места работы");
        
        Если ЗначениеЗаполнено(СвойствоРуководитель) Тогда
            Исполнитель = УправлениеСвойствами.ЗначениеСвойства(ПредметПроцесса, СвойствоРуководитель);
            Возврат Исполнитель;
        КонецЕсли;
    
        Возврат Неопределено;
    
    КонецФункции
    

Альтернативные способы без изменения конфигурации

Рассмотрим варианты решения задачи без применения Конфигуратора:

  1. Пользовательские скрипты в «1С:Документооборот 3.0»: В актуальной редакции системы доступен механизм пользовательских автоподстановок. Логику получения исполнителя можно написать прямо в режиме «1С:Предприятие» в поле скрипта, используя типовую функцию УправлениеСвойствами.ЗначениеСвойства.
  2. Ролевая адресация с объектами адресации: Вместо создания дополнительных реквизитов можно применить ролевую адресацию (например, роль «Руководитель» с объектом адресации «Подразделение»). В таком случае система подставит адресата автоматически на основе матрицы адресации.

Важные нюансы и возможные ошибки

Проанализируем технические риски, которые следует учитывать при реализации:

← На главную