Документооборот Задачи мне вывести резолюции.

1. user705522_constantin_h 35 06.09.18 23:02 Сейчас в теме
Утверждение счета производится комплексным процессом. Директор при утверждении хочет видеть резолюции в списке мои задачи: текст резолюции и автор, чтобы не открывать сам документ. Как это можно реализовать?
user1062960; +1
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Skromnyi 12 07.09.18 10:07 Сейчас в теме
посмотрите в сторону регистра сведений "ИсторияВыполненийЗадач" и там на функцию "ИсторияПоБизнесПроцессу"
+
3. user705522_constantin_h 35 07.09.18 11:25 Сейчас в теме
(2)Не понял про функцию ИсторияПоБизнесПроцессу: где её смотреть?
Тут проблема: как вывести некую дополнительную информацию по задаче в строку списка Задачи мне.
+
6. Skromnyi 12 07.09.18 11:56 Сейчас в теме
(3) У вас включена галочка "Показать область просмотра задачи"?
+
8. user705522_constantin_h 35 07.09.18 12:04 Сейчас в теме
(6)Где находится эта галочка?
+
9. Skromnyi 12 07.09.18 12:34 Сейчас в теме
(8)
Прикрепленные файлы:
+
10. user705522_constantin_h 35 07.09.18 13:39 Сейчас в теме
(9)Эта галочка стоит. Я сейчас изучаю, как в эту область просмотра вывести резолюции.
+
11. Skromnyi 12 07.09.18 14:08 Сейчас в теме
(10) Смотрите общий модуль "ОбзорЗадачВызовСервера" и функцию "ПолучитьОбзорЗадачиДляСпискаЗадачиМне". Там идет обращение к: ОбзорЗадачВызовСервераПереопределяемый.ПолучитьОбзорЗадачиДляСпискаЗадачиМне Вот здесь и можете внести изменения, в зависимости от типа данных "РеквизитыЗадачи.БизнесПроцесс". Соответственно нужно будет прочитать историю выполнения, типовая читается так:
ИсторияВыполнения = РегистрыСведений.ИсторияВыполненияЗадач.ИсторияПоБизнесПроцессу(РеквизитыЗадачи.БизнесПроцесс);
Можете изменить запрос.
user705522_constantin_h; +1
4. dka80 20 07.09.18 11:36 Сейчас в теме
Если утверждающих несколько, то будет не очень удобно.
Но если очень хочется, то исправляете динамический запрос списка путем добавления в запрос данных из указанного в (2) регистра.
Также можете посмотреть как формируется вкладка "Обзор задачи" (в которой как раз есть предыдущие резолюции) при открытии карточки задачи, преобразовать эти данные в текстовую строку и прикрепить к запросу динамического списка
+
5. azali 07.09.18 11:50 Сейчас в теме
Хочет видеть резолюции от задач рассмотрения или комментарии при согласовании ?
+
7. user705522_constantin_h 35 07.09.18 12:02 Сейчас в теме
(5)Заключения лиц, которые с задачей ознакомились. Если он им доверяет, то согласует не глядя, если есть сомнения, тогда начинает внимательно ознакамливаться и решать.
+
12. user1046389 09.09.18 18:41 Сейчас в теме
а указать его ответственным в шаблоне процесса не проще? можно вложенным комплексным процесом ознакомление с ним ответственным.
+
13. user705522_constantin_h 35 10.09.18 09:47 Сейчас в теме
(12)Здесь идея другая: директор просматривает список счетов и хочет быстро, не открывая сам документ, видеть основные заключения по нему. Если ему всё понятно, он утверждает. Если его что-то заинтересовало, открывает счет и начинает всё изучать сам, а затем принимать решение: утверждать или нет.
+
14. user1046389 10.09.18 11:16 Сейчас в теме
т.е. даже не открывая карточку документа? Всплывающее окно при наведении курсора на счет?
+
15. user705522_constantin_h 35 10.09.18 12:52 Сейчас в теме
(14)Да, в области просмотра задачи должна быть выведена информация: резолюции ознакомившихся и согласовавших, комментарий. Чтобы сразу понять: всё важное уже проверено, можно утверждать. Для каких-то задач нужно открыть документ и самому всё изучить, а только затем утверждать.
+
16. user1046389 11.09.18 10:53 Сейчас в теме
используйте процесс согласование, в нем согласующие пусть нажимают кнопку согласование с замечаниями, тогда у руководителя справа в истории появится результат согласования с комментариями. При условии галки в еще, показать область просмотра задачи. Это как самое простое, остальное через конфигуратор.
user705522_constantin_h; +1
17. user1046389 11.09.18 11:43 Сейчас в теме
если этого нет, то шаблон комплексного процесса составлен неправельно. ознакомление идет после утверждения. до утверждения согласование.
+
18. user705522_constantin_h 35 12.09.18 09:28 Сейчас в теме
(17)У нас своя логика прохождения документа:
1. Создание документа менеджером.
2. Регистрация (присвоение номера) секретарём. При этом документ помещается в нужную папку.
3. Ознакомление с документом финансовых менеджеров.
4. Согласование с финансовым директором.
5. Утверждение директором.
6. Исполнение бухгалтером. Планируется на основе задачи создавать списание с расчетного счета в БП 3.0.
+
19. azali 12.09.18 10:47 Сейчас в теме
(18)
Мое мнение - 3-5 заменить согласованием , где директор согласует последним, при условии что согласовано предыдущими.
Создавать сразу списание с р/счета это круто , может сначала платежное поручение исходящее.

