Как решить проблему с проверкой штрихкодов упаковок ЕГАИС в 1С:Управление торговлей 11.4

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

При работе с алкогольной продукцией в программе 1С:Управление торговлей (редакция 11.4) пользователи часто сталкиваются с ситуацией, когда при проверке входящей ТТН программа отказывается принимать штрихкоды упаковок. Особенно остро эта проблема проявляется в старых релизах (например, 11.4.7.114), где механизмы интеграции с ЕГАИС содержат жесткие проверки на длину и формат штрихкода. Рассмотрим детально, почему это происходит и как исправить ситуацию.

Анализ проблемы: несоответствие стандартов штрихкодирования

Проанализируем ситуацию, с которой сталкивается программист при отладке. В форме Проверка и подбор алкогольной продукции ЕГАИС при сканировании упаковки (короба или палеты) система возвращает строку вида (01)00000054581031(90)00313283. Согласно международному стандарту GS1-128, это корректный код, где в скобках указаны идентификаторы применения (AI): (01) — GTIN товара, (90) — номер партии или внутренний идентификатор.

Однако встроенный парсер 1С в общем модуле ШтрихкодированиеЕГАИСКлиентСервер содержит функцию ЭтоШтрихкодЛогистическойУпаковки, которая работает по крайне жесткому алгоритму. Разберем фрагмент этого кода:


Функция ЭтоШтрихкодЛогистическойУпаковки(Штрихкод) Экспорт
    Алфавит = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    
    Если СтрДлина(Штрихкод) = 18 Тогда 
        // Проверка формата SSCC (Serial Shipping Container Code)
        Если Не ШтрихкодированиеИСКлиентСервер.КодСоответствуетАлфавиту(Штрихкод, Алфавит) Тогда
            Возврат Ложь;
        КонецЕсли;
        Возврат Истина;
        
    ИначеЕсли СтрДлина(Штрихкод) = 26 Тогда 
        // Формат ФСРАР: Код организации (12) + Тип(1) + Площадка(2) + Год(2) + Номер(9)
        // Общая длина: 12 + 14 = 26 символов
        Возврат Истина;
        
    Иначе
        // Все остальное программа считает не штрихкодом упаковки
        Возврат Ложь;
    КонецЕсли;
КонецФункции

Как мы видим, код поставщика (01)00000054581031(90)00313283 не попадает ни под условие 18 символов (SSCC), ни под 26 символов (классический короб ЕГАИС). В результате программа возвращает Ложь, и процесс приемки блокируется.

Решение 1: Очистка штрихкода от служебных символов

Первое, что мы должны сделать — это проверить, как именно штрихкод представлен в базе и как его передает сканер. В стандарте GS1 скобки являются лишь визуальным представлением идентификаторов применения. В самом штрихкоде их нет, там используются спецсимволы (FNC1). Если сканер настроен на передачу скобок, 1С воспринимает их как часть данных, что увеличивает длину строки и ломает проверку.

Рассмотрим шаги по исправлению:

  1. Настройка сканера: Убедимся, что сканер передает "чистые" данные без префиксов и суффиксов. Скобки в начале и середине кода должны быть удалены или заменены на стандартный формат передачи GS1.
  2. Ручной ввод: Попробуем ввести штрихкод вручную без скобок: 01000000545810319000313283. Если длина строки после этого станет соответствовать ожиданиям системы (хотя в данном примере она все равно не будет равна 18 или 26), проверка может пройти дальше.
  3. Проверка XML: Проанализируем содержимое входящего файла WayBill_v3.xml. Найдем тег <Identity> внутри блока <TransportUnit>. Если поставщик прислал код именно со скобками в XML, то 1С будет искать его в справочнике ШтрихкодыУпаковок именно в таком виде.

Решение 2: Обход проверки для розничного звена

Если ваша организация занимается розничной торговлей и вам не требуется вести строгий по-коробочный учет внутри склада (важна только проверка марок), можно применить организационный метод решения проблемы. Выясним причину, почему обязательна проверка упаковок. Часто в настройках интеграции с ЕГАИС включена опция "Обязательная проверка".

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

Решение 3: Программная модификация (для специалистов)

Если вы имеете доступ к редактированию конфигурации или используете расширения, разберем, как расширить логику проверки. Нам необходимо разрешить функции ЭтоШтрихкодЛогистическойУпаковки обрабатывать коды формата GS1-128, которые активно внедряются производителями (особенно для пивной продукции).

Проанализируем структуру штрихкода производителя:

Чтобы программа "узнала" новый штрихкод, можно добавить условие обработки строки произвольной длины, если она соответствует паттерну GS1. Пример изменения логики:


// В расширении для функции ЭтоШтрихкодЛогистическойУпаковки
&Вместо("ЭтоШтрихкодЛогистическойУпаковки")
Функция ИС_ЭтоШтрихкодЛогистическойУпаковки(Штрихкод)
    // Очищаем код от возможных скобок, если они пришли со сканера
    ЧистыйКод = СтрЗаменить(СтрЗаменить(Штрихкод, "(", ""), ")", "");
    
    Длина = СтрДлина(ЧистыйКод);
    Если Длина = 18 Или Длина = 26 Тогда
        Возврат Истина;
    ИначеЕсли Длина > 20 И Найти(Штрихкод, "(01)") > 0 Тогда
        // Дополнительная логика для GS1-128
        Возврат Истина;
    КонецЕсли;
    
    Возврат ПродолжитьВызов(Штрихкод);
КонецФункции

Рекомендации по актуализации системы

Важно понимать, что жесткое ограничение в 26 символов в 1С:УТ 11.4.7 — это наследие ранних этапов внедрения поштучного учета алкоголя. С развитием интеграции с системой Честный Знак и обновлением протоколов ЕГАИС (версии 3 и 4), форматы штрихкодов стали более гибкими.

Рассмотрим стратегические пути решения:

  1. Обновление конфигурации: В современных релизах УТ 11.4 (11.4.13+) и в актуальной версии УТ 11.5 библиотеки интеграции с государственными информационными системами (БИС) значительно переработаны. Они умеют корректно парсить GS1-128, отделяя GTIN от серийных номеров. Для автоматизации обслуживания и штатной установки релизов используют программу для автоматического обновления 1С.
  2. Использование ТСД: Если приемка ведется с помощью терминала сбора данных, убедитесь, что софт на ТСД (например, DataMobile или Mobile SMARTS) умеет "разбирать" сложные штрихкоды и передавать в 1С уже готовые идентификаторы упаковок, которые система сможет сопоставить с данными ТТН.
  3. Синхронизация с поставщиком: Если штрихкод на коробке не совпадает с тем, что указан в XML-файле ТТН (например, в XML пришел код SSCC, а на коробке наклеен GS1-128 с GTIN), это является ошибкой формирования документа поставщиком. В таком случае никакие настройки 1С не помогут — необходимо требовать исправления документов.

Подводя итог, отметим, что проблема со штрихкодами в УТ 11.4 чаще всего вызвана тем, что старый код программы не готов к многообразию форматов упаковки, которые разрешены законодательством. Использование расширений для корректировки функции ЭтоШтрихкодЛогистическойУпаковки или обновление до актуального релиза являются наиболее правильными техническими решениями.

← На главную