При разработке печатных форм в системе 1С:Предприятие часто возникают ситуации, когда настройка свойств строк макета приводит к неожиданному результату — появлению пустой страницы при выводе документа на печать. Рассмотрим, почему это происходит и как программными методами взять процесс формирования страниц под полный контроль.
Когда мы настраиваем макет в конфигураторе, мы часто используем свойства строк «Конец страницы» и «Вместе со следующим». Казалось бы, эти параметры должны помогать нам красиво разбивать документ, но на деле они часто вступают в конфликт.
Суть конфликта заключается в следующем:
Когда эти два условия встречаются, движок печати 1С пытается выполнить оба требования одновременно. Если «склеенный» блок не помещается на оставшееся место, платформа переносит его на новую страницу, но при этом «забывает» корректно обработать разрыв, что в итоге приводит к формированию лишнего пустого листа. Особенно остро эта проблема проявляется при двусторонней печати.
Наиболее надежный способ избежать проблем — отказаться от настройки свойств строк в макете и использовать возможности объекта ТабличныйДокумент при формировании документа в коде.
Вместо того чтобы ставить галочку в свойствах ячейки, мы можем принудительно вставить разделитель в нужный момент. Рассмотрим, как это сделать:
// Пример программного вывода разделителя страниц
ТабличныйДокумент = Новый ТабличныйДокумент;
ОбластьСтроки = Макет.ПолучитьОбласть("Строка1");
ТабличныйДокумент.Вывести(ОбластьСтроки);
// Вставляем принудительный разрыв страницы
ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
ОбластьСтроки2 = Макет.ПолучитьОбласть("Строка2");
ТабличныйДокумент.Вывести(ОбластьСтроки2);
Используя метод ВывестиГоризонтальныйРазделительСтраниц(), вы полностью исключаете двусмысленность в логике работы платформы. Вы сами решаете, где заканчивается лист, а не полагаетесь на алгоритмы авторазбиения.
Если вам необходимо, чтобы блоки строк всегда оставались на одном листе, рассмотрите возможность использования группировок. Это более современный и гибкий инструмент.
Вместо настройки каждой строки, объедините их в именованную область и работайте с ней как с единым целым. Платформа 1С корректнее обрабатывает вывод целых областей, чем отдельных строк с противоречивыми параметрами.
Иногда причина кроется не только в настройках строк, но и во внешних факторах. Давайте разберем, на что еще стоит обратить внимание:
ТабличныйДокумент.Просмотр самого ТабличногоДокумента, чтобы убедиться, что проблема не в драйвере печати.Проблема лишних страниц при печати в 1С — это не ошибка, а особенность алгоритма обработки макетов. Комбинирование принудительных разрывов и условий «Вместе со следующим» создает конфликтные ситуации, которые платформа не всегда может разрешить оптимально.
Чтобы забыть об этой проблеме, придерживайтесь главного правила: отдавайте предпочтение программному управлению выводом. Используя ВывестиГоризонтальныйРазделительСтраниц(), вы получаете предсказуемый результат, который будет одинаково отображаться как в предварительном просмотре, так и при выводе на печать.