Данные из табличной части в одну строку через запятую ВПФ ЗУП 3.1

1. user1018141 05.05.22 15:37 Сейчас в теме
Добрый день, надеюсь кто нибудь подскажет, есть внешняя печатная форма ЗУП 3.1 Приказ о работе в выходной, сделана из типовой
в документе есть табличная часть с сотрудниками, нужно чтобы они заполнялись в печатную форму в виде строки через запятую в определённую область

Раньше форма была другой и для каждого сотрудника формировалась новая область
Для Каждого ТекСтрока Из ТаблицаСотрудники Цикл 
		ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ТекСтрока);
		ТабДокумент.Вывести(ОбластьСтрока);
КонецЦикла;

теперь нужно все это объдинить в одну строку через запятую, голову сломал не пойму как сделать


	ТабДокумент = Новый ТабличныйДокумент;
	ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ПриказОРаботеВВыходнойИПраздничныйДень";
	
	ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	
		Макет = ПолучитьМакет(ИмяМакета);
	
	
	ОбластьШапка 	  = Макет.ПолучитьОбласть("Шапка");
	ОбластьДатаРаботы = Макет.ПолучитьОбласть("ДатаРаботы");
	ОбластьРаботник   = Макет.ПолучитьОбласть("Работник");
	ОбластьПодвал 	  = Макет.ПолучитьОбласть("Подвал");
	ОбластьОзнакомлен = Макет.ПолучитьОбласть("Ознакомлен");
	ОбластьСтрока     = Макет.ПолучитьОбласть("Строка");
	
	ДанныеДляПечати = ДанныеДляПечатиПриказаОРаботеВВыходнойИПраздничныйДень(МассивОбъектов);
	
	ВыборкаПоДокументам = ДанныеДляПечати.РезультатПоШапке.Выбрать();
	ВыборкаПоСтрокам 	= ДанныеДляПечати.РезультатПоТабличнойЧасти.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	
	ТаблицаСотрудники = Новый ТаблицаЗначений;
	ТаблицаСотрудники.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
	ТаблицаСотрудники.Колонки.Добавить("ФИО", Новый ОписаниеТипов("Строка"));
	ТаблицаСотрудники.Колонки.Добавить("Должность", Новый ОписаниеТипов("Строка"));
	ТаблицаСотрудники.Колонки.Добавить("ДатаДок", Новый ОписаниеТипов("Дата"));
	
	Пока ВыборкаПоДокументам.Следующий() Цикл  
		
		НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1;
		
		НомерПункта = 0;
		ТаблицаСотрудники.Очистить();
		
		Параметры = ПолучитьСтруктуруПараметровПриказаОРаботеВВыходнойИПраздничн­ыйДень();
		КадровыйУчет.ЗаполнитьПараметрыКадровогоПриказа(Параметры, ВыборкаПоДокументам);
		
		ЗаполнитьЗначенияСвойств(ОбластьШапка.Параметры, Параметры);
		ЗаполнитьЗначенияСвойств(ОбластьПодвал.Параметры, Параметры);
			
		ОбластьШапка.Параметры.ДатаДок = Формат(Параметры.ДатаДок, "ДЛФ=D");
	
		ТабДокумент.Вывести(ОбластьШапка);
		
		СтруктураПоиска = Новый Структура("Ссылка", ВыборкаПоДокументам.Ссылка);
		
		ВыборкаПоСтрокам.Сбросить();
		
		Пока ВыборкаПоСтрокам.НайтиСледующий(СтруктураПоиска) Цикл 
			
			ВыборкаПоДатам = ВыборкаПоСтрокам.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
			
			Пока ВыборкаПоДатам.Следующий() Цикл 
				
				НомерПункта = НомерПункта + 1;
				
				ОбластьДатаРаботы.Параметры.НомерПункта = НомерПункта;
				ОбластьДатаРаботы.Параметры.ДатаРаботы = Формат(ВыборкаПоДатам.Дата, "ДЛФ=ДД");
				
				ТабДокумент.Вывести(ОбластьДатаРаботы);
				
				ВыборкаПоСотрудникам = ВыборкаПоДатам.Выбрать();
				
				Пока ВыборкаПоСотрудникам.Следующий() Цикл 
					
					ДанныеСтроки = Новый Структура;
					ДанныеСтроки.Вставить("Сотрудник", ВыборкаПоСотрудникам.Сотрудник);
					ДанныеСтроки.Вставить("ФИО", ВыборкаПоСотрудникам.ФамилияИО);
					ДанныеСтроки.Вставить("Должность", ВыборкаПоСотрудникам.Должность);
					
					ЗаполнитьЗначенияСвойств(ОбластьРаботник.Параметры, ДанныеСтроки);
					ТабДокумент.Вывести(ОбластьРаботник);
										Если ТаблицаСотрудники.Найти(ВыборкаПоСотрудникам.Сотрудник, "Сотрудник") = Неопределено Тогда 
						ДанныеСтроки.Вставить("ФИО", ВыборкаПоСотрудникам.ИОФамилия);
						НоваяСтрока = ТаблицаСотрудники.Добавить();
						ЗаполнитьЗначенияСвойств(НоваяСтрока, ДанныеСтроки);
					КонецЕсли;
					 					
				КонецЦикла;
				КонецЦикла;
				
				
		Для Каждого ТекСтрока Из ТаблицаСотрудники Цикл 
		ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ТекСтрока);
		ТабДокумент.Вывести(ОбластьСтрока);

		КонецЦикла;

	    
		КонецЦикла;
		
		ОбластьПодвал.Параметры.НомерПункта1 = НомерПункта + 1;
		
		
		ТабДокумент.Вывести(ОбластьПодвал);
		
		ТаблицаСотрудники.Сортировать("ФИО");
		ТаблицаСотрудники.ЗаполнитьЗначения(ВыборкаПоДокументам.ДатаДок, "ДатаДок");
		
		Для Каждого ТекСтрока Из ТаблицаСотрудники Цикл 
			ЗаполнитьЗначенияСвойств(ОбластьОзнакомлен.Параметры, ТекСтрока);
			ТабДокумент.Вывести(ОбластьОзнакомлен);
		КонецЦикла;
		
							 
		
		ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц();
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
		
	КонецЦикла;
	
	Возврат ТабДокумент;