И если у вас такая цепочка согласования, у вас не создается (утверждается) перед платежами реестр того, что перечисляем сегодня ?
+
20. user705522_constantin_h 35 12.09.18 11:14 Сейчас в теме
(19)Утверждение производится в Документообороте. На первом этапе бухгалтер после утверждения директором производит платёж и отражает в БП 3.0. Затем в Документообороте отмечает исполнение задачи. В дальнейшем планируется действия бухгалтера автоматизировать.
+
21. Skromnyi 12 12.09.18 14:32 Сейчас в теме
(20) Получилось у Вас решить задачу?
+
23. user705522_constantin_h 35 12.09.18 17:39 Сейчас в теме
(21)ЗадачаИсполнителя.Форма.ЗадачиМне
&НаСервереБезКонтекста
Функция ОбновитьДанныеЗадачи(
	Задача,
	ТекущийПользователь,
	ОтображатьУдаленныеПриложения,
	ЗаписатьСобытиеПоЗадаче)

	//+++Дополнение полного описания задачи
	Если РеквизитыЗадачи.ПредметДокумент <> Неопределено Тогда
		СтатьиДвиженияДенежныхСредств = Новый ТаблицаЗначений;
		СтатьиДвиженияДенежныхСредств.Колонки.Добавить("СтатьяДвиженияДенежныхСредств");
		СтатьиДвиженияДенежныхСредств.Колонки.Добавить("Сумма");
		СтатьиДвиженияДенежныхСредств.Колонки.Добавить("СуммаНДС");
		
		РегистрыСведений.СтатьиДвиженияДенежныхСредствДокументов.ПрочитатьСтатьиДокумента(
				РеквизитыЗадачи.ПредметДокумент, СтатьиДвиженияДенежныхСредств);
		РеквизитыЗадачи.Вставить("СтатьяДвиженияДенежныхСредств", СтатьиДвиженияДенежныхСредств[0].СтатьяДвиженияДенежныхСредств);
		
		Если РеквизитыЗадачи.ПредметДокумент.ДополнительныеРеквизиты.Количество() <> 0 Тогда
			Для Каждого ДополнительныйРеквизит Из РеквизитыЗадачи.ПредметДокумент.ДополнительныеРеквизиты Цикл
				Если ДополнительныйРеквизит.Свойство.Наименование = "Регион (Счет)" Тогда
					РеквизитыЗадачи.Вставить("Регион", ДополнительныйРеквизит.Значение);
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
		
		Резолюции = РаботаСРезолюциями.ПолучитьРезолюции(РеквизитыЗадачи.ПредметДокумент);
		Если Резолюции.Количество() <> 0 Тогда
			РеквизитыЗадачи.Вставить("Резолюции", Резолюции);
		КонецЕсли;
		
		Если ЗначениеЗаполнено(РеквизитыЗадачи.ПредметДокумент.Комментарий) Тогда
			РеквизитыЗадачи.Вставить("Комментарий", РеквизитыЗадачи.ПредметДокумент.Комментарий);
		КонецЕсли;
	КонецЕсли;
	//---Дополнение полного описания задачи

