Управление созданием задач ознакомления в процессах согласования

18.08.22

Функциональные - Документооборот и делопроизводство (СЭД)

Используя регистр настроек, отключаем задачи ознакомления для различных точек маршрута согласования.

Скачать исходный код

Наименование Файл Версия Размер
Управление созданием задач ознакомления в процессах:
.cfe 10,43Kb
14
.cfe 10,43Kb 14 Скачать

Бывает необходимость при настройке шаблонов процессов 1С Документооборот 8 отключить задачи ознакомления, произведем данные действия с использованием регистра сведений для настроек и расширения для логики настроек. 

Начнем с добавления в основную конфигурацию справочника для хранения элементов настроек:

 

 

 

Далее добавим регистр настроек РАДО_НастройкиПроцессов:

 

 

ОбъектНастройки: СправочникСсылка.ВидыВнутреннихДокументов, СправочникСсылка.ШаблоныСогласования, СправочникСсылка.ВидыВходящихДокументов, СправочникСсылка.ШаблоныИсполнения, СправочникСсылка.ВидыИсходящихДокументов

Параметр: СправочникСсылка.РАДО_ПараметрыПроцессов

ЗначениеНастройки: Булево

В модуль менеджера регистра РАДО_НастройкиПроцессов добавим код с функцией получения параметров процессов:

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

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

Добавим в модуль объекта бизнес процесса согласование функцию ПолучитьПризнакОтключенияЗадачиОзнакомления, в ней будем в зависимости от результата согласования выбирать параметр, собирать массив предметов для анализа и передавая в функцию РАДО_УправлениеНастройками.ПолучитьПризнакОтключенияЗадачиОзнакомления определять необходимость отключения задач ознакомления:

Функция ПолучитьПризнакОтключенияЗадачиОзнакомления()
	
	Если РезультатСогласования = Перечисления.РезультатыСогласования.СогласованоСЗамечаниями Тогда		
		ПараметрПроцесса = Справочники.РАДО_ПараметрыПроцессов.БезОзнакомленияПриСогласованоСЗамечаниями;
	ИначеЕсли РезультатСогласования = Перечисления.РезультатыСогласования.НеСогласовано Тогда
		ПараметрПроцесса = Справочники.РАДО_ПараметрыПроцессов.БезОзнакомленияПриНеСогласовано;
	ИначеЕсли РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано Тогда
		ПараметрПроцесса = Справочники.РАДО_ПараметрыПроцессов.БезОзнакомленияПриСогласовано;		
	Иначе 		
         Возврат Ложь;
	КонецЕсли;	
	
	МассивПредметовЗадачи = Новый Массив;
	
	Для Каждого СтрПредмет Из Предметы Цикл 
		Если ТипЗнч(СтрПредмет.Предмет) = Тип("СправочникСсылка.ВходящиеДокументы")
			Или ТипЗнч(СтрПредмет.Предмет) = Тип("СправочникСсылка.ИсходящиеДокументы")
			Или ТипЗнч(СтрПредмет.Предмет) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда
			МассивПредметовЗадачи.Добавить(СтрПредмет.Предмет);
		КонецЕсли
	КонецЦикла;			
	
	ОтключениеЗадачиОзнакомления = РАДО_УправлениеНастройками.ПолучитьПризнакОтключенияЗадачиОзнакомления(Шаблон, 
	ПараметрПроцесса,
	МассивПредметовЗадачи);
	
	Возврат ОтключениеЗадачиОзнакомления;
	
КонецФункции

Для процедур ОзнакомитьсяПередСозданиемЗадач, ЗавершениеПриЗавершении модуля объекта бизнес процесса согласование сделаем вставки с обращением к функции ПолучитьПризнакОтключенияЗадачиОзнакомления перед созданием задач: 

&ИзменениеИКонтроль("ОзнакомитьсяПередСозданиемЗадач")
Процедура РАДО_ОзнакомитьсяПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка)

	СтандартнаяОбработка = Ложь;

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

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

&ИзменениеИКонтроль("ЗавершениеПриЗавершении")
Процедура РАДО_ЗавершениеПриЗавершении(ТочкаМаршрутаБизнесПроцесса, Отказ)

	УстановитьПривилегированныйРежим(Истина);
	ДатаЗавершения = ТекущаяДатаСеанса();

	СрокИсполненияДатой = ДатаЗавершения;

	РаботаСПроектами.ОтметитьОкончаниеВыполненияПроектнойЗадачи(ЭтотОбъект);

	// Если процесс завершился положительно и нет задачи ознакомления (задача ознакомления могла быть
	// создана до перехода на редакцию 2.1), то создаем задачу ознакомления с результатом.
	Если РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано
	#Вставка
	    И ПолучитьПризнакОтключенияЗадачиОзнакомления() = Ложь
	#КонецВставки
		И РезультатыОзнакомлений.Найти(НомерИтерации, "НомерИтерации") = Неопределено Тогда
		
		Задача = Задачи.ЗадачаИсполнителя.СоздатьЗадачу();
		ЗаполнитьЗадачуОзнакомиться(Задача);
		Задача.Записать();

		НоваяСтрока = РезультатыОзнакомлений.Добавить();
		НоваяСтрока.НомерИтерации 	  = НомерИтерации;
		НоваяСтрока.ЗадачаИсполнителя = Задача.Ссылка;

		РаботаСБизнесПроцессами.ЗаписатьПроцесс(ЭтотОбъект, "ПростаяЗапись");

	КонецЕсли;
	
