Вывод всей истории в задаче комплексного процесса

11.12.18

Разработка - Универсальные функции

В статье описывается, какие изменения нужно сделать, чтобы в задаче комплексного процесса выводилась вся история (по всем процессам), а не только история текущего процесса.

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

В качестве решения предлагается выводить всю историю выполнения комплексного процесса.

Для этого нужно внести изменения в модуль менеджера регистра сведений "История выполнения задач".

1. Заменить код функции ИсторияПоБизнесПроцессу:

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

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

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

И добавить функцию:

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

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

Надеюсь, кому-то будет полезен данный прием.

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

1С:Документооборот

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Универсальные функции 1С 8.3 1С:Документооборот Россия Платные (руб)

ДО+ — расширение конфигурации, в котором собран постоянно пополняемый набор из 33 востребованных доработок для 1С:Документооборот КОРП 3.0: согласование задач прямо из мессенджеров MAX и Telegram, отзыв согласования и исполнения, гибкие повторные круги, эскалация с точностью до минут, контроль исполнительской дисциплины, выгрузка вложений в ZIP и склейка PDF, реестр документов в Excel, проверка дублей контрагентов и регистрационных номеров. Каждая возможность активируется отдельным флажком в режиме предприятия — включается только то, что нужно конкретной организации. Список функций расширяется с каждым релизом — текущая версия 2.1.0. Режим AddOn: типовая конфигурация не модифицируется, обновления ДО ставятся штатно, дополнительные лицензии и внешние компоненты не требуются. Внедрение силами администратора — около часа.

30000 руб.

09.07.2026    967    1    0    

2

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

Описанный ниже подход позволяет в три шага заполнять формулы в Excel файлы, вне зависимости от ОС сервера (MS Windows Server или Linux). Подход подразумевает отказ от работы с COM-объектом в пользу работы через "объектную модель документа" (DOM).

30.10.2025    8321    Abysswalker    11    

49

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

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

14.05.2025    13717    DeerCven    15    

64

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

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

21.05.2024    67297    dimanich70    87    

178

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

Задача: вставить картинку из буфера обмена на форму средствами платформы 1С.

1 стартмани

18.03.2024    8973    7    John_d    13    

59

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

Пришлось помучиться с GUID-ами немного, решил поделиться опытом, мало ли кому пригодится.

12.02.2024    84054    atdonya    31    

75

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

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

30.11.2023    13204    ke.92@mail.ru    18    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. RustIG 1986 08.08.18 13:56 Сейчас в теме
(0) история согласования красиво смотрится, думаю полезный функционал

про код:
УстановитьПривилегированныйРежим(Истина);
после этого не надо разве прописывать
УстановитьПривилегированныйРежим(Ложь);
?
2. E_Babaylova 63 08.08.18 14:43 Сейчас в теме
(1) нет, не нужно. Из синтаксис-помощника: "Для явного выключения привилегированного режима необходимо внутри процедуры или функции, в которой он был включен, вызвать метод с параметром Ложь столько же раз, сколько раз в этой же процедуре или функции был вызван метод с параметром Истина.
Если этого сделано не было, то при возврате из процедуры/функции, в которой был включен привилегированный режим, он будет выключен автоматически (неявно)."
3. vcv 89 09.08.18 14:02 Сейчас в теме
Несколько сложней, но гораздо функциональней изменить общий модуль ОбзорЗадачВызовСервераПереопределяемый.
4. user780057 11.10.19 11:16 Сейчас в теме
Здравствуйте! Мир вашему дому!
История согласования выводится не полностью, проверил по многим документам. На закладке визы в карточке документа, например, пять согласовантов, а с помощью вашего кода выводится два. Я так понимаю, что в комплексном процессе много вложеных процессов согласования с условиями маршрутизации может быть и здесь в коде учитываются не все, а только один.
Хотя при печати карточки документа такой проблемы нет и в согласовании все 5 отображены.
Как можно доработать ваш код?
5. rmIvanT 71 18.11.19 16:47 Сейчас в теме
Мой вариант, чутка сложнее, может кому пригодится ;-)

ОбзорЗадачВызовСервераПереопределяемый
6. rmIvanT 71 19.11.19 11:15 Сейчас в теме
(5) нашлись ошибки в куске копипасты:
//было
//ПредметДокумент = ПолучитьОсновнойПредметДокумент(Задача.Предметы);
//стало
ПредметДокумент = ОбзорЗадачВызовСервера.ПолучитьОсновнойПредметДокумент(Задача.Предметы);
	
Если ЗначениеЗаполнено(ПредметДокумент) Тогда
//было
//	ОбзорПредмета = ПолучитьОбзорПредметаЗадачи(ПредметДокумент);
//стало
	ОбзорПредмета = ОбзорЗадачВызовСервера.ПолучитьОбзорПредметаЗадачи(ПредметДокумент);
	Если Не ПустаяСтрока(ОбзорПредмета) Тогда
		HTMLТекст = HTMLТекст + "<p>" + ОбзорПредмета + "</p>";
	КонецЕсли;	

КонецЕсли;
Показать
7. rmIvanT 71 20.11.19 13:24 Сейчас в теме
Для отправки сообщения требуется регистрация/авторизация