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

18.08.22

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

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

Файлы

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

Наименование Скачано Купить файл
Управление созданием задач ознакомления в процессах:
.cfe 10,43Kb
15 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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

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

55300 руб.

19.02.2016    113828    150    5    

117

Рабочее место Производство готовой продукции (работ, услуг) Перенос данных 1C Пользователь 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Документооборот 1С:Комплексная автоматизация 2.х 1С:КА 1С:ДО Платные (руб)

Продукт "Интеграция с 1С:Документооборот" позволяет использовать функции программы "1С:Документооборот 8" напрямую из учетной системы (1С:УПП; 1С:КА, 1С:УТ 10.3, 1С:БГУ 1.0, 1С:ЗБУ 1.0, 1С:УПП для Казахстана и отраслевых решений, разработанных на их основе) на платформе "1С:Предприятие 8": выполнять и ставить задачи, просматривать документы, скан-копии и прочие файлы, штрих-кодировать документы отправлять письма, вести учет рабочего времени - не входя в "1С:Документооборот 8", работая в одной программе, что значительно сокращает время и делает работу более комфортной и эффективной. Продукт прошел сертификацию 1С-Совместимо

135530 руб.

11.06.2015    62120    38    20    

48

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

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

32330 руб.

29.06.2023    11556    34    15    

41

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

Расширение для печати договоров с приложением из шаблонов. Быстрая подготовка заполненных договоров без ручного заполнения. Возможность использования дополнительных реквизитов контрагентов и номенклатуры Быстрое сохранение файлов договоров и отправка по электронной почте. Решение в Реестре отечественного ПО.

15000 руб.

20.04.2016    67673    194    107    

108

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

Расширение для согласования справочников и документов в основных типовых конфигурациях. Ролевая адресация, условная маршрутизация, чат-бот telegram, интеграция с n8n, последовательное и параллельное согласование, уведомление о новых задачах на почту, блокировка объектов в зависимости от статуса, запрет проведения в зависимости от статуса, автозапуск процессов согласования, отчеты по исполнительской дисциплине. Не требуется снятие конфигурации с поддержки. Настройка без программирования. Сертификат 1С-Совместимо.

14900 руб.

15.11.2018    41261    48    60    

83

Печатные формы Адаптация типовых решений Бухгалтер Пользователь 1С:Предприятие 8 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, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с соответствующими именами, при выводе на печать в размещённые картинки будут выводиться факсимиле из прикреплённых рисунков. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

5500 руб.

07.02.2023    12423    115    20    

71

Email рассылки Взаиморасчеты Акт сверки Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Данная обработка позволяет сократить объем ручных операций, выполняемых ежемесячно бухгалтером или его помощником за счет автоматизации систематического процесса.

7930 руб.

12.02.2019    37000    38    24    

31
Для отправки сообщения требуется регистрация/авторизация