Доброго дня! Виникло таке питання. Є форма ТТН (товарно- транспортна накладна) знаходиться вона в одному макеті. Створив за проханням бухгалтерії ще один макет "Сертифікат". Так ось в чому питанні ТТН потрібно вивести з орієнтацією "ландшафт", а сертифікат "портрет і все це в одному табличному документі. Чи можливо таке реалізувати?
КодПроцедура ЗаполнитьТТН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 (Шапка, ЗапросТовары, ТабДокумент,ПараметрыПечати);
КонецЕсли;
Возврат ТабДокумент;
КонецФункции // ПечатьТТН()
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);
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua