Вивести в табличний документ два макети з різною орієнтацією , Бухгалтерия для Украины, редакция 2.0. (2.0.22.1)
27.01.25, 14:56
Оратор
Группа: Местный
Сообщений: 474
Из: Украина
Спасибо сказали: 156 раз
Рейтинг: 158.1
Доброго дня! Виникло таке питання. Є форма ТТН (товарно- транспортна накладна) знаходиться вона в одному макеті. Створив за проханням бухгалтерії ще один макет "Сертифікат". Так ось в чому питанні ТТН потрібно вивести з орієнтацією "ландшафт", а сертифікат "портрет і все це в одному табличному документі. Чи можливо таке реалізувати?
Код Процедура ЗаполнитьТТН2025 (Шапка, ЗапросТовары, ТабДокумент, ПараметрыПечати) Документ = ПараметрыПечати.Документ; МаркаИГосНомерАвтомобиля = ПараметрыПечати.МаркаИГосНомерАвтомобиля; ГосНомерПрицепа = ПараметрыПечати.ГосНомерПрицепа; ПунктПогрузки = ПараметрыПечати.ПунктПогрузки; ПунктРазгрузки = ПараметрыПечати.ПунктРазгрузки; Водитель = ПараметрыПечати.Водитель; Перевозчик = ПараметрыПечати.Перевозчик; ВидПеревозки = ПараметрыПечати.ВидПеревозки; НомерТТН = ПараметрыПечати.НомерТТН; // Зададим параметры макета ТабДокумент = Новый ТабличныйДокумент; Макет = ПолучитьМакет("ПФ_MXL_ТТН2025"); ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ТабДокумент.АвтоМасштаб = Истина; ТабДокумент.ПолеСверху = 0; ТабДокумент.ПолеСнизу = 0; ТабДокумент.ПолеСправа = 5; ТабДокумент.ПолеСлева = 5; КодЯзыкаПечать = "uk"; // Выводим общие реквизиты шапки СведенияОПокупателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Покупатель, Шапка.ДатаДокумента,,,КодЯзыкаПечать); СведенияОГрузополучателе = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Грузополучатель, Шапка.ДатаДокумента,,,КодЯзыкаПечать); СведенияОГрузоотправитель = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(Шапка.Грузоотправитель, Шапка.ДатаДокумента,,Шапка.БанковскийСчет,КодЯзыкаПечать); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.НомерДокумента = НомерТТН; ОбластьМакета.Параметры.ДатаДокумента = Формат(Шапка.ДатаДокумента,"Л=uk_UA; ДФ='''""''dd''""'' MMMM yyyy'") +" року"; ОбластьМакета.Параметры.Грузоотправитель = Шапка.Грузоотправитель; ОбластьМакета.Параметры.Грузополучатель = Шапка.Грузополучатель; ОбластьМакета.Параметры.ГрузоотправительПредставление = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузоотправитель, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,МФО,КодПоЕДРПОУ,",, КодЯзыкаПечать); ОбластьМакета.Параметры.ГрузополучательПредставление = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОГрузополучателе, "ПолноеНаименование,ИНН,ФактическийАдрес,Телефоны,НомерСчета,Банк,МФО,КодПоЕДРПОУ,",, КодЯзыкаПечать); ОбластьМакета.Параметры.МаркаИГосНомерАвтомобиля = МаркаИГосНомерАвтомобиля; ОбластьМакета.Параметры.ФИОВодителя = Водитель; ОбластьМакета.Параметры.ВидПеревозки = ВидПеревозки; ОбластьМакета.Параметры.ГосНомерПрицепа = ГосНомерПрицепа; ОбластьМакета.Параметры.ПунктПогрузки = ПунктПогрузки; ОбластьМакета.Параметры.ПунктРазгрузки = ПунктРазгрузки; ОбластьМакета.Параметры.ОрганизацияПеревозчик = Перевозчик; Руководители = ОтветственныеЛицаБП.ОтветственныеЛица(Шапка.Руководители, Шапка.ДатаДокумента); СуммаСНДС = Окр((ЗапросТовары.Итог("Сумма") + ?(Шапка.СуммаВключаетНДС, 0, ЗапросТовары.Итог("СуммаНДС"))), 2); ОбластьМакета.Параметры.ОтпущеноНаСуммуПрописью = ОбщегоНазначенияБПВызовСервера.СформироватьСуммуПрописью(СуммаСНДС, Константы.ВалютаРегламентированногоУчета.Получить(), КодЯзыкаПечать); ОбластьМакета.Параметры.СуммаНДС = ОбщегоНазначенияБПВызовСервера.ФорматСумм(ЗапросТовары.Итог("СуммаНДС"), Константы.ВалютаРегламентированногоУчета.Получить()); Количество = ЗапросТовары.Итог("Количество"); КоличествоМест = Количество; КоличествоМестПрописью = ОбщегоНазначенияБПВызовСервера.КоличествоПрописью(КоличествоМест,КодЯзыкаПечать); //ОбластьМакета.Параметры.КоличествоМестСловами = КоличествоМестПрописью; ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); // Выводим заголовок таблицы ЗаголовокТаблицы = Макет.ПолучитьОбласть("ЗаголовокТаблицы"); ТабДокумент.Вывести(ЗаголовокТаблицы); КоличествоСтрок = ЗапросТовары.Количество(); // инициализация итогов по странице ИтогоКоличествоНаСтранице = 0; ИтогоСуммаСНДСНаСтранице = 0; // инициализация итогов по документу ИтогоМест = 0; ИтогоКоличество = 0; ИтогоСуммаСНДС = 0; Ном = 1; // Выводим многострочную часть документа ОбластьМакета = Макет.ПолучитьОбласть("Строка"); Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл Если НЕ ЗначениеЗаполнено(ВыборкаСтрок.Номенклатура) Тогда Сообщить(НСтр("ru='В одной из строк не заполнено значение номенклатуры - строка при печати пропущена.';uk='В одному з рядків не заповнене значення номенклатури - рядок під час друку буде пропущений.'"), СтатусСообщения.Важное); Продолжить; КонецЕсли; ОбластьМакета.Параметры.Заполнить(ВыборкаСтрок); ОбластьМакета.Параметры.НомерСтроки = Ном; ОбластьМакета.Параметры.ТоварНаименование = ВыборкаСтрок.ТоварНаименование; //Мест = ВыборкаСтрок.КоличествоМест; Количество = ВыборкаСтрок.Количество; СуммаСНДС = Окр((ВыборкаСтрок.Сумма + ?(Шапка.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС)), 2); СуммаБезНДС = СуммаСНДС - ВыборкаСтрок.СуммаНДС; ОбластьМакета.Параметры.Сумма = СуммаСНДС; ОбластьМакета.Параметры.Цена = ?(Количество = 0, 0, СуммаБезНДС / Количество); ТабДокумент.Вывести(ОбластьМакета); // увеличим итоги по дукументу ИтогоКоличество = ИтогоКоличество + Количество; ИтогоСуммаСНДС = ИтогоСуммаСНДС + СуммаСНДС; Ном = Ном + 1; КонецЦикла; // Выводим итоги по документу в целом ОбластьМакета = Макет.ПолучитьОбласть("Всего"); ОбластьМакета.Параметры.ИтогоКоличество = ИтогоКоличество; ОбластьМакета.Параметры.ИтогоСуммаСНДС = ИтогоСуммаСНДС; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Подписи"); ДанныеКартинкиПечать = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Шапка.ФайлФаксимильнаяПечать); ДанныеКартинкиПодпись = РаботаСФайламиСлужебныйВызовСервера.ПолучитьДанныеФайлаИДвоичныеДанные(Шапка.ФайлФаксимильнаяПодпись); Если Не ДанныеКартинкиПечать = Неопределено Тогда ОбластьМакета.Области.Печать.Картинка = Новый Картинка(ДанныеКартинкиПечать.ДвоичныеДанные); КонецЕсли; Если Не ДанныеКартинкиПодпись = Неопределено Тогда ОбластьМакета.Области.ПодписьСдал.Картинка = Новый Картинка(ДанныеКартинкиПодпись.ДвоичныеДанные); КонецЕсли; ТабДокумент.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("ПогрузочныеОперации"); ТабДокумент.Вывести(ОбластьМакета); ТабДокумент.ВывестиГоризонтальныйРазделительСтраниц(); НовыйТабДок= Новый ТабличныйДокумент; НовыйТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; НовыйТабДок.АвтоМасштаб = Истина; НовыйТабДок.ПолеСверху = 0; НовыйТабДок.ПолеСнизу = 0; НовыйТабДок.ПолеСправа = 5; НовыйТабДок.ПолеСлева = 5; Макет = ПолучитьМакет("КачественноеУдостоверение"); ДатаДок = ОбщегоНазначения.ПолучитьЗначениеРеквизита(Документ, "Дата"); ДатаУдостоверения = ДатаДок - (3600 * 24); ОбластьМакета = Макет.ПолучитьОбласть("Шапка"); ОбластьМакета.Параметры.Номер = НомерТТН; ОбластьМакета.Параметры.ДатаЛок = Формат(ДатаУдостоверения, "Л=uk_UA; ДЛФ=DD"); ОбластьМакета.Параметры.Дата = Формат(ДатаУдостоверения, "ДФ=dd.MM.yyyy"); НовыйТабДок.Вывести(ОбластьМакета); ОбластьМакета = Макет.ПолучитьОбласть("Таблица"); ОбластьМакета.Параметры.Оргнаизация = Шапка.Организация; ОбластьМакета.Параметры.Дата = Формат(ДатаУдостоверения, "ДФ=dd.MM.yyyy"); ОбластьМакета.Параметры.НомерАвто = МаркаИГосНомерАвтомобиля; ОбластьМакета.Параметры.НомерПрицепа = ГосНомерПрицепа; ОбластьМакета.Параметры.Нетто = Количество; ОбластьМакета.Области.Печать.Картинка = Новый Картинка(ДанныеКартинкиПечать.ДвоичныеДанные); ОбластьМакета.Области.Подпись.Картинка = Новый Картинка(ДанныеКартинкиПодпись.ДвоичныеДанные); НовыйТабДок.Вывести(ОбластьМакета); ТабДокумент.Вывести(НовыйТабДок); КонецПроцедуры //ЗаполнитьТТН2025 Функция ПечатьТТН(ПараметрыПечати) Экспорт УстановитьПривилегированныйРежим(Истина); мВалютаРегламентированногоУчета = ОбщегоНазначенияБПВызовСервераПовтИсп.ПолучитьВалютуРегламентированногоУчета(); Документ = ПараметрыПечати.Документ; МаркаИГосНомерАвтомобиля = ПараметрыПечати.МаркаИГосНомерАвтомобиля; ГосНомерПрицепа = ПараметрыПечати.ГосНомерПрицепа; ПунктПогрузки = ПараметрыПечати.ПунктПогрузки; ПунктРазгрузки = ПараметрыПечати.ПунктРазгрузки; Водитель = ПараметрыПечати.Водитель; Перевозчик = ПараметрыПечати.Перевозчик; ВидПеревозки = ПараметрыПечати.ВидПеревозки; НомерТТН = ПараметрыПечати.НомерТТН; Запрос = Новый Запрос; Запрос.УстановитьПараметр("ДатаСреза", Документ.Дата); Запрос.УстановитьПараметр("СтруктурнаяЕдиница", Документ.Склад); Запрос.УстановитьПараметр("ТекущийДокумент", Документ); Запрос.УстановитьПараметр("ПустойКонтрагент", Справочники.Контрагенты.ПустаяСсылка()); Запрос.Текст = "ВЫБРАТЬ | РеализацияТоваровУслуг.Ссылка КАК Документ, | РеализацияТоваровУслуг.Номер, | РеализацияТоваровУслуг.Дата КАК ДатаДокумента, | РеализацияТоваровУслуг.Организация, | РеализацияТоваровУслуг.Организация КАК ЮрФизЛицо, | РеализацияТоваровУслуг.Организация КАК Поставщик, | РеализацияТоваровУслуг.Организация КАК Контрагент, | РеализацияТоваровУслуг.Организация КАК Руководители, | ВЫБОР | КОГДА РеализацияТоваровУслуг.Грузополучатель = &ПустойКонтрагент | ТОГДА РеализацияТоваровУслуг.Контрагент | ИНАЧЕ РеализацияТоваровУслуг.Грузополучатель | КОНЕЦ КАК Грузополучатель, | РеализацияТоваровУслуг.Организация КАК Грузоотправитель, | РеализацияТоваровУслуг.БанковскийСчетОрганизации КАК БанковскийСчет, | РеализацияТоваровУслуг.Контрагент КАК Покупатель, | РеализацияТоваровУслуг.Контрагент КАК Плательщик, | ОтветственныеЛица.ФизическоеЛицо КАК ОтветственноеЛицо, | РеализацияТоваровУслуг.ВалютаДокумента, | РеализацияТоваровУслуг.КурсВзаиморасчетов КАК Курс, | РеализацияТоваровУслуг.КратностьВзаиморасчетов КАК Кратность, | РеализацияТоваровУслуг.СуммаВключаетНДС, | РеализацияТоваровУслуг.Получил, | РеализацияТоваровУслуг.ДоверенностьСерия, | РеализацияТоваровУслуг.ДоверенностьНомер, | РеализацияТоваровУслуг.ДоверенностьДата, | ЕСТЬNULL(Организации.ФайлФаксимильнаяПечать, НЕОПРЕДЕЛЕНО) КАК ФайлФаксимильнаяПечать, | ЕСТЬNULL(Организации.ФайлФаксимильнаяПодпись, НЕОПРЕДЕЛЕНО) КАК ФайлФаксимильнаяПодпись |ИЗ | Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОтветственныеЛица.СрезПоследних(&ДатаСреза, СтруктурнаяЕдиница = &СтруктурнаяЕдиница) КАК ОтветственныеЛица | ПО (ОтветственныеЛица.СтруктурнаяЕдиница = РеализацияТоваровУслуг.Склад) | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации | ПО РеализацияТоваровУслуг.Организация = Организации.Ссылка |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент"; Шапка = Запрос.Выполнить().Выбрать(); Шапка.Следующий(); Запрос = Новый Запрос; Запрос.УстановитьПараметр("ТекущийДокумент", Документ); Если Документ.ВалютаДокумента = Документ.ДоговорКонтрагента.ВалютаВзаиморасчетов Тогда // Документ оформлен в валюте взаиморасчетов Запрос.УстановитьПараметр("Курс", Документ.КурсВзаиморасчетов); Запрос.УстановитьПараметр("Кратность", Документ.КратностьВзаиморасчетов); Иначе // Документ оформлен в валюте регламентированного учета Запрос.УстановитьПараметр("Курс", 1); Запрос.УстановитьПараметр("Кратность", 1); КонецЕсли; Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Номенклатура КАК Номенклатура, | ВложенныйЗапрос.Номенклатура.НаименованиеПолное КАК ТоварНаименование, | ВложенныйЗапрос.Номенклатура.Код КАК Артикул, | ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК БазоваяЕдиницаНаименование, | ВложенныйЗапрос.ЕдиницаИзмерения.Код КАК БазоваяЕдиницаКодПоОКЕИ, | ВложенныйЗапрос.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ВложенныйЗапрос.ЕдиницаИзмерения.Представление КАК ВидУпаковки, | ВложенныйЗапрос.СтавкаНДС КАК СтавкаНДС, | ВложенныйЗапрос.Цена КАК Цена, | ВложенныйЗапрос.Количество КАК Количество, | ВложенныйЗапрос.Сумма КАК Сумма, | ВложенныйЗапрос.СуммаНДС КАК СуммаНДС, | ВложенныйЗапрос.НомерСтроки КАК НомерСтроки, | ВложенныйЗапрос.Метка КАК Метка |ИЗ | | ( | ВЫБРАТЬ | РеализацияТоваровУслуг.Номенклатура, | РеализацияТоваровУслуг.Коэффициент, | РеализацияТоваровУслуг.ЕдиницаИзмерения, | РеализацияТоваровУслуг.ЕдиницаИзмерения КАК ЕдиницаИзмеренияМест, | РеализацияТоваровУслуг.СтавкаНДС, | РеализацияТоваровУслуг.Цена * &Курс / &Кратность КАК Цена, | СУММА(РеализацияТоваровУслуг.Количество) КАК Количество, | СУММА(РеализацияТоваровУслуг.Сумма * &Курс / &Кратность) КАК Сумма, | СУММА(РеализацияТоваровУслуг.СуммаНДС * &Курс / &Кратность) КАК СуммаНДС, | МИНИМУМ(РеализацияТоваровУслуг.НомерСтроки) КАК НомерСтроки, | 0 КАК Метка | ИЗ | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслуг | ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент | |СГРУППИРОВАТЬ ПО | РеализацияТоваровУслуг.Номенклатура, | РеализацияТоваровУслуг.Коэффициент, | РеализацияТоваровУслуг.ЕдиницаИзмерения, | РеализацияТоваровУслуг.СтавкаНДС, | РеализацияТоваровУслуг.Цена | | ) КАК ВложенныйЗапрос | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | РеализацияТоваровУслуг.Номенклатура КАК Номенклатура, | РеализацияТоваровУслуг.Номенклатура.НаименованиеПолное КАК ТоварНаименование, | РеализацияТоваровУслуг.Номенклатура.Код КАК Артикул, | РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Представление КАК БазоваяЕдиницаНаименование, | РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения.Код КАК БазоваяЕдиницаКодПоОКЕИ, | РеализацияТоваровУслуг.Номенклатура.БазоваяЕдиницаИзмерения КАК ЕдиницаИзмерения, | NULL КАК ВидУпаковки, | ""Без НДС"" КАК СтавкаНДС, | РеализацияТоваровУслуг.Цена * &Курс / &Кратность КАК Цена, | РеализацияТоваровУслуг.Количество КАК Количество, | РеализацияТоваровУслуг.Сумма * &Курс / &Кратность КАК Сумма, | 0 КАК СуммаНДС, | РеализацияТоваровУслуг.НомерСтроки КАК НомерСтроки, | 2 КАК Метка |ИЗ | Документ.РеализацияТоваровУслуг.ВозвратнаяТара КАК РеализацияТоваровУслуг | |ГДЕ | РеализацияТоваровУслуг.Ссылка = &ТекущийДокумент | |УПОРЯДОЧИТЬ ПО Метка ВОЗР, НомерСтроки ВОЗР | |"; ЗапросТовары = Запрос.Выполнить().Выгрузить(); ТабДокумент = Новый ТабличныйДокумент; НомерСтрокиНачало = ТабДокумент.ВысотаТаблицы + 1; Если Шапка.ДатаДокумента > Дата("20250101")Тогда ЗаполнитьТТН2025 (Шапка, ЗапросТовары, ТабДокумент,ПараметрыПечати); КонецЕсли; Возврат ТабДокумент; КонецФункции // ПечатьТТН()
Сообщение отредактировал Vofka - 27.01.25, 14:59
27.01.25, 15:28
Оратор
Группа: Местный
Сообщений: 479
Спасибо сказали: 129 раз
Рейтинг: 132.4
denis84 @ Сегодня, 14:56
,
Можно 2 макета вывести в один табличный документ
Макет1=ПолучитьМакет("макет1"); Макет2=ПолучитьМакет("макет2"); Область1Макета1=Макет1.ПолучитьОбласть("Область1"); Область1Макета2=Макет2.ПолучитьОбласть("Область1"); ТабДокумент.Вывести(Область1Макета1); ТабДокумент.Вывести(Область1Макета2);
Вариант вместо "вывести":
ВставитьОбласть Но более "кошерно":
Пакет = Новый ПакетОтображаемыхДокументов; ЭлементПакета1 = Пакет.Состав.Добавить(); ТабДок = Новый ТабличныйДокумент; ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Портрет; ЭлементПакета1.Данные = ПоместитьВоВременноеХранилище(ТабДок); ЭлементПакета2 = Пакет.Состав.Добавить(); ТабДок2 = Новый ТабличныйДокумент; ТабДок2.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; ЭлементПакета2.Данные = ПоместитьВоВременноеХранилище(ТабДок2);
здесь печать с разной ориентацией сразу из двух разных макетов (табличных документов)
Сообщение отредактировал Vofka - 27.01.25, 16:48
Я можу зробити цю роботу: - Швидко - Якісно - ДешевоВиберіть 2 будь-які пункти
Не нашли ответа на свой вопрос?
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!