КонецПроцедуры

В общем модуле расширения РАДО_УправлениеНастройками отработаем анализ данных регистра настроек РАДО_НастройкиПроцессов функцией ПолучитьПараметрПроцесса:

Функция ПолучитьПараметрПроцесса(ОбъектНастройки, Параметр) Экспорт
	
	Возврат РегистрыСведений.РАДО_НастройкиПроцессов.ПолучитьПараметрПроцесса(ОбъектНастройки, Параметр);
	
КонецФункции

Добавим в общий модуль расширения РАДО_УправлениеНастройками функцию ПолучитьПризнакОтключенияЗадачиОзнакомления, в которой будем анализировать настройки шаблона и предметов процесса на необходимость отключения задач ознакомления:

Функция ПолучитьПризнакОтключенияЗадачиОзнакомления(Шаблон, ПараметрПроцесса, МассивПредметовЗадачи) Экспорт
	
	КолвоПредметов = МассивПредметовЗадачи.Количество();
	
	Если КолвоПредметов = 0 Тогда
		
		ОтключениеЗадачиОзнакомления = ПолучитьПараметрПроцесса(Шаблон, ПараметрПроцесса);
		
		Если ОтключениеЗадачиОзнакомления = Неопределено Тогда
			Возврат Ложь;
		Иначе 
			Возврат ОтключениеЗадачиОзнакомления;
		КонецЕсли;	
		
	Иначе
		
		Запрос = Новый Запрос;
		Запрос.УстановитьПараметр("Шаблон", Шаблон);
		Запрос.УстановитьПараметр("ПараметрПроцесса", ПараметрПроцесса);
		
		Если КолвоПредметов = 1 Тогда 		
			
			ПредметЗадачи = МассивПредметовЗадачи[0];
			ИмяТаблицыПредмета = ОбщегоНазначения.ИмяТаблицыПоСсылке(ПредметЗадачи);		
			МассивТекстовЗапроса = Новый Массив;
			
			ТекстЗапроса = 
			"ВЫБРАТЬ
			|	РАДО_НастройкиПроцессов.ЗначениеНастройки КАК ЗначениеНастройки
			|ИЗ
			|	РегистрСведений.РАДО_НастройкиПроцессов КАК РАДО_НастройкиПроцессов
			|ГДЕ
			|	РАДО_НастройкиПроцессов.ОбъектНастройки = &Шаблон
			|	И РАДО_НастройкиПроцессов.Параметр = &ПараметрПроцесса
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	РАДО_НастройкиПроцессов.ЗначениеНастройки КАК ЗначениеНастройки
			|ИЗ
			|	РегистрСведений.РАДО_НастройкиПроцессов КАК РАДО_НастройкиПроцессов
			|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ";
			
			МассивТекстовЗапроса.Добавить(ТекстЗапроса);
			МассивТекстовЗапроса.Добавить(ИмяТаблицыПредмета);	
			
			ТекстЗапроса = " КАК ТаблицаДокумента
			|		ПО (РАДО_НастройкиПроцессов.ОбъектНастройки = ТаблицаДокумента.ВидДокумента
			|				И ТаблицаДокумента.Ссылка = &ПредметЗадачи
			|				И РАДО_НастройкиПроцессов.Параметр = &ПараметрПроцесса)";			
			
			МассивТекстовЗапроса.Добавить(ТекстЗапроса);
			Запрос.Текст = СтрСоединить(МассивТекстовЗапроса);
			
			Запрос.УстановитьПараметр("ПредметЗадачи", ПредметЗадачи);			
			
			РезультатПакет = Запрос.ВыполнитьПакет();
			
			РезультатЗапросаШаблона = РезультатПакет[0];
			РезультатЗапросаПредметов = РезультатПакет[1];
			
		Иначе 		
						
			СоответствиеТиповПредметов = Новый Соответствие;
			
			Для Каждого Предмет Из МассивПредметовЗадачи Цикл 
				
				ТипПредмета = ТипЗнч(Предмет);
				
				МассивПредметовТипа = СоответствиеТиповПредметов.Получить(ТипПредмета);
				
				Если МассивПредметовТипа = Неопределено Тогда
					МассивПредметовТипа = Новый Массив;
					МассивПредметовТипа.Добавить(Предмет);
					СоответствиеТиповПредметов.Вставить(ТипПредмета, МассивПредметовТипа);
				Иначе 
					МассивПредметовТипа.Добавить(Предмет);
				КонецЕсли;	
				
			КонецЦикла;  												
			
			МассивТекстовЗапроса = Новый Массив;
			
			НомерЗапроса = 1;
			
			ТекстЗапроса = "ВЫБРАТЬ
			|	РАДО_НастройкиПроцессов.ЗначениеНастройки КАК ЗначениеНастройки
			|ИЗ
			|	РегистрСведений.РАДО_НастройкиПроцессов КАК РАДО_НастройкиПроцессов
			|ГДЕ
			|	РАДО_НастройкиПроцессов.ОбъектНастройки = &Шаблон
			|	И РАДО_НастройкиПроцессов.Параметр = &ПараметрПроцесса";
			МассивТекстовЗапроса.Добавить(ТекстЗапроса);
			
			Для Каждого ТипПредмета Из СоответствиеТиповПредметов Цикл 
				
				Если НомерЗапроса = 1 Тогда
					ТекстЗапроса = "
					|;
					|
					|////////////////////////////////////////////////////////////////////////////////";
				Иначе 	
					ТекстЗапроса = 	"
					|
					|ОБЪЕДИНИТЬ ВСЕ
					|";
				КонецЕсли;	
				
				МассивТекстовЗапроса.Добавить(ТекстЗапроса);				
				ИмяТаблицыПредмета = ОбщегоНазначения.ИмяТаблицыПоСсылке(ТипПредмета.Значение[0]);				
				ИмяПараметраПредметов = "ПредметыПроцесса" + Формат(НомерЗапроса, "ЧГ=0");
				
				Если НомерЗапроса = 1 Тогда
					ТекстЗапроса = "	
					|ВЫБРАТЬ
					|	ЕСТЬNULL(РАДО_НастройкиПроцессов.ЗначениеНастройки, ЛОЖЬ) КАК ЗначениеНастройки
					|ПОМЕСТИТЬ ВР_НастройкиПроцессов
					|ИЗ
					|	";					
				Иначе 
					ТекстЗапроса = "	
					|ВЫБРАТЬ
					|	ЕСТЬNULL(РАДО_НастройкиПроцессов.ЗначениеНастройки, ЛОЖЬ) КАК ЗначениеНастройки
					|ИЗ
					|	";
											
				КонецЕсли;
								
				МассивТекстовЗапроса.Добавить(ТекстЗапроса);				
				МассивТекстовЗапроса.Добавить(ИмяТаблицыПредмета);				
				
				ТекстЗапроса =
				" КАК ТаблицаПредмета
				|	ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РАДО_НастройкиПроцессов КАК РАДО_НастройкиПроцессов
				|		ПО РАДО_НастройкиПроцессов.ОбъектНастройки = ТаблицаПредмета.ВидДокумента
				|				И РАДО_НастройкиПроцессов.Параметр = &ПараметрПроцесса
				|ГДЕ
				|	ТаблицаПредмета.Ссылка В (&";
				
				МассивТекстовЗапроса.Добавить(ТекстЗапроса);
				МассивТекстовЗапроса.Добавить(ИмяПараметраПредметов);
				МассивТекстовЗапроса.Добавить(")");
				
				НомерЗапроса = НомерЗапроса + 1;
				
				Запрос.УстановитьПараметр(ИмяПараметраПредметов, ТипПредмета.Значение);
				
			КонецЦикла;					
			
			ТекстЗапроса = "
			|;
			|
			|////////////////////////////////////////////////////////////////////////////////
			|ВЫБРАТЬ
			|	МИНИМУМ(ВР_НастройкиПроцессов.ЗначениеНастройки) КАК ЗначениеНастройки
			|ИЗ
			|	ВР_НастройкиПроцессов КАК ВР_НастройкиПроцессов";
				
			МассивТекстовЗапроса.Добавить(ТекстЗапроса);	
			
			Запрос.Текст = СтрСоединить(МассивТекстовЗапроса);
			
			РезультатПакет = Запрос.ВыполнитьПакет();
			
			РезультатЗапросаШаблона = РезультатПакет[0];
			РезультатЗапросаПредметов = РезультатПакет[2];			
			
		КонецЕсли;
		
		Если РезультатЗапросаШаблона.Пустой() Тогда
			Если РезультатЗапросаПредметов.Пустой() Тогда
				ОтключениеЗадачиОзнакомления = Ложь; 				
			Иначе 
				ОтключениеЗадачиОзнакомления = РезультатЗапросаПредметов.Выгрузить()[0].ЗначениеНастройки;
				Если ОтключениеЗадачиОзнакомления = Null Тогда
					Возврат Ложь;
				Иначе 	
					Возврат ОтключениеЗадачиОзнакомления;
				КонецЕсли;	
			КонецЕсли  				   				
		Иначе
			ОтключениеЗадачиОзнакомления = РезультатЗапросаШаблона.Выгрузить()[0].ЗначениеНастройки;			
		КонецЕсли;					
		
	КонецЕсли; 		
	
	Возврат ОтключениеЗадачиОзнакомления;
	
КонецФункции

Тестирование проводилось на платформе 8.3.18.1334 и конфигурации Документооборот 8 КОРП, редакция 2.1 (2.1.29.18).

Расширение с настройками отключения задач ознакомления бизнес процесса согласование

См. также

1С:Документооборот - цена на лицензии КОРП, ПРОФ и ДГУ

Документооборот и делопроизводство (СЭД) Типовые Бухгалтер Пользователь Руководитель проекта Платформа 1С v8.3 Управленческий учет Платные (руб)

Организуйте правильный оборот документов на вашем предприятии в 1С. Ведение учета и хранения документов. Управление потоками документации между подразделениями. Работа с договорами в компании. Автоматизация процессов подготовки, согласования и подписания документов. Сократите время и объем ошибок с 1С:ДО!

48500 руб.

19.02.2016    107529    106    5    

89

RayCon® Foreign Trade - Документооборот валютного контроля и международных платежей для участников ВЭД

Операции по ВЭД Документооборот и делопроизводство (СЭД) Бухгалтер Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

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

30000 руб.

13.05.2009    67153    3    29    

42

Таймлист (1С:Совещание, Таймлист Лайт)

Документооборот и делопроизводство (СЭД) Конфигурации 1cv8

«Таймлист» – экосистема сервисов («Таймлист Лайт», «1C:Совещание», «Таймлист Recorder»), основанная на искусственном интеллекте Таймлист, который позволяет эффективно работать с легкими поручениями за счет фиксации всех важных идей при расшифровке и последующем формировании автопротокола встречи. Сервисы, в которые интегрирован ИИ, позволяют работать с задачами (поручениями), полученными из автопротокола.

10000 руб.

06.12.2023    1679    0    0    

8

1С:Архив

Документооборот и делопроизводство (СЭД) Платформа 1С v8.3 Платные (руб)

"1С:Архив" – это универсальная система, обеспечивающая надежное долговременное хранение документов с гарантией юридической значимости на неограниченный срок. "1С:Архив" разработан на основе нормативно-правовых актов по архивному делу, поддерживает операции хранения документов – от попадания в архив до уничтожения – и не имеет ограничений на объем хранимых данных. "1С:Архив" сопровождается методологической поддержкой в виде организационных документов по хранению, входящих в состав "Комплекта нормативных документов" к "Методике управления документами и совместной работой", разработанной специалистами фирмы "1С". Использование "1С:Архива" позволяет организовать единое хранилище всех бумажных и электронных документов из разных информационных систем, вести архивный учет в соответствии с требованиями Росархива и снизить нагрузку на учетные системы. Продукт подходит для малых, средних, крупных предприятий и учреждений любых отраслей.

90000 руб.

24.10.2022    5036    5    1    

5

Легкий документооборот (+чат-бот для Telegram)

Документооборот и делопроизводство (СЭД) Мессенджеры и боты Учет документов Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия государственного учреждения 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 Платные (руб)

Расширение для согласования справочников и документов в конфигурациях "1С: Бухгалтерия 3.0", "Управление нашей фирмой", "1С ERP Управление предприятием", "Бухгалтерия государственного учреждения". Ролевая адресация, условная маршрутизация, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Версия для 1cfresh.com. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    28401    30    48    

62

ЭДО: организация архива оригиналов первичных документов, комплексный отчет по ошибкам

Документооборот и делопроизводство (СЭД) ЭДО и ОФД Учет документов Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Мощный, единый инструмент для решения всех проблем, связанных с переходом на ЭДО. Экономит бумагу и время - организует архив оригиналов первичных документов прямо в базе 1С, в прикрепленных файлах к соответствующим документам. С помощью комплексного отчета по ошибкам в ЭДО позволяет выявить и исправить все возможные ошибки - ошибочно сопоставленные документы, не подписанные документы, подписанные, но не загруженные в 1С документы. Автоматически сопоставляет не сопоставленные между собой документы. Может работать по расписанию и присылать отчет о состоянии архива/по ошибкам на почту. Взаимодействует напрямую с сервисами Диадок/СБИС, имеет интуитивно понятный интерфейс и учитывает 3-х летний опыт 40+ клиентов.

14880 руб.

17.12.2018    44689    62    51    

75

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4871    10    5    

19

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Бухгалтер Пользователь Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    102773    299    173    

315
Оставьте свое сообщение