В работе с конфигурацией 1С:Розница (начиная с релиза 2.3.3.25 и вплоть до некоторых сборок ветки 2.3.13) пользователи часто сталкиваются с критической проблемой: при попытке пробить вторую и последующие единицы одного и того же маркированного товара (алкоголь, молочная продукция, упакованная вода) система выдает ошибку или некорректно суммирует товар в одну строку. В этой ситуации кассовый аппарат не может фискализировать чек, так как количество товара не соответствует количеству переданных кодов маркировки.
Разберем подробно причины возникновения этой ошибки, проанализируем техническую сторону вопроса и рассмотрим все доступные способы решения — от установки официальных патчей до изменения настроек рабочего места кассира (РМК).
Проанализируем ситуацию: кассир сканирует первую бутылку крепкого алкоголя. Товар успешно добавляется в список. При сканировании второй бутылки той же самой номенклатуры (с другой акцизной маркой) программа вместо создания новой строки прибавляет единицу к количеству в уже существующей строке. В итоге мы получаем одну строку с количеством 2, но привязанной к ней считается только одна марка (или система вовсе блокирует добавление).
Основная причина кроется в алгоритме свертки строк. Для обычного товара (хлеб, пакет, спички) суммирование в одну строку является стандартным поведением РМК для экономии места в чеке. Однако для маркированной продукции действует правило: одна марка — одна строка. В проблемных релизах механизм проверки дублей в корзине РМК срабатывал раньше, чем алгоритм обработки маркировки, игнорируя уникальность кодов.
Прежде чем переходить к обновлению или написанию кода, проверим базовые настройки системы. Выясним, включена ли опция объединения позиций. Для этого проделаем следующие действия:
Важный нюанс: как показывает практика и обсуждения специалистов, в проблемных релизах (например, 2.3.3.25) этот флаг мог игнорироваться программным кодом именно для маркированной продукции. Тем не менее, его отключение — это первое, что необходимо сделать для локализации проблемы.
Фирма «1С» признала данную проблему ошибкой и зарегистрировала её под номером 00-00476249. Описание гласит: «При сканировании одинаковой маркируемой продукции в Чек ККМ / РМК не добавляются последующие позиции».
Для исправления ситуации без полного обновления конфигурации рассмотрим процесс установки патча:
EF_00_00476249 (его можно скачать с официального портала техподдержки users.v8.1c.ru).После установки патча необходимо перезапустить сеанс работы пользователя. Данное исправление корректирует логику функции ОбъединитьСтрокиСПохожимТоваром(), заставляя систему принудительно разделять строки, если товар является маркированным.
Интересной особенностью ветки 2.3 является наличие двух интерфейсов кассира: старого и нового. Опыт внедренцев показывает, что патчи зачастую исправляли логику только в старом интерфейсе, в то время как «Новое РМК» продолжало выдавать ошибку (особенно для молочной продукции).
Если патч установлен, но проблема сохраняется, выполним следующие шаги:
В старом РМК механизмы добавления товара в таблицу более жестко контролируют тип номенклатуры, что позволяет избежать ошибочного суммирования количества.
Если вы занимаетесь поддержкой кастомизированной конфигурации, рассмотрим, какие модули отвечают за это поведение. Основная логика добавления маркированного товара в корзину сосредоточена в модуле формы РМК или в общем модуле РМКСервер.
Проанализируем примерный фрагмент кода, который должен отвечать за разделение строк. В правильной реализации условие должно выглядеть следующим образом:
// Проверяем, является ли товар маркированным
Если ДанныеНоменклатуры.ЭтоМаркированныйТовар Тогда
// Для маркированного товара всегда создаем новую строку
ПараметрыДобавления.ВставлятьНовуюСтроку = Истина;
Иначе
// Для обычного товара ищем дубли для суммирования
ПараметрыДобавления.ВставлятьНовуюСтроку = Ложь;
КонецЕсли;
Если в вашем коде поиск дублей (функция типа НайтиСтроки()) происходит до проверки типа номенклатуры на признак маркировки (АлкогольнаяПродукция, МолочнаяПродукция), это и вызывает ошибку. Система находит существующую строку с той же ссылкой на Номенклатура и просто делает Строка.Количество = Строка.Количество + 1, игнорируя данные КодМаркировки.
Проблема с суммированием часто обостряется при переходе на формат фискальных данных ФФД 1.2. Для корректной работы с молочной продукцией и водой необходимо убедиться, что:
Выясним причину, почему даже в новых релизах (2.3.13.30) проблема могла сохраняться. Зачастую это связано с тем, что в справочнике Штрихкоды упаковок и товаров накапливаются некорректные связи. Если система считает, что вы сканируете один и тот же код (хотя марки разные), она будет блокировать ввод. Рекомендуется проверить содержимое этого справочника на наличие дублей.
Подводя итог, можно составить следующий чек-лист для исправления ошибки невозможности пробития более одной марки:
EF_00_00476249 в информационной базе или на сайте поддержки.Совместными усилиями программиста и администратора системы данные шаги позволяют полностью устранить проблему «залипания» строк и обеспечить стабильную работу кассового узла при продаже любого количества маркированной продукции в одном чеке.