Ситуация, когда штрих-коды (ШК) корректно занесены в базу данных, успешно считываются сканером при продаже, но упорно отказываются выводиться на печать в этикетках или ценниках, является довольно распространенной в 1С:Управление торговлей (УТ 11.3 и 11.4). Мы проанализируем основные причины этой проблемы — от некорректного импорта данных до технических конфликтов разрядности операционной системы и компонентов 1С.
Разберем наиболее частую причину, связанную с программной загрузкой данных. При использовании обработки "Загрузка данных из табличного документа" пользователи часто допускают ошибку в сопоставлении полей штрих-кода. Рассмотрим, почему это происходит. Для корректной миграции данных на новую редакцию с сохранением всех связей объектов рекомендуется использовать специализированный перенос данных из 1С:УТ 10.3 в 1С:УТ 11.
В типовой конфигурации 1С штрих-код может быть привязан либо к самой номенклатуре, либо к конкретной упаковке. Если при загрузке данных в поле Единица измерения или Упаковка было принудительно записано значение (например, "шт"), программный код печати может начать искать штрих-код именно для этой упаковки, но по логике системы связь может быть нарушена или некорректна.
Попробуем выполнить следующие шаги для исправления:
Упаковка. Если там стоит "шт" (или любая другая единица измерения), попробуем очистить это поле.Если записей много, проанализируем ситуацию с помощью небольшой обработки или группового изменения реквизитов, очистив поле Упаковка в регистре сведений ШтрихкодыНоменклатуры.
Проанализируем техническую сторону вопроса. Компонента для отрисовки штрих-кодов часто зависит от разрядности сервера и клиента 1С. Рассмотрим типичный конфликт:
Многие внешние компоненты (ActiveX), такие как 1CBarCode.dll, исторически разрабатывались под 32-битную архитектуру. Если вы используете 64-битный сервер 1С:Предприятия или 64-битный клиент, система может не найти или не смочь инициализировать 32-битный COM-объект.
Что можно предпринять:
Если штрих-код выводится в таблицу цифрами, но сама графическая картинка (полоски) не отображается, выясним, установлена ли в системе соответствующая компонента. Для формирования графического объекта 1С использует ActiveX или Native библиотеки.
Разберем процесс регистрации вручную через командную строку, если автоматическая установка из конфигурации не срабатывает:
1CBarCode.dll в папке установки программы или во временных файлах пользователя.regsvr32 "C:\PathToComponent\1CBarCode.dll"
Также рекомендуется скачать и установить актуальную версию "1С:Печать штрихкодов" с официального портала ИТС. Это часто решает проблему отсутствия изображения в макетах.
Иногда причина кроется в самом макете этикетки. В 1С:УТ 11 печать строится на Системе Компоновки Данных (СКД). Если вы редактировали макет, связь между полем данных и графическим объектом могла разорваться.
Рассмотрим порядок действий для проверки шаблона:
Шаблоны этикеток и ценников.EAN13, а в объекте на форме указан другой тип (например, Code128), картинка может не сформироваться.Также проанализируем влияние кэша. Если вы недавно обновляли конфигурацию или меняли компоненты печати, старые временные файлы могут мешать корректной работе. Очистим папку %AppData%\Local\1C\1Cv8 и %AppData%\Roaming\1C\1Cv8 на рабочем месте пользователя.
Выясним причину, связанную с "грязными" данными. При загрузке через табличный документ в поле штрих-кода могут попасть лишние пробелы или спецсимволы, которые не видны глазу, но критичны для программного кода EAN13.
Компонента печати строго проверяет длину строки. Например, для EAN-13 требуется ровно 13 цифр. Если в результате загрузки в конце строки оказался пробел, символов станет 14. Сканер в торговом зале может "отсекать" лишнее при поиске, но генератор изображения просто выдаст пустую область.
Для исправления программным путем можно использовать следующий подход:
Выборка = РегистрыСведений.ШтрихкодыНоменклатуры.Выбрать();
Пока Выборка.Следующий() Цикл
ТекШтрихкод = Выборка.Штрихкод;
ЧистыйШтрихкод = СокрЛП(ТекШтрихкод); // Удаляем пробелы
Если ТекШтрихкод <> ЧистыйШтрихкод Тогда
МенеджерЗаписи = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
ЗаполнитьЗначенияСвойств(МенеджерЗаписи, Выборка);
МенеджерЗаписи.Штрихкод = ЧистыйШтрихкод;
МенеджерЗаписи.Записать(Истина);
КонецЕсли;
КонецЦикла;
Проанализировав все способы, можно сделать вывод: если сканер находит товар, значит штрих-код в базе есть, но механизм печати не может его интерпретировать. Наиболее вероятная причина в новых версиях УТ — заполненная колонка Упаковка в регистре штрих-кодов после импорта. Вторая по частоте причина — отсутствие зарегистрированной компоненты ActiveX или конфликт разрядности платформы. Последовательно проверив эти моменты, мы сможем восстановить корректную печать этикеток.