Почему штрихкоды в 1С:Управление торговлей 10 перестали читаться сканером при печати через RDP и как это исправить?

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

В практике работы с 1С:Управление торговлей 10.3 (УТ 10) часто возникает ситуация, когда этикетки, которые вчера успешно сканировались, сегодня печатаются визуально так же, но сканер ШК наотрез отказывается их распознавать. Ситуация осложняется тем, что проблема проявляется именно при работе через терминальный сервер (RDP). Давайте подробно разберем причины этого явления и выясним, как вернуть работоспособность системы печати.

Анализ механизма редиректа принтеров и проблемы Easy Print

Проанализируем техническую сторону вопроса. Когда пользователь подключается к серверу через удаленный рабочий стол (RDP), его локальный принтер этикеток «пробрасывается» в сессию. По умолчанию современные версии Windows Server используют технологию Terminal Services Easy Print. Этот драйвер-посредник предназначен для упрощения жизни администраторам, так как он не требует установки драйверов каждого конкретного принтера на сервер.

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

Для обычного текста смещение в 0.1 мм незаметно, но для штрихкода (особенно стандарта EAN-13) это критично. Штрихкод состоит из чередующихся черных и белых полос строго определенной ширины. Если драйвер Easy Print при «растягивании» картинки под размер бумаги изменит ширину узкой линии, сканер не сможет вычислить контрольную сумму и не распознает код. Рассмотрим ситуацию: тонкая линия должна быть шириной ровно в 1 пиксель печатающей головки, но из-за масштабирования она превращается в 1.2 пикселя. Принтер округлит это значение, и пропорция будет нарушена.

Влияние системного масштабирования (DPI) и настроек экрана

Выясним еще одну скрытую причину — разницу в настройках масштабирования (DPI) на сервере и локальном ПК. Если на компьютере пользователя установлено масштабирование текста 125% или 150% (часто встречается на мониторах с высоким разрешением), то компонента 1CBarCode.dll, отвечающая за генерацию графического объекта штрихкода, может сформировать изображение с некорректным разрешением для проброшенного принтера.

Проанализируем этот момент подробнее: при передаче изображения через RDP-сессию система пытается подстроиться под настройки экрана. В результате объект Рисунок в макете этикетки 1С может быть либо «замылен» из-за антиалиасинга (сглаживания), либо его края станут нечеткими. Лазерный сканер крайне чувствителен к контрастности перехода «черное-белое». Если граница полосы становится серой, луч сканера рассеивается, и чтение не происходит.

Решение проблемы через установку «родных» драйверов

Для решения проблемы нам необходимо полностью исключить влияние Easy Print. Разберем шаги по настройке:

  1. Установка драйвера на сервер: Скачайте актуальный драйвер для вашей модели принтера этикеток (например, Zebra, TSC, Godex) и установите его непосредственно на сервер 1С.
  2. Отключение политики Easy Print: В редакторе групповых политик сервера необходимо установить приоритет использования родных драйверов. Путь: Конфигурация компьютера -> Административные шаблоны -> Компоненты Windows -> Службы удаленных рабочих столов -> Узел сеансов удаленных рабочих столов -> Перенаправление принтеров. Здесь нужно включить опцию «Использовать в первую очередь драйвер принтера Easy Print Windows», установив значение Отключено.
  3. Настройка порта: Если принтер не определяется автоматически правильно, создайте на сервере Local Port с указанием сетевого пути к принтеру (например, \\Имя_ПК\Имя_Принтера). Это обеспечит прямую передачу данных без промежуточных преобразований графики.

Корректировка физических параметров печати

Посмотрим на ситуацию, упомянутую в обсуждении: «поменяли бумагу». Это очень важный фактор. Разные партии термоэтикеток имеют разную чувствительность термослоя. Проанализируем настройки драйвера на локальном компьютере:

Проверка программной части в 1С:Управление торговлей

Если манипуляции с драйверами не помогли на 100%, стоит заглянуть в конфигуратор 1С. В УТ 10.3 этикетки формируются как табличный документ. Рассмотрим объект штрихкода на макете:

Найдите в свойствах объекта Штрихкод (тип Рисунок) параметр Сохранять пропорции. Иногда переключение этого флага помогает системе корректно вписать сформированную картинку в выделенную область печати без искажений. Также проверьте, какая версия компоненты 1CBarCode установлена. Старые версии (до 8.0.15.2) имели проблемы с отрисовкой на ОС Windows Server 2012 и выше.

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


// Пример обращения к свойствам области печати
ОбластьМакета = Макет.ПолучитьОбласть("Строка");
РисунокШтрихкод = ОбластьМакета.Рисунки.Штрихкод;
// Установка типа штрихкода явно, если он сбивается
РисунокШтрихкод.Объект.ТипКода = 1; // EAN13
// Принудительное обновление для пересчета геометрии
РисунокШтрихкод.Объект.ТекстКода = "2000000000015";

Подводя итог, можно сказать, что «загадка» нечитаемого штрихкода в 90% случаев кроется в искажении пропорций графики при передаче через RDP. Отказ от виртуализации печати в пользу прямой работы с драйвером производителя — это единственный надежный способ обеспечить стабильную работу склада и торговой точки.

← На главную