Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
30 авг 2025, 08:51

не полная печать макета

Автор sali, 28 авг 2025, 12:26

0 Пользователей и 1 гость просматривают эту тему.

sali

Снимок экрана 2025-08-28 152156.pngСнимок экрана 2025-08-28 152203.png 
шапка тч в макете печатается не полностью, по какой причине не пойму. еще и печатает 2 пустые страницы. ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц(); - стоит, в пользовательском режиме все отступы и колонтитулы убрал, единственно не получилось разделитель в макет добавить горизонтальный. верт стоит, а тот никак не добавляется

sali

что это может быть ещё? где посмотреть? что подправить?

antoneus

Надо понять откуда берется Штрихкод.

sali

antoneus, а вот фиг его знает. в коде такого даже нет переименования

antoneus

Это может быть вообще какая-то левая пф и подмененный макет. Отладчик все расскажет.

sali

antoneus, неее
я то брал пф чтобы добавить туда область и вывод новых данных, которые есть только в новом расширении

sali

чтобы еще раз создавалось или выводился пустой новый лист не вижу
&Вместо("СформироватьПФ")
Функция Заказ_СформироватьПФ(ОписаниеПечатнойФормы, ДанныеОбъектовПечати, ОбъектыПечати, ВключаяУслуги, ВесОбъем = Ложь) Экспорт
// конец АТА ЛТД
Перем Ошибки, ПервыйДокумент, НомерСтрокиНачало;

// УНФ
ЭтоМакетПФ_MXL_НакладнаяКР = Ложь;
// Конец УНФ

// УНФ КР
// АТА ЛТД
// Макет = УправлениеПечатью.МакетПечатнойФормы(ОписаниеПечатнойФормы.ПолныйПутьКМакету);
Если ДанныеОбъектовПечати.Количество() <> 0 Тогда
ДокументСсылка = ДанныеОбъектовПечати[0].Ссылка;
Если ТипЗнч(ДокументСсылка) = ТИП("ДокументСсылка.РасходнаяНакладная") Тогда
Макет = УправлениеПечатью.МакетПечатнойФормы("Обработка.ПечатьНакладная.ПФ_MXL_НакладнаяКР");
ЭтоМакетПФ_MXL_НакладнаяКР = Истина;
Иначе
Макет = УправлениеПечатью.МакетПечатнойФормы(ОписаниеПечатнойФормы.ПолныйПутьКМакету);
КонецЕсли;
Иначе
Макет = УправлениеПечатью.МакетПечатнойФормы(ОписаниеПечатнойФормы.ПолныйПутьКМакету);
КонецЕсли;
// конец АТА ЛТД
ТабличныйДокумент = ОписаниеПечатнойФормы.ТабличныйДокумент;
ДанныеПечати = Новый Структура;
ЕстьТЧЗапасы = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаЗапасы") <> Неопределено);
ЕстьТЧРаботыУслуги = (ДанныеОбъектовПечати.Колонки.Найти("ТаблицаРаботыУслуги") <> Неопределено);
ПредставлениеСкидки = Константы.ПредставлениеСкидкиВПечатнойФорме.Получить();

ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();

Для каждого ДанныеОбъекта Из ДанныеОбъектовПечати Цикл

ПечатьДокументовУНФ.ПередНачаломФормированияДокумента(ТабличныйДокумент, ПервыйДокумент, НомерСтрокиНачало, ДанныеПечати);

СведенияОбОрганизации = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(ДанныеОбъекта.Организация, ДанныеОбъекта.ДатаДокумента, ,);
СведенияОбКонтрагенте = УправлениеНебольшойФирмойСервер.СведенияОЮрФизЛице(ДанныеОбъекта.Контрагент, ДанныеОбъекта.ДатаДокумента, ,);

