Как настроить печать и считывание 12-значных штрихкодов в 1С:Розница

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

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

Анализируем природу 12-значного штрихкода

Первым делом нам необходимо выяснить причину возникновения проблемы. Штрихкод из 12 цифр — это практически всегда американский стандарт UPC-A. Однако 1С и сканеры часто путают его с другими форматами или пытаются принудительно преобразовать в европейский стандарт EAN-13.

Проанализируем основные причины конфликтов:

  1. Автоматическое определение типа: Когда в макете этикетки для объекта ПечатьШтрихкода установлено значение Авто, компонента анализирует длину строки. Видя 12 цифр, она может интерпретировать их как EAN-13, которому «не хватает» одного знака. В результате 1С добавляет ведущий ноль или пересчитывает контрольный символ, что делает код нечитаемым для базы данных.
  2. Особенности CODE39: Если 1С распознает код как CODE39, важно помнить, что этот стандарт требует наличия стартового и стопового символа (звездочки *). Если при печати эти символы не включены в структуру штрихкода, сканер его просто проигнорирует.
  3. Конвертация в сканере: Настройки самого оборудования часто по умолчанию переводят 12-значный UPC-A в 13-значный EAN-13, добавляя лидирующий ноль. Если в базе 1С код сохранен в оригинальном 12-значном виде, поиск номенклатуры не сработает.

Шаг 1. Настройка компоненты печати штрихкодов в 1С

Рассмотрим, как правильно настроить макет этикетки, чтобы 1С не изменяла данные при выводе на печать. Вместо использования режима Авто, мы рекомендуем жестко задать тип штрихкода в свойствах объекта на макете.

Пошаговый алгоритм настройки:

  1. Зайдем в режим редактирования макета этикетки (через справочник «Шаблоны этикеток и ценников»).
  2. Выделим область со штрихкодом и перейдем в его свойства.
  3. Найдем параметр ТипШтрихкода. Если это чисто цифровой код, попробуем установить Code 128 или UPC-A вместо CODE39. Code 128 является наиболее универсальным и компактным, он не добавляет лишних контрольных символов сам по себе.
  4. Проверим свойство ОтображатьКонтрольныйСимвол. Если оно включено (Истина), 1С будет пытаться вычислить и дописать лишнюю цифру в конец. Для оригинальных кодов поставщика это свойство лучше отключить.

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


// Пример настройки параметров объекта печати штрихкода
ОбъектШК = ОбластьМакета.Рисунки.Штрихкод.Объект;
ОбъектШК.ТипШтрихкода = 4; // Соответствует Code 128
ОбъектШК.Сообщение = "123456789012"; // Наш 12-значный код
ОбъектШК.ОтображатьКонтрольныйСимвол = Ложь;

Шаг 2. Настройка торгового оборудования (сканера)

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

Рассмотрим параметры, которые нужно проверить в руководстве к вашему сканеру (обычно это делается считыванием специальных сервисных штрихкодов из инструкции):

Шаг 3. Обработка данных на стороне 1С

Иногда проще скорректировать входящие данные от сканера программно, чем перенастраивать десятки устройств в розничной сети. Проанализируем ситуацию, когда сканер всё же присылает лишний ноль, а в базе код лежит без него. Мы можем перехватить событие сканирования и «почистить» данные.

В модуле формы или в обработке ПодключаемоеОборудованиеРТ (в зависимости от версии конфигурации) можно добавить условие:


// Обработка данных, полученных от сканера штрихкодов
ДанныеШК = Данные.Штрихкод;
Если СтрДлина(ДанныеШК) = 13 И Лев(ДанныеШК, 1) = "0" Тогда
    // Если получили 13 символов с ведущим нулем, обрезаем его для поиска
    ПоисковыйШтрихкод = Сред(ДанныеШК, 2);
Иначе
    ПоисковыйШтрихкод = ДанныеШК;
КонецЕсли;

Рекомендации по выбору типа штрихкода

Проанализируем, какой формат печати выбрать, если CODE39 не читается. CODE39 — это дискретный код, который физически занимает много места. Если 12 символов печатаются на узкой этикетке (например, 30х20 мм или 43х25 мм), линии становятся слишком плотными, и бюджетные сканеры не могут их распознать.

Почему Code 128 лучше?

  1. Плотность: Он гораздо компактнее. 12 символов в Code 128 займут почти в полтора раза меньше места, чем в Code 39.
  2. Надежность: Он содержит встроенные алгоритмы проверки целостности, которые работают эффективнее без добавления визуальных лишних символов.
  3. Поддержка: Читается практически всеми современными 1D-сканерами без дополнительных настроек.

Итоги и выводы

Мы выяснили, что проблема 12-значных кодов в 1С:Розница обычно решается одним из трех способов:

  1. Отключением автоматического определения типа в макете этикетки и переходом на тип Code 128 или UPC-A с выключенным контрольным символом.
  2. Настройкой сканера через управляющие коды для отмены конвертации UPC-A -> EAN-13.
  3. Программной обрезкой лишних нулей в коде обработки сканирования 1С.

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

← На главную