При работе с маркированной продукцией, особенно в переходные периоды внедрения новых требований законодательства, пользователи часто сталкиваются с аномальным поведением программы. Одной из самых загадочных проблем в 1С:Розница версии 2.2 стало «фантомное» списание товара: когда при продаже двух пачек сигарет в чеке программа корректно отображает количество, но в регистрах складского учета списывается три или более единиц, а итоговая сумма ведет себя непредсказуемо. Разберем детально причины этого глюка и способы его устранения.
Рассмотрим стандартную ситуацию, описанную пользователями: в рабочем месте кассира (РМК) сканируются две пачки сигарет с разными кодами DataMatrix. В самом чеке (документ ЧекККМ) визуально всё выглядит правильно — 2 штуки, верная цена. Однако после закрытия смены и формирования документа ОтчетОРозничныхПродажах начинаются странности. В табличной части отчета указано 2 штуки, но если мы сформируем отчет «Анализ движений номенклатуры» или посмотрим движения по регистру ТоварыНаСкладах, то увидим расход в 3 штуки.
Проанализируем ситуацию глубже. Выясним, почему программа «видит» лишнюю единицу. В 1С:Розница для связи между основной табличной частью Товары и специализированной таблицей маркировки используется поле КлючСвязи. Если в коде конфигурации или при работе драйвера сканера происходит сбой, этот ключ может дублироваться. Система при проведении документа начинает обходить коллекции маркируемых товаров и из-за некорректного сопоставления строк добавляет движения по складу повторно.
Особенность табачной продукции заключается в том, что цена заложена непосредственно в код маркировки. Проанализируем, как 1С обрабатывает эти данные. В релизах ветки 2.2.12 существовал баг: если цена номенклатуры в базе данных не совпадала с МРЦ, извлеченной из сканированного кода, программа пыталась автоматически скорректировать итоговую сумму.
В некоторых случаях это приводило к следующей логике:
В итоге покупатель платит за 2 пачки, в чеке напечатано 2 пачки, а складской остаток уменьшается на 3. Это критическая ошибка, ведущая к пересортице и убыткам.
Первоочередное действие — это приведение программного комплекса в соответствие с актуальными исправлениями. Рассмотрим, что именно нужно сделать:
ЧекККМ и ОтчетОРозничныхПродажах.Часто причиной «двоения» позиций является некорректная передача данных от сканера. Проанализируем режим работы устройства. Если сканер настроен в режиме эмуляции клавиатуры (HID), он передает данные как последовательный набор нажатий клавиш. При высокой скорости передачи 1С может воспринять один скан как два последовательных события: сначала как поиск по штрихкоду EAN-13, а затем как ввод кода маркировки.
Для исправления этой ситуации выполним следующие шаги:
Это позволит программе четко разделять события сканирования и исключит программные «дребезги», которые приводят к появлению лишних строк в фоновых процессах обработки ТЧ.
Если конфигурация доработана, стоит обратить внимание на то, как заполняется табличная часть при программном добавлении товаров. Рассмотрим пример того, как НЕЛЬЗЯ допускать дублирования ключей связи. Посмотрим на фрагмент кода, где может скрываться ошибка:
// Ошибка может быть здесь, если КлючСвязи генерируется некорректно
НоваяСтрока = Объект.Товары.Добавить();
НоваяСтрока.Номенклатура = ВыбранныйТовар;
НоваяСтрока.Количество = 1;
// Если забыть инкрементировать или уникализировать КлючСвязи:
НоваяСтрока.КлючСвязи = 1;
Для корректной работы маркировки необходимо использовать типовые механизмы генерации связи. Разберем правильный подход: при добавлении каждой новой позиции маркированного товара необходимо обеспечивать уникальность поля КлючСвязи в рамках документа, чтобы процедура ДвиженияПоСкладам могла однозначно сопоставить строку товара с его маркой в ТЧ МаркировкаТоваров.
Если вы уже столкнулись с «лишними» списаниями, выполните следующие действия для исправления учета:
Отчет о розничных продажах.Таким образом, мы выяснили, что корень проблемы лежит в сложной связке механизмов маркировки, расчета МРЦ и работы торгового оборудования. Последовательное выполнение предложенных шагов позволит стабилизировать работу РМК и вернуть точность складскому учету.