Показать


ОбщийМодуль.ОбзорЗадачВызовСервера
Функция ПолучитьОбзорЗадачиДляСпискаЗадачиМне(Знач РеквизитыЗадачи) Экспорт

	//+++Дополнение полного описания задачи
	Если РеквизитыЗадачи.Свойство("СтатьяДвиженияДенежныхСредств") Тогда
		ТекстHTML = ТекстHTML + "<p>";
		ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ТекстHTML, НСТР("ru = 'Статья ДДС: '"), РеквизитыЗадачи.СтатьяДвиженияДенежныхСредств);
		ТекстHTML = ТекстHTML + "</p>";
	КонецЕсли;
	
	Если РеквизитыЗадачи.Свойство("Регион") Тогда
		ТекстHTML = ТекстHTML + "<p>";
		ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ТекстHTML, НСТР("ru = 'Регион: '"), РеквизитыЗадачи.Регион);
		ТекстHTML = ТекстHTML + "</p>";
	КонецЕсли;
	
	Если РеквизитыЗадачи.Свойство("Резолюции") Тогда
		Для Каждого Резолюция Из РеквизитыЗадачи.Резолюции Цикл
			ТекстHTML = ТекстHTML + "<p>";
			ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ТекстHTML, НСТР("ru = 'Резолюция '"), Резолюция.АвторРезолюции.Наименование + ": " + Резолюция.ТекстРезолюции);
			ТекстHTML = ТекстHTML + "</p>";
		КонецЦикла;
	КонецЕсли;
	
	Если РеквизитыЗадачи.Свойство("Комментарий") Тогда
		ТекстHTML = ТекстHTML + "<p>";
		ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ТекстHTML, НСТР("ru = 'Комментарий: '"), РеквизитыЗадачи.Комментарий);
		ТекстHTML = ТекстHTML + "</p>";
	КонецЕсли;
	//---Дополнение полного описания задачи

Показать
+
25. Skromnyi 12 12.09.18 21:33 Сейчас в теме
(23) Если смотреть на Ваше сообщение №18, то кто проставляет "Статьи ДДС" , кто проставляет дополнительный реквизит "Регион (Счет)" и кто проставляет Резолюции (в каком процессе)?
+
27. user705522_constantin_h 35 12.09.18 22:05 Сейчас в теме
(25)Финансовый менеджер. Резолюция используется наравне с комментарием. Ознакомиться можно либо написав что-нибудь в комментарии, либо наложив резолюцию. Резолюцию я использовал для упрощения: её можно выбрать из шаблона. На этапе согласования резолюцию накладывает финансовый директор. Эта резолюция особенно важна для директора. Поэтому мне сейчас поставили задачу, чтобы финансовый директор видел в полном описании задачи резолюции финансовых менеджеров, а директор должен видеть только резолюцию финансового директора.
+
30. Skromnyi 12 13.09.18 08:44 Сейчас в теме
(27)Как то это не по православному/феншую :)
Если "Финансовый менеджер" должен выполнить какие-то действия, как-то проставить "Статьи ДДС" или доп.реквизит "Регион (Счет)", то ему должна ставиться задача, т.е. создаваться процесс "Исполнение", а не "Ознокомление".
Резолюция используется наравне с комментарием.
Тоже ИМХО не совсем правильно. Резолюцию все-таки накладывает обычно Руководитель, например на такой документ как "Служебная записка". Скорее все-таки тут должно быть "Согласование", хотя не зная всех деталей (что за Резолюции накладывают менеджеры) трудно что-то сказать.
+
31. user705522_constantin_h 35 13.09.18 10:00 Сейчас в теме
(30)
ему должна ставиться задача, т.е. создаваться процесс "Исполнение", а не "Ознокомление".

А в чём между этими задачами разница. Менеджер по закупкам заполняет реквизиты документа так, как он знает. После этого финансовый менеджер в задаче ознакомление проверяет контрагента: нет ли с ним каких-нибудь проблем, заполняет правильную статью ДДС, как она должна быть в бухгалтерии.

(30)
Резолюцию все-таки накладывает обычно Руководитель