// Заголовок
ЛоготипЗаполнен = ЗначениеЗаполнено(ДанныеОбъекта.ФайлЛоготип);
ИмяМакета = ?(ЛоготипЗаполнен, "ЗаголовокСЛоготипом", "ЗаголовокБезЛоготипа");

ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, ИмяМакета, "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ШаблонЗаголовка = НСтр("ru ='%1 № %2 от %3'");
НомерДокумента = ПечатьДокументовУНФ.ПолучитьНомерНаПечатьСУчетомДатыДокумента(ДанныеОбъекта.ДатаДокумента, ДанныеОбъекта.Номер, ДанныеОбъекта.Префикс);
ДанныеПечати.Вставить("ТекстЗаголовка", СтрШаблон(ШаблонЗаголовка, ДанныеОбъекта.ПредставлениеРегистратора, НомерДокумента, Формат(ДанныеОбъекта.ДатаДокумента, "ДЛФ=DD")));
ДанныеПечати.Вставить("ВидОперации", ДанныеОбъекта.ВидОперации);

Если ЛоготипЗаполнен Тогда

ПодписиИФаксимиле = Новый Соответствие; // Ключ - имя каринки в области, Значение - имя реквизита
ПодписиИФаксимиле.Вставить("Логотип", "ФайлЛоготип");

ПодписьДокументовУНФ.ЗаполнитьФаксимилеВОбластиМакета(ОбластьМакета, ДанныеОбъекта, ПодписиИФаксимиле, Ошибки);

КонецЕсли;

ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;

// Субъекты (поставщик, покупатель)
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "ОписаниеСубъекта", "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ДанныеПечати.Очистить();
ДанныеПечати.Вставить("НаименованиеСубъекта", НСтр("ru ='Поставщик'"));
ДанныеПечати.Вставить("ПредставлениеСубъекта", УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбОрганизации, "ПолноеНаименование,ФактическийАдрес"));
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

ДанныеПечати.Очистить();
ДанныеПечати.Вставить("НаименованиеСубъекта", НСтр("ru ='Покупатель'"));
ДанныеПечати.Вставить("ПредставлениеСубъекта", УправлениеНебольшойФирмойСервер.ОписаниеОрганизации(СведенияОбКонтрагенте, "ПолноеНаименование,ФактическийАдрес"));
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;   

// СкладКонтрагента
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "СкладКонтрагента", "", Ошибки); 
Если ОбластьМакета <> Неопределено Тогда
ДанныеПечати.Очистить();
ДанныеПечати.Вставить("СкладКонтрагента", ДанныеОбъекта.СкладКонтрагента);
ДанныеПечати.Вставить("АдресСклада", ДанныеОбъекта.АдресСклада);   
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);   
КонецЕсли; 

//Табличная часть
ЕстьСкидки = ДанныеОбъекта.ТаблицаЗапасы.Итог("ЕстьСкидка") <> 0;

ИмяОбласти = ?(ЕстьСкидки, "ШапкаТаблицыСоСкидкой", "ШапкаТаблицы");

// УНФ КР
Если ЭтоМакетПФ_MXL_НакладнаяКР И Не ВесОбъем Тогда
ИмяОбласти = ИмяОбласти + "БезВеса";
КонецЕсли;
// Конец УНФ КР

ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, ИмяОбласти, "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;

СтруктураИтогов = Новый Структура(
"НомерСтроки,
|Количество,
|Сумма,
|СуммаНДС,
|Всего,
|ЕстьСкидки,
|СкидкаПоСтроке,
|СкидкаПоДокументу,
// УНФ КР
// АТА ЛТД
//|ПредставлениеСкидки",
//0, 0, 0, 0, 0, ЕстьСкидки, 0, 0, ПредставлениеСкидки);
|ПредставлениеСкидки,
|ВсегоВес,
|ВсегоОбъем",
0, 0, 0, 0, 0, ЕстьСкидки, 0, 0, ПредставлениеСкидки,0,0);
// конец АТА ЛТД

// Наборы
СтруктураИтогов.Вставить("ЕстьНаборы", ДанныеОбъекта.ТаблицаЗапасы.Колонки.Найти("НоменклатураНабора")<>Неопределено);

ИмяОбласти = ?(СтруктураИтогов.ЕстьСкидки, "СтрокаСоСкидкой", "Строка");
// УНФ
Если ЭтоМакетПФ_MXL_НакладнаяКР И Не ВесОбъем Тогда
ИмяОбласти = ИмяОбласти + "БезВеса";
КонецЕсли;
// Конец УНФ

ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, ИмяОбласти, "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ПараметрыНоменклатуры = Новый Структура;

