1. user705522_constantin_h 8 06.09.18 23:02 Сейчас в теме

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

Утверждение счета производится комплексным процессом. Директор при утверждении хочет видеть резолюции в списке мои задачи: текст резолюции и автор, чтобы не открывать сам документ. Как это можно реализовать?
Ответы
Сортировка: Древо
2. Skromnyi 10 07.09.18 10:07 Сейчас в теме
посмотрите в сторону регистра сведений "ИсторияВыполненийЗадач" и там на функцию "ИсторияПоБизнесПроцессу"
3. user705522_constantin_h 8 07.09.18 11:25 Сейчас в теме
(2)Не понял про функцию ИсторияПоБизнесПроцессу: где её смотреть?
Тут проблема: как вывести некую дополнительную информацию по задаче в строку списка Задачи мне.
6. Skromnyi 10 07.09.18 11:56 Сейчас в теме
(3) У вас включена галочка "Показать область просмотра задачи"?
8. user705522_constantin_h 8 07.09.18 12:04 Сейчас в теме
(6)Где находится эта галочка?
9. Skromnyi 10 07.09.18 12:34 Сейчас в теме
10. user705522_constantin_h 8 07.09.18 13:39 Сейчас в теме
(9)Эта галочка стоит. Я сейчас изучаю, как в эту область просмотра вывести резолюции.
11. Skromnyi 10 07.09.18 14:08 Сейчас в теме
(10) Смотрите общий модуль "ОбзорЗадачВызовСервера" и функцию "ПолучитьОбзорЗадачиДляСпискаЗадачиМне". Там идет обращение к: ОбзорЗадачВызовСервераПереопределяемый.ПолучитьОбзорЗадачиДляСпискаЗадачиМне Вот здесь и можете внести изменения, в зависимости от типа данных "РеквизитыЗадачи.БизнесПроцесс". Соответственно нужно будет прочитать историю выполнения, типовая читается так:
ИсторияВыполнения = РегистрыСведений.ИсторияВыполненияЗадач.ИсторияПоБизнесПроцессу(РеквизитыЗадачи.БизнесПроцесс);
Можете изменить запрос.
user705522_constantin_h; +1 Ответить
4. dka80 16 07.09.18 11:36 Сейчас в теме
Если утверждающих несколько, то будет не очень удобно.
Но если очень хочется, то исправляете динамический запрос списка путем добавления в запрос данных из указанного в (2) регистра.
Также можете посмотреть как формируется вкладка "Обзор задачи" (в которой как раз есть предыдущие резолюции) при открытии карточки задачи, преобразовать эти данные в текстовую строку и прикрепить к запросу динамического списка
5. azali 07.09.18 11:50 Сейчас в теме
Хочет видеть резолюции от задач рассмотрения или комментарии при согласовании ?
7. user705522_constantin_h 8 07.09.18 12:02 Сейчас в теме
(5)Заключения лиц, которые с задачей ознакомились. Если он им доверяет, то согласует не глядя, если есть сомнения, тогда начинает внимательно ознакамливаться и решать.
12. user1046389 09.09.18 18:41 Сейчас в теме
а указать его ответственным в шаблоне процесса не проще? можно вложенным комплексным процесом ознакомление с ним ответственным.
13. user705522_constantin_h 8 10.09.18 09:47 Сейчас в теме
(12)Здесь идея другая: директор просматривает список счетов и хочет быстро, не открывая сам документ, видеть основные заключения по нему. Если ему всё понятно, он утверждает. Если его что-то заинтересовало, открывает счет и начинает всё изучать сам, а затем принимать решение: утверждать или нет.
14. user1046389 10.09.18 11:16 Сейчас в теме
т.е. даже не открывая карточку документа? Всплывающее окно при наведении курсора на счет?
15. user705522_constantin_h 8 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 8 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 8 12.09.18 11:14 Сейчас в теме
(19)Утверждение производится в Документообороте. На первом этапе бухгалтер после утверждения директором производит платёж и отражает в БП 3.0. Затем в Документообороте отмечает исполнение задачи. В дальнейшем планируется действия бухгалтера автоматизировать.
21. Skromnyi 10 12.09.18 14:32 Сейчас в теме
(20) Получилось у Вас решить задачу?
23. user705522_constantin_h 8 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 10 12.09.18 21:33 Сейчас в теме
(23) Если смотреть на Ваше сообщение №18, то кто проставляет "Статьи ДДС" , кто проставляет дополнительный реквизит "Регион (Счет)" и кто проставляет Резолюции (в каком процессе)?
27. user705522_constantin_h 8 12.09.18 22:05 Сейчас в теме
(25)Финансовый менеджер. Резолюция используется наравне с комментарием. Ознакомиться можно либо написав что-нибудь в комментарии, либо наложив резолюцию. Резолюцию я использовал для упрощения: её можно выбрать из шаблона. На этапе согласования резолюцию накладывает финансовый директор. Эта резолюция особенно важна для директора. Поэтому мне сейчас поставили задачу, чтобы финансовый директор видел в полном описании задачи резолюции финансовых менеджеров, а директор должен видеть только резолюцию финансового директора.
30. Skromnyi 10 13.09.18 08:44 Сейчас в теме
(27)Как то это не по православному/феншую :)
Если "Финансовый менеджер" должен выполнить какие-то действия, как-то проставить "Статьи ДДС" или доп.реквизит "Регион (Счет)", то ему должна ставиться задача, т.е. создаваться процесс "Исполнение", а не "Ознокомление".
Резолюция используется наравне с комментарием.
Тоже ИМХО не совсем правильно. Резолюцию все-таки накладывает обычно Руководитель, например на такой документ как "Служебная записка". Скорее все-таки тут должно быть "Согласование", хотя не зная всех деталей (что за Резолюции накладывают менеджеры) трудно что-то сказать.
31. user705522_constantin_h 8 13.09.18 10:00 Сейчас в теме
(30)
ему должна ставиться задача, т.е. создаваться процесс "Исполнение", а не "Ознокомление".

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

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

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

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

