При использовании онлайн-касс в старых конфигурациях, таких как 1С:Управление торговлей 10.3 или УПП 1.3, пользователи часто сталкиваются с проблемой: одна организация ведет деятельность по нескольким системам налогообложения (например, ОСН и Патент, или ранее ЕНВД), но программа при печати чека всегда подставляет основную СНО из учетной политики. Разберем подробно, как реализовать механизм выбора и корректной передачи СНО в фискальный регистратор.
Прежде чем переходить к коду, проанализируем важный нормативный момент. Согласно 54-ФЗ и форматам фискальных документов (ФФД), в одном чеке может быть указана только одна система налогообложения. Это означает, что если в одном заказе клиента присутствуют товары, относящиеся к разным СНО, вы не сможете пробить их одним чеком. Программа должна либо запрещать такие продажи, либо автоматически разделять их на два отдельных фискальных документа.
Для корректной передачи СНО в кассу используется тег 1055. В 1С этот параметр передается через XML-структуру в драйвер под именем TaxVariant или TaxType.
Рассмотрим, как 1С формирует данные для кассы. В конфигурациях на обычных формах (УТ 10.3) за это отвечает механизм торгового оборудования. Система получает СНО организации и преобразует ее в цифровой код. Посмотрим на типовую функцию преобразования:
Функция ПолучитьКодТипаСистемыНалогообложенияККТ(СистемаНалогообложенияККТ) Экспорт
Если СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.УСНДоход") Тогда
СистемаНалогообложения = 1;
ИначеЕсли СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.УСНДоходРасход") Тогда
СистемаНалогообложения = 2;
ИначеЕсли СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.ЕНВД") Тогда
СистемаНалогообложения = 3;
ИначеЕсли СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.ЕСН") Тогда
СистемаНалогообложения = 4;
ИначеЕсли СистемаНалогообложенияККТ = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.Патент") Тогда
СистемаНалогообложения = 5;
Иначе
СистемаНалогообложения = 0; // Общая (ОСН)
КонецЕсли;
Возврат СистемаНалогообложения;
КонецФункции
Проблема заключается в том, что функция СистемаНалогообложения(Организация, Дата) обычно возвращает только одно значение, установленное в учетной политике на текущую дату. Чтобы печатать чеки по разным СНО, нам нужно вмешаться в процесс формирования XML.
Если ваша организация перешла на Патент, а в настройках 1С по-прежнему не удается выбрать нужную СНО или она не передается корректно, можно внести изменения в общий модуль МенеджерОборудованияКлиентСервер. Проанализируем ситуацию, когда СНО не выбрана в настройках, и мы хотим принудительно назначить Патент.
Найдем функцию СистемаНалогообложения и изменим логику возврата пустой ссылки:
// Было:
Иначе
Результат = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.ПустаяСсылка");
КонецЕсли;
// Стало:
Иначе
Результат = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложенияККТ.Патент");
КонецЕсли;
Этот метод подходит, если у вас всегда одна система, которую программа почему-то не видит. Если же систем действительно две, потребуется более сложная логика.
Выясним, по каким признакам мы можем разделить продажи. Для автоматизации процесса рассмотрим следующие критерии:
ПКО (Приходный кассовый ордер) всегда бьются по ЕНВД/Патенту, а чеки из документа Реализация товаров и услуг — по ОСН.Разберем наиболее гибкое решение: создание промежуточной формы перед отправкой данных в ККТ. Посмотрим, как это можно реализовать программно:
В документах ПКО, РКО или Чек ККМ, в процедуре печати чека, добавим вызов формы, где кассир может подтвердить или изменить СНО. Данные из этой формы должны попадать в параметр ДанныеЧека.
При формировании XML-структуры для библиотеки драйвера (например, SMDrvFR1CLib20.dll для Штрих-М), убедитесь, что параметр TaxVariant заполняется корректно:
Важно помнить, что настройки в 1С — это только половина дела. Физическое устройство также должно быть готово к работе с несколькими СНО. Проанализируем настройки ККТ:
Если вы решили изменять конфигурацию, наиболее надежным способом будет:
1. Добавить в перечисление ТипыСистемНалогообложенияККТ недостающие значения (если их нет).
2. В документах оплаты добавить реквизит СистемаНалогообложенияККТ.
3. В модуле формирования чека (обычно это обработки обслуживания ТОФискальныйРегистратор... или общие модули интеграции) обеспечить передачу этого реквизита в функцию формирования XML.
Важно: При работе с авансами (предоплатой) ситуация усложняется. Если клиент платит за товар, СНО которого еще неизвестна, рекомендуется использовать основную систему налогообложения организации, а корректировку делать уже в момент окончательного расчета (чека на "Полный расчет").