Как убрать отступы при использовании метода Присоединить в табличном документе 1С

Программист 1С v8.3 (Управляемые формы) Сфера услуг, туризм и социальный сектор
← На главную

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

Разберем механику работы метода Присоединить

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

Шаг 1: Программное обнуление полей документа

Одной из самых частых причин появления отступов являются стандартные настройки страницы объекта ТабличныйДокумент. По умолчанию 1С резервирует определенное расстояние (обычно 10 мм) от краев листа для корректной печати на принтере. Эти «невидимые» поля могут визуально сдвигать ваш первый блок, создавая ощущение лишнего отступа слева.

Для решения этой проблемы мы должны явно обнулить свойства полей в коде перед началом вывода данных:


ТабДок = Новый ТабличныйДокумент;
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;

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

Шаг 2: Анализ границ именованной области в макете

Проанализируем структуру макета. В 1С область определяется пересечением строк (Горизонталь) и колонок (Вертикаль). Часто разработчики случайно захватывают в именованную область лишнюю пустую колонку справа или слева. Даже если в этой колонке нет текста и рамок, метод Присоединить() воспримет её как часть данных.

Рассмотрим порядок действий для проверки макета:

  1. Откроем макет печатной формы в конфигураторе.
  2. Выделим именованную область (через меню «Таблица — Имена — Управление именами» или выбрав соответствующую область на пересечении шкал).
  3. Убедимся, что выделение заканчивается строго по границе последней заполненной ячейки.
  4. Если справа от полезных данных в выделение попала пустая колонка, необходимо переназначить имя области, исключив лишнее пространство.

Важный нюанс: Если вы удаляете колонки в макете, чтобы убрать отступ, убедитесь, что вы не просто очистили их содержимое, а именно удалили их (Ctrl + «-»), чтобы границы именованной области автоматически пересчитались.

Шаг 3: Избавление от лишних промежуточных объектов

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

Проанализируем оптимальный способ вывода без создания лишнего ТабДок1:


Макет = Документы.НашДокумент.ПолучитьМакет("Печать");
ОбластьТалон = Макет.ПолучитьОбласть("Горизонталь|Вертикаль");

// Заполняем параметры первого экземпляра
ОбластьТалон.Параметры.Сотрудник = Объект.Сотрудник;
ТабДок.Вывести(ОбластьТалон); // Выводим первый блок в начало строки

// Заполняем параметры второго экземпляра (тот же объект области)
ОбластьТалон.Параметры.Сотрудник = Объект.ДругойСотрудник;
ТабДок.Присоединить(ОбластьТалон); // Присоединяем второй блок строго справа

При таком подходе ТабДок корректно сопоставляет ширину колонок присоединяемой области с уже существующими в документе ячейками.

Шаг 4: Управление шириной колонок и масштабированием

Иногда визуальный разрыв возникает из-за того, что 1С пытается автоматически подстроить ширину колонок итогового документа под содержимое. Чтобы блоки не «разъезжались», рекомендуется использовать свойство АвтоМасштаб или фиксировать ширину колонок программно.

Выясним, как зафиксировать масштаб, чтобы области не смещались при выводе:


ТабДок.АвтоМасштаб = Истина;
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт; // Если выводите много блоков в ряд

Также стоит проверить свойство «Отображать сетку». Иногда отступы кажутся больше, чем они есть на самом деле, из-за визуальных линий сетки в режиме просмотра. Для чистоты результата используйте ТабДок.ОтображатьСетку = Ложь;.

Итоги и рекомендации

Подведем итог нашему исследованию. Если при использовании Присоединить() блоки в 1С выводятся с пробелами, последовательно проверьте следующее:

  1. Свойства ТабДок: Убедитесь, что ПолеСлева и ПолеСправа равны 0.
  2. Границы в макете: Проверьте, не захватывает ли область Вертикаль лишние пустые колонки. Помните, что скрытые (нулевой ширины) колонки тоже считаются.
  3. Логика кода: Избегайте «склейки» двух разных объектов ТабличныйДокумент через Присоединить(). Всегда присоединяйте область макета к основному документу напрямую.

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

← На главную