Ведение налогового учета по упрощенной системе налогообложения (УСН) в конфигурации «1С:Управление производственным предприятием» (УПП) редакции 1.3 имеет ряд существенных архитектурных отличий от привычной многим «1С:Бухгалтерии». Пользователи и начинающие разработчики часто сталкиваются с ситуацией, когда при проведении первичных документов (например, платежных поручений или поступлений) бухгалтерские проводки формируются сразу, а записи в Книге учета доходов и расходов (КУДиР) отсутствуют или заполняются некорректно. Кроме того, попытки программно скорректировать движения КУДиР нередко приводят к досадным ошибкам платформы.
В этой статье мы подробно разберем, как устроен механизм налогового учета УСН в 1С:УПП, в какой момент на самом деле формируются записи в КУДиР, как работает регистр накопления Расходы при УСН и как исправить популярную ошибку разработчиков при программной записи движений в оборотные регистры.
---
Рассмотрим стандартную ситуацию: мы проводим документ Платежное поручение входящее. Бухгалтерские проводки по счетам учета (например, 51 и 62) успешно сформировались, однако регистр накопления Книга учета доходов и расходов (раздел I) остается пустым. Почему так происходит?
В 1С:УПП реализован асинхронный принцип формирования налоговой отчетности по УСН. Это означает следующее:
Расходы при УСН.Восстановление последовательности налогового учета УСН. До запуска этой обработки пытаться анализировать КУДиР «на лету» бессмысленно.---
Регистр Расходы при УСН является остаточным регистром накопления. Он выступает в роли «контролера» условий, выполнение которых необходимо для признания расходов в налоговом учете (актуально для объекта налогообложения «Доходы минус расходы»). Для того чтобы сумма попала в КУДиР, расход должен быть последовательно получен, оплачен поставщику и реализован (или списан в производство).
Давайте проанализируем основные состояния расходов, которые фиксируются в этом регистре:
Расходы при УСН и попадает в дебет КУДиР в качестве признанного расхода.---
Если вы видите, что расходы по УСН не сходятся и не попадают в книгу доходов и расходов, выполните процедуру закрытия периода по строгому регламенту:
Восстановление последовательности налогового учета УСН. Именно на этом шаге система обратится к регистру Расходы при УСН, проверит выполнение всех условий и сформирует итоговые записи в КУДиР.---
Перейдем к технической проблеме, с которой часто сталкиваются разработчики при попытке программно вмешаться в процесс формирования записей КУДиР. Рассмотрим пример некорректного кода, который приводит к ошибке платформы:
// Пример НЕПРАВИЛЬНОГО кода, вызывающего ошибку
Рег = РегистрыНакопления.КнигаУчетаДоходовИРасходов.СоздатьНаборЗаписей();
Рег.Отбор.Регистратор.Установить(Источник.Ссылка);
Рег.Прочитать();
Если Рег.Количество() = 1 Тогда
СтрокаДвиж = Рег[0];
Движение = Рег.Добавить();
ЗаполнитьЗначенияСвойств(Движение, СтрокаДвиж);
// ОШИБКА! Поле объекта недоступно для записи (ВидДвижения)
Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
Движение.Графа6 = Источник.Кос_СуммаКомиссииБанка;
Рег.Записать(Истина);
КонецЕсли;
Выясним причину этой ошибки:
Регистр накопления КнигаУчетаДоходовИРасходов является оборотным регистром накопления. В отличие от остаточных регистров (таких как Расходы при УСН или Товары на складах), оборотные регистры фиксируют только факт совершения хозяйственной операции за период и не хранят остатков. У оборотных регистров на уровне платформы 1С отсутствует измерение ВидДвижения (Приход / Расход). Попытка прочитать или записать это свойство у строки набора записей оборотного регистра всегда вызывает исключение: Поле объекта недоступно для записи (ВидДвижения).
Для исправления этой ошибки достаточно просто убрать строки кода, обращающиеся к свойству ВидДвижения. Запись в оборотный регистр выполняется простым добавлением строки и заполнением числовых ресурсов (граф КУДиР).
Рассмотрим пример корректного кода для программного добавления записи в регистр КУДиР:
// Пример ПРАВИЛЬНОЙ программной записи в КУДиР
НаборЗаписей = РегистрыНакопления.КнигаУчетаДоходовИРасходов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Источник.Ссылка);
НаборЗаписей.Прочитать();
// Создаем новую строку движения в оборотном регистре
НовоеДвижение = НаборЗаписей.Добавить();
НовоеДвижение.Период = Источник.Дата;
НовоеДвижение.Регистратор = Источник.Ссылка;
НовоеДвижение.Организация = Источник.Организация;
// Заполняем нужные графы книги доходов и расходов напрямую
НовоеДвижение.Графа4 = Источник.Кос_СуммаКомиссииБанка; // Сумма всего (доход)
НовоеДвижение.Графа5 = Источник.Кос_СуммаКомиссииБанка; // В т.ч. принимаемые доходы
НовоеДвижение.Содержание = "Комиссия банка по эквайрингу";
// Записываем набор данных
НаборЗаписей.Записать(Истина);
---
В обсуждении на форуме автор пытается решить задачу отражения эквайринговой комиссии банка через написание кастомного кода в модуле проведения платежного поручения. Однако в 1С:УПП для этого существует готовый и очень удобный штатный механизм, который полностью соответствует требованиям законодательства РФ.
Согласно правилам налогового учета, при оплате товаров банковскими картами (эквайринг) доходом по УСН признается вся сумма, оплаченная покупателем, а не та сумма, которая фактически поступила на расчетный счет (уже за вычетом комиссии банка). Комиссия банка при этом относится на прочие расходы (для УСН с объектом «Доходы минус расходы»).
Давайте разберем по шагам, как отразить эту операцию штатными средствами конфигурации:
Оплата от покупателя платежной картой на полную стоимость покупки (например, 10 000 рублей). Этот документ зафиксирует аванс или закроет долг покупателя на счете 62. В этот момент формируется плановый доход для УСН на всю сумму 10 000 рублей.Платежное поручение входящее с видом операции «Поступление от продаж по платежным картам и банковским кредитам».