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