При работе с торговым оборудованием в среде 1С программисты и системные администраторы часто сталкиваются со специфическими ошибками интеграции. Одна из наиболее распространенных и неприятных проблем — ошибка «Некорректная СНО» при попытке пробить фискальный чек. Особенно остро эта проблема проявляется на кассах семейства АТОЛ (например, АТОЛ 50Ф, 25Ф, 30Ф) с обновленными прошивками (включая версию 7020 и выше) в конфигурации 1С:Управление торговлей 11.4 при совмещении нескольких систем налогообложения (например, УСН и ЕНВД или патентной системы).
В этой статье мы подробно разберем, почему возникает данная ошибка, где в системе 1С и настройках ККТ кроются ее причины, и как пошагово решить эту проблему программными и административными методами.
---
Для начала выясним физическую природу ошибки. Согласно требованиям формата фискальных данных (ФФД 1.05 и ФФД 1.2), реквизит «Система налогообложения» (тег 1055) является строго обязательным для передачи в каждом фискальном документе. Если касса зарегистрирована только под одну СНО, то ККТ, как правило, автоматически подставляет ее при печати чека, даже если программа 1С передала пустой тег.
Однако ситуация кардинально меняется, если организация совмещает несколько налоговых режимов. В этом случае ККТ при получении команды на фискализацию ожидает от 1С точного указания, по какой именно СНО проводится данная конкретная операция продажи. Если 1С передает некорректный идентификатор СНО, передает его в неверном формате или не передает вовсе, кассовый аппарат мгновенно блокирует операцию и возвращает ошибку «Некорректная СНО».
Проанализируем основные причины сбоя:
---
Прежде чем переходить к коду или драйверам, проверим базовые настройки ведения учета в самой системе 1С. Для корректного разделения СНО при совмещении налоговых режимов должны быть правильно настроены три ключевых элемента:
1. Карточка Организации. Перейдем в карточку нашей организации и откроем историю изменения учетной политики. Убедимся, что там указана основная система налогообложения (например, УСН «Доходы минус расходы»).
2. Настройки Склада. Поскольку розничные продажи обычно привязаны к конкретным торговым точкам, именно в карточке склада определяется применение альтернативной СНО (в нашем примере — ЕНВД или патент). Перейдем в настройки розничного склада, найдем раздел особых режимов налогообложения и проверим, что для этого склада явно включено применение ЕНВД (или патента) и указаны корректные даты действия этой настройки.
3. Справочник «Кассы ККМ». Наша фискальная касса должна быть жестко привязана к розничному складу, на котором применяется соответствующий особый режим. Если чек бьется из документа «Чек ККМ», система определяет СНО именно по складу, привязанному к этой кассе.
Важное замечание: Если вы пытаетесь пробить чек не из специализированного рабочего места кассира (РМК), а, например, на основании документа «Реализация товаров и услуг» или «Приходный кассовый ордер», система 1С может по умолчанию попытаться взять СНО из общей учетной политики организации, проигнорировав настройки склада. Это приведет к конфликту СНО в кассе и документе.
---
Использование старой 9-й версии драйвера АТОЛ (DTO 9) часто становится непреодолимым препятствием. Рассмотрим, почему это происходит. Драйверы 9-й серии используют устаревшие механизмы взаимодействия с библиотекой подключаемого оборудования 1С (БПО). В результате тег TaxVariant, даже будучи заполненным в 1С, передается в драйвер в неподдерживаемом формате.
Рекомендуем выполнить переход на современную 10-ю версию драйвера (DTO 10):
---
Если вам срочно нужно возобновить продажи, а времени на переписывание кода конфигурации нет, можно применить надежный обходной путь — настроить СНО по умолчанию на уровне самой кассы. В этом случае, если ККТ получит от 1С пустой тег 1055, она не выдаст ошибку, а автоматически подставит выбранную СНО.
Разберем по шагам, как это сделать:
30).---
Если административные меры не помогли, нам придется заглянуть «под капот» конфигурации 1С и разобраться, как именно система формирует структуру параметров для ККТ. Проанализируем программную логику работы БПО.
При формировании XML-пакета для фискализации чека 1С обращается к общему модулю МенеджерОборудованияКлиентСервер и его функции ПараметрыОперацииФискализацииЧека(). Именно здесь заполняется структура данных, отправляемая в ККТ.
Посмотрим на пример функции, которая отвечает за сопоставление перечисления систем налогообложения в 1С с числовыми кодами для ККТ:
Функция ПолучитьКодТипаСистемыНалогообложенияККТ(СистемаНалогообложенияККТ) Экспорт
Если СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.УСНДоход") Тогда
СистемаНалогообложения = 1;
ИначеЕсли СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.УСНДоходРасход") Тогда
СистемаНалогообложения = 2;
ИначеЕсли СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.ЕНВД") Тогда
СистемаНалогообложения = 3;
ИначеЕсли СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.ЕСН") Тогда
СистемаНалогообложения = 4;
ИначеЕсли СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.Патент") Тогда
СистемаНалогообложения = 5;
Иначе
СистемаНалогообложения = 0; // Общая СНО
КонецЕсли;
Возврат СистемаНалогообложения;
КонецФункции
Выясним причину возможного расхождения кодов. Некоторые старые релизы драйверов АТОЛ и прошивок ККТ ожидали передачу СНО не в виде порядковых номеров от 0 до 5 (стандарт ФФД), а в виде битовой маски протокола АТОЛ:
1;2;4;8;16;32.Если при отладке в процедуре ПробитьЧек вы видите, что в параметр TaxVariant (или СистемаНалогообложения) передается корректная цифра 3 (для ЕНВД), но ККТ все равно возвращает ошибку некорректной СНО, попробуйте временно переопределить передаваемый код на битовую маску АТОЛ. В частности, для ЕНВД попробуйте передать значение 8, а для УСН «Доходы-расходы» — значение 4.
Для локализации проблемы вы можете использовать отладчик в общем модуле ПодключаемоеОборудованиеУниверсальныйДрайверКлиент в процедуре ФискализацияЧека. Проверьте структуру ДанныеЧека непосредственно перед вызовом метода драйвера. Если поле TaxVariant пустое или содержит непредусмотренное ККТ значение, внесите соответствующие корректировки в коде формирования параметров.
---
Мы детально изучили проблему некорректной СНО при совмещении налоговых режимов на кассах АТОЛ в УТ 11.4. Подведем краткий итог по методам решения:
ПолучитьКодТипаСистемыНалогообложенияККТ конфигурации 1С под требования битовых масок вашего протокола ККТ.