Как получить и разделить остатки по счетам 60 и 62 по ставкам НДС в 1С:УПП 1.3

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

В практике ведения бухгалтерского и налогового учета периодически возникает задача сверки остатков по расчетам с контрагентами (счета 60 и 62) со счетами учета НДС по авансам (счета 76.АВ и 76.ВА). Ситуация значительно усложняется, когда на предприятии применяются различные ставки НДС (например, историческая ставка 18% для документов прошлых периодов и текущая ставка 20%, либо одновременное использование ставок 10% и 20%).

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

Экономический смысл задачи и суть проблемы

Для контроля правильности начисления НДС с авансов должно соблюдаться классическое соотношение:

НДС с аванса = Сумма аванса * (Ставка НДС / (100 + Ставка НДС))

Если сальдо по счету 62.02 распределено по разным ставкам, то и остаток по счету 76.АВ должен строго соответствовать этим пропорциям. В случае расхождений налоговые органы могут предъявить претензии при проверке декларации по НДС. Чтобы оперативно находить ошибки, бухгалтеру требуется отчет, который покажет остаток долга по контрагенту/договору и выделит из него сумму, относящуюся к ставке 18% (или 10%), и сумму, относящуюся к ставке 20%.

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

Анализ возможных сложностей при распределении

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

  1. Режим ведения взаиморасчетов. Если в договоре контрагента выбран вариант ведения расчетов «По договору в целом», то аналитика до расчетного документа на счетах бухгалтерского учета отсутствует. В этом случае получить информацию непосредственно из бухгалтерского регистра (Хозрасчетный) невозможно. Придется обращаться к регистрам оперативного учета накопления НДС.
  2. Смешанные платежи. Контрагент может оплатить один счет, содержащий товары с разными ставками НДС (например, 10% и 20%), единым платежным поручением. В этом случае в документе «Поступление на расчетный счет» сумма разбивается в табличной части на несколько строк с разными ставками. При частичном погашении задолженности возникает сложная задача пропорционального отнесения остатка долга на ту или иную ставку.
  3. Переходные периоды. При изменении законодательства (например, переход с 18% на 20% в 2019 году) договоры прошлых лет могут содержать остатки по старым ставкам, в то время как новые отгрузки и оплаты идут уже по новым ставкам. Простая привязка ставки к дате документа («все, что до 2019 года — 18%, а после — 20%») не всегда работает корректно из-за возможных корректировок, возвратов или исправления ошибок прошлых периодов.

Алгоритм программного решения задачи в 1С:УПП 1.3

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

Разберем логику решения по шагам:

  1. Получение общих остатков. Сначала мы пишем запрос к таблице остатков регистра бухгалтерии Хозрасчетный.Остатки по интересующим нас счетам (60 и 62). На этом этапе мы получаем общую сумму задолженности в разрезе контрагентов и договоров.
  2. Определение документов по ставке 20%. Мы делаем запрос к регистру накопления НДСНачисленный (или специализированным регистрам расчетов по НДС в УПП) и выбираем все документы-регистраторы, в движениях которых фигурирует ставка НДС 20%. Эти документы мы помещаем во временную таблицу или выгружаем в массив.
  3. Расчет остатков по ставке 18%. Далее мы делаем запрос к виртуальной таблице ОстаткиОбороты регистра бухгалтерии, но накладываем условие исключения: мы отсекаем все обороты, сформированные регистраторами из нашего списка со ставкой 20%. Таким образом, мы получаем «чистый» остаток, который относится к ставке 18% (и другим более ранним ставкам).
  4. Вычисление остатка по ставке 20%. Путем математического вычитания из общей суммы остатка (полученной на шаге 1) суммы остатка по ставке 18% (полученной на шаге 3), мы получаем точную сумму остатка по ставке 20%.

Реализация алгоритма в виде запроса 1С

Давайте посмотрим на пример программной реализации данного алгоритма на встроенном языке 1С. Этот код можно использовать при разработке схемы компоновки данных (СКД) или при написании выборки в коде обработки:


