В процессе работы с торговым оборудованием в конфигурациях на платформе 1С 7.7 (например, «Управление птицефабрикой», «Торговля и Склад») пользователи часто сталкиваются с ошибкой: «Считанный штрихкод не может быть обработан. Необходимо убедиться, что данный штрихкод зарегистрирован в информационной базе и может быть обработан в данной форме». Эта проблема особенно актуальна для внутренних штрихкодов, начинающихся на «20–29», которые используются для маркировки весового или собственного штучного товара.
Рассмотрим подробно причины возникновения этой ошибки и разберем по шагам алгоритм диагностики и настройки системы для корректной работы со сканером штрихкодов.
Проанализируем ситуацию на примере штрихкода 2000000050218. Для начала важно понимать, как 1С интерпретирует эти цифры. Стандарт EAN-13 для внутреннего использования на предприятии обычно имеет следующую структуру:
В проблемном примере 2000000050218 мы видим префикс 20, затем длинную последовательность нулей 00000 и значение 05021. Если система настроена на поиск товара по пятизначному коду, то она пытается найти товар с кодом «00000» (или «0»), которого, скорее всего, не существует в справочнике Номенклатура. Сравним это с работающим кодом 2000005003806: здесь префикс 20, код товара 00005, вес 00380 (380 грамм) и контрольное число 6. Разница очевидна — во втором случае указан существующий код товара.
Первым делом выясним, какие префиксы назначены в вашей информационной базе. В типовых решениях 1С 7.7 эти настройки хранятся в константах или специальных формах настройки.
Проанализируем раздел меню Сервис — Настройка параметров учета. На вкладке, отвечающей за штрихкоды, необходимо проверить следующие значения:
Если вы пытаетесь сканировать весовой товар, но его штрихкод начинается с префикса, который в системе закреплен за штучным товаром, 1С будет искать в базе полное совпадение всех 13 цифр. Для весового же товара поиск идет только по «средней» части кода (идентификатору номенклатуры).
Рассмотрим подробнее механизм поиска. Когда сканер передает данные, 1С вызывает процедуру ОбработкаВнешнегоСобытия. Внутри этой процедуры код «разрезается» на части. Если префикс совпадает с «весовым», система выделяет код товара.
Важный нюанс: тип данных кода в справочнике Номенклатура. Если код товара в базе текстовый (например, "00005"), а поиск настроен без учета лидирующих нулей, или наоборот — код числовой, а ищется строка — возникнет ошибка. Проверьте в Конфигураторе длину и тип кода справочника Номенклатура.
Посмотрим на пример логики, которая может быть зашита в глобальном модуле для обработки весового кода:
// Пример упрощенной логики разбора весового ШК
ПрефиксВеса = Константа.ПрефиксВесовогоТовара; // Например, "20"
Если Лев(Штрихкод, 2) = ПрефиксВеса Тогда
КодТовара = Сред(Штрихкод, 3, 5); // Выделяем 5 знаков кода номенклатуры
ВесВГраммах = Сред(Штрихкод, 8, 5); // Выделяем вес
Если СпрНоменклатура.НайтиПоКоду(КодТовара, 0) = 1 Тогда
// Товар найден, обрабатываем добавление в документ
Иначе
Предупреждение("Товар с кодом " + КодТовара + " не найден!");
КонецЕсли;
КонецЕсли;
Выясним, зарегистрирован ли штрихкод для конкретной единицы товара. В 1С 7.7 штрихкоды часто привязываются не к самой номенклатуре напрямую, а к подчиненному справочнику Единицы (или Штрихкоды).
Проанализируем ситуацию, упомянутую пользователем: штрихкод 2000000050218 не работает, так как в нем слишком много нулей. Это классическая проблема несоответствия длины кода товара в настройках весов и в 1С. Если ваши весы настроены на передачу 7-значного кода товара, а 1С ожидает 5-значный, то «лишние» нули сдвинут позицию веса, и контрольная сумма не совпадет, либо найдется совершенно другой товар.
Чтобы исправить это, необходимо синхронизировать настройки:
Если визуальная проверка настроек не помогла, программисту стоит проверить работу системы в режиме отладки. Основное внимание нужно уделить функции, которая обрабатывает префиксы. Чаще всего она находится в глобальном модуле и называется глОбработкаШтрихкода или вызывается из ОбработкаВнешнегоСобытия в форме документа.
Посмотрим на типичный фрагмент кода, где может скрываться ошибка:
Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
// Данные - это считанный сканером штрихкод
Если Событие = "BarCodeValue" Тогда
ШК = СокрЛП(Данные);
// Если сканер добавляет спецсимволы, поиск не сработает
// Проверим длину ШК
Если СтрДлина(ШК) <> 13 Тогда
Сообщить("Некорректная длина штрихкода!");
Возврат;
КонецЕсли;
// Дальнейший вызов типовой функции поиска
глПолучитьТоварПоШтрихкоду(ШК, Контекст);
КонецЕсли;
КонецПроцедуры
Важный совет: проверьте настройки самого сканера. Иногда сканер настроен так, что добавляет в начало или конец штрихкода невидимые символы (префиксы/суффиксы), такие как «Enter» (CR/LF) или пробелы. В этом случае визуально код в сообщении об ошибке выглядит правильно, но функция НайтиПоКоду() возвращает ложь, так как ищет строку с невидимым символом.
Для решения проблемы с добавлением штрихкода в 1С 7.7 «Управление птицефабрикой» необходимо:
Следуя этой инструкции, вы сможете выявить, на каком этапе «теряется» штрихкод, и восстановить нормальную работу склада или торговой точки.