В начало

Если у БП нет задач

 

Если у бизнес-процесса нет задач, то нужно их создать. Например, есть куча бизнес-процессов, созданных программно и даже не стартованных, но при этом завершенных.

Действовать будем по следующему алгоритму:

1)     Проверяем с помощью запроса наличие у бизнес-процесса задач;

2)     Если у бизнес-процесса нет задач, то создаем одну с точкой старта, при этом в бизнес-процессе устанавливаем реквизит «Стартован» равным «Истина».

 

Листинг. Содержимое модуля

Функция ПроверкаЗадачУБП(Знач СсылкаНаБП)

            Запрос = Новый Запрос;

            Запрос.Текст =

                        "ВЫБРАТЬ

                        |          ЗадачаИсполнителя.Ссылка КАК Ссылка

                        |ИЗ

                        |          Задача.ЗадачаИсполнителя КАК ЗадачаИсполнителя

                        |ГДЕ

                        |          ЗадачаИсполнителя.БизнесПроцесс = &БизнесПроцесс";

           

            Запрос.УстановитьПараметр("БизнесПроцесс", СсылкаНаБП); 

            Результат = Запрос.Выполнить();

            Выгрузка = Результат.Выгрузить();

           

            Если Результат.Пустой() Тогда

                        Возврат Ложь;

            Иначе

                        Возврат Истина;

            КонецЕсли;    

КонецФункции

 

Функция СтартоватьБПеслиУНегоНетЗадач(Знач СсылкаНаБП) 

            ТочкаМаршрута = Справочники.CRM_ТочкиМаршрутов.ПолучитьСсылку(Новый УникальныйИдентификатор("e7539ca3-fb97-11ec-bdfe-98039b627c75"));  

 

            Если ТочкаМаршрута.ПолучитьОбъект() = Неопределено Тогда

                        ТочкаМаршрута = Справочники.CRM_ТочкиМаршрутов.ПолучитьСсылку(Новый УникальныйИдентификатор("e21a9f7c-0113-11ed-bdff-98039b627c75"));                                                                                                                                                            

            КонецЕсли;

           

            //Работа с ЗАДАЧЕЙ

            Задача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();

                       

            Задача.Дата = ТекущаяДата();

           

            Если НЕ ЗначениеЗаполнено(Задача.Автор) Тогда

                        Задача.Автор = Пользователи.ТекущийПользователь();

            КонецЕсли;    

           

            Если НЕ ЗначениеЗаполнено(Задача.Исполнитель) Тогда

                        Задача.Исполнитель = Пользователи.ТекущийПользователь();

            КонецЕсли;

           

            Задача.ДатаНачала = ТекущаяДата();

            Задача.БизнесПроцесс = СсылкаНаБП.Ссылка;

            Задача.ТочкаМаршрута = БизнесПроцессы.CRM_БизнесПроцесс.ТочкиМаршрута.ЗадачаБизнесПроцесса;

            Задача.Наименование = "Сбор документов";

            Задача.СостояниеБизнесПроцесса = Перечисления.СостоянияБизнесПроцессов.Активен;

            Задача.CRM_Партнер = СсылкаНаБП.Партнер;

            Задача.CRM_ТочкаМаршрута = ТочкаМаршрута;

            Задача.Важность = Перечисления.ВариантыВажностиЗадачи.Обычная;

            Задача.ГруппаИсполнителейЗадач = Справочники.ГруппыИсполнителейЗадач.НайтиПоНаименованию("Без ролевой адресации", Истина);

            Задача.CRM_ВариантВыполнения = 0; 

           

            //Работа с БП

            ОбБП = СсылкаНаБП.ПолучитьОбъект();

           

            Если НЕ ЗначениеЗаполнено(ОбБП.Ответственный) Тогда

                        ОбБП.Ответственный = Пользователи.ТекущийПользователь();

            КонецЕсли;    

           

            ОбБП.Стартован = Истина;

            ОбБП.Завершен = Ложь;

            Попытка

                        Задача.Записать();

                        ОбБП.Записать();

            Исключение

            КонецПопытки;

КонецФункции          

 

 

Листинг. Использование

            Если ПроверкаЗадачУБП(Объект.Ссылка) = Ложь Тогда

                        СтартоватьБПеслиУНегоНетЗадач(Объект.Ссылка);

            КонецЕсли;