Как реализовать продажу по УСН и ЕНВД (ПСН) в одном чеке на одной кассе в 1С:Управление торговлей 11?

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

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

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

Выясняем причину: почему типовая УТ 11 не делит чеки по СНО?

Разработчики фирмы 1С позиционируют 1С:Управление торговлей в первую очередь как бэк-офисную систему оптового учета. В связи с этим глубокая автоматизация розничных процессов в ней продвигается медленнее, чем в специализированных решениях. Архитектурная проблема разделения продаж в УТ 11 кроется в следующем:

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

Для решения этой задачи у нас есть три основных пути: использование обходного штатного метода (двух складов), интеграция с внешним кассовым модулем от 1С или доработка конфигурации (написание собственного кода разделения чеков).

Вариант №1. Обходной штатный путь (Метод двух складов)

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

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

Минус метода: Данная схема крайне неудобна для оперативной розничной торговли. Кассир в РМК не может быстро переключаться между складами, сканируя товары в один список. Ему придется создавать две разные продажи, что замедляет обслуживание покупателей и приводит к очередям.

Вариант №2. Интеграция с автономным приложением «1С:РМК»

Если вы используете современную версию 1С:Управление торговлей 11.5, фирма 1С предлагает современное и полностью поддерживаемое решение — интеграцию с конфигурацией 1С:РМК (отдельное приложение для кассового узла).

Схема работы в этом случае выглядит так:

Вариант №3. Написание собственного кода разделения чеков (Доработка УТ 11)

Если внедрение дополнительной базы данных нежелательно, а кассиры должны работать непосредственно в интерфейсе РМК конфигурации УТ 11, единственным выходом остается кастомизация логики проведения и печати чеков. Разберем по шагам, как реализовать этот алгоритм с помощью механизма расширений.

Для автоматического разбиения нам потребуется:

  1. Добавить признак принадлежности к СНО для номенклатуры (это может быть дополнительный реквизит, привязка к виду номенклатуры или группе финансового учета).
  2. Модернизировать обработку проведения и печати чека в модуле формы РМК или в обработке обслуживания торгового оборудования.

Рассмотрим концептуальный пример кода, который перехватывает процедуру оплаты в РМК и разбивает исходную таблицу товаров на две части перед отправкой на фискализацию:


// Функция производит деление корзины товаров на две коллекции по признаку СНО
Процедура РазбитьТоварыПоСистемамНалогообложения(ТаблицаТоваров, ТаблицаУСН, ТаблицаПатент) Экспорт
    
    ТаблицаУСН = ТаблицаТоваров.СкопироватьКолонки();
    ТаблицаПатент = ТаблицаТоваров.СкопироватьКолонки();
    
    Для Каждого СтрокаТовара Из ТаблицаТоваров Цикл
        // Проверяем признак СНО у номенклатуры
        Если СтрокаТовара.Номенклатура.ДополнительныйРеквизитСНО = ПредопределенноеЗначение("Перечисление.ТипыСистемНалогообложения.Упрощенная") Тогда
            ЗаполнитьЗначенияСвойств(ТаблицаУСН.Добавить(), СтрокаТовара);
        Иначе
            // Все сопутствующие товары и аксессуары относим к патенту (или ЕНВД)
            ЗаполнитьЗначенияСвойств(ТаблицаПатент.Добавить(), СтрокаТовара);
        EndIf;
    КонецЦикла;

КонецПроцедуры

После разделения коллекции товаров в момент совершения транзакции оплаты система должна сформировать не один документ Чек ККМ, а два отдельных документа в транзакции:


// Пример логики создания двух чеков ККМ вместо одного
Процедура ПробитьРаздельныеЧеки(ТаблицаТоваров, ПараметрыОплаты, КассаККМ)
    
    ТаблицаУСН = Новый ТаблицаЗначений;
    ТаблицаПатент = Новый ТаблицаЗначений;
    
    РазбитьТоварыПоСистемамНалогообложения(ТаблицаТоваров, ТаблицаУСН, ТаблицаПатент);
    
    // Пробиваем первый чек по УСН, если есть товары
    Если ТаблицаУСН.Количество() > 0 Тогда
        ЧекУСН = Документы.ЧекККМ.СоздатьДокумент();
        ЧекУСН.Дата = ТекущаяДата();
        ЧекУСН.КассаККМ = КассаККМ;
        ЧекУСН.Организация = КассаККМ.Владелец;
        ЧекУСН.Налогообложение = Перечисления.ТипыСистемНалогообложения.Упрощенная;
        ЧекУСН.Товары.Загрузить(ТаблицаУСН);
        // Заполняем параметры оплаты пропорционально или относим на этот чек
        ЧекУСН.Записать(РежимЗаписиДокумента.Проведение);
        
        // Вызов штатного механизма печати на фискальном регистраторе
        МенеджерОборудованияКлиент.ПробитьЧекНаККТ(ЧекУСН);
    КонецЕсли;
    
    // Пробиваем второй чек по Патенту
    Если ТаблицаПатент.Количество() > 0 Тогда
        ЧекПатент = Документы.ЧекККМ.СоздатьДокумент();
        ЧекПатент.Дата = ТекущаяДата();
        ЧекПатент.КассаККМ = КассаККМ;
        ЧекПатент.Организация = КассаККМ.Владелец;
        ЧекПатент.Налогообложение = Перечисления.ТипыСистемНалогообложения.Патент;
        ЧекПатент.Товары.Загрузить(ТаблицаПатент);
        ЧекПатент.Записать(РежимЗаписиДокумента.Проведение);
        
        // Вызов штатного механизма печати на фискальном регистраторе
        МенеджерОборудованияКлиент.ПробитьЧекНаККТ(ЧекПатент);
    КонецЕсли;

КонецПроцедуры

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

Особенности закрытия кассовой смены

При закрытии кассовой смены в УТ 11 штатная обработка собирает все проведенные документы Чек ККМ за текущий день и формирует сводный документ Отчет о розничных продажах (ОРП).

Если вы реализовали доработку по созданию раздельных чеков, то при закрытии смены система автоматически создаст два документа Отчет о розничных продажах: один с установленным флагом ЕНВД/Патент, другой — по стандартной УСН. Это позволит в дальнейшем без ошибок выгрузить данные в 1С:Бухгалтерия предприятием (БП 3.0) для корректного ведения книги учета доходов и расходов (КУДиР) и распределения затрат.

Для облегчения процесса разработки вы также можете воспользоваться готовыми решениями, публикуемыми разработчиками на специализированных порталах (например, использовать наработки расширения из публикации Инфостарт № 1259956, адаптировав его под релиз вашей конфигурации УТ 11).

← На главную