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