При организации работы с принтерами этикеток (например, Zebra LP 2824) системные администраторы и специалисты 1С нередко сталкиваются с ситуацией, когда печать штрихкодов корректно функционирует под одной учетной записью 1С, но дает сбой под другой. В предварительном просмотре или при выводе на печать макет искажается, а размеры страницы принимают неверные стандартные значения (например, формат непрерывной ленты 76×297 мм вместо компактной этикетки 60×30 мм или 56×20 мм). При этом ручная корректировка параметров печати в диалоговом окне не сохраняется и сбрасывается при повторном открытии.
Разберем природу возникновения этой ошибки и пошаговые методы её устранения как на уровне операционной системы, так и средствами платформы 1С:Предприятие.
Проанализируем ситуацию: платформа 1С сохраняет индивидуальные параметры страницы (ориентацию, поля, размер листа, имя выбранного принтера) раздельно для каждого пользователя базы данных в системном хранилище настроек. Механизм кэширования привязывается к свойству ИмяПараметровПечати или КлючПараметровПечати формируемого табличного документа.
Если пользователь хотя бы один раз открыл печатную форму или отправил документ на печать в момент, когда в драйвере был выбран неверный тип носителя, 1С фиксирует эти параметры в профиле. При последующих вызовах обработки печать принудительно инициализируется с закэшированными некорректными размерами, полностью игнорируя глобальные настройки драйвера в Windows.
Дополнительно влияет разделение параметров драйвера Windows на Настройки печати (индивидуальные для сеанса ОС) и Умолчания печати на вкладке «Дополнительно» (действующие глобально для всех вызовов подсистемы печати).
Разберем по шагам базовый административный способ устранения проблемы без вмешательства в программный код конфигурации:
Если конфигурация находится на поддержке с возможностью изменения или печать реализована через внешнюю обработку, наиболее надежным решением является жесткая инициализация свойств табличного документа перед формированием этикетки.
Рассмотрим, как зафиксировать геометрию макета и переопределить ключ сохранения настроек в процедуре печати:
// Отключаем влияние некорректного кэша настроек пользователя
ТабличныйДокумент.ИмяПараметровПечати = "ПараметрыПечати_Этикетка_60х30";
// Задаем точные габариты носителя
ТабличныйДокумент.РазмерСтраницы = "Custom";
ТабличныйДокумент.ШиринаСтраницы = 60; // ширина в миллиметрах
ТабличныйДокумент.ВысотаСтраницы = 30; // высота в миллиметрах
// Сбрасываем поля документа в ноль
ТабличныйДокумент.ПолеСлева = 0;
ТабличныйДокумент.ПолеСправа = 0;
ТабличныйДокумент.ПолеСверху = 0;
ТабличныйДокумент.ПолеСнизу = 0;
ТабличныйДокумент.АвтоМасштаб = Ложь;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.ИмяПринтера = "Zebra LP 2824";
Обратим внимание на следующие особенности работы со свойствами:
ТабличныйДокумент.ИмяПараметровПечати пустое значение (пустую строку ""), платформа полностью прекратит сохранение и чтение индивидуальных параметров страницы для этой формы, всегда применяя программно заданные значения.ИмяПараметровПечати под каждый типоразмер, чтобы параметры одного макета не перезаписывали другой.Если нет необходимости менять исходный код конфигурации, можно сбросить закэшированные некорректные настройки пользователя:
ХранилищеСистемныхНастроек.Удалить("Обработка.ПечатьЭтикетокИКценников/ПараметрыПечати", "", ИмяПользователя);
После удаления старых настроек первый вывод документа на печать заново считает актуальные параметры из системного драйвера принтера.