При переходе с редакции 1С:Управление торговлей 11.0 на 11.1 многие сталкиваются с неожиданным поведением подсистемы обмена с подключаемым оборудованием. В правилах обмена с автономными кассами (ККМ Offline) коды новых товаров начинают автоматически формироваться со значения 100000, в то время как ранее нумерация шла с 1. При этом позиции со старыми кодами продолжают выгружаться в кассу, но продажи по ним перестают загружаться в документ Отчет о розничных продажах. Разберем по шагам архитектурные причины этого явления и способы решения проблемы.
Проанализируем логику работы типовой конфигурации. Начиная с редакции УТ 11.1, разработчики 1С изменили структуру хранения и алгоритмы распределения идентификаторов в подсистеме подключаемого оборудования. Было введено строгое разделение диапазонов кодов SKU:
Именно поэтому при нажатии кнопки «Показать список товаров для редактирования» в правиле обмена система автоматически генерирует для штучных позиций идентификаторы, начиная со 100000.
Выясним причину сбоя при обратной загрузке данных из кассы. Когда ККМ Offline возвращает файл с транзакциями продаж, типовой алгоритм загрузки считывает код товара и выполняет проверку его числового значения. Если код меньше 100000, логика конфигурации воспринимает позицию как весовой товар и пытается идентифицировать её по специфическим правилам поиска весовой номенклатуры (поиск шаблонов весовых штрихкодов и кодов PLU).
Так как старые штучные товары, зарегистрированные еще в УТ 11.0, имели порядковые номера меньше 100000, процедура обработки не находит для них весовых реквизитов. В результате такие строки отчета о продажах просто игнорируются системой и не попадают в табличную часть формируемого документа ОтчетОРозничныхПродажах.
Рассмотрим сопутствующую проблему, когда в правиле обмена весовые или штучные товары дублируются, а при открытии формы редактирования генерируются избыточные свободные коды. За хранение соответствий отвечает регистр сведений КодыТоваровПодключаемогоОборудованияOffline.
В состав ключевых измерений этого регистра входит реквизит Упаковка. Если по номенклатуре ранее велся учет в упаковках (были созданы элементы справочника УпаковкиНоменклатуры), а затем признак использования упаковок в карточке товара был отключен, сами элементы справочника в базе остаются. При формировании списка обмена система считывает как пустую ссылку (базовую единицу), так и «скрытую» упаковку, создавая два различных кода оборудования на одну и ту же позицию. Это приводит к циклическим дублям записей.
Разберем способы выхода из сложившейся ситуации в зависимости от технических характеристик используемой кассовой техники.
Если используемая модель ККМ Offline аппаратно поддерживает шестизначные номера товаров (PLU), выполним корректный переход без изменения программного кода конфигурации:
КодыТоваровПодключаемогоОборудованияOffline.Посмотрим на ситуацию, когда кассовый аппарат имеет физическое ограничение памяти на разрядность PLU (например, поддерживает коды только до 9 999 или до 99 999). В таких условиях шестизначный код от 1С либо обрежется кассой, либо приведет к ошибке выгрузки.
В этом случае необходимо скорректировать модуль интеграции (рекомендуется реализовывать доработку через механизм расширений конфигурации). Проанализируем пример логики, где снимается ограничение на отсечение кодов менее 100000 при чтении файла отчета:
// В процедуре разбора транзакций ККМ Offline:
// Заменяем или отключаем жесткую проверку кода на принадлежность к весовому диапазону
Если КодТовара < 100000 Тогда
// Стандартная логика предполагала поиск весового товара.
// Дополняем алгоритм: если по весовому шаблону товар не найден,
// выполняем поиск штучного товара в регистре КодыТоваровПодключаемогоОборудованияOffline
НоменклатураТовара = НайтиШтучныйТоварПоКоду(КодТовара, ПравилоОбмена);
КонецЕсли;
После включения такой проверки старые коды из регистра КодыТоваровПодключаемогоОборудованияOffline смогут без препятствий подставляться в документ ОтчетОРозничныхПродажах.
Если обнаружено, что строки дублируются и система постоянно создает новые коды:
УпаковкиНоменклатуры.КодыТоваровПодключаемогоОборудованияOffline, где присутствуют «фантомные» ссылки на упаковки.