К статье
Практический материал

Документы и Печать · 9 мин

Как вставить разрыв страницы в макете 1С

Как вставить разрыв страницы в макет 1С: настройка в конструкторе, программный вывод, разрыв по группам и типичные ошибки при печати документов.

Разрыв страницы в макете 1С нужен, когда части печатной формы должны начинаться с нового листа: например, каждый договор — с отдельной страницы, а таблица спецификации — после титульного блока. Платформа 1С:Предприятие поддерживает два принципиально разных подхода: настройку в самом макете (в конфигураторе) и программный вывод разрыва через объектную модель табличного документа. Выбор зависит от того, статичен шаблон или формируется динамически.

В макете табличного документа разрыв задаётся свойством именованной области или строки, а при программной печати используются методы и свойства объекта ТабличныйДокумент. Ошибка в выборе способа приводит к «плавающим» разрывам: форма выглядит правильно в конфигураторе, но при реальной печати строки уползают на следующий лист или разрыв срабатывает не там.

Ниже разобраны оба способа, условия их применения, проверка результата и типичные проблемы. Примеры ориентированы на типовые конфигурации и управляемые формы, но логика одинакова для внешних печатных форм и отчётов на табличном документе.

Где в макете задаётся разрыв страницы

Откройте макет печатной формы в конфигураторе: Справочники или Документы → нужный объект → Макеты → двойной щелчок по макету типа «Табличный документ». Разрыв страницы здесь привязан не к отдельной ячейке, а к именованной области или строке.

Выделите строку или область, с которой должна начинаться новая страница, и откройте палитру свойств (правый клик → Свойства). При программном выводе области через ПолучитьОбласть() и Вывести() разрыв управляется кодом, но для статичных макетов и макетов с фиксированной структурой можно задать поведение прямо в свойствах области.

Важно понимать: в самом табличном макете нет отдельной «кнопки» вставки разрыва, как в Word. Разрыв — это свойство вывода области. Поэтому типовая практика — разбить макет на именованные области (Шапка, СтрокаТаблицы, Подвал) и управлять разрывами при их выводе.

Разрыв страницы при программном выводе

Основной способ вставить разрыв при формировании печатной формы — метод ВывестиГоризонтальныйРазделительСтраниц() объекта ТабличныйДокумент. Он вставляет принудительный разрыв в текущую позицию вывода, и всё, что выводится дальше, окажется на новой странице.

ТабДок = Новый ТабличныйДокумент;

ТабДок.Вывести(Макет.ПолучитьОбласть("Шапка"));

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

ТабДок.Вывести(Макет.ПолучитьОбласть("Спецификация"));

Второй вариант — свойство ПервыйНаСтранице у строки табличного документа. Установив его в Истина для конкретной строки уже сформированного документа, вы заставите эту строку начинать новую страницу при печати. Это удобно, когда документ уже сформирован и разрывы расставляются постобработкой.

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

Разрыв по группам: каждый документ с новой страницы

Частая задача — печать нескольких документов одной формой, когда каждый должен начинаться с нового листа. Для этого разрыв вставляется в цикле перед выводом очередного документа, начиная со второго.

Первый = Истина;

Для Каждого Док Из Выборка Цикл

Если Не Первый Тогда

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

КонецЕсли;

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

Первый = Ложь;

КонецЦикла;

Проверка «не первый» обязательна: без неё перед первым документом появится пустая страница. Это одна из самых частых ошибок при доработке типовых печатных форм.

Порядок действий
  1. 1
    Откройте модуль формирования печатной формы и найдите цикл вывода областей
  2. 2
    Перед выводом очередной области добавьте ВывестиГоризонтальныйРазделительСтраниц() с условием «не первый»
  3. 3
    Сохраните конфигурацию или внешнюю обработку и сформируйте печатную форму
  4. 4
    Откройте предварительный просмотр и проверьте, что каждый блок начинается с нового листа

Автоматические разрывы и защита строк от разрыва

Если табличная часть не помещается на одной странице, платформа сама переносит строки на следующий лист. Управлять этим можно через свойство макета «Не разрывать» (в параметрах области) и настройки повтора шапки таблицы на каждой странице — область с типом «Заголовок» в свойствах табличного документа при печати.

Чтобы шапка таблицы повторялась на каждой странице, задайте её как сквозные строки: в палитре свойств табличного документа поле «Сквозные строки» или программно через ТабДок.ПовторятьПриПечатиСтроки. Это избавляет от ситуации, когда на второй странице таблицы нет заголовков колонок.

Обратная задача — запретить разрыв внутри логического блока (например, строка товара не должна делиться пополам). Для этого блок выводится одной областью: платформа не разрывает область, выведенную одним вызовом Вывести(), если она целиком помещается на странице; при нехватке места область переносится на следующий лист целиком.

Сравнение вариантов

ВывестиГоризонтальныйРазделительСтраниц()

Подходит для явного разрыва в коде между областями; требует аккуратного условия, чтобы не было пустой первой страницы

Свойство ПервыйНаСтранице у строки

Удобно для постобработки готового табличного документа; сложнее отлаживать при сложной структуре

Сквозные строки и области

Решают повтор шапки и целостность блоков, но не создают принудительный разрыв сами по себе

Разрыв страницы в СКД и внешних печатных формах

В отчётах на СКД прямого свойства «разрыв страницы» нет: компоновщик сам разбивает результат на страницы. Управлять можно косвенно — через вывод группировок в отдельных областях макета СКД и настройки «Разрывать страницу» у группировки в некоторых версиях платформы, либо через постобработку результата как табличного документа.

Для внешних печатных форм (механизм БСП «Дополнительные отчеты и обработки») логика та же: функция Печать() формирует табличный документ, и разрывы вставляются методом ВывестиГоризонтальныйРазделительСтраниц() между документами массива объектов печати. Не забудьте очистить или корректно собрать коллекцию печатных форм, иначе разрыв может примениться не к тому экземпляру.

Типичные ошибки
01
Разрыв перед первым документом в цикле — в результате печать начинается с пустой страницы
02
Разрыв вставлен в макет как пустая строка вместо метода — такая строка не гарантирует переход на новый лист
03
Попытка задать разрыв для одной ячейки — разрыв работает только на уровне строки или области
04
Игнорирование сквозных строк — на второй странице таблицы пропадают заголовки колонок

Проверка результата перед печатью

После внесения изменений всегда проверяйте форму в режиме предварительного просмотра, а не только по виду табличного документа на экране. На экране разрывы отображаются пунктирной линией, но реальное разбиение зависит от принтера, полей и масштаба.

Проверьте три сценария: печать одного документа, печать нескольких документов и документ с длинной табличной частью на несколько страниц. Убедитесь, что нет пустых листов, шапка таблицы повторяется, а логические блоки не разорваны посередине.

Контрольные точки

Как проверить результат

Первая страница печатной формы
Норма

Начинается сразу с содержимого, без пустого листа

Тревожный признак

Перед первым документом пустая страница — лишний разрыв в цикле

Границы страниц в предпросмотре
Норма

Каждый документ или блок начинается с нового листа

Тревожный признак

Разрыв срабатывает посередине блока или не срабатывает вовсе

Многостраничная таблица
Норма

Шапка повторяется на каждой странице, строки не разорваны

Тревожный признак

На второй странице нет заголовков, строка разрезана пополам

Частые вопросы

Почему разрыв страницы не срабатывает при печати, хотя в коде он есть?

Чаще всего табличный документ после вставки разрыва перезаписывается повторным выводом или очищается. Также проверьте, что разрыв вставлен в тот же объект ТабличныйДокумент, который реально отправляется на печать, а не в промежуточную копию.

Как убрать автоматический разрыв, который платформа ставит сама?

Автоматический разрыв возникает, когда область не помещается на странице. Уменьшите высоту строк, поля страницы или перенесите часть содержимого в отдельную область. Полностью «отключить» разбиение нельзя — можно только управлять местом переноса.

Можно ли вставить вертикальный разрыв страницы?

Да, существует метод ВывестиВертикальныйРазделительСтраниц(), но он нужен редко — когда печатная форма шире одного листа и требуется контролировать разбиение по горизонтали. Для обычных документов используется только горизонтальный разрыв.

Как сделать, чтобы каждая страница имела номер?

Нумерация страниц включается в настройках табличного документа: свойства НомерПервойСтраницы, а также вывод номера в колонтитулах через параметры верхнего и нижнего колонтитула. Это независимая от разрывов настройка, но проверять её стоит вместе с разбиением на страницы.

Работает ли разрыв страницы в веб-клиенте?

Да, табличный документ формируется на сервере, поэтому разрывы корректно отображаются и в веб-клиенте, и в тонком клиенте. Различия возможны только при печати через браузер, где итоговое разбиение зависит от настроек печати браузера.

Итог

Что важно запомнить

Разрыв страницы в макете 1С задаётся на уровне области или строки табличного документа: программно — методом ВывестиГоризонтальныйРазделительСтраниц() или свойством ПервыйНаСтранице. В циклах добавляйте разрыв с условием «не первый», для многостраничных таблиц настраивайте сквозные строки, а результат всегда проверяйте в предварительном просмотре.