Как распечатать два документа реализации на одном листе А4?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

Зачастую перед разработчиками 1С встает прикладная задача: оптимизировать расход бумаги и распечатать две копии документа реализации на одном листе формата А4 так, чтобы их можно было легко разделить разрезанием. Стандартные настройки принтера, такие как «Количество экземпляров на странице», не всегда работают корректно и часто игнорируются драйверами. Рассмотрим, как решить эту задачу программными средствами ТабличногоДокумента.

Метод 1: Использование области-разделителя

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

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

Такой подход гарантирует, что расстояние между документами всегда будет фиксированным, независимо от настроек шрифтов или параметров принтера.

Метод 2: Программный расчет высоты

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


// Пример логики вывода с расчетом пустого пространства
ВывестиОбластиДокумента(ТабДок, ДокументОбъект); // Первый вывод
ВысотаТаблицы = ТабДок.ВысотаТаблицы;
// Вычисляем сколько строк нужно добавить до середины листа
ПустаяОбласть = Макет.ПолучитьОбласть("ПустаяСтрока");
Для Сч = 1 По (НеобходимаяВысота - ВысотаТаблицы) Цикл
    ТабДок.Вывести(ПустаяОбласть);
КонецЦикла;
// Вывод второго экземпляра
ВывестиОбластиДокумента(ТабДок, ДокументОбъект);

Метод 3: Использование метода «Присоединить»

Если ваша задача — расположить две печатные формы рядом (горизонтально) или точно скомпоновать их в сетку, рассмотрите использование метода Присоединить вместо Вывести. Этот метод позволяет расширять табличный документ вширь. Если же вам нужно именно вертикальное размещение, заранее подготовьте макет-контейнер с двумя областями:

Рассмотрим структуру макета:

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

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

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

Разберем пример настройки масштаба, если формы не помещаются:


ТабДок.АвтоМасштаб = Ложь;
ТабДок.Масштаб = 95; // Немного уменьшаем для того, чтобы всё влезло на лист

Заключение

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

← На главную