Я резолюцию использовал, чтобы не можно было использовать шаблоны и не нужно было всё писать. А так можно всё написать в комментарии.

(30)
Скорее все-таки тут должно быть "Согласование"

В чём преимущество Согласования перед Ознакомлением.
+
32. Skromnyi 12 13.09.18 10:20 Сейчас в теме
(31)
А в чём между этими задачами разница.
вопрос метологии конечно, но если даже прочитать описание для процесса "Ознакомления":
Используется для отправки материалов одному или нескольким коллегам на ознакомление, при этом автор не получит результата ознакомления. Если автору необходимо получить результат ознакомления, рекомендуется использовать процесс "Исполнение" или "Рассмотрение".
+
33. user705522_constantin_h 35 13.09.18 10:22 Сейчас в теме
(32)Автору не нужно получать результат действий финансовых менеджеров, они заполняют информацию, которая нужна финансовому директору и бухгалтеру для исполнения в случае утверждения директором.
+
35. Skromnyi 12 13.09.18 11:17 Сейчас в теме
(33)ну хозяин барин конечно, но... Вообщем я бы все-таки как-то так сделал:
Прикрепленные файлы:
+
36. user705522_constantin_h 35 13.09.18 12:30 Сейчас в теме
(35)А история выполнения откуда берётся?
+
37. Skromnyi 12 13.09.18 12:34 Сейчас в теме
(36) изменил запрос "ИсторияПоБизнесПроцессу"
+
38. Skromnyi 12 13.09.18 13:03 Сейчас в теме
(36)Если нужен код, то попозже могу скинуть (сейчас в полях).
+
39. user705522_constantin_h 35 13.09.18 15:39 Сейчас в теме
(38)Вообще, конечно, не помешает, у тебя красиво получилось. Но попробую сам что-нибудь похожее наваять.
+
40. Skromnyi 12 14.09.18 09:06 Сейчас в теме
(39)пару слов по коду ниже:
- все изменения вносил в общий модуль "ОбзорЗадачВызовСервераПереопределяемый", возможно тоже самое можно было сделать с помощью расширений, но с ними еще пока не работал.
- код для функции "ПолучитьОбзорЗадачиДляСпискаЗадачиМне" взят из одноименной функции общего модуля "ОбзорЗадачВызовСервера", изменена только ИсторияВыполнения - берется из добавленной функции "ИсторияПоБизнесПроцессу" и ОбзорПредмета берется также из добавленной функции "ПолучитьОбзорПредметаЗадачиДляУтверждения".
- Не использовал типовую функцию "ПолучитьОбзорПредметаЗадачи" т.к. в ней нет возможности проверить, какой идет бизнес-процесс (просили только для "Утверждения").
- код для функции "ПолучитьОбзорПредметаЗадачиДляУтверждения" взят из общего модуля "ОбзорЗадачВызовСервера" - "ПолучитьОбзорПредметаЗадачи". Добавлен вывод "ДополнительныхРеквизитов" и "СтатейДДС" .
- Функции "ЧислоОбъектовВПереписке" и "НайтиЧислоЭлементов" взяты из одноименных функций общего модуля "ОбзорЗадачВызовСервера".

Функция ПолучитьОбзорЗадачиДляСпискаЗадачиМне(РеквизитыЗадачи) Экспорт
	
	// Переопределяем только для "Утверждения".
	Если ТипЗнч(РеквизитыЗадачи.БизнесПроцесс) <> Тип("БизнесПроцессСсылка.Утверждение") Тогда
		HTMLТекст = "";
		Возврат HTMLТекст;
	КонецЕсли;
	
	ТекущийПользователь = ПользователиКлиентСервер.ТекущийПользователь();
	
	СтрокаПолноеОписаниеЗадачи = РеквизитыЗадачи.Описание;
	
	Если ЗначениеЗаполнено(РеквизитыЗадачи.БизнесПроцесс) Тогда
		
		// Выводим полную историю по бизнес -процессу.
		ИсторияВыполнения = ИсторияПоБизнесПроцессу(РеквизитыЗадачи.БизнесПроцесс);
		
		Если Не ПустаяСтрока(ИсторияВыполнения) Тогда
			СтрокаПолноеОписаниеЗадачи = 
				СтрокаПолноеОписаниеЗадачи
				+ ?(ЗначениеЗаполнено(СтрокаПолноеОписаниеЗадачи),
					"" + Символы.ПС + Символы.ПС, "")
				+ НСТР("ru = 'История выполнения:'")
				+ Символы.ПС 
				+ "------------------------------------"
				+ Символы.ПС 
				+ ИсторияВыполнения;
		КонецЕсли;
	КонецЕсли;
	
	ТекстHTML = "<ht ml>
	 |<head>  	  	
	 | <st yle>
	 |  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, Символы.ПС, "");
	Текст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, Символы.ПС, "");
		ТекстHTML = ТекстHTML + "<p>" + ПолноеОписаниеЗадачиHTML + "</p>";
	Иначе
		ТекстHTML = ТекстHTML + "<p>"
			+ НСтр("ru = 'У задачи нет описания.'") + "</p>";
	КонецЕсли;
	
	ТекстHTML = ТекстHTML + "</body></html>";
	
	Возврат ТекстHTML;
	
