Разработка внешних печатных форм (ВПФ) в среде «1С:Предприятие» — задача регулярная, но даже опытные разработчики часто сталкиваются со специфическим поведением табличных документов. Одна из самых распространенных и раздражающих проблем заключается в том, что при выводе на печать или в режиме предварительного просмотра макет выглядит искаженным: правые границы таблиц исчезают, справа или снизу образуются огромные пустые поля, а сам текст сжимается до нечитаемого масштаба. В этой статье мы подробно разберем, почему так происходит, как быстро диагностировать проблему и как правильно очистить макет, чтобы вернуть ему аккуратный вид.
Для того чтобы эффективно решить проблему, выясним причину её возникновения. Платформа «1С:Предприятие» определяет границы печати табличного документа на основе так называемых «активных» ячеек. Разработчик часто считает ячейку пустой, если в ней нет текста, параметров или шаблонов. Однако для платформы ячейка признается заполненной и требующей вывода на печать, если к ней применено хотя бы одно минимальное форматирование:
В результате платформа пытается честно уместить всю эту огромную невидимую область на одном листе бумаги А4 (особенно если включен автовыравнивающий масштаб). Из-за этого значащая часть таблицы сжимается, а правые границы визуально пропадают или уходят за пределы листа.
Вместо того чтобы вручную прокручивать макет вправо и вниз в поисках скрытых элементов, мы можем использовать встроенные аналитические инструменты платформы. Рассмотрим три простых метода диагностики.
Метод 1. Горячие клавиши Ctrl + End
Это самый быстрый способ локализовать проблему. Откроем макет печатной формы в конфигураторе, кликнем левой кнопкой мыши по любой ячейке в левом верхнем углу и нажмем комбинацию клавиш Ctrl + End. Курсор мгновенно переместится в самую крайнюю (нижнюю-правую) ячейку, которую система считает активной. Если рабочая область вашей таблицы должна заканчиваться на 10-й колонке и 50-й строке, а курсор улетел на 80-ю колонку и 1500-ю строку — это явный признак того, что там находятся невидимые отформатированные области.
Метод 2. Режим просмотра страниц
В главном меню Конфигуратора перейдем в раздел Таблица — Вид — Режим просмотра страниц. В этом режиме макет будет визуально разделен синими пунктирными линиями на печатные листы. Проанализируем ситуацию: если синяя вертикальная линия границы листа находится далеко справа от реального текста таблицы, значит, печатная область необоснованно растянута.
Метод 3. Использование отладчика
Если визуально определить проблему не удается, нам на помощь придет отладчик. Установим точку останова в модуле формирования печатной формы сразу после того, как все области выведены в итоговый табличный документ, но перед его выводом на экран. Проверим свойства объекта ТабличныйДокумент в табло отладки:
ВысотаТаблицы — показывает реальное количество строк, которые система планирует вывести на печать.ШиринаТаблицы — показывает количество колонок.Если реальная ширина вашей таблицы составляет всего 8 колонок, а свойство ШиринаТаблицы возвращает значение 45, мы получаем подтверждение наличия «фантомных» колонок справа.
Простое выделение пустых ячеек и нажатие клавиши Delete на клавиатуре не решит проблему, так как это действие очищает только содержимое ячеек, но сохраняет их форматирование. Разберем по шагам, как физически уничтожить лишние свойства ячеек.
Шаг 1. Физическое удаление строк и колонок со сдвигом
Для того чтобы гарантированно избавиться от скрытых свойств ячеек, выполним следующие действия:
Этот способ физически стирает ячейки вместе со всей метаинформацией об их оформлении.
Шаг 2. Полная очистка формата
Если удаление со сдвигом по какой-то причине нежелательно (например, чтобы не нарушить структуру сложных объединенных областей в других частях макета), воспользуемся функцией полной очистки:
Иногда ручная очистка макета в Конфигураторе затруднена из-за сложной xml-структуры файла макета, в котором накопились внутренние ошибки позиционирования. В таком случае мы можем жестко ограничить область вывода программным путем непосредственно в коде формирования печатной формы.
Способ 1. Явное ограничение области печати
Мы можем принудительно указать платформе точные координаты области, которую необходимо отправить на принтер или показать пользователю, проигнорировав всё, что находится за ее пределами. Посмотрим на пример кода:
// Определим количество реально заполненных строк и колонок
НужнаяВысота = 45; // Укажите реальное количество строк вашего макета
НужнаяШирина = 12; // Укажите реальное количество колонок
// Ограничиваем область печати табличного документа
ТабличныйДокумент.ОбластьПечати = ТабличныйДокумент.Область(1, 1, НужнаяВысота, НужнаяШирина);
При использовании свойства ОбластьПечати любые «фантомные» ячейки, расположенные правее или ниже указанных координат, будут полностью проигнорированы при компоновке печатного листа.
Способ 2. Автомасштабирование и настройка полей
Для того чтобы документ корректно ложился на стандартный лист А4 без обрезки краев, обязательно включим режим автоматического масштабирования и зададим отступы. Это гарантирует, что даже при незначительных отклонениях размеров таблица аккуратно впишется в печатную область:
// Включаем автоматическое масштабирование под размер страницы
ТабличныйДокумент.АвтоМасштаб = Истина;
// Устанавливаем минимальные поля для максимизации полезной площади листа
ТабличныйДокумент.ПолеСверху = 5;
ТабличныйДокумент.ПолеСлева = 5;
ТабличныйДокумент.ПолеСнизу = 5;
ТабличныйДокумент.ПолеСправа = 5;
Важное предупреждение: свойство АвтоМасштаб отлично работает только тогда, когда вы предварительно очистили макет от скрытых колонок. Если же скрытые форматированные ячейки остались далеко справа, включение автовыравнивания приведет к тому, что система сожмет весь ваш документ до микроскопического масштаба, пытаясь уместить невидимые колонки на один лист.
Чтобы избежать подобных проблем в будущем, рекомендуем придерживаться нескольких простых правил при проектировании печатных форм:
Ctrl + End. Возьмите за правило нажимать эту комбинацию клавиш перед каждым сохранением макета, чтобы вовремя заметить и удалить случайно созданные строки или колонки.Применяя эти методики, вы навсегда избавитесь от проблем с невидимыми границами и пустыми листами, а ваши печатные формы всегда будут выглядеть профессионально и аккуратно.