Почему после обновления на УТ 11.1 коды ККМ Offline формируются со 100000 и не попадают в отчет о розничных продажах?

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

При переходе с редакции 1С:Управление торговлей 11.0 на 11.1 многие сталкиваются с неожиданным поведением подсистемы обмена с подключаемым оборудованием. В правилах обмена с автономными кассами (ККМ Offline) коды новых товаров начинают автоматически формироваться со значения 100000, в то время как ранее нумерация шла с 1. При этом позиции со старыми кодами продолжают выгружаться в кассу, но продажи по ним перестают загружаться в документ Отчет о розничных продажах. Разберем по шагам архитектурные причины этого явления и способы решения проблемы.

Архитектурная причина изменения нумерации кодов

Проанализируем логику работы типовой конфигурации. Начиная с редакции УТ 11.1, разработчики 1С изменили структуру хранения и алгоритмы распределения идентификаторов в подсистеме подключаемого оборудования. Было введено строгое разделение диапазонов кодов SKU:

  1. Диапазон от 1 до 99 999: выделен исключительно под весовые товары, предназначенные для выгрузки в весы с печатью этикеток. В весовых комплексах номер PLU строго ограничен длиной префикса весового штрихкода стандарта EAN-13.
  2. Диапазон от 100 000 и выше: зарезервирован для штучных товаров, выгружаемых в ККМ Offline.

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

Почему старые товары перестают попадать в отчет о продажах

Выясним причину сбоя при обратной загрузке данных из кассы. Когда ККМ Offline возвращает файл с транзакциями продаж, типовой алгоритм загрузки считывает код товара и выполняет проверку его числового значения. Если код меньше 100000, логика конфигурации воспринимает позицию как весовой товар и пытается идентифицировать её по специфическим правилам поиска весовой номенклатуры (поиск шаблонов весовых штрихкодов и кодов PLU).

Так как старые штучные товары, зарегистрированные еще в УТ 11.0, имели порядковые номера меньше 100000, процедура обработки не находит для них весовых реквизитов. В результате такие строки отчета о продажах просто игнорируются системой и не попадают в табличную часть формируемого документа ОтчетОРозничныхПродажах.

Проблема задвоения строк и влияние справочника «Упаковки номенклатуры»

Рассмотрим сопутствующую проблему, когда в правиле обмена весовые или штучные товары дублируются, а при открытии формы редактирования генерируются избыточные свободные коды. За хранение соответствий отвечает регистр сведений КодыТоваровПодключаемогоОборудованияOffline.

В состав ключевых измерений этого регистра входит реквизит Упаковка. Если по номенклатуре ранее велся учет в упаковках (были созданы элементы справочника УпаковкиНоменклатуры), а затем признак использования упаковок в карточке товара был отключен, сами элементы справочника в базе остаются. При формировании списка обмена система считывает как пустую ссылку (базовую единицу), так и «скрытую» упаковку, создавая два различных кода оборудования на одну и ту же позицию. Это приводит к циклическим дублям записей.

Варианты решения проблемы

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

Способ 1. Штатный переход на шестизначные коды (рекомендуемый)

Если используемая модель ККМ Offline аппаратно поддерживает шестизначные номера товаров (PLU), выполним корректный переход без изменения программного кода конфигурации:

  1. До обновления или сразу после него полностью закроем кассовую смену на оборудовании и убедимся, что все предыдущие продажи выгружены и учтены. Недостающие отчеты по старым номерам при необходимости вносим или дозаполняем вручную.
  2. Выполним сервисную операцию полной очистки оперативной памяти кассового аппарата (очистка базы товаров ККМ).
  3. В 1С откроем правило обмена, удалим устаревшие связки и заново сформируем список товаров. Всем товарам присвоятся новые коды диапазона от 100000, хранящиеся в регистре сведений КодыТоваровПодключаемогоОборудованияOffline.
  4. Выполним полную начальную выгрузку базы товаров в кассу. Теперь и выгрузка, и обратная загрузка отчетов о розничных продажах будут выполняться штатно.

Способ 2. Корректировка кода для оборудования с ограничением разрядности

Посмотрим на ситуацию, когда кассовый аппарат имеет физическое ограничение памяти на разрядность PLU (например, поддерживает коды только до 9 999 или до 99 999). В таких условиях шестизначный код от 1С либо обрежется кассой, либо приведет к ошибке выгрузки.

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


// В процедуре разбора транзакций ККМ Offline:
// Заменяем или отключаем жесткую проверку кода на принадлежность к весовому диапазону
Если КодТовара < 100000 Тогда
    // Стандартная логика предполагала поиск весового товара.
    // Дополняем алгоритм: если по весовому шаблону товар не найден,
    // выполняем поиск штучного товара в регистре КодыТоваровПодключаемогоОборудованияOffline
    НоменклатураТовара = НайтиШтучныйТоварПоКоду(КодТовара, ПравилоОбмена);
КонецЕсли;

После включения такой проверки старые коды из регистра КодыТоваровПодключаемогоОборудованияOffline смогут без препятствий подставляться в документ ОтчетОРозничныхПродажах.

Способ 3. Устранение задвоения кодов в справочнике упаковок

Если обнаружено, что строки дублируются и система постоянно создает новые коды:

  1. Проверим карточки проблемных номенклатурных позиций на предмет неиспользуемых подчиненных элементов справочника УпаковкиНоменклатуры.
  2. Выполним очистку или пометим на удаление устаревшие упаковки, оставшиеся от предыдущих настроек учета.
  3. Очистим ошибочные записи в регистре сведений КодыТоваровПодключаемогоОборудованияOffline, где присутствуют «фантомные» ссылки на упаковки.
  4. В форме правила обмена воспользуемся служебной командой очистки незадействованных кодов в конце списка и заново перезаполним состав выгружаемых товаров.
← На главную