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

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

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

Основные принципы создания задач в бизнес-процессах

Первое, что необходимо осознать: при программном создании объектов БизнесПроцесс и ЗадачаИсполнителя, недостаточно просто вызвать методы Записать() и Старт(). Система требует строгого соблюдения последовательности действий и заполнения обязательных реквизитов, таких как ТочкаМаршрута и ссылки на владельцев.

Рассмотрим, как правильно создать и запустить процесс, добавив к нему дополнительные задачи для исполнителей:


Документ = Процесс.Предметы[0].Предмет;
ШаблонПроцесса = Справочники.ШаблоныРассмотрения.НайтиПоНаименованию("Рассмотрение всеми адресатами");

Если ШаблонПроцесса <> Неопределено Тогда
    НовыйПроцесс = БизнесПроцессы.Рассмотрение.СоздатьБизнесПроцесс();
    НовыйПроцесс.Заполнить(Новый Структура("Предметы, Шаблон", Документ, ШаблонПроцесса));
    НовыйПроцесс.Автор = Процесс.Автор;
    НовыйПроцесс.Записать();
    НовыйПроцесс.Старт();

    // Создание дополнительных задач
    Для Каждого ДопАдресат Из ДопАдресаты Цикл
        НоваяЗадача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
        НоваяЗадача.БизнесПроцесс = НовыйПроцесс.Ссылка;
        НоваяЗадача.Исполнитель = ДопАдресат;
        НоваяЗадача.ТочкаМаршрута = НовыйПроцесс.ПредметыЗадач[0].ТочкаМаршрута;
        НоваяЗадача.Записать();
    КонецЦикла;
КонецЕсли;

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

Встраивание подпроцессов в комплексный процесс через ведущие задачи

Если ваша задача — сделать так, чтобы программно созданный процесс стал частью комплексного бизнес-процесса (например, отображался в дереве связей), вам необходимо использовать механизм ВедущаяЗадача. Именно она связывает дочерний процесс с конкретным этапом родительского комплексного процесса.

Для реализации этой логики выполните следующие шаги:

  1. Определите шаблон процесса, который необходимо запустить как вложенный.
  2. Создайте «ведущую задачу» внутри родительского процесса, указав соответствующую ТочкуМаршрута комплексного процесса.
  3. Присвойте ссылку на созданную ведущую задачу реквизиту ВедущаяЗадача вашего нового дочернего процесса.

Посмотрим на пример реализации такого подхода:


// Создание ведущей задачи для связи процессов
ВедущаяЗадачаДействия = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
ВедущаяЗадачаДействия.Дата = ТекущаяДатаСеанса();
ВедущаяЗадачаДействия.БизнесПроцесс = Процесс.Ссылка;
ВедущаяЗадачаДействия.ТочкаМаршрута = БизнесПроцессы.КомплексныйПроцесс.ТочкиМаршрута.ВложенныйПроцесс;
ВедущаяЗадачаДействия.Записать();

// Создание дочернего процесса
НовыйПроцесс = БизнесПроцессы.Исполнение.СоздатьБизнесПроцесс();
НовыйПроцесс.ВедущаяЗадача = ВедущаяЗадачаДействия.Ссылка;
// ... заполнение остальных реквизитов ...
НовыйПроцесс.Записать();
НовыйПроцесс.Старт();

Советы по отладке и разработке

В процессе работы с бизнес-процессами 1С часто возникают ошибки, связанные с несоответствием типов или нехваткой данных. Чтобы процесс разработки проходил комфортнее, используйте следующие рекомендации:

Следование этим простым правилам поможет вам гибко управлять маршрутами документов и реализовывать сложные бизнес-сценарии в 1С:Документооборот, сохраняя при этом целостность данных и корректную работу механизмов платформы.

← На главную