Почему 1С 7.7 не видит штрихкод и как настроить весовой товар?

Программист 1С v7.7 Управленческий учет Промышленность, строительство и АПК
← На главную

В процессе работы с торговым оборудованием в конфигурациях на платформе 1С 7.7 (например, «Управление птицефабрикой», «Торговля и Склад») пользователи часто сталкиваются с ошибкой: «Считанный штрихкод не может быть обработан. Необходимо убедиться, что данный штрихкод зарегистрирован в информационной базе и может быть обработан в данной форме». Эта проблема особенно актуальна для внутренних штрихкодов, начинающихся на «20–29», которые используются для маркировки весового или собственного штучного товара.

Рассмотрим подробно причины возникновения этой ошибки и разберем по шагам алгоритм диагностики и настройки системы для корректной работы со сканером штрихкодов.

Анализ структуры штрихкода EAN-13

Проанализируем ситуацию на примере штрихкода 2000000050218. Для начала важно понимать, как 1С интерпретирует эти цифры. Стандарт EAN-13 для внутреннего использования на предприятии обычно имеет следующую структуру:

  1. Префикс (первые 2 цифры): Диапазон 20–29 зарезервирован для локальных нужд предприятия. Например, «20» может быть назначен для штучного товара, а «23» — для весового.
  2. Код товара (следующие 4–6 цифр): Это уникальный идентификатор номенклатуры в вашей базе (PLU или код из справочника).
  3. Вес или количество (следующие 4–5 цифр): Если товар весовой, здесь зашито значение в граммах.
  4. Контрольный символ (последняя цифра): Используется для проверки целостности считанных данных.

В проблемном примере 2000000050218 мы видим префикс 20, затем длинную последовательность нулей 00000 и значение 05021. Если система настроена на поиск товара по пятизначному коду, то она пытается найти товар с кодом «00000» (или «0»), которого, скорее всего, не существует в справочнике Номенклатура. Сравним это с работающим кодом 2000005003806: здесь префикс 20, код товара 00005, вес 00380 (380 грамм) и контрольное число 6. Разница очевидна — во втором случае указан существующий код товара.

Шаг 1. Проверка констант и настроек параметров учета

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

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

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

Шаг 2. Сопоставление кода товара в справочнике

Рассмотрим подробнее механизм поиска. Когда сканер передает данные, 1С вызывает процедуру ОбработкаВнешнегоСобытия. Внутри этой процедуры код «разрезается» на части. Если префикс совпадает с «весовым», система выделяет код товара.

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

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


// Пример упрощенной логики разбора весового ШК
ПрефиксВеса = Константа.ПрефиксВесовогоТовара; // Например, "20"
Если Лев(Штрихкод, 2) = ПрефиксВеса Тогда
    КодТовара = Сред(Штрихкод, 3, 5); // Выделяем 5 знаков кода номенклатуры
    ВесВГраммах = Сред(Штрихкод, 8, 5); // Выделяем вес
    Если СпрНоменклатура.НайтиПоКоду(КодТовара, 0) = 1 Тогда
        // Товар найден, обрабатываем добавление в документ
    Иначе
        Предупреждение("Товар с кодом " + КодТовара + " не найден!");
    КонецЕсли;
КонецЕсли;

Шаг 3. Регистрация штрихкода в единицах измерения

Выясним, зарегистрирован ли штрихкод для конкретной единицы товара. В 1С 7.7 штрихкоды часто привязываются не к самой номенклатуре напрямую, а к подчиненному справочнику Единицы (или Штрихкоды).

  1. Откройте карточку нужного товара в справочнике Номенклатура.
  2. Перейдите на закладку Единицы (или воспользуйтесь кнопкой перехода к подчиненному справочнику).
  3. Найдите единицу измерения «кг» (для весового) или «шт» (для штучного).
  4. Убедитесь, что поле Штрихкод заполнено. Для весового товара там должен быть указан не весь 13-значный код с весом, а только его базовый шаблон или код PLU, который весы используют при печати этикетки.

Шаг 4. Проблема лидирующих нулей и длины кода

Проанализируем ситуацию, упомянутую пользователем: штрихкод 2000000050218 не работает, так как в нем слишком много нулей. Это классическая проблема несоответствия длины кода товара в настройках весов и в 1С. Если ваши весы настроены на передачу 7-значного кода товара, а 1С ожидает 5-значный, то «лишние» нули сдвинут позицию веса, и контрольная сумма не совпадет, либо найдется совершенно другой товар.

Чтобы исправить это, необходимо синхронизировать настройки:

Шаг 5. Отладка через внешнее событие

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

Посмотрим на типичный фрагмент кода, где может скрываться ошибка:


Процедура ОбработкаВнешнегоСобытия(Источник, Событие, Данные)
    // Данные - это считанный сканером штрихкод
    Если Событие = "BarCodeValue" Тогда
        ШК = СокрЛП(Данные);
        // Если сканер добавляет спецсимволы, поиск не сработает
        // Проверим длину ШК
        Если СтрДлина(ШК) <> 13 Тогда
            Сообщить("Некорректная длина штрихкода!");
            Возврат;
        КонецЕсли;
        // Дальнейший вызов типовой функции поиска
        глПолучитьТоварПоШтрихкоду(ШК, Контекст);
    КонецЕсли;
КонецПроцедуры

Важный совет: проверьте настройки самого сканера. Иногда сканер настроен так, что добавляет в начало или конец штрихкода невидимые символы (префиксы/суффиксы), такие как «Enter» (CR/LF) или пробелы. В этом случае визуально код в сообщении об ошибке выглядит правильно, но функция НайтиПоКоду() возвращает ложь, так как ищет строку с невидимым символом.

Резюме

Для решения проблемы с добавлением штрихкода в 1С 7.7 «Управление птицефабрикой» необходимо:

  1. Проверить соответствие префикса (первые две цифры) типу товара (весовой/штучный) в Константах.
  2. Убедиться, что код товара, зашитый внутри штрихкода, существует в справочнике Номенклатура и имеет ту же длину (количество нулей).
  3. Проверить регистрацию штрихкода в подчиненном справочнике Единицы измерения для конкретной карточки товара.
  4. Исключить влияние настроек сканера (лишние суффиксы).

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

← На главную