Почему не выгружаются штрихкоды в ККМ Оффлайн (Розница 2.3) и как это исправить?

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

При работе с подключаемым оборудованием в режиме "Офлайн" технические специалисты часто сталкиваются с ситуацией, когда товары либо вообще не попадают в файл выгрузки, либо выгружаются без штрихкодов. Особенно остро эта проблема проявляется в конфигурации 1С:Розница 2.3 при интеграции со смарт-терминалами, такими как АТОЛ Sigma 10. Рассмотрим подробно причины этой проблемы и разберем по шагам способы её решения.

Причина 1: Обязательность использования кодов SKU

Первое, что мы должны проанализировать — это логика работы подсистемы "Подключаемое оборудование" в 1С. Для ККМ Оффлайн первичным идентификатором товара является не штрихкод и не внутренний UUID, а код SKU (Stock Keeping Unit). В контексте кассового аппарата SKU выступает в роли номера ячейки или кода PLU.

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

Как решить:

  1. Перейдем в раздел Продажи — Подключаемое оборудование.
  2. Найдем обработку Коды SKU товаров.
  3. Проанализируем список товаров. Если колонка со значениями SKU пуста, воспользуемся кнопкой "Создать" или "Заполнить", чтобы программа автоматически назначила уникальные цифровые коды всем позициям номенклатуры.
  4. Только после появления кодов SKU в информационной базе можно повторить попытку выгрузки в ККМ.

Причина 2: Специфика формата обмена АТОЛ Sigma 10

Выясним причину, по которой штрихкоды могут отсутствовать в самом XML-файле, даже если SKU назначены. Смарт-терминалы серии АТОЛ Sigma (включая Sigma 10) технически не являются классическими "ККМ Оффлайн" в старом понимании этого термина (как, например, АТОЛ 90Ф). Это устройства на базе Android, которые работают через Sigma Облако.

Попытка использовать стандартный драйвер "АТОЛ: ККМ Оффлайн" через XML-файл часто приводит к тому, что структура файла не совпадает с ожиданиями терминала. В типовых правилах обмена 1С может быть не прописана передача узла Barcode, так как некоторые старые драйверы ожидали штрихкод в составе текстовой строки или вообще не поддерживали его передачу отдельно от SKU.

Рассмотрим более эффективный метод интеграции — использование импорта через Sigma Облако. Вместо того чтобы пытаться "починить" XML-выгрузку, которая морально устарела для данного оборудования, мы можем использовать механизм загрузки каталога из файлов формата Excel (XLS/XLSX) или CSV.

Причина 3: Настройка правил обмена и цен

Проанализируем ситуацию, когда товар есть в 1С, SKU назначен, но в файл выгрузки он всё равно не попадает. В "1С:Розница" выгрузка в офлайн-оборудование жестко фильтруется по следующим критериям:

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

Программное решение: Доработка выгрузки через расширение

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

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


// Пример логики добавления штрихкода в таблицу выгрузки
Процедура ПодготовитьДанныеДляВыгрузки(ТаблицаТоваров) Экспорт
    Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
        // Ищем основной штрихкод номенклатуры
        Запрос = Новый Запрос;
        Запрос.Текст = 
            "ВЫБРАТЬ ТОП 1
            |	Штрихкоды.Штрихкод КАК Штрихкод
            |ИЗ
            |	РегистрСведений.ШтрихкодыНоменклатуры КАК Штрихкоды
            |ГДЕ
            |	Штрихкоды.Номенклатура = &Номенклатура
            |	И Штрихкоды.Характеристика = &Характеристика";
        
        Запрос.УстановитьПараметр("Номенклатура", СтрокаТовара.Номенклатура);
        Запрос.УстановитьПараметр("Характеристика", СтрокаТовара.Характеристика);
        
        Выборка = Запрос.Выполнить().Выбрать();
        Если Выборка.Следующий() Тогда
            СтрокаТовара.Штрихкод = Выборка.Штрихкод;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Важно помнить, что при использовании XML-формата драйвер должен уметь распознать тег Barcode. Если драйвер этого не умеет, потребуется либо замена драйвера на более современный, либо использование внешней обработки для формирования файла в формате, который понимает именно ваше оборудование.

Использование внешних обработок для АТОЛ Sigma

Существует альтернативный путь, который часто оказывается быстрее и надежнее. Поскольку АТОЛ Sigma активно используется с конфигурациями 1С, существуют готовые внешние обработки для формирования файла выгрузки. Например, можно адаптировать обработку от Управлении торговлей 11.4 для Розницы 2.3.

Эти обработки формируют файл не в "стандартном" XML 1С, а в формате, оптимизированном для импорта через личный кабинет Sigma Облако. Такой подход позволяет передавать не только базовые реквизиты, но и расширенные данные: категории, описания, несколько штрихкодов для одной позиции.

Итоги и рекомендации

Подведем итоги нашего анализа. Чтобы успешно выгрузить штрихкоды и товары в ККМ Оффлайн, выполним следующие шаги:

  1. Проверим наличие SKU: Это обязательное условие для любого офлайн-оборудования в 1С. Используйте обработку Коды SKU товаров.
  2. Проверим цены: Убедитесь, что на все выгружаемые товары созданы документы Установка цен номенклатуры.
  3. Определим формат обмена: Для современных смарт-терминалов АТОЛ Sigma лучше использовать импорт через Excel или специализированные API-коннекторы, вместо попыток настроить старый XML-драйвер.
  4. Проверим корректность штрихкодов в Excel: Если вы используете промежуточный Excel-файл для импорта, убедитесь, что колонка со штрихкодами имеет текстовый формат. В противном случае штрихкоды могут исказиться (например, отобразиться в виде 4,6E+12), и касса не сможет их распознать при сканировании.

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

← На главную