Как настроить пробитие чеков по свободной цене в 1С:Розница 2.2 с сохранением товарного учета

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

В процессе автоматизации розничной торговли часто возникает специфическая задача: необходимо вести детальный количественный и стоимостный учет в программе 1С, но при этом выводить в кассовый чек и передавать в ОФД не конкретные названия товаров, а обобщенное наименование, например, "Товар по свободной цене". В данной статье мы разберем, как реализовать этот механизм в программе 1С:Розница 2.2, проанализируем техническую сторону вопроса и оценим юридические риски такой настройки.

Анализ проблемы: учет против печати

Рассмотрим классическую ситуацию. Владелец магазина хочет видеть в отчетах 1С, сколько именно единиц "Молока 3.2%" или "Хлеба Бородинского" было продано, чтобы вовремя делать заказы поставщикам. Однако по разным причинам (например, для упрощения работы с кассой или по привычке) требуется, чтобы на чеке печаталась только сумма и общая фраза. Проблема заключается в том, что по умолчанию 1С передает в драйвер кассового аппарата именно то наименование, которое указано в карточке номенклатуры.

Проанализируем основные способы решения этой задачи, которые обсуждались экспертами, и выясним, почему стандартные методы "в лоб" часто не подходят.

Способ 1. Изменение наименования в справочнике (не рекомендуется)

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

  1. Потеря информативности: Во всех внутренних документах (Поступление товаров, Списание, Пересчет товаров) вместо реальных названий вы будете видеть бесконечный список "Товаров по свободной цене".
  2. Невозможность инвентаризации: Провести сверку остатков станет практически невозможно, так как вы не сможете отличить один товар от другого в печатных формах описи.

Способ 2. Использование механизма расширений (рекомендуемый технический метод)

Для того чтобы оставить учет нормальным, а на печать отправлять "заглушку", нам потребуется вмешаться в процесс формирования XML-пакета, который 1С отправляет на фискальный регистратор. Разберем этот процесс по шагам.

В современных конфигурациях 1С, включая "Розницу 2.2", работа с оборудованием строится на базе БПО (Библиотеки подключаемого оборудования). Когда кассир нажимает кнопку "Пробить чек", программа собирает данные о товарах в массив структур и преобразует его в XML-текст. Посмотрим на примерную структуру того, что уходит на кассу:


// Фрагмент XML, передаваемый драйверу ККТ
<Items>
    <Item Name="Товар по свободной цене" Quantity="1" Price="100" Amount="100" Tax="None" />
</Items>

Чтобы подменить значение в атрибуте Name, не меняя саму конфигурацию, лучше всего использовать Расширение конфигурации. Рассмотрим логику, которую необходимо реализовать программисту:

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

Рассмотрим пример кода, который может быть размещен в расширении для подмены наименования перед отправкой на ФР:


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

Такой подход позволяет сохранить Ссылку на реальный товар в базе, но на фискальный накопитель уйдет именно то название, которое вы жестко прописали в коде.

Способ 3. Использование автономных ККМ

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

Важное предупреждение: юридический аспект (54-ФЗ)

Выясним причину, по которой 1С не реализовала "пробитие по свободной цене" как стандартную галочку в настройках. Ответ кроется в законодательстве Российской Федерации.

Согласно Федеральному закону № 54-ФЗ (статья 4.7), кассовый чек должен содержать обязательные реквизиты, среди которых числится "наименование товаров, работ, услуг". Более того, позиция ФНС заключается в том, что наименование должно быть конкретным, позволяющим однозначно идентифицировать купленный товар.

Ключевые моменты закона:

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

Резюме

Мы рассмотрели техническую возможность реализации пробития чеков по свободной цене в 1С:Розница 2.2. Наиболее корректный с точки зрения программирования способ — использование расширений для модификации XML-пакета данных, отправляемого на ККТ. Это позволяет сохранить целостность складского учета.

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

← На главную