Отключение создания задачи ознакомления для бизнес-процесса "Согласование" в 1С: Документооборот
1C-admin
30.11.2019
В данной публикации я хочу поделиться расширением, с помощью которого можно отключить создание задачи ознакомления для бизнес-процесса «Согласование» в 1С: Документооборот.
На внедрениях часто возникает ситуация, когда необходимо полностью отключить задачи ознакомления для бизнес-процесса "Согласование". На эту тему есть инструкция с ИТС. В своем расширении я переопределил процедуры по созданию задач ознакомления по рекомендациям с ИТС.
Код модуля объекта бизнес-процесса "Согласование" из расширения (полное отключение задач ознакомления для процесса "Согласование"):
&Вместо("ЗавершениеПриЗавершении")
Процедура пп_ЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса,Отказ)
УстановитьПривилегированныйРежим(Истина);
ДатаЗавершения = ТекущаяДатаСеанса();
СрокИсполненияДатой = ДатаЗавершения;
РаботаСПроектами.ОтметитьОкончаниеВыполненияПроектнойЗадачи(ЭтотОбъект);
КонецПроцедуры
&Вместо("ОзнакомитьсяПередСозданиемЗадач")
Процедура пп_ОзнакомитьсяПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, формируемыеЗадачи, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
Также данную задачу можно решить более гибким способом без изменения типовой конфигурации. В бизнес-процессе "Согласование" создадим дополнительный реквизит типа "Булево" и в зависимости от значения этого реквизита будем формировать задачу ознакомления:
После создания доп. реквизита он появится и в справочнике "Шаблоны согласования" на закладке "Свойства":
Код модуля объекта бизнес-процесса "Согласование" из расширения (отключение задач ознакомления в зависимости от значения доп. реквизита):
&Вместо("ЗавершениеПриЗавершении")
Процедура пп_ЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса,Отказ)
УстановитьПривилегированныйРежим(Истина);
ДатаЗавершения = ТекущаяДатаСеанса();
СрокИсполненияДатой = ДатаЗавершения;
РаботаСПроектами.ОтметитьОкончаниеВыполненияПроектнойЗадачи(ЭтотОбъект);
//Проверка значения дополнительного реквизита "Создавать задачу ознакомления"
ДопСвойство = БизнесПроцессы.Согласование.пп_ПолучитьСвойствоСоздаватьЗадачуОзнакомления();
СоздаватьЗадачуОзнакомления = УправлениеСвойствами.ЗначениеСвойства(Ссылка,ДопСвойство);
Если ЗначениеЗаполнено(СоздаватьЗадачуОзнакомления) Тогда
Если СоздаватьЗадачуОзнакомления Тогда
// Если процесс завершился положительно и нет задачи ознакомления (задача ознакомления могла быть
// создана до перехода на редакцию 2.1), то создаем задачу ознакомления с результатом.
Если РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано
И РезультатыОзнакомлений.Найти(НомерИтерации, "НомерИтерации") = Неопределено Тогда
Задача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
ЗаполнитьЗадачуОзнакомиться(Задача);
Задача.Записать();
НоваяСтрока = РезультатыОзнакомлений.Добавить();
НоваяСтрока.НомерИтерации = НомерИтерации;
НоваяСтрока.ЗадачаИсполнителя = Задача.Ссылка;
РаботаСБизнесПроцессами.ЗаписатьПроцесс(ЭтотОбъект, "ПростаяЗапись");
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
&Вместо("ОзнакомитьсяПередСозданиемЗадач")
Процедура пп_ОзнакомитьсяПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, формируемыеЗадачи, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
//Проверка значения дополнительного реквизита "Создавать задачу ознакомления"
ДопСвойство = БизнесПроцессы.Согласование.пп_ПолучитьСвойствоСоздаватьЗадачуОзнакомления();
СоздаватьЗадачуОзнакомления = УправлениеСвойствами.ЗначениеСвойства(Ссылка,ДопСвойство);
Если ЗначениеЗаполнено(СоздаватьЗадачуОзнакомления) Тогда
Если СоздаватьЗадачуОзнакомления Тогда
// Если процесс завершился положительно, то задачу ознакомления формируем
// после завершения процесса.
Если РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
Возврат;
КонецЕсли;
Задача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
ЗаполнитьЗадачуОзнакомиться(Задача);
ЗадачаСсылка = Задачи.ЗадачаИсполнителя.ПолучитьСсылку();
Задача.УстановитьСсылкуНового(ЗадачаСсылка);
ФормируемыеЗадачи.Добавить(Задача);
УстановитьПривилегированныйРежим(Истина);
НоваяСтрока = РезультатыОзнакомлений.Добавить();
НоваяСтрока.НомерИтерации = НомерИтерации;
НоваяСтрока.ЗадачаИсполнителя = ЗадачаСсылка;
РаботаСБизнесПроцессами.ЗаписатьПроцесс(ЭтотОбъект, "ПростаяЗапись");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Код модуля менеджера бизнес-процесса "Согласование" из расширения (отключение задач ознакомления в зависимости от значения доп. реквизита):
функция пп_ПолучитьСвойствоСоздаватьЗадачуОзнакомления() Экспорт
Возврат ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.ПолучитьСсылку(Новый УникальныйИдентификатор("962d42d0-138a-11ea-b12f-c86000a61ae9"));
Конецфункции
Данные расширения тестировались в 1С:Документооборот КОРП версии 2.1.14.4.
Добрый день! Как можно Вам написать? Есть вопрос по «Отображение истории выполнения по всем задачам комплексного процесса в документообороте» может подскажете…?