Как исправить ошибку в РМК 1С:Розница при продаже нескольких бутылок крепкого алкоголя после обновления?

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

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

Выясним причину: требования ФФД 1.2 и маркировка

Для начала проанализируем ситуацию с точки зрения нормативных требований. Основная причина ошибки кроется в переходе на формат фискальных данных (ФФД) 1.2. Согласно новым правилам, каждый экземпляр маркированного товара должен быть идентифицирован уникально. Крепкий алкоголь с федеральными специальными марками теперь приравнивается к продукции, требующей обязательной проверки кода маркировки.

Рассмотрим структуру чека. В нем присутствуют два критически важных реквизита:

  1. Тег 1162 (код товара) — содержит уникальный идентификатор конкретной единицы продукции (в данном случае — данные акцизной марки).
  2. Тег 1023 (количество предмета расчета) — указывает число продаваемых единиц.

Требование закона однозначно: если позиция чека содержит уникальный код товара, то значение количества в этой строке обязательно должно быть равно единице. Когда программа 1С пытается объединить ("схлопнуть") две разные бутылки в одну строку, потому что у них одинаковый артикул (SKU) и цена, она передает в драйвер ККТ количество "2", но при этом пытается прикрепить к этой строке несколько кодов маркировки. Кассовый аппарат, следуя логике ФФД 1.2, блокирует такую операцию и выдает ошибку.

Проблема автоматического объединения в 1С:Розница

Разберем, почему это происходит именно в 1С:Розница. В настройках программы существует опция "Объединять одинаковые товары". Казалось бы, достаточно просто снять эту галочку. Однако в релизах линейки 2.3.3.х была выявлена программная ошибка: механизм РМК игнорирует данную настройку для алкогольной продукции и продолжает суммировать позиции. Программа считает, что раз товар имеет один и тот же ВидНоменклатуры, его можно отобразить одной строкой для удобства кассира, но это вступает в конфликт с требованиями фискализации.

Решение 1: Официальные исправления (патчи) от 1С

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

  1. Перейдем в раздел АдминистрированиеОбслуживание.
  2. Откроем пункт Обновление программыУстановленные исправления (патчи).
  3. Нажмем Поиск и установка исправлений (требуется доступ к порталу ИТС).
  4. Ищем патчи, в описании которых указано: "Исправлена ошибка объединения строк с маркируемой продукцией в РМК". Обычно это патчи серии EF_00_xxxx.

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

Решение 2: Программная корректировка через расширение

Если официальный патч по каким-то причинам недоступен или не помогает, рассмотрим вариант исправления логики через механизм расширений. Нам необходимо вмешаться в процесс пересчета итогов табличной части, чтобы принудительно запретить некорректное заполнение штрихкодов или разделение позиций.

Проанализируем пример кода, который помогает обойти проблему "зависания" лишних данных в строке. Мы можем использовать перехват процедуры ПересчитатьИтогиТабличнойЧастиТовары. Рассмотрим пример реализации в расширении:


&НаКлиенте
&После("ПересчитатьИтогиТабличнойЧастиТовары")
Процедура Расш1_ПересчитатьИтогиТабличнойЧастиТовары(ОбнулитьСуммыОплат)
    
    // Получаем текущую строку, с которой работает кассир
    ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
    
    Если ТекущаяСтрока = Неопределено Тогда
        Возврат;
    КонецЕсли;

    Попытка
        // Проверяем вид номенклатуры
        _ВидНоменклатуры = СокрЛП(ТекущаяСтрока.ВидНоменклатуры);
        
        // Если это обычный товар (не маркированный явно в данной логике)
        // или если система ошибочно пытается привязать старый ШК к новой строке
        Если _ВидНоменклатуры = "Товар" Или _ВидНоменклатуры = "" Тогда
            // Принудительно очищаем штрихкод, чтобы избежать дублирования
            // и заставить систему воспринимать строку как уникальную единицу
            ТекущаяСтрока.Штрихкод = ""; 
        КонецЕсли;
    Исключение
        // Обработка исключений, если реквизиты недоступны
    КонецПопытки;

КонецПроцедуры

Данный код помогает в ситуациях, когда Штрихкод (тег 1162) некорректно наследуется или объединяется при добавлении новых позиций. Однако для полного решения проблемы разделения строк на уровне РМК может потребоваться более глубокая правка модуля РМКСервер или РМККлиент, где происходит само объединение строк по SKU.

Решение 3: Проверка настроек и НСИ

Иногда причина кроется в неверно настроенных справочниках. Проанализируем настройки номенклатуры:

  1. Зайдем в справочник Виды номенклатуры.
  2. Найдем вид, соответствующий крепкому алкоголю.
  3. Убедимся, что в поле Особенность учета выбрано значение Алкогольная продукция (с маркой), а не просто "Товар".
  4. Проверим, что в настройках РМК (ПродажиНастройки РМК) на закладке "Общие настройки" выключена опция "Объединять одинаковые товары с одинаковой ценой".

Если 1С видит товар как обычный (без признака маркировки), она будет пытаться его объединить. Правильная установка признака Алкогольная продукция (с маркой) заставляет драйвер ККТ требовать отдельную строку для каждой марки.

Решение 4: Обновление драйвера кассового аппарата

Выясним еще один важный технический аспект. Даже если 1С правильно передает данные в виде отдельных строк, драйвер кассового аппарата (например, Атол или Штрих-М) может иметь собственную логику оптимизации чека. Старые версии драйверов при получении нескольких одинаковых позиций могут пытаться "схлопнуть" их перед отправкой в фискальный накопитель.

Что необходимо сделать:

Временное решение для работы без правок кода

Если продажи стоят, а программиста нет рядом, рассмотрим "лайфхак", который позволит пробить чек без ошибки:

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

Резюме

Мы проанализировали проблему объединения маркированного алкоголя в 1С:Розница 2.3 и пришли к выводу, что это комплексная проблема, связанная с переходом на ФФД 1.2 и внутренними ошибками релиза. Для исправления ситуации рекомендуем в первую очередь установить официальные патчи 1С, проверить настройки видов номенклатуры и обновить драйверы ККТ. В крайнем случае используйте предложенный код расширения для корректировки поведения табличной части РМК.

← На главную