В начало

Как сменить исполнителя в БП

 

            Нужно сменить ответственного в бизнес-процессе и исполнителя в задаче.

            Алгоритм этого действа следующий:

1) На форму списка добавляем кнопку. Также добавляем обработчик для кнопки.

2) Далее перебираем выделенные элементы формы списка и создаем процедуру с обработкой результата запроса.

3) При обработке результата запроса получаем объекты бизнес-процесса и задачи, в которых меняем, а затем записываем новых ответственных и исполнителей.

 

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

&НаКлиенте

Процедура СменитьИсполнителя(Команда)

            Оповещение = Новый ОписаниеОповещения("ПослеВыбораИсполнителя", ЭтотОбъект);

            ПоказатьВводЗначения(Оповещение, , "Новый исполнитель", Тип("СправочникСсылка.Пользователи"));

КонецПроцедуры

 

&НаКлиенте

Процедура ПослеВыбораИсполнителя(Результат, Параметры) Экспорт

            Если НЕ Результат = Неопределено Тогда

                        Для Каждого Эл Из Элементы.Список.ВыделенныеСтроки Цикл

                                   СменитьИсполнителяНаСервере(Эл, Результат);

                        КонецЦикла;

            КонецЕсли;

            Элементы.Список.Обновить();

КонецПроцедуры

 

&НаСервере

Процедура СменитьИсполнителяНаСервере(ЗначСсылкаНаБП, ЗначСсылкаНаИсполнителя)

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

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

            "ВЫБРАТЬ

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

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

            |ИЗ

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

            |ГДЕ

            |         ЗадачаИсполнителя.Выполнена = ЛОЖЬ

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

            |         И ЗадачаИсполнителя.БизнесПроцесс.ПометкаУдаления = ЛОЖЬ

            |         И ЗадачаИсполнителя.БизнесПроцесс.Завершен = ЛОЖЬ";

           

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

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

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

 

            //Меняем ИСПОЛНИТЕЛЯ в Задачах

            Пока Выборка.Следующий() Цикл

                        ОбЗад = Выборка.Ссылка.ПолучитьОбъект();

                        ОбЗад.Исполнитель = СсылкаНаИсполнителя;

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

            КонецЦикла;

                       

            //Меняем ОТВЕТСТВЕННОГО в Бизнес-процессе

            Если НЕ СсылкаНаБП.ПометкаУдаления И

                         НЕ СсылкаНаБП.Завершен Тогда

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

                        ОбБП.Ответственный = СсылкаНаИсполнителя;

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

            КонецЕсли;

КонецПроцедуры