Какой префикс штрихкода использовать для скидочных карт в 1С:Управление торговлей 10.3?

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

При внедрении дисконтной системы в программе «1С:Управление торговлей 10.3» (УТ 10.3) технические специалисты часто сталкиваются с проблемой коллизии штрихкодов. Если выбрать префикс для карт некорректно, система при сканировании карты на кассе будет пытаться найти товар вместо покупателя, выдавать ошибки или начислять непредсказуемый вес весовой номенклатуре. Рассмотрим подробно, как правильно выбрать префикс, как избежать пересечений с товарными кодами и как настроить систему для бесперебойной работы.

Понимание стандартов: почему выбирают диапазон 20–29?

Согласно международному стандарту штрихкодирования EAN-13, для внутреннего использования предприятиями зарезервирован диапазон префиксов от 200 до 299 (в двузначном эквиваленте — от 20 до 29). Любая компания в мире имеет право бесплатно использовать эти коды для своих внутренних нужд — маркировки штучного или весового товара, печати инвентарных номеров и, конечно же, для выпуска дисконтных карт.

Однако внутри базы данных 1С этот диапазон должен быть жестко разделен между различными типами сущностей. Если мы назначим один и тот же префикс и на весовой товар, и на карты лояльности, кассовый узел не сможет корректно работать.

В чем опасность выбора префикса «23» или «26»?

Рассмотрим стандартное распределение префиксов в типовых конфигурациях 1С:

Выясним, что произойдет, если мы проигнорируем эти настройки и закажем в типографии дисконтные карты с префиксом 23.

При сканировании штрихкода (например, 2300000001504) в документе «Чек ККМ» алгоритм обработки внешнего события 1С первым делом проверяет первые две цифры кода. Видя префикс 23, система моментально идентифицирует штрихкод как весовой. Далее программа начинает парсить (разбирать) строку по маске весового товара:

  1. Первые 2 символа (23) — префикс весового товара.
  2. Следующие 5 символов (00000) — код (PLU) товара в базе данных.
  3. Следующие 5 символов (00150) — вес товара в граммах (в данном случае 150 грамм).
  4. Последний символ (4) — контрольное число.

В результате программа попытается найти в справочнике «Номенклатура» весовой товар с кодом 00000 и добавить его в чек с весом 0.15 кг. Разумеется, такого товара в базе нет, и кассир получит сообщение об ошибке «Товар не найден», а карта клиента так и не применится. Именно поэтому использовать префикс «23» (или любой другой весовой префикс) для дисконтных карт категорически запрещено.

Где проверить и настроить префиксы в 1С:УТ 10.3?

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

  1. Откроем меню Сервис -> Настройка учета -> Параметры учета.
  2. Перейдем на вкладку Штрихкоды.
  3. Проанализируем заполненные поля:
    • Префикс внутреннего штрихкода штучного товара (обычно там стоит 20).
    • Префикс внутреннего штрихкода весового товара (проверьте, установлены ли значения 23, 24 или другие).

Для дисконтных карт выберем префикс, который не совпадает ни с одним из этих полей. Хорошим и безопасным решением будет использование префиксов 28 или 29, так как они крайне редко используются в типовых схемах автоматизации для товаров.

Альтернативное решение: штрихкоды Code 39 и Code 128

Если вы хотите раз и навсегда застраховать себя от конфликтов с товарной номенклатурой, рекомендуем рассмотреть отказ от формата EAN-13 для дисконтных карт в пользу форматов Code 39 или Code 128.

В отличие от EAN-13, данные форматы поддерживают кодирование не только цифр, но и латинских букв любого регистра. Вы можете выпустить карты со значениями вида CARD-00001, DISCOUNT-1002 или просто буквенными префиксами DK00001. При сканировании такого кода на кассе у системы не возникнет никаких сомнений: программа моментально поймет, что это не стандартный 13-значный товарный код, пропустит все товарные проверки и сразу найдет карту в справочнике «Информационные карты».

Разработаем алгоритм генерации пула номеров для типографии

Если вы все же решили использовать формат EAN-13, помните важную деталь: нельзя просто составить список из 13 цифр по порядку (например, от 2800000000010 до 2800000000100). Последний, 13-й символ штрихкода EAN-13 является контрольным числом и рассчитывается по строгому математическому алгоритму.

Если передать в типографию некорректные контрольные символы, лазерные сканеры на кассах просто откажутся распознавать и пикать такие штрихкоды. Рассчитаем контрольный символ программно. Ниже приведен пример функции на встроенном языке 1С, которая рассчитывает контрольное число по 12 символам и возвращает полноценный 13-значный штрихкод:


Функция СформироватьШтрихкодEAN13(Префикс, ПорядковыйНомер) Экспорт
    // Префикс - строка, например, "28"
    // ПорядковыйНомер - число, например, 15
    
    // Приводим номер к 10-значному формату с ведущими нулями
    СтрокаНомера = Формат(ПорядковыйНомер, "ЧГ=0");
    Пока СтрДлина(СтрокаНомера) < 10 Цикл
        СтрокаНомера = "0" + СтрокаНомера;
    КонецЦикла;
    
    // Получаем первые 12 символов штрихкода
    Штрихкод12 = Префикс + СтрокаНомера;
    
    // Алгоритм расчета контрольной суммы EAN-13
    Четные = 0;
    Нечетные = 0;
    
    Для Индекс = 1 По 12 Цикл
        Цифра = Число(Сред(Штрихкод12, Индекс, 1));
        Если Индекс % 2 = 0 Тогда
            Четные = Четные + Цифра;
        Иначе
            Нечетные = Нечетные + Цифра;
        КонецЕсли;
    КонецЦикла;
    
    Сумма = Нечетные + (Четные * 3);
    Остаток = Сумма % 10;
    
    Если Остаток = 0 Тогда
        КонтрольныйСимвол = 0;
    Иначе
        КонтрольныйСимвол = 10 - Остаток;
    EndIf;
    
    Возврат Штрихкод12 + Строка(КонтрольныйСимвол);
КонецФункции

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

Настройка сканера штрихкодов: важность суффикса

Зачастую даже при правильно выбранном префиксе карты не считываются в документе «Чек ККМ» автоматически. Кассирам приходится вручную нажимать клавишу F7 (кнопка ввода штрихкода) и только после этого сканировать карту. Это существенно замедляет обслуживание покупателей.

Выясним причину этой проблемы. Чтобы 1С перехватывала штрихкод «на лету» в любом месте программы, сканер должен работать в режиме эмуляции COM-порта (через драйвер торгового оборудования) либо посылать специальный управляющий символ перевода строки — суффикс возврата каретки (Enter / CR / ASCII-символ #13).

Для настройки сканера выполним следующие действия:

  1. Найдем сервисную инструкцию, которая шла в комплекте со сканером (обычно содержит множество настроечных штрихкодов).
  2. Найдем раздел "Add Suffix" или "Set Enter Suffix" и отсканируем управляющий штрихкод из книги. Это заставит сканер «нажимать» Enter в конце каждого сканирования.
  3. В 1С перейдем в меню Сервис -> Торговое оборудование -> Подключение и настройка торгового оборудования.
  4. Откроем параметры нашего сканера штрихкодов и убедимся, что в поле «Суффикс» указано значение 13 (или CR).

После проведения этих настроек сканирование дисконтной карты с правильно подобранным префиксом (например, 28) будет автоматически открывать карту клиента в чеке и рассчитывать скидку без лишних кликов мышкой или нажатий клавиатуры.

← На главную