В чём преимущество Согласования перед Ознакомлением.
32. Skromnyi 10 13.09.18 10:20 Сейчас в теме
(31)
А в чём между этими задачами разница.
вопрос метологии конечно, но если даже прочитать описание для процесса "Ознакомления":
Используется для отправки материалов одному или нескольким коллегам на ознакомление, при этом автор не получит результата ознакомления. Если автору необходимо получить результат ознакомления, рекомендуется использовать процесс "Исполнение" или "Рассмотрение".
33. user705522_constantin_h 8 13.09.18 10:22 Сейчас в теме
(32)Автору не нужно получать результат действий финансовых менеджеров, они заполняют информацию, которая нужна финансовому директору и бухгалтеру для исполнения в случае утверждения директором.
35. Skromnyi 10 13.09.18 11:17 Сейчас в теме
(33)ну хозяин барин конечно, но... Вообщем я бы все-таки как-то так сделал:
Прикрепленные файлы:
36. user705522_constantin_h 8 13.09.18 12:30 Сейчас в теме
(35)А история выполнения откуда берётся?
37. Skromnyi 10 13.09.18 12:34 Сейчас в теме
(36) изменил запрос "ИсторияПоБизнесПроцессу"
38. Skromnyi 10 13.09.18 13:03 Сейчас в теме
(36)Если нужен код, то попозже могу скинуть (сейчас в полях).
39. user705522_constantin_h 8 13.09.18 15:39 Сейчас в теме
(38)Вообще, конечно, не помешает, у тебя красиво получилось. Но попробую сам что-нибудь похожее наваять.
40. Skromnyi 10 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 8 14.09.18 17:31 Сейчас в теме
(40)
ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.ПС, "");

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

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

Если ЗначениеЗаполнено(СтрокаПолноеОписаниеЗадачи) Тогда
		ПолноеОписаниеЗадачиHTML = "";
		ОбзорОбъектовКлиентСервер.ДобавитьРеквизит(ПолноеОписаниеЗадачиHTML, "", СтрокаПолноеОписаниеЗадачи);
		ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.Таб, "   ");
		ПолноеОписаниеЗадачиHTML = СтрЗаменить(ПолноеОписаниеЗадачиHTML, Символы.ПС, "");
		ТекстHTML = ТекстHTML + "<p>" + ПолноеОписаниеЗадачиHTML + "</p>";
	Иначе
		ТекстHTML = ТекстHTML + "<p>"
			+ НСтр("ru = 'У задачи нет описания.'") + "</p>";
	КонецЕсли;
Показать
43. Skromnyi 10 18.09.18 10:15 Сейчас в теме
(42) а он и сейчас порезал....
44. Skromnyi 10 18.09.18 10:17 Сейчас в теме
(43) в файл скопировал код.
Прикрепленные файлы:
Текст кода.txt
user705522_constantin_h; +1 Ответить
45. user705522_constantin_h 8 18.09.18 10:53 Сейчас в теме
(44)Спасибо! Это не совсем то, что нужно нашему руководству, но сделано красиво. Сейчас попросили, чтобы резолюция создавалась автоматически из комментария к задаче, чтобы не нужно было открывать сам документ. Буду разбираться.
22. user1046389 12.09.18 14:41 Сейчас в теме
3 пункт, согласование , ознакомление имеет ограничения и непредназначено для такого использования, можно предмет процесса сделать вспомогательным в этом согласовании.
24. user705522_constantin_h 8 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 Сейчас в теме
У Вас стандартный комплексный процесс обработки служебной записки по расходованию денежных средств (основной предмет служебная записка,возможен вспомогательный "СЧЕТ"). Описан подробно Лушниковым, посмотрите в интернете, в демобазе ДО есть похожее. Изучите свойства элементарных бизнес - процессов. Ваш комплексный процесс построен изначально не правильно, поэтому Вы пытаетесь его допилить через конфигуратор , меняя свойства элементарных процессов утверждение допиливаете до рассмотрения, ознакомление до согласования.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Салехард
зарплата от 80 000 руб. до 200 000 руб.
Полный день

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день


Программист 1С
Санкт-Петербург
Полный день

Программист 1С
Санкт-Петербург
Полный день