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

19.09.22

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Расширение "Управление сбором истории согласования в комплексных процессах"
.cfe 9,67Kb
7
7 Скачать (1 SM) Купить за 1 850 руб.

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

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

 

 

 

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

 

 

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

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

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

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

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

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

48500 руб.

19.02.2016    108778    126    5    

98

SALE! 30%

Загрузка и выгрузка в 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 5880 руб.

04.06.2019    107692    313    173    

326

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

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

7200 руб.

02.08.2023    4400    17    1    

35

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

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

30000 руб.

23.05.2017    56619    36    68    

43

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

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

14900 руб.

15.11.2018    30541    35    49    

71

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

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

29400 руб.

29.06.2023    6273    15    5    

24

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

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

14880 руб.

17.12.2018    45805    66    61    

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