Почему в 1С:Розница 2.3.22.35 одинаковые позиции в чеке не объединяются в одну строку и как это исправить?

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

Рассмотрим распространенную проблему, с которой столкнулись многие пользователи конфигурации 1С:Розница после обновления на релиз 2.3.22.35. Суть проблемы заключается в том, что при печати фискального чека одинаковые товары (особенно алкогольная продукция и товары с маркировкой) перестали объединяться в одну строку, даже если в настройках РМК (Рабочего места кассира) установлен соответствующий флаг. Вместо аккуратной записи «Товар А — 5 шт.», мы получаем «километровые» чеки, где каждая единица товара выводится отдельной строкой.

Разберем детально причины такого поведения программы, проанализируем настройки драйвера торгового оборудования и выясним, как вернуть компактный вид чеков.

Диагностика проблемы

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

  1. Вы обновили конфигурацию до версии 2.3.22.35 (или близкой к ней).
  2. В настройках РМК установлена галочка «Объединять одинаковые позиции».
  3. При добавлении обычного товара (без марок) объединение работает корректно.
  4. При добавлении алкоголя или маркированного товара (например, 5 бутылок одной и той же водки) на фискальном регистраторе печатается 5 отдельных строк по 1 бутылке.

Многие администраторы первым делом обращаются к настройкам драйвера ККТ (например, Атол или Штрих-М). Однако стоит учитывать, что в данной версии системы принудительное дробление строк часто приводит к тому, что буфер чека переполняется после включения разрешительного режима, особенно на аппаратах ШТРИХ-М, из-за избытка передаваемой информации в каждой строке.

Почему настройки драйвера ККТ не помогают?

В драйверах кассовых аппаратов действительно существуют настройки, отвечающие за схлопывание позиций. Например, в драйвере Атол есть опция объединения позиций с одинаковым наименованием и ценой.

Однако драйвер может объединить позиции только в том случае, если учетная система (в нашем случае 1С:Розница) передает их как идентичные сущности или же передает одну позицию с количеством больше единицы. В ситуации с релизом 2.3.22.35 программа 1С намеренно дробит строки до отправки команды на драйвер. То есть, 1С посылает на кассу не команду «Напечатать: Водка, 5 шт», а последовательность команд:

Для драйвера ККТ это абсолютно разные операции, так как каждая строка содержит уникальный код маркировки. Физически объединить эти строки касса не может, так как получает их раздельно.

Истинная причина: Разрешительный режим и Маркировка

Проанализируем, почему разработчики изменили поведение системы. Корень проблемы кроется во внедрении Разрешительного режима работы с маркированным товаром. В новых версиях конфигурации кассовая программа должна в момент оформления продажи использовать рабочий механизм проверки разрешительного режима через площадки CDN и получать ответ о статусе товара от системы «Честный ЗНАК».

Чтобы этот процесс проходил без сбоев, крайне важно настроить автоматическое обновление токенов ИС МП, так как без актуальной авторизации проверка марок в РМК станет невозможной. Алгоритмы 1С были изменены так, чтобы каждая марка шла отдельной строкой для обеспечения жесткой привязки статуса проверки к конкретной единице товара. Это гарантирует, что если одна из пяти бутылок не пройдет проверку, касса сможет корректно обработать отказ именно по ней.

К сожалению, в релизе 2.3.22.35 реализация этого механизма привела к игнорированию настройки «Объединять позиции» для маркируемых товаров, даже если проверка прошла успешно для всех единиц.

Варианты решения проблемы

Разберем способы, как можно исправить ситуацию и сократить расход чековой ленты.

Способ 1: Обновление конфигурации (Рекомендуемый)

Фирма 1С оптимизировала механизм печати в последующих релизах (ветка 2.3.23.х и новее). Разработчики нашли баланс между требованием передавать уникальные коды маркировки и визуальным объединением строк.

  1. Сделайте полную резервную копию информационной базы.
  2. Обновите конфигурацию 1С:Розница до последнего актуального релиза.
  3. Обновите драйверы торгового оборудования до последних версий.
  4. Убедитесь, что в настройках РМК активен флаг объединения позиций.

Способ 2: Использование расширения конфигурации (Патч)

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

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

  1. Расширение анализирует таблицу товаров.
  2. Если обнаруживаются одинаковые позиции, оно группирует их.
  3. Для маркированных товаров создается структура, где количество указывается суммарное, а коды маркировки передаются списком (если драйвер и ФФД это позволяют).

Техническая реализация (для программистов)

Если вы планируете писать исправление самостоятельно, обратите внимание на Общие модули, связанные с формированием XML-пакета для ККТ. Вам необходимо найти место, где формируется массив строк ПозицииЧека.

Примерная логика исправления в коде (псевдокод):


// Вместо стандартного добавления строк, перебираем таблицу
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
    НайденнаяСтрока = НайтиВМассивеВывода(СтрокаТовара);
    
    Если НайденнаяСтрока <> Неопределено И МожноОбъединять(СтрокаТовара) Тогда
         // Увеличиваем количество и сумму
         НайденнаяСтрока.Количество = НайденнаяСтрока.Количество + СтрокаТовара.Количество;
         НайденнаяСтрока.Сумма = НайденнаяСтрока.Сумма + СтрокаТовара.Сумма;
         
         // Добавляем код маркировки в массив марок этой строки
         ДобавитьМаркуВМассив(НайденнаяСтрока, СтрокаТовара.Марка);
    Иначе
         НоваяСтрока = СоздатьСтрокуЧека(СтрокаТовара);
         МассивВывода.Добавить(НоваяСтрока);
    КонецЕсли;
КонецЦикла;

Заключение

Проблема «километровых чеков» в 1С:Розница 2.3.22.35 — это особенность реализации требований маркировки. Наиболее правильным способом решения является обновление конфигурации до актуальных версий. Если это невозможно, используйте специализированные расширения, внимательно следя за соблюдением формата передачи данных в ОФД.

← На главную