Формирование печатных форм в 1С:Предприятие часто превращается в испытание для разработчика и бухгалтера, когда длинная таблица «разрывается» посередине строки или заголовок остаётся на одной странице, а данные улетают на другую. Правильная настройка разрывов страниц в макете — это фундамент качественного отчета, который можно сразу отправлять контрагентам или в архив без ручной правки в Word.

Механизм работы с разрывами кардинально отличается в зависимости от того, какой тип макета вы используете: стандартный табличный документ или макет системы компоновки данных (СКД). В первом случае управление происходит через свойства ячеек и областей, во втором — через настройки схемы компоновки и специальные поля. Понимание этой разницы критически важно для экономии времени.

В этой статье мы детально разберем техническую реализацию принудительного перехода на новый лист, настройки свойств «Не разрывать строку» и особенности работы с группировками в отчетах. Вы узнаете, как заставить систему печатать каждый договор с новой страницы или выводить шапку таблицы на каждом новом листе автоматически.

Особенности работы с табличными документами в обычных формах

При работе с объектом ТабличныйДокумент в обычных формах или внешних обработках управление печатью осуществляется на уровне областей вывода. Чтобы вставить разрыв страницы перед определенной областью, необходимо использовать метод Вывод с параметром, указывающим на начало новой страницы.

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

Однако, если вы используете макет, встроенный в форму, можно настроить свойства области. В конфигураторе, открыв макет, выделите нужную область и в палитре свойств найдите параметр Разрыв страницы. Установка значения Перед гарантирует, что данная область всегда будет печататься с нового листа, независимо от того, сколько места осталось на предыдущем.

⚠️ Внимание: Свойство «Разрыв страницы» в макете работает только если область выводится целиком. Если вы программно меняете высоту строк или скрываете части области, поведение разрыва может стать непредсказуемым.

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

📊 Какой тип макетов вы используете чаще?
Табличный документ (обычные формы)
СКД (система компоновки данных)
Внешние обработки (Excel)
Не знаю, разницы нет

Настройка разрывов в системе компоновки данных (СКД)

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

Чтобы настроить разрыв, откройте конструктор настроек отчета и перейдите на вкладку «Настройки». Выберите нужную группировку (например, «Контрагент» или «Договор») и в окне свойств найдите параметр Размещение. По умолчанию там стоит значение «Авто», что означает непрерывную печать.

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

💡

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

Существует также возможность вставки разрыва после группировки. Это используется реже, но может быть полезно при формировании разделительных линий между крупными блоками данных.

Запрет разрыва строк таблицы и заголовков

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

В макетах табличного документа это свойство устанавливается для конкретной ячейки или области. В СКД настройка находится в параметрах вывода таблицы. Активация этого флага заставляет движок печати переносить всю строку целиком на следующую страницу, если она не помещается на текущей полностью.

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

☑️ Чек-лист проверки печатной формы

Выполнено: 0 / 5

При настройке этих параметров важно соблюдать баланс. Если запретить разрыв строк для таблицы с очень высокими строками (например, содержащими многострочный текст описания), это может привести к тому, что на странице останется много пустого места, так как вся строка перенесется вниз.

Таблица сравнения методов управления страницами

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

Метод Где применяется Гибкость Сложность настройки
Свойство области макета Обычные формы, внешние обработки Низкая (статично) Низкая
Метод Вывод(Область, Разрыв) Программный код модуля Высокая (условия) Средняя
Настройки СКД (Размещение) Отчеты на СКД Средняя (по группировкам) Низкая
Условное оформление СКД (визуальное скрытие) Высокая Высокая

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

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

Программная вставка разрыва через код 1С

Когда стандартных средств недостаточно, на помощь приходит язык 1С. Программная вставка разрыва страницы дает полный контроль над процессом печати. Это необходимо, когда условие разрыва зависит от вычисляемых значений, которые неизвестны на этапе проектирования макета.

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

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

Макет = ДокументОбъекты.ПолучитьМакет("МакетПечати");

// Вывод шапки без разрыва

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

// Цикл по данным

Для каждого Элемент из СписокДокументов Цикл

// Вставка разрыва страницы перед каждым новым документом

// Второй параметр Истина означает"Начать с новой страницы"

ТабДок.Вывод(Макет.Область("Детали"), Истина);

КонецЦикла;

ТабДок.Показать;

В этом фрагменте кода ключевым моментом является второй параметр метода Вывод. Если передать туда Истина, курсор печати переместится на новый лист перед отрисовкой области. Это работает как для обычных форм, так и для внешних обработок печати.

Нюансы работы с методом Вывод

Метод Вывод с параметром разрыва страницы работает только если табличный документ еще не выведен на экран или принтер. Попытка изменить разрыв уже отображенного документа потребует его полной перерисовки.

При работе со СКД программное вмешательство осуществляется через расширение настройки компоновки данных. Вы можете программно создать настройку группировки и установить ей свойство Размещение в значение РазмещениеГруппировки.НоваяСтраница.

Работа с колонтитулами и нумерацией при разрывах

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

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

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

⚠️ Внимание: Интерфейс и названия свойств могут незначительно отличаться в разных версиях платформы 1С (8.2, 8.3, 8.3.20+). Всегда сверяйтесь со справкой по вашей конкретной версии конфигурации.

Для сложных отчетов рекомендуется (предварительный просмотр) перед отправкой на принтер. Это позволяет визуально оценить, как сработали разрывы, и вовремя скорректировать настройки высоты строк или полей страницы.

💡

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

Частые вопросы по печати в 1С (FAQ)

Почему разрыв страницы не срабатывает в макете СКД?

Чаще всего проблема в том, что свойство «Размещение» установлено не для той группировки. Проверьте иерархию настроек: разрыв должен быть установлен на уровне той группировки, которая соответствует логическому блоку документа. Также убедитесь, что в условном оформлении нет правил, отменяющих это свойство.

Как сделать так, чтобы таблица не разрывалась посередине строки?

В свойствах макета или настройки СКД найдите параметр «Не разрывать строку» (или аналогичный) и установите его в значение «Истина». Это заставит систему переносить строку целиком, если она не помещается на остаток страницы.

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

Нет, разрыв страницы в табличном документе 1С работает только между областями вывода. Вставить разрыв «внутри» строки или ячейки невозможно. Если нужно разделить данные внутри одной области, придется разделить макет на две отдельные области и выводить их с параметром разрыва.

Как убрать пустую страницу в конце отчета?

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

Влияет ли масштаб печати на работу разрывов страниц?

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