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