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