Если ЕстьТЧЗапасы Тогда

Для каждого СтрокаТабличнойЧасти Из ДанныеОбъекта.ТаблицаЗапасы Цикл

Если НЕ ВключаяУслуги
И СтрокаТабличнойЧасти.ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.Запас
И СтрокаТабличнойЧасти.ТипНоменклатуры <> Перечисления.ТипыНоменклатуры.ПодарочныйСертификат Тогда

Продолжить;

КонецЕсли;

Если СтрокаТабличнойЧасти.Количество = 0 Тогда

Продолжить;

КонецЕсли;

ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧасти(СтрокаТабличнойЧасти, ДанныеПечати, ПараметрыНоменклатуры, СтруктураИтогов, ДанныеОбъекта);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

// Наборы
Если СтруктураИтогов.ЕстьНаборы Тогда
НаборыСервер.УчестьОформлениеСтрокиНабора(ТабличныйДокумент, ОбластьМакета, СтрокаТабличнойЧасти);
КонецЕсли;
// Конец Наборы

КонецЦикла;

КонецЕсли;

Если ЕстьТЧРаботыУслуги И ВключаяУслуги Тогда

Для каждого СтрокаТабличнойЧасти Из ДанныеОбъекта.ТаблицаРаботыУслуги Цикл

Если СтрокаТабличнойЧасти.Количество = 0 Тогда

Продолжить;

КонецЕсли;

ЗаполнитьДанныеПечатиПоСтрокеТабличнойЧасти(СтрокаТабличнойЧасти, ДанныеПечати, ПараметрыНоменклатуры, СтруктураИтогов, ДанныеОбъекта);
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

// Наборы
Если СтруктураИтогов.ЕстьНаборы Тогда
НаборыСервер.УчестьОформлениеСтрокиНабора(ТабличныйДокумент, ОбластьМакета, СтрокаТабличнойЧасти);
КонецЕсли;
// Конец Наборы

КонецЦикла;

КонецЕсли;

КонецЕсли;

// Итого
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "Итого", "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ДанныеПечати.Очистить();
ДанныеПечати.Вставить("Всего", УправлениеНебольшойФирмойСервер.ФорматСумм(СтруктураИтогов.Сумма));
ДанныеПечати.Вставить("ЗаголовокНДС", ПечатьДокументовУНФ.ПредставлениеЗаголовкаНДС(СтруктураИтогов.СуммаНДС, ДанныеОбъекта.СуммаВключаетНДС, Ложь));
ДанныеПечати.Вставить("ВсегоНДС", ?(СтруктураИтогов.СуммаНДС = 0, "-", УправлениеНебольшойФирмойСервер.ФорматСумм(СтруктураИтогов.СуммаНДС)));
ДанныеПечати.Вставить("ИтоговаяСумма", УправлениеНебольшойФирмойСервер.ФорматСумм(СтруктураИтогов.Всего));

ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;

// Итоговая скидка по документу
Если СтруктураИтогов.ЕстьСкидки Тогда

ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "СкидкаПоДокументу", "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ДанныеПечати.Вставить("ИтоговаяСуммаСкидки", УправлениеНебольшойФирмойСервер.ФорматСумм(СтруктураИтогов.СкидкаПоДокументу));
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;

КонецЕсли;

// СуммаПрописью
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "ИтоговаяСтрока", "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ИтоговаяСтрока = НСтр("ru ='Всего наименований %1, на сумму %2 (%3)'");
ФорматированнаяСуммаВсего = УправлениеНебольшойФирмойСервер.ФорматСумм(СтруктураИтогов.Всего, ДанныеОбъекта.ВалютаДокумента);
СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(СтруктураИтогов.Всего, ДанныеОбъекта.ВалютаДокумента);
ДанныеПечати.Вставить("ИтоговаяСтрока", СтрШаблон(ИтоговаяСтрока, СтруктураИтогов.Количество, ФорматированнаяСуммаВсего, СуммаПрописью));
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;

