Почему 1С:Розница не дает пробить больше одной марки по одной номенклатуре и как это исправить

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

В работе с конфигурацией 1С:Розница (начиная с релиза 2.3.3.25 и вплоть до некоторых сборок ветки 2.3.13) пользователи часто сталкиваются с критической проблемой: при попытке пробить вторую и последующие единицы одного и того же маркированного товара (алкоголь, молочная продукция, упакованная вода) система выдает ошибку или некорректно суммирует товар в одну строку. В этой ситуации кассовый аппарат не может фискализировать чек, так как количество товара не соответствует количеству переданных кодов маркировки.

Разберем подробно причины возникновения этой ошибки, проанализируем техническую сторону вопроса и рассмотрим все доступные способы решения — от установки официальных патчей до изменения настроек рабочего места кассира (РМК).

Суть проблемы и механизм возникновения ошибки

Проанализируем ситуацию: кассир сканирует первую бутылку крепкого алкоголя. Товар успешно добавляется в список. При сканировании второй бутылки той же самой номенклатуры (с другой акцизной маркой) программа вместо создания новой строки прибавляет единицу к количеству в уже существующей строке. В итоге мы получаем одну строку с количеством 2, но привязанной к ней считается только одна марка (или система вовсе блокирует добавление).

Основная причина кроется в алгоритме свертки строк. Для обычного товара (хлеб, пакет, спички) суммирование в одну строку является стандартным поведением РМК для экономии места в чеке. Однако для маркированной продукции действует правило: одна марка — одна строка. В проблемных релизах механизм проверки дублей в корзине РМК срабатывал раньше, чем алгоритм обработки маркировки, игнорируя уникальность кодов.

Шаг 1: Проверка настроек РМК

Прежде чем переходить к обновлению или написанию кода, проверим базовые настройки системы. Выясним, включена ли опция объединения позиций. Для этого проделаем следующие действия:

  1. Перейдем в раздел Продажи — Настройки РМК.
  2. Если используется «Новое РМК», найдем раздел Формирование чека.
  3. Проверим состояние флага Объединять одинаковые позиции.

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

Шаг 2: Установка официального исправления (патча)

Фирма «1С» признала данную проблему ошибкой и зарегистрировала её под номером 00-00476249. Описание гласит: «При сканировании одинаковой маркируемой продукции в Чек ККМ / РМК не добавляются последующие позиции».

Для исправления ситуации без полного обновления конфигурации рассмотрим процесс установки патча:

  1. Зайдем в раздел Администрирование — Обслуживание — Обновление программы.
  2. Перейдем по ссылке Установленные исправления (патчи).
  3. Нажмем кнопку Установить исправление и выберем файл патча EF_00_00476249 (его можно скачать с официального портала техподдержки users.v8.1c.ru).

После установки патча необходимо перезапустить сеанс работы пользователя. Данное исправление корректирует логику функции ОбъединитьСтрокиСПохожимТоваром(), заставляя систему принудительно разделять строки, если товар является маркированным.

Шаг 3: Переход на «Старое РМК» как временное решение

Интересной особенностью ветки 2.3 является наличие двух интерфейсов кассира: старого и нового. Опыт внедренцев показывает, что патчи зачастую исправляли логику только в старом интерфейсе, в то время как «Новое РМК» продолжало выдавать ошибку (особенно для молочной продукции).

Если патч установлен, но проблема сохраняется, выполним следующие шаги:

  1. В настройках РМК переключим интерфейс на Старое РМК.
  2. Проверим пробитие нескольких марок одной номенклатуры.

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

Технический анализ для программистов: где искать в коде

Если вы занимаетесь поддержкой кастомизированной конфигурации, рассмотрим, какие модули отвечают за это поведение. Основная логика добавления маркированного товара в корзину сосредоточена в модуле формы РМК или в общем модуле РМКСервер.

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


// Проверяем, является ли товар маркированным
Если ДанныеНоменклатуры.ЭтоМаркированныйТовар Тогда
    // Для маркированного товара всегда создаем новую строку
    ПараметрыДобавления.ВставлятьНовуюСтроку = Истина;
Иначе
    // Для обычного товара ищем дубли для суммирования
    ПараметрыДобавления.ВставлятьНовуюСтроку = Ложь;
КонецЕсли;

Если в вашем коде поиск дублей (функция типа НайтиСтроки()) происходит до проверки типа номенклатуры на признак маркировки (АлкогольнаяПродукция, МолочнаяПродукция), это и вызывает ошибку. Система находит существующую строку с той же ссылкой на Номенклатура и просто делает Строка.Количество = Строка.Количество + 1, игнорируя данные КодМаркировки.

Шаг 4: Решение для молочной продукции и ФФД 1.2

Проблема с суммированием часто обостряется при переходе на формат фискальных данных ФФД 1.2. Для корректной работы с молочной продукцией и водой необходимо убедиться, что:

Выясним причину, почему даже в новых релизах (2.3.13.30) проблема могла сохраняться. Зачастую это связано с тем, что в справочнике Штрихкоды упаковок и товаров накапливаются некорректные связи. Если система считает, что вы сканируете один и тот же код (хотя марки разные), она будет блокировать ввод. Рекомендуется проверить содержимое этого справочника на наличие дублей.

Резюме и рекомендации

Подводя итог, можно составить следующий чек-лист для исправления ошибки невозможности пробития более одной марки:

  1. Проверить версию: Если релиз 2.3.3.25 — обязательно установить патчи или обновиться.
  2. Применить исправление: Найти патч EF_00_00476249 в информационной базе или на сайте поддержки.
  3. Настроить РМК: Временно отключить «Объединять одинаковые позиции» и, при необходимости, перейти на использование старого интерфейса РМК.
  4. Обновить драйверы: Убедиться, что драйвер ККТ поддерживает работу с маркировкой в режиме ФФД 1.2 и корректно передает тег 2108.

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

← На главную