КонецФункции

#Область СлужебныеПроцедурыИФункции

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

// Возвращает текст HTML для показа реквизитов предмета задачи (если предмет один, и это документ)
//
// Параметры:
//   ПредметДокумент - ссылка на предмет - документ
//
// Возвращаемое значение:
//   Строка - текст HTML
//
Функция ПолучитьОбзорПредметаЗадачиДляУтверждения(ПредметДокумент) Экспорт
	
	HTMLТекст = "";
	
	Если Не ДокументооборотПраваДоступа.ПолучитьПраваПоОбъекту(ПредметДокумент).Чтение Тогда
		Возврат HTMLТекст;
	КонецЕсли;
	
	Запрос = Новый Запрос;
	Запрос.Текст = ОбзорСпискаДокументов.ПолучитьЗапросДляДокумента(ПредметДокумент);

	Запрос.УстановитьПараметр("ТекущийДокумент", ПредметДокумент);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Выборка.Следующий();
	
	ОбзорСпискаДокументов.ДобавитьВHTMLОсновныеДанныеОбзора(HTMLТекст, Выборка);	
	
	// Добавим "ДополнительныеРеквизиты".
	ДополнительныеРеквизиты = Выборка.ДополнительныеРеквизиты.Выгрузить();
	Для Каждого Строка Из ДополнительныеРеквизиты Цикл
		СвойствоИспользуется = УправлениеСвойствами.ПроверитьСвойствоУОбъекта(Выборка.Ссылка, Строка.Свойство);
		ПометкаУдаления = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Строка.Свойство, "ПометкаУдаления");
		Значение = ?(ЗначениеЗаполнено(Строка.ТекстоваяСтрока), Строка.ТекстоваяСтрока, Строка.Значение);
		
		Если Не ПометкаУдаления И СвойствоИспользуется И ЗначениеЗаполнено(Значение) Тогда
			ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(HTMLТекст, Строка.Свойство, Значение);
		КонецЕсли;	
	КонецЦикла;	
	
	// Добавим "Статьи ДДС".
	Если ДелопроизводствоКлиентСервер.ЭтоВнутреннийДокумент(ПредметДокумент) Тогда 
		ВестиУчетПоСтатьямДДС = ?(ЗначениеЗаполнено(ПредметДокумент.ВидДокумента),
			ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ПредметДокумент.ВидДокумента, "ВестиУчетПоСтатьямДДС"), 
			Ложь);
	Иначе
		ВестиУчетПоСтатьямДДС = Ложь;
	КонецЕсли;
	
	Если ВестиУчетПоСтатьямДДС Тогда
		
		СтатьиДДС = Новый ТаблицаЗначений;
        СтатьиДДС.Колонки.Добавить("СтатьяДвиженияДенежныхСредств");
        СтатьиДДС.Колонки.Добавить("Сумма");
        СтатьиДДС.Колонки.Добавить("СуммаНДС");
        
        РегистрыСведений.СтатьиДвиженияДенежныхСредствДокументов.ПрочитатьСтатьиДокумента(
                ПредметДокумент, СтатьиДДС);
				
		КоличествоСтатей = СтатьиДДС.Количество();
		Если КоличествоСтатей = 1 Тогда
			ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(HTMLТекст, НСтр("ru = 'Статья ДДС:'"), 
				СтатьиДДС[0].СтатьяДвиженияДенежныхСредств);
		ИначеЕсли КоличествоСтатей > 1 Тогда
			ОбзорОбъектовКлиентСервер.ДобавитьПодпись(HTMLТекст, НСтр("ru = 'Статьи ДДС:'"));
			Разделитель = "";
			Для каждого Строка из СтатьиДДС Цикл
				HTMLТекст = HTMLТекст + Разделитель;
				ОбзорОбъектовКлиентСервер.ДобавитьЗначение(HTMLТекст, Строка.СтатьяДвиженияДенежныхСредств, "");
				Разделитель = "; ";
			КонецЦикла;
			HTMLТекст = HTMLТекст + "";
		КонецЕсли;
		
	КонецЕсли;
	
	ЧислоВПереписке = ЧислоОбъектовВПереписке(ПредметДокумент);
	Если ЧислоВПереписке > 1 Тогда
		
		HTMLТекст = HTMLТекст 
			+ СтрШаблон("", 
				ПредметДокумент.Метаданные().Имя
				+ "?ref=" + Строка(ПредметДокумент.УникальныйИдентификатор())) 
			+ СтрШаблон(НСтр("ru = 'Переписка по документу: %1'"), 
				ЧислоВПереписке)
			+  "";
		HTMLТекст = HTMLТекст + "";
		
	КонецЕсли;	
	
	Возврат HTMLТекст;
	
КонецФункции

Функция ЧислоОбъектовВПереписке(Предмет)
	
	Дерево = Новый ДеревоЗначений;
	
	МассивТипов = Новый Массив;
	МассивТипов.Добавить(Тип("СправочникСсылка.ВходящиеДокументы"));
	МассивТипов.Добавить(Тип("СправочникСсылка.ИсходящиеДокументы"));
	МассивТипов.Добавить(Тип("СправочникСсылка.ВнутренниеДокументы"));
	МассивТипов.Добавить(Тип("ДокументСсылка.ВходящееПисьмо"));
	МассивТипов.Добавить(Тип("ДокументСсылка.ИсходящееПисьмо"));
	ДопустимыеТипы = Новый ОписаниеТипов(МассивТипов);
	Дерево.Колонки.Добавить("Ссылка", ДопустимыеТипы);
	
	Дерево.Колонки.Добавить("ДатаРегистрации", 
		Новый ОписаниеТипов("Дата",,,Новый КвалификаторыДаты(ЧастиДаты.Дата)));

	Дерево.Колонки.Добавить("ДатаСоздания", 
		Новый ОписаниеТипов("Дата",,,Новый КвалификаторыДаты(ЧастиДаты.Дата)));
	
	Дерево.Колонки.Добавить("Заголовок", Новый ОписаниеТипов("Строка"));
	Дерево.Колонки.Добавить("РегистрационныйНомер", Новый ОписаниеТипов("Строка"));
	
	Дерево.Колонки.Добавить("ИндексКартинки", Новый ОписаниеТипов("Число"));
	
	Дерево.Колонки.Добавить("Текущий", Новый ОписаниеТипов("Булево"));
	
	Если ЗначениеЗаполнено(Предмет) Тогда
	
		// Для Внутренних документов - все как в форме ИсторияПереписки
		Если ТипЗнч(Предмет) = Тип("СправочникСсылка.ВнутренниеДокументы") Тогда
			
			Если ПравоДоступа("Чтение", Метаданные.Справочники.ВходящиеДокументы)
				И ПравоДоступа("Чтение", Метаданные.Справочники.ИсходящиеДокументы) Тогда
				
				Делопроизводство.ЗаполнитьДерево(Дерево, Предмет);
				
				ЧислоОбъектовПереписки = НайтиЧислоЭлементов(Дерево.Строки);
				Возврат ЧислоОбъектовПереписки + 1; // добавляем сам документ
				
				
			КонецЕсли;
			
		ИначеЕсли ТипЗнч(Предмет) = Тип("СправочникСсылка.ВходящиеДокументы")
			ИЛИ ТипЗнч(Предмет) = Тип("СправочникСсылка.ИсходящиеДокументы") Тогда			
			
			Дерево.Строки.Очистить();
			КорневоеПисьмо = ВстроеннаяПочтаСервер.ПолучитьКорневоеПисьмо(Предмет);
			ВыведенныеПисьма = Новый Массив;
			Делопроизводство.ДобавитьПисьмоВДерево(Дерево.Строки, КорневоеПисьмо, Предмет, ВыведенныеПисьма);
			
			ЧислоОбъектовПереписки = НайтиЧислоЭлементов(Дерево.Строки);
			Возврат ЧислоОбъектовПереписки;
			
		КонецЕсли;	
		
	КонецЕсли;	
	
	Возврат 0;
		
