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

18.08.22

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Управление созданием задач ознакомления в процессах:
.cfe 10,43Kb
14
14 Скачать (1 SM) Купить за 1 850 руб.

Бывает необходимость при настройке шаблонов процессов 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С v8.3 Управленческий учет Платные (руб)

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

48500 руб.

19.02.2016    108941    127    5    

98

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

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

29400 руб.

29.06.2023    6445    17    5    

26

Загрузка и выгрузка в 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С и нажимаете кнопку "Распознать и загрузить".

8400 руб.

04.06.2019    108000    314    173    

326

Логистика, склад и ТМЦ Адаптация типовых решений Пользователь Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    4488    17    1    

35

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

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

30000 руб.

23.05.2017    56769    36    68    

43

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    7108    75    17    

32

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

Приложение для быстрого создания макетов печатных документов, заполняемых из 1С:Предприятие, без привлечения программистов и запуска конфигуратора. Шаблон готовится в редакторе MS Word, отлично освоенном офисными служащими. Так, на подготовку нового шаблона договора купли продажи со спецификацией потребуется 25 минут. Приложение будет полезно, если Вы работаете со множеством Word-шаблонов или если Вам надо часто создавать новые шаблоны. Есть сертификат "1С: Совместимо!". Версия ПРОФ доступна в виде расширения.

2000 руб.

05.09.2017    92829    67    100    

101

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

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

14880 руб.

17.12.2018    45890    66    61    

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