При формировании печатных форм в 1С разработчики часто сталкиваются с ситуацией, когда явно заданные в коде свойства табличного документа (ориентация страницы, поля, масштаб) игнорируются при выводе на печать или открытии формы предварительного просмотра. Рассмотрим, почему это происходит и как правильно управлять параметрами печати.
Посмотрим на типичный пример инициализации параметров табличного документа:
ТабДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДокумент.ПолеСверху = 0;
ТабДокумент.ПолеСлева = 5;
ТабДокумент.ПолеСнизу = 0;
ТабДокумент.ПолеСправа = 5;
ТабДокумент.АвтоМасштаб = Ложь;
ТабДокумент.МасштабПечати = 95;
ТабДокумент.КлючПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Акт";
Разберем основные причины, из-за которых итоговые параметры при выводе на экран или принтер могут отличаться от программно установленных.
Проанализируем типовую архитектуру конфигураций на обычных формах (например, «Управление торговлей 10.3», «Комплексная автоматизация 1.1», «Управление производственным предприятием 1.3»). В этих системах печать большинства документов выполняется через вызов общей процедуры:
УниверсальныеМеханизмы.НапечататьДокумент(ТабДокумент, ...);
При этом открывается общая форма печати документов. В логике этой формы и процедурах модуля УниверсальныеМеханизмы выполняется собственная инициализация параметров страницы. Если переданный табличный документ попадает в типовой механизм управления печатью, форма считывает ранее сохраненные настройки пользователя или задает параметры по умолчанию, полностью перезаписывая значения свойств ОриентацияСтраницы, МасштабПечати и полей документа.
Чтобы решить эту проблему при использовании типовых подсистем, выполним следующие шаги:
УниверсальныеМеханизмы.НапечататьДокумент и проверим, какие параметры передаются в форму в качестве дополнительных параметров.ТабличныйДокумент:
ТабДокумент.Напечатать(РежимИспользованияДиалогаПечати.НеИспользовать);
Свойство КлючПараметровПечати предназначено для автоматического сохранения пользовательских настроек печати (из диалога «Параметры страницы») в системном хранилище настроек платформы 1С. Однако у этого механизма есть важная особенность: сохраненные настройки пользователя имеют наивысший приоритет над параметрами, заданными в коде.
Если пользователь (или разработчик в процессе отладки) хотя бы один раз изменил параметры страницы и нажал «ОК», платформа связывает эти значения с указанным ключом (в нашем примере — "ПАРАМЕТРЫ_ПЕЧАТИ_Акт"). При последующих вызовах платформа автоматически восстанавливает сохраненные значения поверх установленных программно.
Разберем варианты исправления ситуации с ключом параметров:
"ПАРАМЕТРЫ_ПЕЧАТИ_Акт_v2"). В этом случае старые настройки сбросятся для всех пользователей.ТабДокумент.КлючПараметровПечати = "";.ХранилищеОбщихНастроек или интерактивно через интерфейс управления настройками пользователей.Проверим корректность сочетания параметров табличного документа и особенности работы драйверов печати:
АвтоМасштаб установлено в значение Истина, свойство МасштабПечати полностью игнорируется платформой. Для использования фиксированного процента масштаба обязательно устанавливаем ТабДокумент.АвтоМасштаб = Ложь;.ПолеСверху = 0, ПолеСнизу = 0) корректно обрабатывается платформой 1С, но драйвер конкретного физического принтера не может печатать в непечатаемой области. В результате драйвер принудительно сдвигает изображение или добавляет минимальные технологические отступы, что визуально меняет поля документа.