В процессе автоматизации розничной торговли часто возникает специфическая задача: необходимо вести детальный количественный и стоимостный учет в программе 1С, но при этом выводить в кассовый чек и передавать в ОФД не конкретные названия товаров, а обобщенное наименование, например, "Товар по свободной цене". В данной статье мы разберем, как реализовать этот механизм в программе 1С:Розница 2.2, проанализируем техническую сторону вопроса и оценим юридические риски такой настройки.
Рассмотрим классическую ситуацию. Владелец магазина хочет видеть в отчетах 1С, сколько именно единиц "Молока 3.2%" или "Хлеба Бородинского" было продано, чтобы вовремя делать заказы поставщикам. Однако по разным причинам (например, для упрощения работы с кассой или по привычке) требуется, чтобы на чеке печаталась только сумма и общая фраза. Проблема заключается в том, что по умолчанию 1С передает в драйвер кассового аппарата именно то наименование, которое указано в карточке номенклатуры.
Проанализируем основные способы решения этой задачи, которые обсуждались экспертами, и выясним, почему стандартные методы "в лоб" часто не подходят.
Самый простой на первый взгляд способ — зайти в карточку товара и изменить "Наименование для печати" (или полное наименование) на нужную фразу. Рассмотрим, почему это плохое решение:
Для того чтобы оставить учет нормальным, а на печать отправлять "заглушку", нам потребуется вмешаться в процесс формирования XML-пакета, который 1С отправляет на фискальный регистратор. Разберем этот процесс по шагам.
В современных конфигурациях 1С, включая "Розницу 2.2", работа с оборудованием строится на базе БПО (Библиотеки подключаемого оборудования). Когда кассир нажимает кнопку "Пробить чек", программа собирает данные о товарах в массив структур и преобразует его в XML-текст. Посмотрим на примерную структуру того, что уходит на кассу:
// Фрагмент XML, передаваемый драйверу ККТ
<Items>
<Item Name="Товар по свободной цене" Quantity="1" Price="100" Amount="100" Tax="None" />
</Items>
Чтобы подменить значение в атрибуте Name, не меняя саму конфигурацию, лучше всего использовать Расширение конфигурации. Рассмотрим логику, которую необходимо реализовать программисту:
ЧекККМ или специализированные методы в общем модуле МенеджерОборудованияВызовСервера.Наименование на фиксированную строку.Рассмотрим пример кода, который может быть размещен в расширении для подмены наименования перед отправкой на ФР:
&После("СформироватьТаблицуТоваровДляЧека")
Процедура Расш_СформироватьТаблицуТоваровДляЧека(ПараметрыЧека, ТаблицаТоваров)
Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
// Оставляем логику учета нетронутой, меняем только данные для печати
СтрокаТовара.Наименование = "Товар по свободной цене";
КонецЦикла;
КонецПроцедуры
Такой подход позволяет сохранить Ссылку на реальный товар в базе, но на фискальный накопитель уйдет именно то название, которое вы жестко прописали в коде.
Если вы не хотите менять программный код, существует организационное решение. Можно использовать фискальный регистратор в режиме "чекопечатающей машины" (если это позволяет закон в вашем случае) или использовать автономную кассу, не связанную с 1С. В этом случае кассир просто вбивает сумму на кассе вручную, а в 1С проводит документ для списания остатков. Однако это значительно замедляет работу и увеличивает риск ошибок ("человеческий фактор").
Выясним причину, по которой 1С не реализовала "пробитие по свободной цене" как стандартную галочку в настройках. Ответ кроется в законодательстве Российской Федерации.
Согласно Федеральному закону № 54-ФЗ (статья 4.7), кассовый чек должен содержать обязательные реквизиты, среди которых числится "наименование товаров, работ, услуг". Более того, позиция ФНС заключается в том, что наименование должно быть конкретным, позволяющим однозначно идентифицировать купленный товар.
Ключевые моменты закона:
Проанализируем ситуацию: если вы программно заставите 1С печатать "Товар по свободной цене", вы технически решите задачу, но фактически подставите бизнес под проверку налоговых органов. Современные системы ОФД автоматически анализируют чеки, и массовая продажа "товара" без уточнения позиции является прямым сигналом для выездной проверки.
Мы рассмотрели техническую возможность реализации пробития чеков по свободной цене в 1С:Розница 2.2. Наиболее корректный с точки зрения программирования способ — использование расширений для модификации XML-пакета данных, отправляемого на ККТ. Это позволяет сохранить целостность складского учета.
Однако мы настоятельно рекомендуем взвесить все риски. Поскольку закон прямо требует детализации чека, лучшим решением будет наведение порядка в справочнике номенклатуры и использование сканеров штрихкодов для быстрого подбора позиций. Это обеспечит и прозрачный учет, и полное соответствие требованиям законодательства.