КонецФункции

Функция НайтиЧислоЭлементов(Строки)
	
	ЧислоСтрок = Строки.Количество();
	Для Каждого Строка Из Строки Цикл
		ЧислоСтрок = ЧислоСтрок + НайтиЧислоЭлементов(Строка.Строки);
	КонецЦикла;	
	
	Возврат ЧислоСтрок;
	
КонецФункции

#КонецОбласти
Показать
user705522_constantin_h; +1
41. user705522_constantin_h 35 14.09.18 17:31 Сейчас в теме
(40)
ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.ПС, "");

Заменил на:
        ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.ПС, "<b r>");

А то строки не переводились.
+
42. Skromnyi 12 18.09.18 10:15 Сейчас в теме
(41)хм, при копировании видимо сайт что-то порезал, ибо этот кусок кода выглядел так:

Если ЗначениеЗаполнено(СтрокаПолноеОписаниеЗадачи) Тогда
		ПолноеОписаниеЗадачиHTML = "";
		ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ПолноеОписаниеЗадачиHTML, "", СтрокаПолноеОписаниеЗадачи);
		ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.Таб, "   ");
		ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.ПС, "");
		ТекстHTML = ТекстHTML + "<p>" + ПолноеОписаниеЗадачиHTML + "</p>";
	Иначе
		ТекстHTML = ТекстHTML + "<p>"
			+ НСтр("ru = 'У задачи нет описания.'") + "</p>";
	КонецЕсли;
Показать
+
43. Skromnyi 12 18.09.18 10:15 Сейчас в теме
(42) а он и сейчас порезал....
+
44. Skromnyi 12 18.09.18 10:17 Сейчас в теме
(43) в файл скопировал код.
Прикрепленные файлы:
Текст кода.txt
user705522_constantin_h; +1
45. user705522_constantin_h 35 18.09.18 10:53 Сейчас в теме
(44)Спасибо! Это не совсем то, что нужно нашему руководству, но сделано красиво. Сейчас попросили, чтобы резолюция создавалась автоматически из комментария к задаче, чтобы не нужно было открывать сам документ. Буду разбираться.
+
22. user1046389 12.09.18 14:41 Сейчас в теме
3 пункт, согласование , ознакомление имеет ограничения и непредназначено для такого использования, можно предмет процесса сделать вспомогательным в этом согласовании.
+
24. user705522_constantin_h 35 12.09.18 17:52 Сейчас в теме
(22)Поподробнее не могли бы объяснить? Я третий месяц изучаю Документооборот, всех тонкостей пока не знаю.
+
26. user1046389 12.09.18 21:51 Сейчас в теме
я изучал 1,5 месяца), нужно было спецконса получить для фирмы. чтобы в тендере участвовать.
по теме, в ознакомлении число задач равно числу ознакамливающихся, в согласовании равно числу согласующих плюс одна для ответственного за согласование. т.е. если ознакомление, то директор неувидит коментарии, если согласование с ним ответственным, то ему придет задача ознакомится с результатом.в котором и будут комментарии. както так
+
28. user1046389 12.09.18 22:07 Сейчас в теме
значит ответственный фин директор
+
29. user1046389 12.09.18 22:08 Сейчас в теме
34. user1048863 13.09.18 10:25 Сейчас в теме
У Вас стандартный комплексный процесс обработки служебной записки по расходованию денежных средств (основной предмет служебная записка,возможен вспомогательный "СЧЕТ"). Описан подробно Лушниковым, посмотрите в интернете, в демобазе ДО есть похожее. Изучите свойства элементарных бизнес - процессов. Ваш комплексный процесс построен изначально не правильно, поэтому Вы пытаетесь его допилить через конфигуратор , меняя свойства элементарных процессов утверждение допиливаете до рассмотрения, ознакомление до согласования.
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот