Не могу вывести все строки табличной части в печатную форму.
Добавляет только одну строку
Добавляет только одну строку
Процедура ЗаполнитьТабличныйДокументТН(ТабличныйДокумент, ТаблицаДанныхДляПечати, ОбъектыПечати, ПервыйДокумент) // после объекты печати ИмяМакета,
Для Каждого ДанныеПечати Из ТаблицаДанныхДляПечати Цикл
Если НЕ ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
СведенияОКонтрагентах = Новый Структура;
СведенияОКонтрагентах.Вставить("СведенияОГрузополучателе", БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Грузополучатель, ДанныеПечати.Дата));
СведенияОКонтрагентах.Вставить("СведенияОГрузоотправителе", БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Грузоотправитель, ДанныеПечати.Дата));
СведенияОКонтрагентах.Вставить("СведенияОПеревозчике", БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Перевозчик, ДанныеПечати.Дата));
//Если ДанныеПечати.Дата < '20120313' Тогда
// ПараметрыМакета = ПараметрыМакетаТН(ДанныеПечати, СведенияОКонтрагентах);
//ИначеЕсли ДанныеПечати.Дата < '20171222' Тогда
// ПараметрыМакета = ПараметрыМакетаТН1208(ДанныеПечати, СведенияОКонтрагентах);
//ИначеЕсли ДанныеПечати.Дата < '20210101' Тогда
// ПараметрыМакета = ПараметрыМакетаТН1529(ДанныеПечати, СведенияОКонтрагентах);
//ИначеЕсли ДанныеПечати.Дата < '20220301' Тогда
// ПараметрыМакета = ПараметрыМакетаТН2200(ДанныеПечати, СведенияОКонтрагентах);
//Иначе
//ПараметрыМакета = ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах);
//КонецЕсли;
Макет = ПолучитьМакет("ПФ_MXL_ТранспортнаяНакладная2116");
//Если ИмяМакета = Неопределено Тогда
// ИмяМакета = ПараметрыМакета.ИмяМакета;
//ИначеЕсли ИмяМакета <> ПараметрыМакета.ИмяМакета Тогда
// ИмяМакета = "";
//КонецЕсли;
//
ОбластьМакета = Макет.ПолучитьОбласть("ГоризонтальнаяЛицеваяСторона");
ПараметрыМакета = ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах);
ОбластьМакета.Параметры.Заполнить(ПараметрыМакета);
ТабличныйДокумент.Вывести(ОбластьМакета);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ОбластьМакетаОборотная = Макет.ПолучитьОбласть("ГоризонтальнаяОборотнаяСторона");
ОбластьМакетаОборотная.Параметры.Заполнить(ПараметрыМакета);
ТабличныйДокумент.Вывести(ОбластьМакетаОборотная);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
КонецПроцедуры
Функция ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК НоменклатураНаименование,
| РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК Сумма,
| РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
| РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
| Валюты.Представление КАК Представление
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
| ПО РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента = Валюты.Ссылка
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслугТовары.Номенклатура.Наименование,
| РеализацияТоваровУслугТовары.Ссылка.Номер,
| РеализацияТоваровУслугТовары.Ссылка.Дата,
| РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента,
| Валюты.Представление";
Запрос.УстановитьПараметр("Ссылка",ДанныеПечати.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ПараметрыМакета = Новый Структура;
ПараметрыМакета.Вставить("ИмяМакета", "Обработка.ПечатьТранспортнойНакладной.ПФ_MXL_ТранспортнаяНакладная2116");
СведенияОГрузополучателе = СведенияОКонтрагентах.СведенияОГрузополучателе;
СведенияОГрузоотправителе = СведенияОКонтрагентах.СведенияОГрузоотправителе;
СведенияОПеревозчике = СведенияОКонтрагентах.СведенияОПеревозчике;
ПараметрыМакета.Вставить("Пункт0_2", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
ПараметрыМакета.Вставить("Пункт0_5", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДетальныеЗаписи.Номер,Истина,Истина));
ПредставлениеГрузоотправителя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправителе,
"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны");
ПараметрыМакета.Вставить("Пункт1_1", ПредставлениеГрузоотправителя);
ПараметрыМакета.Вставить("Пункт2_1", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузополучателе,
"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны"));
ПараметрыМакета.Вставить("Пункт3_1",ВыборкаДетальныеЗаписи.НоменклатураНаименование);
ПараметрыМакета.Вставить("Пункт3_2", ЭтотОбъект.КоличествоГрузовыхМест );
ПараметрыМакета.Вставить("Пункт3_3", ЭтотОбъект.МассаГруза );
ПараметрыМакета.Вставить("Пункт3_5",ВыборкаДетальныеЗаписи.Сумма );
ПараметрыМакета.Вставить("Пункт3_5_1",ВыборкаДетальныеЗаписи.Представление);
//ПараметрыМакета.Вставить("Пункт4_1", ДанныеПечати.СопроводительныеДокументы);
ПараметрыМакета.Вставить("Пункт4_1","№ " + ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДетальныеЗаписи.Номер,Истина,Истина) + " от " + Формат(ДанныеПечати.Дата, "ДЛФ=D"));
ПараметрыМакета.Вставить("Пункт6_1", ЭтотОбъект.Перевозчик);
ПараметрыМакета.Вставить("Пункт8_2", ЭтотОбъект.АдресМестаПогрузки);
ПараметрыМакета.Вставить("Пункт8_5", ЭтотОбъект.МассаГруза);
ПараметрыМакета.Вставить("Пункт8_51", ЭтотОбъект.КоличествоГрузовыхМест);
Если ЗначениеЗаполнено(ДанныеПечати.ОтпускПроизвел) Тогда
ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(ДанныеПечати.Организация, ДанныеПечати.ОтпускПроизвел, ДанныеПечати.Дата);
ПараметрыМакета.Вставить("Пункт8_0", СокрЛП(СтрШаблон(НСтр("ru = '%1 %2 %3 %4'"), ДанныеФизЛица.Должность, ДанныеФизЛица.Фамилия, ДанныеФизЛица.Имя, ДанныеФизЛица.Отчество)));
КонецЕсли;
ПараметрыМакета.Вставить("Пункт8_8", ДанныеПечати.Водитель);
ПараметрыМакета.Вставить("Пункт10_9", ДанныеПечати.Водитель);
ПараметрыМакета.Вставить("Пункт10_1", ЭтотОбъект.АдресМестаВыгрузки);
ПредставлениеПеревозчика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПеревозчике,
"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны");
// Начиная с 01.03.2022 реквизиты перевозчика указываются в одном и том же поле и для юр. и для физлиц
//ПараметрыМакета.Вставить("Пункт6_1", ПредставлениеПеревозчика);
ДанныеПечатиВодитель = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДанныеПечати.Водитель);
Если ЗначениеЗаполнено(ДанныеПечати.ВодительскоеУдостоверение) Тогда
ДанныеПечатиВодитель.Добавить(ДанныеПечати.ВодительскоеУдостоверение);
КонецЕсли;
ПараметрыМакета.Вставить("Пункт6_2", СтрСоединить(ДанныеПечатиВодитель,", в/у "));
ПараметрыМакета.Вставить("Пункт7_1", ДанныеПечати.МаркаАвтомобиля);
ПараметрыМакета.Вставить("Пункт7_2", ДанныеПечати.РегистрационныйЗнакАвтомобиля);
// Раздел "Стоимость перевозки груза"
ПараметрыМакета.Вставить("Пункт12_7", ПредставлениеГрузоотправителя);
//ПараметрыМакета.Вставить("Пункт12_6", ПредставлениеПеревозчика);
ПараметрыМакета.Вставить("Пункт12_10", ЭтотОбъект.ОтКогоДенежныеСредства);
ПараметрыМакета.Вставить("Пункт16_11", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
ПараметрыМакета.Вставить("Пункт16_21", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
Возврат ПараметрыМакета;
КонецЦикла;
КонецФункции
ПоказатьПо теме из базы знаний
- Оформление строк табличной части в 8.2
- СКД: вывод строк из табличной части в одной ячейке строки
- Внешние печатные формы, БСП 3.1.9, с формой отладки, серверный метод, клиентский целиком и по выделенным строкам табличной части
- Универсальный редактор табличных частей документов РеСольДо
- Типовая работа с табличными частями УТ 11.5, аналог которой программист каждый раз изобретает сам
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Вот такой код
Для Каждого ДанныеПечати Из ТаблицаДанныхДляПечати Цикл
Если НЕ ПервыйДокумент Тогда
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
ПервыйДокумент = Ложь;
НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
СведенияОКонтрагентах = Новый Структура;
СведенияОКонтрагентах.Вставить("СведенияОГрузополучателе", БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Грузополучатель, ДанныеПечати.Дата));
СведенияОКонтрагентах.Вставить("СведенияОГрузоотправителе", БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Грузоотправитель, ДанныеПечати.Дата));
СведенияОКонтрагентах.Вставить("СведенияОПеревозчике", БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ДанныеПечати.Перевозчик, ДанныеПечати.Дата));
//Если ДанныеПечати.Дата < '20120313' Тогда
// ПараметрыМакета = ПараметрыМакетаТН(ДанныеПечати, СведенияОКонтрагентах);
//ИначеЕсли ДанныеПечати.Дата < '20171222' Тогда
// ПараметрыМакета = ПараметрыМакетаТН1208(ДанныеПечати, СведенияОКонтрагентах);
//ИначеЕсли ДанныеПечати.Дата < '20210101' Тогда
// ПараметрыМакета = ПараметрыМакетаТН1529(ДанныеПечати, СведенияОКонтрагентах);
//ИначеЕсли ДанныеПечати.Дата < '20220301' Тогда
// ПараметрыМакета = ПараметрыМакетаТН2200(ДанныеПечати, СведенияОКонтрагентах);
//Иначе
ПараметрыМакета = ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах);
//КонецЕсли;
Макет = ПолучитьМакет("ПФ_MXL_ТранспортнаяНакладная2116");
//Если ИмяМакета = Неопределено Тогда
// ИмяМакета = ПараметрыМакета.ИмяМакета;
//ИначеЕсли ИмяМакета <> ПараметрыМакета.ИмяМакета Тогда
// ИмяМакета = "";
//КонецЕсли;
//
ОбластьМакета = Макет.ПолучитьОбласть("ГоризонтальнаяЛицеваяСторона");
ПараметрыМакета = ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах);
ОбластьМакета.Параметры.Заполнить(ПараметрыМакета);
ТабличныйДокумент.Вывести(ОбластьМакета);
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ОбластьМакетаОборотная = Макет.ПолучитьОбласть("ГоризонтальнаяОборотнаяСторона");
ОбластьМакетаОборотная.Параметры.Заполнить(ПараметрыМакета);
ТабличныйДокумент.Вывести(ОбластьМакетаОборотная);
УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеПечати.Ссылка);
КонецЦикла;
КонецПроцедуры
Функция ПараметрыМакетаТН2116(ДанныеПечати, СведенияОКонтрагентах)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугТовары.Номенклатура.Наименование КАК НоменклатураНаименование,
| РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента КАК Сумма,
| РеализацияТоваровУслугТовары.Ссылка.Номер КАК Номер,
| РеализацияТоваровУслугТовары.Ссылка.Дата КАК Дата,
| Валюты.Представление КАК Представление
|ИЗ
| Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Валюты КАК Валюты
| ПО РеализацияТоваровУслугТовары.Ссылка.ВалютаДокумента = Валюты.Ссылка
|ГДЕ
| РеализацияТоваровУслугТовары.Ссылка = &Ссылка
|
|СГРУППИРОВАТЬ ПО
| РеализацияТоваровУслугТовары.Номенклатура.Наименование,
| РеализацияТоваровУслугТовары.Ссылка.Номер,
| РеализацияТоваровУслугТовары.Ссылка.Дата,
| РеализацияТоваровУслугТовары.Ссылка.СуммаДокумента,
| Валюты.Представление";
Запрос.УстановитьПараметр("Ссылка",ДанныеПечати.Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ДанныеТЧ = РезультатЗапроса.Выгрузить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
ПараметрыМакета = Новый Структура;
ПараметрыМакета.Вставить("ИмяМакета", "Обработка.ПечатьТранспортнойНакладной.ПФ_MXL_ТранспортнаяНакладная2116");
СведенияОГрузополучателе = СведенияОКонтрагентах.СведенияОГрузополучателе;
СведенияОГрузоотправителе = СведенияОКонтрагентах.СведенияОГрузоотправителе;
СведенияОПеревозчике = СведенияОКонтрагентах.СведенияОПеревозчике;
ПараметрыМакета.Вставить("Пункт0_2", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
ПараметрыМакета.Вставить("Пункт0_5", ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДетальныеЗаписи.Номер,Истина,Истина));
ПредставлениеГрузоотправителя = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправителе,
"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны");
ПараметрыМакета.Вставить("Пункт1_1", ПредставлениеГрузоотправителя);
ПараметрыМакета.Вставить("Пункт2_1", ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузополучателе,
"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны"));
//ПараметрыМакета.Вставить("Пункт3_1", ДанныеПечати.КраткоеНаименованиеГруза);
//Для Каждого Стр Из ДанныеТЧ Цикл
ПараметрыМакета.Вставить("Пункт3_1",ВыборкаДетальныеЗаписи.НоменклатураНаименование);
//КонецЦикла;
ПараметрыМакета.Вставить("Пункт3_2", ЭтотОбъект.КоличествоГрузовыхМест );
ПараметрыМакета.Вставить("Пункт3_3", ЭтотОбъект.МассаГруза );
ПараметрыМакета.Вставить("Пункт3_5",ВыборкаДетальныеЗаписи.Сумма );
ПараметрыМакета.Вставить("Пункт3_5_1",ВыборкаДетальныеЗаписи.Представление);
//ПараметрыМакета.Вставить("Пункт4_1", ДанныеПечати.СопроводительныеДокументы);
ПараметрыМакета.Вставить("Пункт4_1","№ " + ПрефиксацияОбъектовКлиентСервер.НомерНаПечать(ВыборкаДетальныеЗаписи.Номер,Истина,Истина) + " от " + Формат(ДанныеПечати.Дата, "ДЛФ=D"));
ПараметрыМакета.Вставить("Пункт6_1", ЭтотОбъект.Перевозчик);
ПараметрыМакета.Вставить("Пункт8_2", ЭтотОбъект.АдресМестаПогрузки);
ПараметрыМакета.Вставить("Пункт8_5", ЭтотОбъект.МассаГруза);
ПараметрыМакета.Вставить("Пункт8_51", ЭтотОбъект.КоличествоГрузовыхМест);
Если ЗначениеЗаполнено(ДанныеПечати.ОтпускПроизвел) Тогда
ДанныеФизЛица = ОбщегоНазначенияБПВызовСервера.ДанныеФизЛица(ДанныеПечати.Организация, ДанныеПечати.ОтпускПроизвел, ДанныеПечати.Дата);
ПараметрыМакета.Вставить("Пункт8_0", СокрЛП(СтрШаблон(НСтр("ru = '%1 %2 %3 %4'"), ДанныеФизЛица.Должность, ДанныеФизЛица.Фамилия, ДанныеФизЛица.Имя, ДанныеФизЛица.Отчество)));
КонецЕсли;
ПараметрыМакета.Вставить("Пункт8_8", ДанныеПечати.Водитель);
ПараметрыМакета.Вставить("Пункт10_9", ДанныеПечати.Водитель);
ПараметрыМакета.Вставить("Пункт10_1", ЭтотОбъект.АдресМестаВыгрузки);
ПредставлениеПеревозчика = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОПеревозчике,
"НаименованиеДляПечатныхФорм,ИНН,ФактическийАдрес,Телефоны");
// Начиная с 01.03.2022 реквизиты перевозчика указываются в одном и том же поле и для юр. и для физлиц
//ПараметрыМакета.Вставить("Пункт6_1", ПредставлениеПеревозчика);
ДанныеПечатиВодитель = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ДанныеПечати.Водитель);
Если ЗначениеЗаполнено(ДанныеПечати.ВодительскоеУдостоверение) Тогда
ДанныеПечатиВодитель.Добавить(ДанныеПечати.ВодительскоеУдостоверение);
КонецЕсли;
ПараметрыМакета.Вставить("Пункт6_2", СтрСоединить(ДанныеПечатиВодитель,", в/у "));
ПараметрыМакета.Вставить("Пункт7_1", ДанныеПечати.МаркаАвтомобиля);
ПараметрыМакета.Вставить("Пункт7_2", ДанныеПечати.РегистрационныйЗнакАвтомобиля);
// Раздел "Стоимость перевозки груза"
ПараметрыМакета.Вставить("Пункт12_7", ПредставлениеГрузоотправителя);
//ПараметрыМакета.Вставить("Пункт12_6", ПредставлениеПеревозчика);
ПараметрыМакета.Вставить("Пункт12_10", ЭтотОбъект.ОтКогоДенежныеСредства);
ПараметрыМакета.Вставить("Пункт16_11", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
ПараметрыМакета.Вставить("Пункт16_21", Формат(ДанныеПечати.Дата, "ДЛФ=D"));
Возврат ПараметрыМакета;
КонецЦикла;
КонецФункции
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот