В розничной торговле табачной продукцией часто возникает ситуация, когда под одним и тем же штрихкодом EAN-13 поступают пачки сигарет из разных партий с разной максимальной розничной ценой (МРЦ). По закону продавец обязан реализовать каждую пачку строго по той цене, которая на ней указана (и не выше этой величины). Однако пользователи программы «1С:Розница 2.3» столкнулись с неприятной проблемой: при сканировании в один чек двух одинаковых пачек с разной ценой программа автоматически объединяет их в одну строку, устанавливая для обеих единую цену (либо меньшую, либо большую). При этом снятие флажка «Объединять одинаковые позиции» в настройках РМК никак не решает эту проблему.
В этой статье мы подробно разберем, почему программа ведет себя подобным образом, какие законодательные риски это несет и как настроить систему для корректных продаж без штрафов.
В релизах линейки «1С:Розница» версии 2.3 разработчики целенаправленно изменили логику работы Рабочего места кассира (РМК) для маркированных товаров. Эта ситуация зафиксирована в официальном баг-трекере 1С под кодом ошибки 00-00264742.
Логика разработчиков такова: маркированный товар должен по умолчанию группироваться в одну строку с увеличением количества, чтобы не перегружать печатную форму чека. Настройка «Объединять одинаковые позиции» теперь влияет исключительно на обычные (немаркированные) товары. Для всей маркированной продукции (табак, обувь, одежда) данное правило игнорируется, и система всегда пытается выполнить свертку строк.
Однако для табака это решение оказалось критичным, так как одна и та же номенклатурная позиция с одним штрихкодом может иметь абсолютно разные розничные цены из-за изменения МРЦ производителем. Продажа пачки с МРЦ 138 рублей по цене 143 рубля является прямым нарушением статьи 14.6 КоАП РФ (нарушение порядка ценообразования) и влечет за собой крупные штрафы как на кассира, так и на юридическое лицо.
Проанализируем три основных способа решения этой проблемы в зависимости от ваших технических возможностей.
Если вы хотите решить проблему стандартными средствами конфигурации без программирования и привлечения специалистов, нам придется задействовать механизм характеристик. Поскольку у сигарет разных партий одинаковый штрихкод, мы разделим их внутри базы с помощью индивидуальных характеристик.
Разберем этот процесс по шагам:
МРЦ 138 и МРЦ 143.EAN-13 к разным характеристикам одного товара.Как это будет работать на кассе:
При сканировании штрихкода пачки сигарет на кассе программа определит, что этому коду сопоставлено несколько характеристик. На экране РМК появится всплывающее окно с предложением выбрать конкретную характеристику (в нашем случае — цену). Кассир смотрит на пачку, выбирает строку с нужным МРЦ, и позиция добавляется в чек. При сканировании второй пачки с другим МРЦ кассир выбирает другую характеристику. Так как характеристики разные, система не сможет объединить эти строки в одну, и в чеке корректно отобразятся две разные позиции с правильными ценами.
Минус метода: Повышается нагрузка на кассира и возрастает риск человеческого фактора (кассир может случайно выбрать не ту цену на экране).
Чтобы исключить ошибки кассира, мы можем автоматизировать процесс распознавания МРЦ. В коде маркировки DataMatrix, который нанесен на каждую пачку сигарет, зашифрована вся информация о товаре, включая его максимальную розничную цену (она содержится в структуре кода маркировки в виде отдельной группы данных).
Специалисты и сторонние разработчики создают специальные расширения конфигурации (например, расширения для автоподбора характеристик табачной продукции по данным маркировки). Механизм их работы выглядит следующим образом:
DataMatrix на пачке сигарет.Рассмотрим упрощенный пример кода, который может использоваться в подобных расширениях для анализа кода маркировки и поиска МРЦ:
// Функция анализирует код маркировки табачной продукции
Функция ОпределитьМРЦИзКодаМаркировки(Знач КодМаркировки) Экспорт
// В структуре DataMatrix табака МРЦ зашифрована в определенных символах
// Обычно это 4 символа после структуры GTIN и серийного номера
Если СтрДлина(КодМаркировки) >= 29 Тогда
СтрокаМРЦ = Сред(КодМаркировки, 18, 4);
Попытка
ЗначениеМРЦ = Число(СтрокаМРЦ) / 100; // перевод в рубли
Возврат ЗначениеМРЦ;
Исключение
Возврат 0;
КонецПопытки;
КонецЕсли;
Возврат 0;
КонецФункции
Этот способ является наиболее предпочтительным для стабильной работы кассиров на старых релизах, так как полностью исключает ручной выбор.
Если вы устали от постоянных доработок и использования сторонних расширений в линейке 2.3, оптимальным решением станет переход на актуальные конфигурации на платформе 3.0 (например, «1С:Розница 3.0», «1С:УНФ») или подключение внешнего приложения «1С:РМК». Если в качестве новой системы вы выберете УНФ, для миграции накопленной истории можно использовать раздел с готовыми решениями по переносу данных в 1С:УНФ.
В современных решениях механизм работы с табачной продукцией был полностью переработан с учетом требований законодательства и встроенного контроля цен:
Контролировать единую минимальную розничную цену. Программа сама заблокирует продажу, если цена не соответствует ограничениям закона, и автоматически разделит позиции в чеке на разные строки, если у сканируемых пачек различается зашифрованная цена МРЦ.В ходе обсуждения пользователи часто задают вопрос: как вести себя с весовым товаром, если он тоже объединяется в одну строку, а покупатель на кассе вдруг решил отказаться от части позиций?
В случае с весовым товаром (если это не маркированная продукция) настройка Объединять одинаковые позиции в «1С:Розница 2.3» работает корректно. Если вы снимете этот флаг, то при последовательном взвешивании и добавлении позиций они будут падать в чек разными строками. Если же строки все равно объединяются, проанализируйте настройки вашего шаблона чека и параметры торгового оборудования — возможно, свертка происходит на уровне драйвера самой онлайн-кассы.
Подводя итоги, мы рекомендуем следующий план действий для решения проблемы объединения строк при продаже табака:
DataMatrix.