Управление сбором истории согласования в комплексных процессах

19.09.22

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

Интерфейс настройки сбора истории согласования в комплексных процессах.

Файлы

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

Наименование Скачано Купить файл
Расширение "Управление сбором истории согласования в комплексных процессах"
.cfe 9,67Kb
7 2 500 руб. Купить

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

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

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

Встречаются ситуации, когда провести согласование одним процессом невозможно, в этом случае можно в рамках комплексного процесса создать несколько процессов согласования, но в данном случае в задачах ознакомления будет история согласования по каждому процессу, создадим настройки вывода истории согласования сбором с нескольких процессов. 

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

 

 

 

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

 

 

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

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

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

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

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

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

Функция ПолучитьПараметрыПроцесса(БизнесПроцесс)

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

Далее функцией ПолучитьИсториюВыполненияПроцесса соберем историю выполнения по схеме или этапам процесса

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

В заключение переопределим ПолучитьОбзорЗадачи модуля ОбзорЗадачВызовСервера использую ранее добавленную функцию ПолучитьИсториюВыполненияПроцесса для дополнения собранной истории выполнения по настройкам к одной задаче. 

&ИзменениеИКонтроль("ПолучитьОбзорЗадачи")
Функция УОЗ_ПолучитьОбзорЗадачи(Знач Задача)

	HTMLТекст = ОбзорЗадачВызовСервераПереопределяемый.ПолучитьОбзорЗадачи(Задача);
	Если ЗначениеЗаполнено(HTMLТекст) Тогда 
		Возврат HTMLТекст;
	КонецЕсли;
    #Вставка
	ПараметрыИсторияВыполненияПроцесса = ПолучитьИсториюВыполненияПроцесса(Задача.БизнесПроцесс);	
   	#КонецВставки
	// Формируем основное представление процесса
	HTMLТекст = "<html>
	|<head>
	|<style type=""text/css"">
	|	body {
	|		overflow:    auto;
	|		margin-top:  2px;
	|		margin-left: 2px;
	|		margin-right: 2px;
	|		font-family: Arial; 
	|		font-size:   10pt;}
	|	table {
	|		width:       100%;
	|		font-family: Arial; 
	|		font-size:   10pt;
	|		border: 0px solid;}
	|	td {vertical-align: top;}
	| 	a:link {
	|		color: #006699; text-decoration: none;}
	|	a:visited {
	|		color: #006699; text-decoration: none;}
	|	a:hover {
	|		color: #006699; text-decoration: underline;}
	|	p {
	|		margin-top: 7px;}
	|	img {border: 0px;}
	|</style>
	|<body>";

	СостояниеВыполненияЗадачи = РегистрыСведений.ЗадачиДляВыполнения.СостояниеВыполненияЗадачи(Задача.Ссылка);

	// Состояние процесса и результат выполнения задачи
	Если Задача.СостояниеБизнесПроцесса = Перечисления.СостоянияБизнесПроцессов.Прерван Тогда

		ПричинаПрерывания = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(
		Задача.Ссылка, "БизнесПроцесс.ПричинаПрерывания");

		Если ПустаяСтрока(ПричинаПрерывания) Тогда
			ПричинаПрерывания = НСтр("ru = 'Задача прервана'");	
		Иначе			
			ПричинаПрерывания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			НСтр("ru = 'Задача прервана: %1'"),
			ПричинаПрерывания);
		КонецЕсли;

		HTMLТекст = HTMLТекст + "<table bgcolor=#F0F0F0><tr>";
		HTMLТекст = HTMLТекст + "<td width=20>";
		ОбзорОбъектовКлиентСервер.ДобавитьКартинку(
		HTMLТекст, БиблиотекаКартинок.ЗнакПрерванПроцесс, "ПоказатьПричинуПрерыванияПроцесса");
		HTMLТекст = HTMLТекст + "</td>";
		HTMLТекст = HTMLТекст + "<td>";
		HTMLТекст = HTMLТекст + СтрШаблон(
		"<A href=ПоказатьПричинуПрерыванияПроцесса>%1</A>",
		РаботаС_HTML.ЗаменитьСпецСимволыHTML(ПричинаПрерывания));
		HTMLТекст = HTMLТекст + "</td>";

		HTMLТекст = HTMLТекст + "</tr></table>";

		HTMLТекст = HTMLТекст + "<p>";

	ИначеЕсли Задача.СостояниеБизнесПроцесса = Перечисления.СостоянияБизнесПроцессов.Остановлен Тогда

		HTMLТекст = HTMLТекст + "<table bgcolor=#F0F0F0><tr>";
		HTMLТекст = HTMLТекст + "<td width=20> ";
		ОбзорОбъектовКлиентСервер.ДобавитьКартинку(HTMLТекст, БиблиотекаКартинок.ЗнакПауза);
		HTMLТекст = HTMLТекст + "</td>";
		HTMLТекст = HTMLТекст + "<td>";
		ОбзорОбъектовКлиентСервер.ДобавитьЗначение(HTMLТекст, НСтр("ru = 'Задача остановлена'"), "");
		HTMLТекст = HTMLТекст + "</td>";
		HTMLТекст = HTMLТекст + "</tr></table>";

		HTMLТекст = HTMLТекст + "<p>";

	ИначеЕсли СостояниеВыполненияЗадачи.СостояниеВыполнения = Перечисления.СостоянияЗадачДляВыполнения.ВыполнениеОтменено Тогда

		HTMLТекст = HTMLТекст + "<table bgcolor=#F0F0F0><tr>";
		HTMLТекст = HTMLТекст + "<td width=20>";
		ОбзорОбъектовКлиентСервер.ДобавитьКартинку(
		HTMLТекст, БиблиотекаКартинок.Предупреждение, "ПоказатьПричинуОтменыВыполнения");
		HTMLТекст = HTMLТекст + "</td>";
		HTMLТекст = HTMLТекст + "<td>";

		ПричинаОтменыВыполненияHTML = "";
		ОбзорОбъектовКлиентСервер.ДобавитьЗначение(
		ПричинаОтменыВыполненияHTML,
		СостояниеВыполненияЗадачи.ПричинаОтменыВыполнения,
		"FF0000");

		HTMLТекст = HTMLТекст + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
		"<A href=ПоказатьПричинуОтменыВыполнения>%1</A>", ПричинаОтменыВыполненияHTML);

		HTMLТекст = HTMLТекст + "</td>";

		HTMLТекст = HTMLТекст + "</tr></table>";

		HTMLТекст = HTMLТекст + "<p>";

	ИначеЕсли СостояниеВыполненияЗадачи.СостояниеВыполнения = Перечисления.СостоянияЗадачДляВыполнения.ГотоваКВыполнению Тогда

		HTMLТекст = HTMLТекст + "<table bgcolor=#F0F0F0><tr>";
		HTMLТекст = HTMLТекст + "<td width=20> ";
		ОбзорОбъектовКлиентСервер.ДобавитьКартинку(HTMLТекст, БиблиотекаКартинок.СтартБизнесПроцесса);
		HTMLТекст = HTMLТекст + "</td>";
		HTMLТекст = HTMLТекст + "<td>";
		ОбзорОбъектовКлиентСервер.ДобавитьЗначение(HTMLТекст,
		НСтр("ru = 'Задача находится в очереди для выполнения. Выполнение задачи произойдет автоматически в ближайшее время.'"), "");
		HTMLТекст = HTMLТекст + "</td>";
		HTMLТекст = HTMLТекст + "</tr></table>";

		HTMLТекст = HTMLТекст + "<p>";

	ИначеЕсли Задача.Выполнена Тогда

		МетаданныеПроцесса = ОбщегоНазначения.МенеджерОбъектаПоСсылке(Задача.БизнесПроцесс);
		ПредставлениеРезультатаЗадачи = МетаданныеПроцесса.ПредставлениеРезультатаЗадачи(Задача);

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

		Если РезультатВыполненияЗадачи = 
			Перечисления.ВариантыВыполненияПроцессовИЗадач.Положительно Тогда

			Картинка = БиблиотекаКартинок.РезультатВыполненияПроцессовИЗадач_Положительный;
			ЦветТекста = "#008000";
		ИначеЕсли РезультатВыполненияЗадачи = 
			Перечисления.ВариантыВыполненияПроцессовИЗадач.Отрицательно Тогда

			Картинка = БиблиотекаКартинок.РезультатВыполненияПроцессовИЗадач_Отрицательный;
			ЦветТекста = "#B22222";
		ИначеЕсли РезультатВыполненияЗадачи = Перечисления.
			ВариантыВыполненияПроцессовИЗадач.ПоложительноСЗамечаниями Тогда

			Картинка = БиблиотекаКартинок.РезультатВыполненияПроцессовИЗадач_ПоложительныйСЗамечаниями;
			ЦветТекста = "#008000";
		Иначе
			Картинка = БиблиотекаКартинок.РезультатВыполненияПроцессовИЗадач;
			ЦветТекста = "";
		КонецЕсли;

		HTMLТекст = HTMLТекст + "<table bgcolor=#F0F0F0><tr>";

		HTMLТекст = HTMLТекст + "<td width=20>";
		ОбзорОбъектовКлиентСервер.ДобавитьКартинку(HTMLТекст, Картинка);
		HTMLТекст = HTMLТекст + "</td>";

		HTMLТекст = HTMLТекст + "<td>";
		ОбзорОбъектовКлиентСервер.ДобавитьЗначение(HTMLТекст, ПредставлениеРезультатаЗадачи, ЦветТекста);
		HTMLТекст = HTMLТекст + "</td>";

		HTMLТекст = HTMLТекст + "</tr></table>";

		HTMLТекст = HTMLТекст + "<p>";

	КонецЕсли;

	HTMLТекст = HTMLТекст + "<table><tr>";
	HTMLТекст = HTMLТекст + "<td>";

	// Наименование
	HTMLТекст = HTMLТекст + "<B>";
	ОбзорОбъектовКлиентСервер.ДобавитьЗначение(HTMLТекст, Задача.Наименование, "");
	HTMLТекст = HTMLТекст + "<br>";
	HTMLТекст = HTMLТекст + "</B>";

	ПредметДокумент = ПолучитьОсновнойПредметДокумент(Задача.Предметы);
	Если ЗначениеЗаполнено(ПредметДокумент) Тогда

		ОбзорПредмета = ПолучитьОбзорПредметаЗадачи(ПредметДокумент);
		Если Не ПустаяСтрока(ОбзорПредмета) Тогда
			HTMLТекст = HTMLТекст + "<p>" + ОбзорПредмета + "</p>";
		КонецЕсли;	

	КонецЕсли;		

	// Описание
	Если ЗначениеЗаполнено(Задача.Описание) Тогда
		HTMLТекст = HTMLТекст + "<p>";

		ОписаниеЗадачиHTML = "";
		ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ОписаниеЗадачиHTML, "", Задача.Описание);

		ОписаниеЗадачиHTML = СтрЗаменить(ОписаниеЗадачиHTML, Символы.Таб, "&nbsp;&nbsp;&nbsp;");
		ОписаниеЗадачиHTML = СтрЗаменить(ОписаниеЗадачиHTML, Символы.ПС, "<br>");

		HTMLТекст = HTMLТекст + ОписаниеЗадачиHTML;

	КонецЕсли;

	// Важность
	Если Задача.Важность = Перечисления.ВариантыВажностиЗадачи.Высокая Тогда
		Важность = НСтр("ru = 'Высокая'");
	ИначеЕсли Задача.Важность = Перечисления.ВариантыВажностиЗадачи.Обычная Тогда
		Важность = НСтр("ru = 'Обычная'");
	ИначеЕсли Задача.Важность = Перечисления.ВариантыВажностиЗадачи.Низкая Тогда
		Важность = НСтр("ru = 'Низкая'");
	КонецЕсли;
	HTMLТекст = HTMLТекст + "<p>";
	ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(HTMLТекст, НСтр("ru = 'Важность: '"), Важность);

	// Исполнитель
	HTMLТекст = HTMLТекст + "<p>";
	ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, НСтр("ru = 'Кому:'"));

	ТекущийПользователь = ПользователиКлиентСервер.ТекущийПользователь();
	ИсполнителиЗадачПользователя = БизнесПроцессыИЗадачиСервер.
	ИсполнителиЗадачПользователя(ТекущийПользователь);

	// Признак ролевой/делегированной задачи
	ЗадачаДелегированаТекущемуПользователю = 
	РегистрыСведений.ИсполнителиРолейИДелегаты.ИсполнительЯвляетсяДелегатом(
	Задача.ТекущийИсполнитель,
	ТекущийПользователь,
	"ПроцессыИЗадачи");

	Если ЗадачаДелегированаТекущемуПользователю Тогда
		ОбзорОбъектовКлиентСервер.ДобавитьКартинку(HTMLТекст, БиблиотекаКартинок.ДелегированнаяЗадача);
		HTMLТекст = HTMLТекст + " ";
	ИначеЕсли ТипЗнч(Задача.ТекущийИсполнитель) = Тип("СправочникСсылка.ПолныеРоли") Тогда
		ОбзорОбъектовКлиентСервер.ДобавитьКартинку(HTMLТекст, БиблиотекаКартинок.РолеваяЗадача);
		HTMLТекст = HTMLТекст + " ";
	КонецЕсли;

	Если НЕ Задача.Исполнитель.Пустая() Тогда
		ОбзорОбъектовКлиентСервер.ДобавитьЗначение(HTMLТекст, Задача.Исполнитель, "");
	Иначе
		ИсполнительСтрокой = Строка(Задача.РольИсполнителя);
		HTMLТекст = HTMLТекст + СтрШаблон(
		"<A href=v8doc:%1>%2</A>",
		ПолучитьНавигационнуюСсылку(Задача.РольИсполнителя),
		РаботаС_HTML.ЗаменитьСпецСимволыHTML(Строка(ИсполнительСтрокой)));
	КонецЕсли;

	HTMLТекст = HTMLТекст + "<br>";

	// Срок
	Если ЗначениеЗаполнено(Задача.СрокИсполнения) Тогда
		ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, НСтр("ru = 'Срок:'"));
		ФормаДаты = ?(ПолучитьФункциональнуюОпцию("ИспользоватьДатуИВремяВСрокахЗадач"),
		"ДФ='dd.MM.yyyy HH:mm'", "ДФ='dd.MM.yyyy'");

		Если ТипЗнч(Задача.БизнесПроцесс) <> 
			Тип("БизнесПроцессСсылка.РешениеВопросовВыполненияЗадач")
			И Не Задача.Выполнена
			И ПолучитьФункциональнуюОпцию("ВестиУчетПереносовСроковЗадач") Тогда

			HTMLТекст = HTMLТекст + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
			"<A href=%1> %2</A>",
			"ИзменитьСрокВыполнения",
			Формат(Задача.СрокИсполнения, ФормаДаты));
		Иначе
			HTMLТекст = HTMLТекст + " " + Формат(Задача.СрокИсполнения, ФормаДаты);
		КонецЕсли;

		HTMLТекст = HTMLТекст + "<br>";
	КонецЕсли;

	// Автор
	ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(HTMLТекст, НСтр("ru = 'Автор:'"), Задача.Автор);

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

		КонтролерыСтрокой = СтрСоединить(Контролеры, ", ");

		Если Задача.Выполнена Тогда
			ПодписьКонтролера = НСтр("ru = 'Контролеры: '");
		Иначе
			КоличествоКонтролеров = Контролеры.Количество();
			Если КоличествоКонтролеров = 1 Тогда
				ПодписьКонтролера = НСтр("ru = 'Контролирует: '");
			ИначеЕсли КоличествоКонтролеров > 1 Тогда
				ПодписьКонтролера = НСтр("ru = 'Контролируют: '");
			КонецЕсли;
		КонецЕсли;

		ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, ПодписьКонтролера);
		HTMLТекст = HTMLТекст + СтрШаблон(
		"<A href=ОткрытьКарточкуКонтроля>%1</A>", 
		РаботаС_HTML.ЗаменитьСпецСимволыHTML(КонтролерыСтрокой));
		HTMLТекст = HTMLТекст + "<br>";

	КонецЕсли;

	// История выполнения
	ИсторияВыполнения = РегистрыСведений.ИсторияВыполненияЗадач.ИсторияПоБизнесПроцессу(
	Задача.БизнесПроцесс);
	Если ЗначениеЗаполнено(ИсторияВыполнения) Тогда
		HTMLТекст = HTMLТекст + "<p>";
		HTMLТекст = HTMLТекст + "<B>";
		ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, НСТР("ru = 'История выполнения:'")); 
		HTMLТекст = HTMLТекст + "</B>";
		HTMLТекст = HTMLТекст + "<br>";
 		#Вставка
		Если ПараметрыИсторияВыполненияПроцесса.ДополнитьИсториейПроцесса Тогда
			HTMLТекст = HTMLТекст + "<p>";
			HTMLТекст = HTMLТекст + "<B>";			
			ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, ПараметрыИсторияВыполненияПроцесса.НаименованиеТекущегоПроцесса);
			HTMLТекст = HTMLТекст + "</B>";
			HTMLТекст = HTMLТекст + "<br>";
        КонецЕсли;			
		#КонецВставки

		ИсторияВыполненияHTML = "";
		ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ИсторияВыполненияHTML, "", ИсторияВыполнения);
		ИсторияВыполненияHTML = СтрЗаменить(ИсторияВыполненияHTML, Символы.Таб, "&nbsp;&nbsp;&nbsp;");
		ИсторияВыполненияHTML = СтрЗаменить(ИсторияВыполненияHTML, Символы.ПС, "<br>");

		HTMLТекст = HTMLТекст + ИсторияВыполненияHTML;

	КонецЕсли;
    #Вставка
	
	Если ПараметрыИсторияВыполненияПроцесса.ДополнитьИсториейПроцесса Тогда
		
		Если Не ЗначениеЗаполнено(ИсторияВыполнения) Тогда 
			HTMLТекст = HTMLТекст + "<p>";
			HTMLТекст = HTMLТекст + "<B>";
			ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, НСТР("ru = 'История выполнения:'"));
			HTMLТекст = HTMLТекст + "</B>";
			HTMLТекст = HTMLТекст + "<br>";
		КонецЕсли;
	
		Для Каждого Стр Из ПараметрыИсторияВыполненияПроцесса.ТаблицаОписаний Цикл 
			
			HTMLТекст = HTMLТекст + "<br>";
			HTMLТекст = HTMLТекст + "<B>";
			ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, Стр.НаименованиеПроцесса);
			HTMLТекст = HTMLТекст + "</B>";	
			HTMLТекст = HTMLТекст + "<br>";
			
			ИсторияСогласованияHTML = "";
			ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ИсторияСогласованияHTML, "", Стр.Описание);
			ИсторияСогласованияHTML = СтрЗаменить(ИсторияСогласованияHTML, Символы.Таб, "&nbsp;&nbsp;&nbsp;");
			ИсторияСогласованияHTML = СтрЗаменить(ИсторияСогласованияHTML, Символы.ПС, "<br>");
			
			HTMLТекст = HTMLТекст + ИсторияСогласованияHTML;	
			
		КонецЦикла;
		
	КонецЕсли;
	
	#КонецВставки
	HTMLТекст = HTMLТекст + "</td>";

	HTMLТекст = HTMLТекст + "</tr></table>";

	HTMLТекст = HTMLТекст + "</body></html>";

	Возврат HTMLТекст;

КонецФункции

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

Вступайте в нашу телеграмм-группу Инфостарт

Расширение с настройками управления сбором истории согласования

См. также

Бухгалтер Пользователь Руководитель проекта 1С:Предприятие 8 Управленческий учет Платные (руб)

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

55300 руб.

19.02.2016    113035    145    5    

115

1С:Предприятие 8 Платные (руб)

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

117000 руб.

24.10.2022    7321    11    1    

11

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36600 руб.

28.08.2025    5093    2    2    

5

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

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

32330 руб.

29.06.2023    10780    31    15    

39

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

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

7930 руб.

12.02.2019    36423    35    24    

31

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

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

54900 руб.

23.05.2017    61447    36    69    

43

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

5084 руб.

07.02.2023    11465    107    20    

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