// Вес и объем в итогах
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, "ВесОбъем", "", Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ИтоговаяСтрока = НСтр("ru ='Вес %1 кг, объем %2 м3'");
ДанныеПечати.Вставить("ВесОбъем", СтрШаблон(ИтоговаяСтрока, СтруктураИтогов.ВсегоВес, СтруктураИтогов.ВсегоОбъем));
ОбластьМакета.Параметры.Заполнить(ДанныеПечати);
ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;

//Подписи
ИмяОбласти = ?(ДанныеОбъекта.ИспользоватьФаксимиле = Перечисления.ДаНет.Да, "ПодписиСФаксимиле", "ПодписиБезФаксимиле");
ОбластьМакета = ПечатьДокументовУНФ.ПолучитьОбластьБезопасно(Макет, ИмяОбласти, , Ошибки);
Если ОбластьМакета <> Неопределено Тогда

ОбластьМакета.Параметры.Заполнить(ДанныеОбъекта);

Если ДанныеОбъекта.ИспользоватьФаксимиле = Перечисления.ДаНет.Да Тогда

ПодписиИФаксимиле = Новый Соответствие; // Ключ - имя каринки в области, Значение - имя реквизита
ПодписиИФаксимиле.Вставить("ФаксимилеКладовщика", "ФаксимилеКладовщика");
ПодписиИФаксимиле.Вставить("ПечатьОрганизации", "ФаксимилеПечати");

ПодписьДокументовУНФ.ЗаполнитьФаксимилеВОбластиМакета(ОбластьМакета, ДанныеОбъекта, ПодписиИФаксимиле, Ошибки);

КонецЕсли;

ТабличныйДокумент.Вывести(ОбластьМакета);

КонецЕсли;

УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ДанныеОбъекта.Ссылка);

КонецЦикла;

Возврат ТабличныйДокумент;

КонецФункции

alexandr_ll

sali, Проверьте, нет ли в макете справа от таблице пустых столбцов и удалите их. Попробуте в просмотре включить автомасштаб по ширине страницы.

sali

Цитата: alexandr_ll от Вчера в 08:08роверьте, нет ли в макете справа от таблице пустых столбцов и удалите их
смотрел, выделял просто огромный кусок и вырезал как справа так и снизу . поставил разделитель конец страницы

sali

так он выглядит по ширине страницы.
по коду посмотрел

ВозможныеВарианты = Обработки.ПечатьНакладная.МатрицаВозможныхВариантов();
Для каждого СтрокаТаблицы Из ВозможныеВарианты Цикл

// УНФ КР
//ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Обработки.ПечатьНакладная.ИдентификаторПечатнойФормы(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле));
ПечатнаяФорма = УправлениеПечатью.СведенияОПечатнойФорме(КоллекцияПечатныхФорм, Обработки.ПечатьНакладная.ИдентификаторПечатнойФормы(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле, СтрокаТаблицы.ВесОбъем));
// конец УНФ КР

Если ПечатнаяФорма <> Неопределено Тогда

ПечатнаяФорма.ТабличныйДокумент = Новый ТабличныйДокумент;
ПечатнаяФорма.ТабличныйДокумент.КлючПараметровПечати = Обработки.ПечатьНакладная.КлючПараметровПечати();
// УНФ КР
//ПечатнаяФорма.ПолныйПутьКМакету = Обработки.ПечатьНакладная.ПолныйПутьКМакету();
ПечатнаяФорма.ПолныйПутьКМакету = "Обработка.ПечатьНакладная.ПФ_MXL_НакладнаяКР";

//ПечатнаяФорма.СинонимМакета = Обработки.ПечатьНакладная.ПредставлениеПФ(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле);
ПечатнаяФорма.СинонимМакета = Обработки.ПечатьНакладная.ПредставлениеПФ(СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле, СтрокаТаблицы.ВесОбъем);
// конец УНФ КР

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

КонецЕсли;


эту часть он проходит 6 раз за это время данные СтрокаТаблицы.ВключаяУслуги, СтрокаТаблицы.ИспользоватьФаксимиле, СтрокаТаблицы.ВесОбъем меняются на Истину (ну один из уже был истина , остальные два ложь), что возможно и приводит к печати 2 пустым страницам

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск