Как реализовать пробитие чеков с разными системами налогообложения в 1С:Управление торговлей

Программист 1С v8.3 (Управляемые формы) Налоговый учет Торговля и дистрибуция
← На главную

При ведении торговой деятельности предприниматели часто сталкиваются с необходимостью совмещения нескольких систем налогообложения (СНО). Например, основная деятельность может вестись на ОСНО, а розничные продажи определенных групп товаров — на Патентной системе (ПСН). Согласно требованиям Федерального закона № 54-ФЗ и форматам фискальных данных (ФФД), один фискальный чек может содержать информацию только об одной СНО. Это создает определенные технические сложности при оформлении продаж в программах 1С.

В данной статье мы разберем, как реализовать разделение чеков по СНО в популярных конфигурациях 1С:Управление торговлей 10.3 и 1С:Управление торговлей 11. Мы проанализируем законодательные требования, программные возможности и технические решения, необходимые для корректной работы кассового оборудования.

Законодательная база и технические ограничения

Для начала проанализируем ситуацию с точки зрения законодательства. В соответствии с ФФД, для каждого чека должен быть указан тег 1055 (Система налогообложения). Если в одном документе продажи (например, в «Реализации товаров и услуг») присутствуют позиции, относящиеся к разным налоговым режимам, кассовый аппарат не сможет пробить их одним документом. Фискальный регистратор просто выдаст ошибку, если программное обеспечение попытается передать несколько СНО в рамках одного фискального пакета.

Следовательно, задача программного обеспечения — разделить один логический список товаров на несколько физических чеков. Рассмотрим, как это реализовано в разных версиях 1С.

Реализация разделения СНО в 1С:Управление торговлей 11

В современных релизах конфигурации УТ 11 (начиная с 11.4.13 и выше) разработчики 1С внедрили штатные механизмы распределения выручки по СНО. Рассмотрим подробнее, как настроить систему для автоматического разделения:

  1. Настройка организации: В карточке организации необходимо указать все применяемые системы налогообложения в учетной политике.
  2. Привязка к складам или товарным категориям: В типовом решении разделение часто привязывается к складам. Каждому складу можно назначить свою СНО. Таким образом, при оформлении продажи из разных складов система будет понимать, какой налоговый режим применить.
  3. Рабочее место кассира (РМК): В актуальных версиях УТ 11 и 11.5 реализован механизм, который при пробитии чека анализирует номенклатуру. Если настроены правила распределения (например, через категории или группы финансового учета), система предложит пробить два чека последовательно.

Посмотрим на логику работы кода в подсистеме подключаемого оборудования. Программа собирает данные о товарах и проверяет их принадлежность к налоговым режимам. Если обнаруживается расхождение, формируется массив структур для печати нескольких документов.

Реализация в 1С:Управление торговлей 10.3 (Обычные формы)

Ситуация с УТ 10.3 значительно сложнее. Данная конфигурация базируется на обычных формах и находится на ограниченной поддержке. Штатного механизма «бесшовного» разделения одного документа на несколько чеков с разными СНО в ней нет. Рассмотрим, какие пути решения существуют:

Вариант 1: Использование разных документов

Это самый простой и надежный способ, не требующий вмешательства в код. Пользователю необходимо создавать две разные «Реализации» или два «Чек ККМ» для каждой СНО отдельно. Это неудобно для кассира, но гарантирует корректность учета без доработок.

Вариант 2: Доработка обработки обслуживания ККТ

Для автоматизации процесса потребуется вмешательство программиста. Нам необходимо изменить механизм формирования XML-пакета, который отправляется на драйвер кассы. Выясним причину, по которой старые драйверы не справляются: они часто игнорируют передачу тега 1055, используя СНО «по умолчанию», заданную в настройках кассы.

Проанализируем пример кода, который можно внедрить в процедуру печати чека для разделения табличной части:


// Пример логики разделения строк документа по СНО
ТаблицаСНО1 = ТаблицаТоваров.Скопировать();
ТаблицаСНО2 = ТаблицаТоваров.Скопировать();

// Удаляем лишние строки для каждого набора
Индекс = ТаблицаСНО1.Количество() - 1;
Пока Индекс >= 0 Цикл
    Если ТаблицаСНО1[Индекс].Номенклатура.СНО <> Перечисления.ТипыСистемНалогообложения.Общая Тогда
        ТаблицаСНО1.Удалить(Индекс);
    КонецЕсли;
    Индекс = Индекс - 1;
КонецЦикла;

// Аналогично для второй СНО
// Затем вызываем печать чека дважды с разными параметрами СНО

Важный момент: При такой доработке необходимо учитывать, что оплата (наличные или эквайринг) также должна быть распределена между этими чеками пропорционально сумме товаров. Это требует сложной логики в обработке закрытия чека.

Настройка драйверов и фискального регистратора

Прежде чем приступать к программным изменениям, необходимо убедиться, что сама касса готова к работе с несколькими СНО. Разберем шаги по настройке оборудования:

  1. Регистрация ККТ: При фискализации кассы через утилиту производителя (например, «Тест драйвера АТОЛ» или «Драйвер ШТРИХ-М») должны быть отмечены все системы налогообложения, которые планирует использовать организация. Если касса зарегистрирована только на ПСН, попытка пробить чек по ОСНО приведет к ошибке 0x66 (некорректная СНО).
  2. Обновление драйвера: Убедитесь, что в 1С используется драйвер версии не ниже 10.х для АТОЛ или 4.15 для ШТРИХ-М. Старые версии драйверов (8.х) плохо работают с передачей тега СНО из 1С.
  3. Тег 1055: В настройках оборудования в самой 1С (Администрирование -> Подключаемое оборудование) проверьте, установлена ли СНО по умолчанию. Если вы планируете программно передавать СНО, это поле должно позволять переопределение.

Использование внешних обработок

Как упоминалось на форумах, для УТ 10.3 существуют готовые платные решения и внешние обработки. Они перехватывают стандартный вызов печати чека и выполняют следующие действия:

Рассмотрим преимущества использования внешних обработок. Во-первых, это позволяет избежать снятия конфигурации с поддержки. Во-вторых, такие решения часто включают в себя расширенный функционал, например, возможность печати собственного шаблона чека или интеграцию с системами маркировки («Честный ЗНАК»), что критически важно для современных условий торговли.

Практические рекомендации для программиста

Если вы решили самостоятельно дорабатывать систему, обратите внимание на следующие нюансы:

Распределение скидок: Если в документе применяется общая скидка на весь чек, при разделении на два чека сумма скидки должна быть распределена математически точно до копейки, иначе общая сумма по двум чекам не совпадет с суммой документа в 1С.

Эквайринг: Это самая сложная часть. Если покупатель платит картой одну сумму за все товары, банк проводит одну транзакцию. При пробитии двух чеков вам придется «привязать» одну банковскую транзакцию к двум фискальным документам. Большинство современных драйверов позволяют пробивать чек с типом оплаты «Безналичными» без повторного инициирования связи с банковским терминалом.

Разберем пример структуры данных для передачи в драйвер:


ДанныеЧека = Новый Структура();
ДанныеЧека.Вставить("СистемаНалогообложения", СостояниеСНО); // Тег 1055
ДанныеЧека.Вставить("ПозицииЧека", СписокТоваровСНО1);
ДанныеЧека.Вставить("ТипыОплаты", ТаблицаОплат);

// Важно убедиться, что в ТаблицаОплат сумма соответствует сумме СписокТоваровСНО1

Заключение

Подводя итог, можно сказать, что решение проблемы разных СНО зависит от версии вашей программы. В 1С:Управление торговлей 11 достаточно правильно настроить учетную политику, склады и обновиться до актуального релиза. В 1С:Управление торговлей 10.3 придется либо использовать внешние платные модули, либо глубоко дорабатывать механизмы взаимодействия с драйвером ККТ.

Помните, что некорректное указание СНО в чеке является нарушением порядка применения ККТ и может повлечь административную ответственность. Поэтому после любых настроек обязательно пробьем тестовый чек и проверим его корректность через Личный кабинет ОФД или мобильное приложение ФНС «Проверка чеков».

← На главную