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

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

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

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

1. Программная установка полей и сброс кэша настроек печати

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

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


// Сбрасываем привязку к сохраненным пользовательским настройкам
ТабличныйДокумент.КлючПараметровПечати = "";

// Принудительно обнуляем поля страницы
ТабличныйДокумент.ПолеСлева = 0;
ТабличныйДокумент.ПолеСправа = 0;
ТабличныйДокумент.ПолеСверху = 0;
ТабличныйДокумент.ПолеСнизу = 0;

// Обнуляем размеры колонтитулов
ТабличныйДокумент.РазмерКолонтитулаСверху = 0;
ТабличныйДокумент.РазмерКолонтитулаСнизу = 0;

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

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


ТабличныйДокумент.ИмяПринтера = "ИмяЦелевогоПринтера";
ТабличныйДокумент.КлючПараметровПечати = "";
ТабличныйДокумент.ПолеСлева = 0;
ТабличныйДокумент.ПолеСправа = 0;
ТабличныйДокумент.ПолеСверху = 0;
ТабличныйДокумент.ПолеСнизу = 0;

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

2. Аппаратные ограничения принтера и драйвера

Посмотрим на поведение драйверов печати. При инициализации табличного документа 1С опрашивает драйвер текущего принтера через системный интерфейс GDI. Подавляющее большинство офисных лазерных и струйных принтеров имеют физическую непечатаемую область, необходимую механизму протяжки бумаги (обычно от 3 до 6 мм с каждой стороны). Драйвер сообщает операционной системе о наличии так называемого Physical Offset.

Именно поэтому при выборе виртуального принтера (например, Microsoft Print to PDF) поля мгновенно пропадают: виртуальное устройство рапортует об отсутствии физических ограничений. Но как только мы возвращаемся к физическому принтеру, драйвер снова накладывает аппаратный буфер.

Разберем по шагам, как минимизировать влияние драйвера:

  1. Откроем свойства физического принтера в операционной системе и проверим наличие опции Без полей (Borderless) или Печать в край листа. Для струйных и специализированных фотопринтеров этот режим убирает аппаратный отступ.
  2. Создадим в свойствах драйвера пользовательский формат страницы (Custom Paper Size), вручную указав границы печати 0 мм, если драйвер позволяет редактировать эти параметры.
  3. Проверим режим работы терминального сервера. При работе через Remote Desktop сервис Easy Print нередко искажает метрики страницы, жестко задавая минимальные отступы до 10–15 мм. В таком случае рекомендуется отключить использование Easy Print в групповых политиках сервера и установить штатный драйвер производителя (PCL или PostScript).

3. Альтернативный обход через экспорт в PDF

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


// Формируем PDF-файл с абсолютными нулевыми границами
ТабличныйДокумент.Записать(ПутьКФайлу, ТипФайлаТабличногоДокумента.PDF);

После формирования файл отправляется на печать через внешнюю системную утилиту в фоновом режиме с параметром печати в масштабе 100% (Actual Size). Это позволяет избежать принудительного добавления системных полей платформой при отправке на печать через стандартный диалог.

← На главную