Документы и Печать · 9 мин
Как добавить разрыв страницы в 1С
Как добавить разрыв страницы в 1С: вставка в табличный документ, настройка макета, методы ВывестиГоризонтальныйРазделительСтраниц и АвтоМасштаб. Пошаговые инструкции.
Разрыв страницы в 1С нужен, когда печатная форма должна начинаться с нового листа: например, каждый счёт в пакетной печати — с отдельной страницы, а приложение к договору — после основного текста. Платформа 1С:Предприятие поддерживает разрывы и в интерактивном режиме (при просмотре табличного документа), и программно — через встроенный язык.
Способ добавления разрыва зависит от того, где вы работаете: в режиме предприятия при печати готового документа, в конфигураторе при настройке макета или в коде при программном формировании печатной формы. Ниже разобраны все три сценария с конкретными действиями и способами проверки результата.
Важно понимать: разрыв страницы в 1С — это не символ в тексте, а свойство строки табличного документа или специальный метод вывода. Поэтому «вставить разрыв как в Word» напрямую не получится — нужно использовать предусмотренные платформой механизмы.
Разрыв страницы при просмотре табличного документа
Если печатная форма уже сформирована и открыта на экране, разрыв можно добавить вручную. Установите курсор на строку, перед которой должен начинаться новый лист, затем откройте главное меню и выберите «Таблица → Вид → Вставить разрыв страницы» (в ряде версий пункт называется «Разрыв страницы» и находится в меню «Таблица»). На границе строк появится горизонтальная пунктирная линия — признак установленного разрыва.
Чтобы увидеть, как документ ляжет на страницы, включите режим «Разметка страницы» через меню «Таблица → Вид → Разметка страницы». В этом режиме видны границы листов, колонтитулы и все установленные разрывы. Удалить разрыв можно тем же меню: встаньте на строку с разрывом и выберите «Удалить разрыв страницы».
Учтите ограничение: вручную добавленный разрыв действует только для текущего показанного экземпляра документа. При повторном формировании печатной формы он пропадёт, потому что документ строится заново по макету и коду. Для постоянного эффекта разрыв нужно зашить в макет или в процедуру печати.
Разрыв страницы в макете печатной формы
Когда печатная форма формируется из макета, разрыв удобно задать прямо в нём. Откройте конфигуратор, найдите нужный макет (обычно это макет типа «Табличный документ» у документа или в общих макетах) и выделите строку, перед которой должен начинаться новый лист.
Далее есть два рабочих подхода. Первый — создать отдельную именованную область для каждой части документа и выводить их по очереди, вставляя между ними разрыв программно. Второй — оформить макет так, чтобы каждая логическая часть (например, карточка сотрудника или страница отчёта) была отдельной секцией, а разрыв добавлялся кодом после вывода каждой секции, кроме последней.
Проверить результат можно, не запуская всю конфигурацию: сформируйте печатную форму тестового документа и включите режим разметки страницы. Если разрыв стоит корректно, каждая секция начнётся с верха нового листа, а колонтитулы и нумерация страниц продолжатся без сбоев.
Программный вывод разрыва страницы
Во встроенном языке 1С за разрыв отвечает метод табличного документа ВывестиГоризонтальныйРазделительСтраниц(). Он вызывается у объекта типа «ТабличныйДокумент» после вывода очередной секции и принудительно завершает текущую страницу.
ТабДок = Новый ТабличныйДокумент;
Для Каждого Строка Из СписокДокументов Цикл
ТабДок.Вывести(Макет.ПолучитьОбласть("Карточка"));
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЦикла;Типовая ошибка — выводить разделитель после каждой итерации, включая последнюю. В результате в конце документа появляется пустой лист. Правильнее проверять, не последний ли это элемент, и выводить разрыв только между страницами.
Индекс = 0;
Для Каждого Строка Из СписокДокументов Цикл
Индекс = Индекс + 1;
ТабДок.Вывести(Макет.ПолучитьОбласть("Карточка"));
Если Индекс < СписокДокументов.Количество() Тогда
ТабДок.ВывестиГоризонтальныйРазделительСтраниц();
КонецЕсли;
КонецЦикла;Дополнительно полезны два свойства табличного документа: АвтоМасштаб подгоняет ширину содержимого под страницу, а ЧерноБелаяПечать и параметры ориентации (книжная/альбомная) влияют на то, где проходят автоматические разрывы. Если содержимое «не влезает» по ширине, платформа сама переносит колонки на новый лист — это часто путают с ошибкой разрыва.
Как заставить шапку повторяться на каждой странице
Частая задача, связанная с разрывами, — повторение заголовка таблицы на каждом листе. Для этого у табличного документа есть свойство ПовторятьПриПечатиСтроки (в макете оно задаётся через «Именованные области» и настройки печати). Укажите диапазон строк шапки, и при автоматическом разбиении платформа выведет её на каждой странице.
Обратная ситуация — когда строка таблицы «разрывается» посередине и часть текста уезжает на следующий лист. Чтобы этого избежать, группируйте связанные строки в одну область макета: платформа старается не разрывать целую область, если она помещается на одном листе. Для длинных областей, которые заведомо больше страницы, такой подход не сработает — их придётся делить вручную.
Как проверить результат
Каждая логическая часть начинается с верха нового листа
Разрыв есть, но часть содержимого переносится на середину листа
После последней секции нет пустого листа
В конце печатается пустая страница
Заголовок повторяется на каждой странице
На втором листе таблица идёт без заголовка
Разрывы при пакетной печати нескольких документов
При массовой печати (например, счетов за период) типовые конфигурации обычно сами вставляют разрывы между документами. Если вы формируете пакет самостоятельно, выводите каждую печатную форму в общий табличный документ и после каждой, кроме последней, вызывайте ВывестиГоризонтальныйРазделительСтраниц().
Проверяйте нумерацию страниц: если колонтитул содержит номер страницы, он будет сквозным по всему пакету. Когда требуется нумерация внутри каждого документа с единицы, печатайте документы по отдельности — сбросить номер страницы внутри одного табличного документа штатными средствами нельзя.
Когда разрыв не срабатывает: диагностика
Если разрыв добавлен, но печать идёт сплошным потоком, проверьте несколько типовых причин. Первая — разрыв установлен не в том табличном документе: код выводит секции в один объект, а разделитель вызывается у другого. Вторая — используется метод Вывести с областью, внутри которой платформа сама управляет переносами, и ручной разрыв конфликтует с автоматическим.
Третья причина — настройки принтера и масштаб. При масштабе «По ширине страницы» содержимое сжимается, и автоматические разрывы смещаются, хотя явные разделители продолжают работать. Проверяйте результат именно в предварительном просмотре печати, а не только в режиме разметки: драйвер принтера может иначе интерпретировать поля.
Как выбрать действие
Ограничения и частые вопросы
Вертикального разделителя страниц для принудительного разрыва по колонкам в табличном документе нет — управление шириной решается масштабом, ориентацией листа и шириной колонок. Также разрывы не работают в макетах типа «Текстовый документ» и HTML: там пагинацией управляет браузер или текстовый формат.
Что важно запомнить
Разрыв страницы в 1С задаётся вручную через меню «Таблица» для разовой печати или программно методом ВывестиГоризонтальныйРазделительСтраниц() для постоянных печатных форм. Выводите разделитель только между секциями, проверяйте результат в режиме разметки и не путайте разрыв по высоте с проблемой переполнения по ширине.
Как убрать пустую страницу в конце печатной формы?
Пустой лист почти всегда означает, что разделитель страниц выведен после последней секции. Добавьте в цикл проверку индекса или счётчика и вызывайте ВывестиГоризонтальныйРазделительСтраниц() только если дальше есть ещё данные.
Можно ли вставить разрыв страницы без изменения конфигурации?
Да, для разовой печати: откройте сформированную печатную форму и используйте меню «Таблица → Вставить разрыв страницы». Для постоянного эффекта без доработки конфигурации можно воспользоваться механизмом внешних печатных форм, если он подключён в вашей конфигурации.
Почему разрыв виден в разметке, но при печати игнорируется?
Проверьте настройки масштаба и полей в диалоге печати, а также драйвер принтера. При сильном уменьшении масштаба автоматические переносы смещаются, но явные разделители обязаны сохраняться — если они пропадают, скорее всего, разрыв был добавлен в режиме просмотра, а документ затем сформирован заново.
Как сделать, чтобы заголовок таблицы повторялся на каждой странице?
Задайте свойство ПовторятьПриПечатиСтроки у табличного документа, указав диапазон строк шапки. После этого при автоматическом разбиении платформа будет выводить заголовок на каждом листе без дополнительных разрывов.
Есть ли способ начать нумерацию страниц заново для каждого документа в пакете?
Штатно внутри одного табличного документа нумерация сквозная. Чтобы каждый документ нумеровался с первой страницы, формируйте и печатайте его отдельным табличным документом в цикле.
Работает ли разрыв страницы в управляемых формах и веб-клиенте?
Да, табличный документ с разделителями корректно отображается и печатается в тонком и веб-клиенте. Ограничения могут касаться только ручного редактирования разрывов в отдельных режимах просмотра — программный вывод работает везде одинаково.