В процессе сопровождения старых конфигураций, таких как 1С:Управление торговлей 10.3, разработчики часто сталкиваются с дилеммой: в справочнике подключаемого оборудования присутствуют два похожих типа устройств — Фискальный регистратор (ФР) и ККТ с передачей данных. На первый взгляд, это одно и то же физическое устройство (например, АТОЛ или Штрих-М), однако логика работы программы с ними кардинально различается. Разберем подробно, почему возникло это разделение, к каким техническим последствиям оно приводит и как решить проблему отсутствия номенклатуры в чеках.
Для понимания сути проблемы нам необходимо проанализировать историю изменений в российском законодательстве, а именно внедрение 54-ФЗ. До реформы кассовой техники устройства назывались именно "фискальными регистраторами". Их основной задачей была запись итоговых сумм продаж в блок ЭКЛЗ (Электронная контрольная лента защищенная). Раз в год этот блок физически извлекался и передавался в налоговую инспекцию.
Современная ККТ с передачей данных (онлайн-касса) работает иначе. Вместо ЭКЛЗ используется ФН (Фискальный накопитель), который не просто хранит данные, но и шифрует их для немедленной передачи Оператору фискальных данных (ОФД). Рассмотрим ключевые отличия в логике 1С:
Выясним причину, по которой в режиме ФР в чеке отображается только итоговая сумма. Проблема кроется в методах, которые вызываются в коде 1С. В старых подсистемах торгового оборудования (ТО) для ФР основной командой была ПечатьФискальнойСтроки(). Она принимала минимум параметров: текст строки (который часто игнорировался или обрезался драйвером), цену и количество.
В современных реалиях, согласно статье 4.7 закона 54-ФЗ, наименование товара является обязательным реквизитом чека. В новых объектах 1С типа ККТ с передачей данных используется объект ТаблицаТоваров. Проанализируем примерную логику формирования данных в современном механизме:
// Пример формирования таблицы товаров для ККТ с передачей данных
ТаблицаТоваров = Новый ТаблицаЗначений;
ТаблицаТоваров.Колонки.Добавить("Наименование");
ТаблицаТоваров.Колонки.Добавить("Количество");
ТаблицаТоваров.Колонки.Добавить("Цена");
ТаблицаТоваров.Колонки.Добавить("СтавкаНДС");
ТаблицаТоваров.Колонки.Добавить("Сумма");
Для Каждого СтрокаТЧ Из ДокументОбъект.Товары Цикл
НоваяСтрока = ТаблицаТоваров.Добавить();
НоваяСтрока.Наименование = СтрокаТЧ.Номенклатура.НаименованиеПолное;
НоваяСтрока.Количество = СтрокаТЧ.Количество;
НоваяСтрока.Цена = СтрокаТЧ.Цена;
// ... заполнение остальных реквизитов
КонецЦикла;
// Вызов метода печати через БПО
МенеджерОборудования.ВыполнитьКоманду("ПечатьЧека", ПараметрыЧека, ТаблицаТоваров);
В режиме "Фискальный регистратор" старая подсистема 1С зачастую просто не формирует эту таблицу или использует упрощенные методы драйвера, которые "схлопывают" все позиции до одной суммы "Секция 1". Именно поэтому, даже если ваша физическая касса современная, при выборе неправильного типа оборудования в 1С вы получите "пустой" в плане номенклатуры чек.
Посмотрим на ситуацию, описанную пользователями 1С:Управление торговлей 10.3. При печати из документа Реализация товаров и услуг (РТиУ) номенклатура выводится, а при печати из Приходного кассового ордера (ПКО) — нет. Рассмотрим, почему так происходит:
Документ РТиУ по своей сути является товарным — в нем есть список товаров. Когда вы нажимаете "Чек", программа берет данные напрямую из табличной части "Товары". Документ ПКО — финансовый. В нем есть только общая сумма. В старых версиях УТ 10.3 механизм печати чека из ПКО был настроен на передачу одной лишь суммы документа.
Чтобы в современном режиме ККТ при печати из ПКО выводилась номенклатура, 1С должна выполнить поиск Документа-основания. Если ПКО выписан на основании реализации, программный код "заглядывает" в эту реализацию, собирает товары и отправляет их на кассу. В режиме "ФР" этот сложный механизм поиска связей часто отсутствует или работает некорректно.
Важно понимать, что использование режима "Фискальный регистратор" для работы по 54-ФЗ недопустимо. Даже если касса физически отправляет данные в ОФД, чек может быть признан недействительным по следующим причинам:
Если ваша конфигурация сильно доработана (кастомизирована) и обновление до типового релиза невозможно, рассмотрим пути решения:
Проанализировав ситуацию, можно сделать вывод: разделение на ФР и ККТ в 1С — это не просто настройка, а водораздел между старым и новым законодательством. Для корректной работы, исключения штрафов и вывода номенклатуры в чеки необходимо использовать исключительно режим ККТ с передачей данных, обеспечив актуальность программного кода подсистемы торгового оборудования.