К примеру, есть комплексный процесс, состоящий из согласования и подписания. После прохождения согласования пользователь получает задачу подписания и хочет тут же видеть, как прошло согласование. Просматривать визы в карточке документа не хочет, слишком много телодвижений.
В качестве решения предлагается выводить всю историю выполнения комплексного процесса.
Для этого нужно внести изменения в модуль менеджера регистра сведений "История выполнения задач".
1. Заменить код функции ИсторияПоБизнесПроцессу:
// Возвращает описание истории переданного бизнес-процесса
Функция ИсторияПоБизнесПроцессу(БизнесПроцесс) Экспорт
//ИсторияВыполнения = "";
//
//УстановитьПривилегированныйРежим(Истина);
//
//Запрос = Новый Запрос("ВЫБРАТЬ
// | ИсторияВыполненияЗадач.Описание
// |ИЗ
// | РегистрСведений.ИсторияВыполненияЗадач КАК ИсторияВыполненияЗадач
// |ГДЕ
// | ИсторияВыполненияЗадач.БизнесПроцесс = &БизнесПроцесс");
//
//Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцесс);
//Выборка = Запрос.Выполнить().Выбрать();
//
//Если Выборка.Следующий() Тогда
// ИсторияВыполнения = Выборка.Описание;
//КонецЕсли;
//
//Возврат ИсторияВыполнения;
//{
ИсторияВыполнения = "";
УстановитьПривилегированныйРежим(Истина);
Если ЗначениеЗаполнено(БизнесПроцесс.ВедущаяЗадача) Тогда
ИсторияВыполнения = Доработка_ИсторияПоБизнесПроцессу(БизнесПроцесс);
КомплексныйПроцесс = БизнесПроцесс.ВедущаяЗадача.БизнесПроцесс;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеБизнесПроцессов.БизнесПроцесс КАК БизнесПроцесс
|ИЗ
| РегистрСведений.ДанныеБизнесПроцессов КАК ДанныеБизнесПроцессов
|ГДЕ
| ДанныеБизнесПроцессов.ВедущаяЗадача.БизнесПроцесс = &КомплексныйПроцесс
| И ДанныеБизнесПроцессов.БизнесПроцесс <> &БизнесПроцесс
|
|УПОРЯДОЧИТЬ ПО
| ДанныеБизнесПроцессов.ДатаНачала УБЫВ";
Запрос.УстановитьПараметр("КомплексныйПроцесс", КомплексныйПроцесс);
Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцесс);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если ЗначениеЗаполнено(Выборка.БизнесПроцесс) Тогда
ИсторияВыполнения = ?(ИсторияВыполнения = "","", ИсторияВыполнения + Символы.ПС + Символы.ПС)
+ "ПРОЦЕСС " + Строка(Выборка.БизнесПроцесс) + Символы.ПС + Символы.ПС + Доработка_ИсторияПоБизнесПроцессу(Выборка.БизнесПроцесс);
КонецЕсли;
КонецЦикла;
Возврат ИсторияВыполнения;
Иначе
Возврат Доработка_ИсторияПоБизнесПроцессу(БизнесПроцесс)
КонецЕсли;
//}
КонецФункции
И добавить функцию:
Функция Доработка_ИсторияПоБизнесПроцессу(БизнесПроцесс) Экспорт
ИсторияВыполнения = "";
УстановитьПривилегированныйРежим(Истина);
Запрос = Новый Запрос("ВЫБРАТЬ
| ИсторияВыполненияЗадач.Описание
|ИЗ
| РегистрСведений.ИсторияВыполненияЗадач КАК ИсторияВыполненияЗадач
|ГДЕ
| ИсторияВыполненияЗадач.БизнесПроцесс = &БизнесПроцесс");
Запрос.УстановитьПараметр("БизнесПроцесс", БизнесПроцесс);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ИсторияВыполнения = Выборка.Описание;
КонецЕсли;
Возврат ИсторияВыполнения;
КонецФункции
Надеюсь, кому-то будет полезен данный прием.