Как исправить некорректный размер и сброс настроек при печати этикеток на принтер Zebra в 1С?

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

При организации работы с принтерами этикеток (например, Zebra LP 2824) системные администраторы и специалисты 1С нередко сталкиваются с ситуацией, когда печать штрихкодов корректно функционирует под одной учетной записью 1С, но дает сбой под другой. В предварительном просмотре или при выводе на печать макет искажается, а размеры страницы принимают неверные стандартные значения (например, формат непрерывной ленты 76×297 мм вместо компактной этикетки 60×30 мм или 56×20 мм). При этом ручная корректировка параметров печати в диалоговом окне не сохраняется и сбрасывается при повторном открытии.

Разберем природу возникновения этой ошибки и пошаговые методы её устранения как на уровне операционной системы, так и средствами платформы 1С:Предприятие.

Почему сбиваются параметры печати для разных пользователей

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

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

Дополнительно влияет разделение параметров драйвера Windows на Настройки печати (индивидуальные для сеанса ОС) и Умолчания печати на вкладке «Дополнительно» (действующие глобально для всех вызовов подсистемы печати).

Решение 1. Создание образца этикетки в драйвере и синхронизация с 1С

Разберем по шагам базовый административный способ устранения проблемы без вмешательства в программный код конфигурации:

  1. Откроем Панель управления операционной системы и перейдем в раздел Устройства и принтеры.
  2. Найдем принтер этикеток (например, Zebra LP 2824), вызовем контекстное меню и откроем Настройка печати (а также проверим вкладку «Дополнительно» -> Умолчания).
  3. Перейдем на вкладку управления образцами/материалами (Образцы или Stocks). Нажмем кнопку Создать.
  4. Зададим точные физические размеры используемой этикетки (например, ширина 60 мм, высота 30 мм).
  5. Установим все непечатные поля (отступы) равными 0 мм, зададим понятное имя образца и сохраним конфигурацию.
  6. Запустим 1С под проблемной учетной записью пользователя.
  7. Перейдем в Сервис -> Настройки пользователя (или соответствующие настройки торгового оборудования в конфигурации) и укажем созданный размер этикетки и целевой принтер.
  8. В обработке печати этикеток снимем признак прямой печати (отключим флаг «Печать без предварительного просмотра»), откроем предварительный просмотр и перейдем в параметры страницы.
  9. Выберем созданный шаблон носителя из списка драйвера, проверим отображение макета и выполним тестовую печать.
  10. После успешной печати вернем необходимый режим автоматического вывода на печать без диалога.

Решение 2. Программная фиксация параметров страницы и сброс кэша

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

Рассмотрим, как зафиксировать геометрию макета и переопределить ключ сохранения настроек в процедуре печати:


// Отключаем влияние некорректного кэша настроек пользователя
ТабличныйДокумент.ИмяПараметровПечати = "ПараметрыПечати_Этикетка_60х30";

// Задаем точные габариты носителя
ТабличныйДокумент.РазмерСтраницы = "Custom";
ТабличныйДокумент.ШиринаСтраницы = 60; // ширина в миллиметрах
ТабличныйДокумент.ВысотаСтраницы = 30; // высота в миллиметрах

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

ТабличныйДокумент.АвтоМасштаб = Ложь;
ТабличныйДокумент.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
ТабличныйДокумент.ИмяПринтера = "Zebra LP 2824";

Обратим внимание на следующие особенности работы со свойствами:

  1. Если задать свойству ТабличныйДокумент.ИмяПараметровПечати пустое значение (пустую строку ""), платформа полностью прекратит сохранение и чтение индивидуальных параметров страницы для этой формы, всегда применяя программно заданные значения.
  2. Если на одном рабочем месте выполняется печать этикеток разного формата, необходимо формировать уникальное значение для ИмяПараметровПечати под каждый типоразмер, чтобы параметры одного макета не перезаписывали другой.

Решение 3. Очистка сохраненных настроек пользователя в информационной базе

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

  1. В режиме 1С:Предприятие перейдем в форму управления настройками пользователей (в зависимости от конфигурации: Администрирование -> Настройки пользователей и прав -> Очистка настроек или через меню Сервис).
  2. Выберем целевого пользователя и удалим сохраненные настройки для проблемной обработки печати этикеток и ценников.
  3. Программно очистку кэша конкретного объекта можно выполнить через системный механизм:
    
    ХранилищеСистемныхНастроек.Удалить("Обработка.ПечатьЭтикетокИКценников/ПараметрыПечати", "", ИмяПользователя);
    

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

← На главную