В типовом решении для комплексных процессов история выполнения задач выводится только для текущего процесса. Например, есть комплексный процесс из трех действий:
После выполнения первых двух действий в третьем действии ("Ознакомление") исполнитель не сможет увидеть комментарии по двум предыдущим задачам. Для того, чтобы просмотреть комментарии нужно будет открыть каждую из задач.
Для вывода полной истории по задачам было принято решение создать свой регистр сведений, т.к через типовые объекты не получилось написать оптимальный запрос для получения данных и в истории по задачам необходимо было выводить гиперссылки по задачам.
Структура доработки.
1) Нужно добавить собственный регистр сведений:
2) В модуле менеджера регистра сведений "пп_ИсторияВыполненияЗадач" нужно прописать процедуру для записи данных.
3) В типовом регистре сведений "ИсторияВыполненияЗадач" необходимо переопределить процедуру модуля менеджера "ИсторияПоБизнесПроцессу" для того, чтобы выборка данных происходила из регистра сведений "пп_ИсторияВыполненияЗадач".
4) В модуле объекта задачи исполнителя нужно добавить в процедуру "ПередЗаписью" заполнение регистра сведений "пп_ИсторияВыполненияЗадач".
Заполнение истории выполнения обозначено комментарием в типовом коде.
5) В общем модуле "ОбзорЗадачВызовСервераПереопределяемый" нужно заполнить функции "ПолучитьОбзорЗадачи" и "ПолучитьОбзорЗадачиДляСпискаЗадачиМне" для того, чтобы корректно отображались данные по ссылке на задачу и другие теги html добавляемые в текст по задаче.
// Возвращает текст HTML для показа обзора процесса Исполнение
//
// Параметры:
// Задача - ЗадачаСсылка.ЗадачаИсполнителя
//
Функция ПолучитьОбзорЗадачи(Задача) Экспорт
HTMLТекст = "";
HTMLТекст = пп_ПолучитьОбзорЗадачи(Задача);
Возврат HTMLТекст;
КонецФункции
// Возвращает текст HTML для показа обзора задачи
//
// Параметры:
// РеквизитыЗадачи - Структура - реквизиты задачи:
// Ссылка
// БизнесПроцесс
// БизнесПроцессВедущаяЗадача
// Описание
// Наименование
// ТочкаМаршрута
// Выполнена
// РезультатВыполнения
// Исполнитель
// РольИсполнителя
// НомерИтерацииЗадачи
//
// Возвращаемое значение:
// Строка - текст HTML
//
Функция ПолучитьОбзорЗадачиДляСпискаЗадачиМне(РеквизитыЗадачи) Экспорт
HTMLТекст = пп_ПолучитьОбзорЗадачДляСпискаЗадачиМне(РеквизитыЗадачи);
Возврат 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, Символы.Таб, " ");
ОписаниеЗадачи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 = СтрЗаменить(ИсторияПеренаправлений, Символы.ПС, "<br>");
HTMLТекст = HTMLТекст + ИсторияПеренаправленийHTML;
КонецЕсли;
// История выполнения
ИсторияВыполнения = РегистрыСведений.ИсторияВыполненияЗадач.ИсторияПоБизнесПроцессу(
Задача.БизнесПроцесс);
Если ЗначениеЗаполнено(ИсторияВыполнения) Тогда
HTMLТекст = HTMLТекст + "<p>";
HTMLТекст = HTMLТекст + "<B>";
ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, НСТР("ru = 'История выполнения:'"));
HTMLТекст = HTMLТекст + "</B>";
HTMLТекст = HTMLТекст + "<br>";
ИсторияВыполненияHTML = СтрЗаменить(ИсторияВыполнения, Символы.Таб, " ");
ИсторияВыполненияHTML = СтрЗаменить(ИсторияВыполнения, Символы.ПС, "<br>");
HTMLТекст = HTMLТекст + ИсторияВыполненияHTML;
КонецЕсли;
HTMLТекст = HTMLТекст + "</td>";
HTMLТекст = HTMLТекст + "</tr></table>";
HTMLТекст = HTMLТекст + "</body></html>";
Возврат HTMLТекст;
КонецФункции
// Возвращает текст HTML для показа обзора задачи
//
// Параметры:
// РеквизитыЗадачи - Структура - реквизиты задачи:
// Ссылка
// БизнесПроцесс
// БизнесПроцессВедущаяЗадача
// Описание
// Наименование
// ТочкаМаршрута
// Выполнена
// РезультатВыполнения
// Исполнитель
// РольИсполнителя
// НомерИтерацииЗадачи
//
// Возвращаемое значение:
// Строка - текст HTML
//
функция пп_ПолучитьОбзорЗадачДляСпискаЗадачиМне(РеквизитыЗадачи) Экспорт
ТекущийПользователь = ПользователиКлиентСервер.ТекущийПользователь();
СтрокаПолноеОписаниеЗадачи = РеквизитыЗадачи.Описание;
ТекстHTML = "<html>
|<head>
| <style>
| h1 {
| font-size: 10pt;
| font-family:Arial;
| }
| p {
| font-size: 10pt;
| font-family:Arial;
| }
| BODY {
| margin: 0px;
| padding: 3px;
| }
| </style>
|</head>
|<body scroll=auto>";
// Отображаем Кому в мини-карточке, если задача делегирована либо назначена роли.
ОписаниеИсполнителя = "";
Если ЗначениеЗаполнено(РеквизитыЗадачи.Исполнитель) Тогда
Если РеквизитыЗадачи.Исполнитель <> ТекущийПользователь Тогда
ОписаниеИсполнителя = Строка(РеквизитыЗадачи.Исполнитель);
КонецЕсли;
Иначе
ОписаниеИсполнителя = Строка(РеквизитыЗадачи.РольИсполнителя);
КонецЕсли;
ТекстHTML = ТекстHTML + "<h1>";
НаименованиеЗадачиHTML = "";
ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(НаименованиеЗадачиHTML, "", РеквизитыЗадачи.Наименование);
НаименованиеЗадачиHTML = СтрЗаменить(НаименованиеЗадачиHTML, Символы.Таб, " ");
НаименованиеЗадачиHTML = СтрЗаменить(НаименованиеЗадачиHTML, Символы.ПС, "<br>");
ТекстHTML = ТекстHTML + НаименованиеЗадачиHTML;
ТекстHTML = ТекстHTML + "</h1>";
Если ЗначениеЗаполнено(ОписаниеИсполнителя) Тогда
ТекстHTML = ТекстHTML + "<p>";
ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ТекстHTML, НСТР("ru = 'Кому: '"), ОписаниеИсполнителя);
ТекстHTML = ТекстHTML + "</p>";
КонецЕсли;
Если РеквизитыЗадачи.НомерИтерацииЗадачи > 0 Тогда
ТекстHTML = ТекстHTML + "<p>";
ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ТекстHTML, НСТР("ru = 'Цикл: '"), РеквизитыЗадачи.НомерИтерацииЗадачи);
ТекстHTML = ТекстHTML + "</p>";
КонецЕсли;
Если РеквизитыЗадачи.Свойство("ПредметДокумент") Тогда
ОбзорПредмета = ПолучитьОбзорПредметаЗадачи(РеквизитыЗадачи.ПредметДокумент);
Если Не ПустаяСтрока(ОбзорПредмета) Тогда
ТекстHTML = ТекстHTML + "<p>" + ОбзорПредмета + "</p>";
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(СтрокаПолноеОписаниеЗадачи) Тогда
ПолноеОписаниеЗадачиHTML = "";
ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ПолноеОписаниеЗадачиHTML, "", СтрокаПолноеОписаниеЗадачи);
ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.Таб, " ");
ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.ПС, "<br>");
ТекстHTML = ТекстHTML + "<p>" + ПолноеОписаниеЗадачиHTML + "</p>";
Иначе
ТекстHTML = ТекстHTML + "<p><FONT color=""#C0C0C0"">"
+ НСтр("ru = 'У задачи нет описания.'") + "</FONT></p>";
КонецЕсли;
//История перенаправлений задачи
ИсторияПеренаправлений = ПолучитьИсториюПеренаправленийЗадачи(РеквизитыЗадачи.Ссылка);
Если ЗначениеЗаполнено(ИсторияПеренаправлений) Тогда
ТекстHTML = ТекстHTML + "<p>";
ТекстHTML = ТекстHTML + "<B>";
ОбзорОбъектовКлиентСервер.ДобавитьПодпись(ТекстHTML, НСТР("ru = 'История перенаправлений задачи:'"));
ТекстHTML = ТекстHTML + "</B>";
ТекстHTML = ТекстHTML + "<br>";
ИсторияПеренаправлений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 + ИсторияВыполненияHTML;
КонецЕсли;
КонецЕсли;
ТекстHTML = ТекстHTML + "</body></html>";
Возврат ТекстHTML;
Конецфункции
функция ПолучитьИсториюПеренаправленийЗадачи(Задача)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ИсторияСобытийЗадач.Комментарий КАК Комментарий,
| ИсторияСобытийЗадач.ДатаСобытия КАК ДатаСобытия
|ИЗ
| РегистрСведений.ИсторияСобытийЗадач КАК ИсторияСобытийЗадач
|ГДЕ
| ИсторияСобытийЗадач.Задача = &Задача
| И ИсторияСобытийЗадач.Событие = ЗНАЧЕНИЕ(Перечисление.ВидыСобытийЗадач.Перенаправлена)
|
|УПОРЯДОЧИТЬ ПО
| ИсторияСобытийЗадач.ДатаСобытия УБЫВ";
Запрос.УстановитьПараметр("Задача",Задача);
РезультатЗапроса = Запрос.Выполнить();
ИсторияПеренаправлений = "";
Если РезультатЗапроса.Пустой() Тогда
Возврат ИсторияПеренаправлений;
Иначе
ТекстРазделитель = Символы.ПС +
"------------------------------------" +
Символы.ПС;
Выборка = РезультатЗапроса.Выбрать();
Пока Выборка.Следующий() Цикл
ИсторияПеренаправлений = ИсторияПеренаправлений
+ ?(ПустаяСтрока(ИсторияПеренаправлений), "", ТекстРазделитель)
+ Выборка.Комментарий + "." + "Дата события:" + " " + Выборка.ДатаСобытия;
КонецЦикла;
Возврат ИсторияПеренаправлений;
КонецЕсли;
Конецфункции
#КонецОбласти
Результат доработки:
Данная доработка производилась на версии документооборота 2.1.11.5.