Многие пользователи 1С при работе с торговым оборудованием сталкиваются с досадной ситуацией: настроенный принтер этикеток (например, Argox 203, Godex или Zebra) внезапно «забывает» размеры макета. Вместо корректной этикетки принтер начинает выдавать пустые листы или печатать одну этикетку на нескольких страницах, а в настройках 1С самопроизвольно устанавливается странный размер label 1.0-1.0, который невозможно изменить обычным способом. Давайте вместе разберем эту проблему и найдем пути её решения.
Проанализируем программную часть. Часто стандартные драйверы, идущие в комплекте с принтером, конфликтуют с платформой 1С. Это приводит к тому, что параметры страницы не передаются корректно из приложения в спулер печати Windows. Как показывает практика, установка альтернативных драйверов решает проблему в 80% случаев.
Рассмотрим по шагам, что нужно сделать:
Рассмотрим интересный нюанс работы интерфейса 1С:Розница (и других конфигураций на обычных формах). Изменение настроек принтера непосредственно в момент печати часто носит временный характер. Чтобы настройки «закрепились» за конкретным шаблоном, нужно использовать скрытый механизм сохранения.
Выполним следующую последовательность действий:
Важно: именно сохранение через предпросмотр внутри редактора шаблона заставляет 1С записать параметры в системное хранилище настроек (SystemSettings).
Выясним, почему настройки могут сбрасываться самой Windows. Существует разница между «Настройками печати» пользователя и «Настройками по умолчанию» принтера. 1С часто берет данные из глобальных настроек системы.
Проанализируем, как задать жесткие параметры в ОС:
Рассмотрим ситуацию, когда 1С запущена на сервере, а принтер подключен к локальному компьютеру. При использовании стандартного проброса портов Windows принтер в сессии получает имя вида Argox (перенаправлено сеанс 5). При каждом новом входе номер сессии меняется. 1С воспринимает это как появление нового принтера и сбрасывает настройки в label 1.0-1.0.
Решить эту проблему можно следующими способами:
\\Имя_ПК\Имя_Принтера прямо в сессии RDP.Посмотрим на техническую сторону хранения настроек. 1С сохраняет параметры печати в локальном кэше пользователя (папка %AppData%\1C\1Cv8...) и в базе данных. Если у пользователя недостаточно прав на запись настроек или файл .pfl поврежден, параметры не сохранятся.
Проанализируем решение через очистку настроек:
HKEY_CURRENT_USER\Software\1C\1Cv8\2.0\Common\PrinterSettings.Если программные методы через интерфейс не помогают, мы можем жестко зафиксировать параметры в самом макете обработки печати. Рассмотрим, как это сделать программно.
В модуле обработки печати перед выводом табличного документа на печать можно добавить следующий код:
ТабДок = Новый ТабличныйДокумент;
// Указываем имя принтера явно, если это необходимо
ТабДок.ИмяПринтера = "Argox OS-214 plus series PPLA";
// Устанавливаем параметры страницы
ТабДок.РазмерСтраницы = "Custom"; // Или предопределенный размер
ТабДок.ШиринаСтраницы = 58; // Размер в мм
ТабДок.ВысотаСтраницы = 40; // Размер в мм
ТабДок.АвтоМасштаб = Ложь;
ТабДок.МасштабПечати = 100;
// Убираем все поля
ТабДок.ПолеСверху = 0;
ТабДок.ПолеСнизу = 0;
ТабДок.ПолеСлева = 0;
ТабДок.ПолеСправа = 0;
Использование свойства ТабДок.ИмяПринтера позволяет системе «узнать» устройство и применить к нему сохраненные ранее настройки, а явное указание размеров страницы в коде предотвратит появление ошибки label 1.0-1.0.
Подведем итог: для стабильной печати этикеток в 1С рекомендуется использовать драйверы Seagull Scientific, настраивать параметры через «Предварительный просмотр» в макете и следить за тем, чтобы имена принтеров в системе (особенно при RDP) оставались неизменными. Совместное применение этих методов позволит вам раз и навсегда забыть о проблемах с некорректным масштабом при печати.