// Шаг 1: Получаем общие остатки по счетам расчетов
Запрос = Новый Запрос;
Запрос.Текст = 
"ВЫБРАТЬ
|	ХозрасчетныйОстатки.Субконто1 КАК Контрагент,
|	ХозрасчетныйОстатки.Субконто2 КАК Договор,
|	ХозрасчетныйОстатки.СуммаОстаток КАК ОбщаяСуммаОстатка
|ПОМЕСТИТЬ ВТ_ОбщиеОстатки
|ИЗ
|	РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В (&СчетаРасчетов), , ) КАК ХозрасчетныйОстатки
|;
|
|////////////////////////////////////////////////////////////////////////////////
|// Шаг 2: Выбираем документы расчетов, в которых фигурирует НДС 20%
|ВЫБРАТЬ РАЗЛИЧНЫЕ
|	НДСНачисленный.Регистратор КАК Регистратор20
|ПОМЕСТИТЬ ВТ_Регистраторы20
|ИЗ
|	РегистрНакопления.НДСНачисленный КАК НДСНачисленный
|ГДЕ
|	НДСНачисленный.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|// Шаг 3: Получаем остатки, исключая документы со ставкой 20%
|ВЫБРАТЬ
|	ХозрасчетныйОстаткиОбороты.Субконто1 КАК Контрагент,
|	ХозрасчетныйОстаткиОбороты.Субконто2 КАК Договор,
|	ХозрасчетныйОстаткиОбороты.СуммаКонечныйОстаток КАК СуммаСтавка18
|ПОМЕСТИТЬ ВТ_Остатки18
|ИЗ
|	РегистрБухгалтерии.Хозрасчетный.ОстаткиОбороты(&НачалоПериода, &Период, , , Счет В (&СчетаРасчетов), , НЕ Регистратор В (ВЫБРАТЬ Регистратор20 ИЗ ВТ_Регистраторы20)) КАК ХозрасчетныйОстаткиОбороты
|;
|
|////////////////////////////////////////////////////////////////////////////////
|// Шаг 4: Соединяем таблицы и вычисляем остаток по ставке 20%
|ВЫБРАТЬ
|	ВТ_ОбщиеОстатки.Контрагент КАК Контрагент,
|	ВТ_ОбщиеОстатки.Договор КАК Договор,
|	ВТ_ОбщиеОстатки.ОбщаяСуммаОстатка КАК ОбщаяСуммаОстатка,
|	ЕСТЬNULL(ВТ_Остатки18.СуммаСтавка18, 0) КАК СуммаСтавка18,
|	ВТ_ОбщиеОстатки.ОбщаяСуммаОстатка - ЕСТЬNULL(ВТ_Остатки18.СуммаСтавка18, 0) КАК СуммаСтавка20
|ИЗ
|	ВТ_ОбщиеОстатки КАК ВТ_ОбщиеОстатки
|		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки18 КАК ВТ_Остатки18
|		ПО ВТ_ОбщиеОстатки.Контрагент = ВТ_Остатки18.Контрагент
|			И ВТ_ОбщиеОстатки.Договор = ВТ_Остатки18.Договор";

Запрос.УстановитьПараметр("Период", КонецДня(ТекущаяДата()));
Запрос.УстановитьПараметр("НачалоПериода", Дата("20150101000000")); // период охвата исторических данных

СписокСчетов = Новый СписокЗначений;
СписокСчетов.Добавить(ПланСчетов.Хозрасчетный.ПокупателиПоАвансам); // 62.02
СписокСчетов.Добавить(ПланСчетов.Хозрасчетный.ПоставщикиПоАвансам);  // 60.02
Запрос.УстановитьПараметр("СчетаРасчетов", СписокСчетов);

РезультатВыборки = Запрос.Выполнить().Выбрать();

Особенности работы с регистрами оперативного учета НДС в УПП 1.3

При использовании вышеописанного алгоритма важно помнить, что в УПП 1.3 ведение НДС тесно связано с оперативными регистрами накопления. Для повышения точности распределения (особенно если взаиморасчеты ведутся «По договору в целом») мы рекомендуем использовать регистры:

Запросы к этим регистрам позволят получить максимально корректные данные по ставкам НДС, так как именно в этих регистрах система фиксирует событие «Получен аванс» или «Выдан аванс», сопоставляя платеж со ставкой налога, указанной в счете-фактуре или документе оплаты.

Подводя итог, отметим: несмотря на то, что на счетах бухгалтерского учета 60 и 62 нет прямого разреза по ставкам НДС, задача успешно решается сопоставлением бухгалтерских итогов с оперативными регистрами учета НДС. Предложенный подход с исключением регистраторов по ставке 20% позволяет быстро локализовать расхождения с 76-м счетом и исправить ошибки в учете.

← На главную