Показать



Запрос

// Запрос по шапкам документов.
	Запрос = Новый Запрос;
	
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ДанныеДокумента.Ссылка КАК Ссылка,
	|	ДанныеДокумента.Дата КАК Дата,
	|	ДанныеДокумента.Номер КАК Номер,
	|	ДанныеДокумента.Причина КАК Причина,
	|	ДанныеДокумента.Организация КАК Организация,
	|	ВЫБОР
	|		КОГДА ПОДСТРОКА(ДанныеДокумента.Организация.НаименованиеПолное, 1, 10) = """"
	|			ТОГДА ДанныеДокумента.Организация.Наименование
	|		ИНАЧЕ ДанныеДокумента.Организация.НаименованиеПолное
	|	КОНЕЦ КАК НазваниеОрганизации,
	|	ДанныеДокумента.СогласиеТребуется КАК СогласиеТребуется,
	|	ДанныеДокумента.Руководитель КАК Руководитель,
	|	ДанныеДокумента.ДолжностьРуководителя КАК ДолжностьРуководителя
	|ПОМЕСТИТЬ ВТДанныеДокументов
	|ИЗ
	|	Документ.РаботаВВыходныеИПраздничныеДни КАК ДанныеДокумента
	|ГДЕ
	|	ДанныеДокумента.Ссылка В(&МассивОбъектов)";
	
	Запрос.Выполнить();
	
	ИменаПолейОтветственныхЛиц = Новый Массив;
	ИменаПолейОтветственныхЛиц.Добавить("Руководитель");
	
	ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Ложь, ИменаПолейОтветственныхЛиц, "ВТДанныеДокументов");
	
	Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ДанныеДокументов.Ссылка КАК Ссылка,
	|	ДанныеДокументов.Номер КАК НомерДок,
	|	ДанныеДокументов.Дата КАК ДатаДок,
	|	ДанныеДокументов.Причина КАК Причина,
	|	ДанныеДокументов.Организация КАК Организация,
	|	ДанныеДокументов.СогласиеТребуется КАК СогласиеТребуется,
	|	ДанныеДокументов.НазваниеОрганизации КАК НазваниеОрганизации,
	|	ДанныеДокументов.ДолжностьРуководителя.Наименование КАК ДолжностьРуководителя,
	|	ФИООтветственныхЛиц.РасшифровкаПодписи КАК РуководительРасшифровкаПодписи
	|ИЗ
	|	ВТДанныеДокументов КАК ДанныеДокументов
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИООтветственныхЛиц
	|		ПО ДанныеДокументов.Руководитель = ФИООтветственныхЛиц.ФизическоеЛицо
	|			И ДанныеДокументов.Ссылка = ФИООтветственныхЛиц.Ссылка
	|
	|УПОРЯДОЧИТЬ ПО
	|	ДатаДок";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ДанныеДляПечати = Новый Структура;
	ДанныеДляПечати.Вставить("РезультатПоШапке", РезультатЗапроса);
	
	// Запрос по табличным частям
	Запрос = Новый Запрос;
	
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Сотрудники.Ссылка КАК Ссылка,
	|	Сотрудники.Сотрудник КАК Сотрудник,
	|	Сотрудники.Дата КАК Дата,
	|	Сотрудники.Ссылка.Дата КАК Период
	|ПОМЕСТИТЬ ВТДанныеДокументов
	|ИЗ
	|	Документ.РаботаВВыходныеИПраздничныеДни.Сотрудники КАК Сотрудники
	|ГДЕ
	|	Сотрудники.Ссылка В(&МассивОбъектов)
	|	И (НЕ ВЫРАЗИТЬ(Сотрудники.Ссылка КАК Документ.РаботаВВыходныеИПраздничныеДни).ВремяВЧасах
	|				И НЕ Сотрудники.НеРаботал
	|			ИЛИ ВЫРАЗИТЬ(Сотрудники.Ссылка КАК Документ.РаботаВВыходныеИПраздничныеДни).ВремяВЧасах
	|				И Сотрудники.ОтработаноЧасов > 0)";
	
	Запрос.Выполнить();			   
	
	ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотруднико­в(Запрос.МенеджерВременныхТаблиц, "ВТДанныеДокументов");
	КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Истина, "ФамилияИО,ИОФамилия,Должность");
	
	Запрос.Текст =
	"ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	ДанныеДокументов.Ссылка КАК Ссылка,
	|	ДанныеДокументов.Дата КАК Дата,
	|	ДанныеДокументов.Сотрудник КАК Сотрудник,
	|	КадровыеДанныеСотрудников.Должность.Наименование КАК Должность,
	|	КадровыеДанныеСотрудников.ФамилияИО КАК ФамилияИО,
	|	КадровыеДанныеСотрудников.ИОФамилия КАК ИОФамилия
	|ИЗ
	|	ВТДанныеДокументов КАК ДанныеДокументов
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
	|		ПО ДанныеДокументов.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
	|			И ДанныеДокументов.Период = КадровыеДанныеСотрудников.Период
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка,
	|	Дата,
	|	КадровыеДанныеСотрудников.ФамилияИО
	|ИТОГИ ПО
	|	Ссылка,
	|	Дата";
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ДанныеДляПечати.Вставить("РезультатПоТабличнойЧасти", РезультатЗапроса);
	
	Возврат ДанныеДляПечати;
Показать
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Evgenia060882 86 06.05.22 04:35 Сейчас в теме
В цикле формировать строку Стр = Стр+ ТекСтрока.НужныеПараметры
а за циклом выводить область печати
Оставьте свое сообщение

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