Отображение истории выполнения по всем задачам комплексного процесса в документообороте

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

В типовом решении для комплексных процессов история выполнения задач выводится только для текущего процесса. Например, есть комплексный процесс из трех действий:

После выполнения первых двух действий в третьем действии ("Ознакомление") исполнитель не сможет увидеть комментарии по двум предыдущим задачам. Для того, чтобы просмотреть комментарии нужно будет открыть каждую из задач.

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

Структура доработки.

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, Символы.Таб, "&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 = СтрЗаменить(ИсторияВыполнения, Символы.Таб, "&nbsp;&nbsp;&nbsp;");
ИсторияВыполнения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, Символы.Таб, "&nbsp;&nbsp;&nbsp;");
НаименованиеЗадачи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, Символы.Таб, "&nbsp;&nbsp;&nbsp;");
ПолноеОписаниеЗадачи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 = СтрЗаменить(ИсторияВыполнения, Символы.Таб, "&nbsp;&nbsp;&nbsp;");
ИсторияВыполненияHTML = СтрЗаменить(ИсторияВыполнения, Символы.ПС, "<br>");

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

КонецЕсли;
КонецЕсли;

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

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

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

#КонецОбласти

 

Результат доработки:

Данная доработка производилась на версии документооборота 2.1.11.5.

6 Comments

  1. Danchik.

    Добрый день!

    Вообще является актуальным вопрос вывода на форму задачи бизнес-процесса реквизитов предмета договора. Такое возможно стандартными средствами что-то подобное сделать? Насколько понимаю, форма задачи вообще не изменяется стандартно. Т.е. хотелось бы первичным объектом рассматривать все-таки появляющуюся задачу и в ней редактировать реквизиты предмета.

    Reply
  2. pavelpribytkin96

    (1)

    первичным объектом рассматривать все-таки появляющуюся задачу и в ней редактировать реквизиты предмета.

    Добрый день.

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

    Reply
  3. Danchik.

    Или еще актуальным является. Руководитель, запускает постоянно процессы по одному предмету в ERP и он не хочет ходить в ДО, чтобы смотреть на процессы и их схемы там. А в ERP нет рабочего стола процессов со схеми для анализа, чтобы он мог мониторить свои процессы. Остается ему вариант смотреть процессы через каждый из созданных предметов, кликая в предметах ссылку на ДО. Но это не вариант. То есть он хочет работать с процессами, предметами и задачами только в ERP.

    Reply
  4. Danchik.

    Павел, нужны доработки по ДО. Выйдите со мной на контакт, скайп kubarevde.

    Reply
  5. Gle

    Спасибо за статью! Очень полезная вещь. Пользователи требовали историю задач. Внедрила у себя. Единственное — все сделала через расширение. Но думаю, что и вы тоже так сделали.

    Reply
  6. pavelpribytkin96

    (5)Нет, у себя расширения не использовал.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *