Как исключить сумму НДС из доходов УСН при оплате платежной картой в 1С:УПП 1.3?

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

В связи с изменениями в налоговом законодательстве (в частности, введением обязанности уплаты НДС для упрощенцев при определенных условиях с 2025 года или в рамках специфических региональных настроек), пользователи конфигурации 1С:Управление производственным предприятием (УПП 1.3) могут столкнуться с методологической проблемой. Система, работающая по кассовому методу для УСН, может автоматически включать всю сумму поступления от покупателя в графу "Доходы", игнорируя тот факт, что часть этой суммы является налогом на добавленную стоимость (НДС), который не должен учитываться в налогооблагаемой базе УСН.

Особенно остро эта проблема проявляется при операциях эквайринга — когда оплата поступает по платежным картам. Документ Платежное поручение входящее с видом операции "Поступление оплаты по платежным картам" формирует движения по регистру КУДиР (Книга учета доходов и расходов), занося туда полную сумму транзакции.

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

Суть проблемы и диагностика

Рассмотрим типичную цепочку документов в УПП:

  1. Реализация товаров и услуг — начислен доход и выделен НДС (например, 5%).
  2. Оплата от покупателя платежной картой — зафиксирован факт оплаты картой.
  3. Платежное поручение входящее — деньги фактически поступили на расчетный счет от банка-эквайера.

При проведении последнего документа система делает запись в регистр накопления КнигаУчетаДоходовИРасходов. Если конфигурация не адаптирована под новые реалии "УСН + НДС", она считает всю поступившую сумму доходом. Нам необходимо вмешаться в этот процесс и скорректировать суммы в регистре.

Программное решение через корректировку набора записей

Наиболее эффективным способом исправления логики проведения без изменения самого документа является перехват события записи движений регистра. Мы можем использовать расширение конфигурации (если версия платформы 8.3.14+ и режим совместимости позволяет) или внести изменения в модуль набора записей регистра.

Разберем алгоритм действий, предложенный специалистами.

Шаг 1. Определение точки входа

Нам необходимо внести изменения в процедуру ПередЗаписью модуля набора записей регистра накопления КнигаУчетаДоходовИРасходов (раздел I). В расширении мы будем использовать аннотацию &Вместо("ПередЗаписью") или &После("ПередЗаписью"), но для полного контроля лучше использовать подход с изменением коллекции перед ее фиксацией в базе.

Шаг 2. Реализация алгоритма корректировки

Давайте подробно проанализируем код, который выполняет следующие действия:

  1. Проверяет, не идет ли загрузка данных (обмен), чтобы не нарушить целостность при синхронизации.
  2. Проверяет, что регистратором является документ ПлатежноеПоручениеВходящее.
  3. Проверяет организацию (если в базе ведется учет по нескольким фирмам, а проблема актуальна только для одной).
  4. Фильтрует по виду операции (только поступление по картам).
  5. Пересчитывает суммы в строках набора записей.

Рассмотрим пример кода:


&Вместо("ПередЗаписью")
Процедура Доработка_ПередЗаписью(Отказ, Замещение)
    
    // 1. Стандартная проверка на обмен данными. Если это загрузка - выходим.
    Если ОбменДанными.Загрузка Тогда
        Возврат;
    КонецЕсли;

    // 2. Начинаем перебор отборов, чтобы понять, какой документ пишет регистр.
    Для каждого ЭлементОтбора из ЭтотОбъект.Отбор Цикл
        
        // Проверяем тип документа-регистратора
        Если ТипЗнч(ЭлементОтбора.Значение) = Тип("ДокументСсылка.ПлатежноеПоручениеВходящее") Тогда
            
            // Получаем ссылку на документ для проверки реквизитов
            ДокументСсылка = ЭлементОтбора.Значение;
            
            // 3. Проверяем Организацию по ИНН (или по ссылке, если она известна)
            // Замените "ИНН_ВАШЕЙ_ОРГАНИЗАЦИИ" на реальное значение
            Если ДокументСсылка.Организация.ИНН = "ИНН_ВАШЕЙ_ОРГАНИЗАЦИИ" Тогда
                
                // 4. Проверяем вид операции документа
                // Важно убедиться, что это именно эквайринг
                Если ДокументСсылка.ВидОперации = Перечисления.ВидОперацииПлатежногоПоручения.ПоступлениеОплатыПоПлатежной карте Тогда
                    
                    // 5. Корректировка записей регистра
                    Для Каждого Запись Из ЭтотОбъект Цикл
                        
                        // ВНИМАНИЕ: Здесь приведен пример расчета "от обратного" для ставки 5%
                        // Формула: Сумма / 105 * 5
                        // Графы 4 и 5 в УПП обычно отвечают за "Доходы всего" и "Доходы принимаемые"
                        // Проверьте точные имена ресурсов в вашей конфигурации!
                        
                        НДС_Расчетный = Запись.Графа4 / 105 * 5; 
                        
                        // Уменьшаем суммы дохода на величину НДС
                        Запись.Графа4 = Запись.Графа4 - НДС_Расчетный; // Доходы всего
                        Запись.Графа5 = Запись.Графа5 - НДС_Расчетный; // В т.ч. принимаемые
                        
                        // Если в регистре есть отдельный ресурс для НДС, его можно обнулить или скорректировать
                        // Запись.НДС = 0; 
                        
                    КонецЦикла;
                    
                КонецЕсли;
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;

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

Важные замечания и улучшения кода

Представленный выше код является "быстрым решением" (hotfix). Однако, чтобы система работала стабильно и правильно, необходимо учесть критику и рекомендации профессионального сообщества.

1. Проблема "Хардкода" (жесткого прописывания ставок)

В строке НДС_Расчетный = Запись.Графа4 / 105 * 5; используется жесткая привязка к ставке 5%. Это опасно по нескольким причинам:

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

2. Наименования ресурсов регистра

В примере использованы условные названия Графа4 и Графа5. В реальной конфигурации УПП 1.3 ресурсы регистра КнигаУчетаДоходовИРасходов именуются иначе. Обычно это:

Обязательно откройте дерево конфигурации, найдите регистр накопления КнигаУчетаДоходовИРасходов и проверьте точные идентификаторы ресурсов.

3. Восстановление последовательности

После внедрения данного кода изменения не вступят в силу для прошлых периодов автоматически. Необходимо:

  1. Определить дату начала применения новых правил (например, с 01.01.2025).
  2. Отобрать документы Платежное поручение входящее за этот период.
  3. Выполнить их перепроведение. Это инициирует событие ПередЗаписью, и наш код скорректирует суммы.

Альтернативный способ (без программирования)

Если возможности вносить изменения в конфигуратор нет, ситуацию можно исправить штатным документом "Корректировка записей регистров".

  1. Создайте документ корректировки.
  2. Выберите регистр накопления Книга учета доходов и расходов (раздел I).
  3. Сторнируйте (сделайте запись с минусом) неверную запись, сформированную платежным поручением.
  4. Добавьте верную запись вручную: в графах "Доход всего" и "В т.ч. принимаемые" укажите сумму за вычетом НДС.

Этот метод трудоемок при большом объеме операций, но безопасен для целостности конфигурации.

Резюме

Для исключения НДС из доходов УСН в УПП 1.3 при эквайринге:

← На главную