Почему сканер не считывает штрихкод из управляемой формы 1С и как это исправить

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

1. Проверка контрольной цифры штрихкода (EAN-13 и EAN-8)

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

Рассмотрим алгоритм расчета контрольной цифры EAN и программную функцию, которую можно использовать в 1С для проверки и формирования контрольного символа:


Функция глКонтрольныйСимволEAN(ШтрКод, Тип) Экспорт
    
    Четн = 0;
    Нечетн = 0;
    
    Если Тип = 13 Тогда
        КолвоИтераций = 6;
    Иначе
        КолвоИтераций = 4;
    КонецЕсли;
    
    Для Индекс = 1 По КолвоИтераций Цикл
        Четн = Четн + Сред(ШтрКод, 2 * Индекс, 1);
        Нечетн = Нечетн + Сред(ШтрКод, 2 * Индекс - 1, 1);
    КонецЦикла;
    
    Если Тип = 13 Тогда
        Четн = Четн * 3;
    Иначе
        Нечетн = Нечетн * 3;
    КонецЕсли;
    
    КонтЦифра = 10 - (Четн + Нечетн) % 10;
    
    Возврат ?(КонтЦифра = 10, "0", Строка(КонтЦифра));
    
КонецФункции

Перед передачей строки в компоненту печати необходимо убедиться, что 13-й (или 8-й) символ совпадает с результатом работы данной функции.

2. Настройки масштаба табличного документа и размытие растра

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

Выясним главные правила оформления табличного документа при выводе штрихкода:

  1. Масштаб документа: Масштаб печатной формы в объекте ТабличныйДокумент должен быть строго равен 100%. Любое сжатие (например, 90% или подгонка по ширине страницы) сжимает картинку и делает штрихкод несчитываемым.
  2. Режим размера рисунка: В свойствах рисунка табличного документа следует устанавливать режим РеальныйРазмер или Пропорционально, избегая значения Растянуть.
  3. Изменение размеров: Если требуется изменить итоговый размер штрихкода на листе, необходимо подгонять размер самого макета, а не сжимать картинку средствами платформы.

3. Оформление ячеек и границы рисунка

Посмотрим на ещё одну распространенную ошибку при визуальном оформлении штрихкода в табличном документе. Не следует обводить область с рисунком штрихкода в рамку (устанавливать границы ячеек или самого рисунка).

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

← На главную