При работе в программах на платформе 1С (таких как УПП 1.3, КА 1.1 или УТ 10.3) пользователи часто сталкиваются с ситуацией, когда в документе Заказ покупателя упорно проставляется ставка НДС 0% или Без НДС, несмотря на то, что в настройках пользователя указано значение 18%. Такая проблема может возникать как из-за простых ошибок ввода данных, так и из-за глубоких логических условий в программном коде. В этой статье мы подробно разберем, почему это происходит и как вернуть корректное заполнение ставки.
Первым делом проанализируем настройки самой номенклатуры. В типовых конфигурациях 1С ставка НДС для документа Заказ покупателя в первую очередь подтягивается из справочника Номенклатура. Если в карточке товара значение не заполнено или указано неверно, система будет использовать его как приоритетное.
Рассмотрим ситуацию, когда позиций много. Если у вас сотни наименований с незаполненными ставками, заходить в каждую карточку вручную неэффективно. В этом случае мы воспользуемся инструментом Групповая обработка справочников и документов (меню Сервис):
Справочники, выделим Номенклатура.СтавкаНДС.После этого при выборе товара в табличную часть документа система должна начать подставлять верное значение.
Иногда причина кроется не в справочниках, а в настройках конкретного экземпляра документа. Разберем, на что обратить внимание непосредственно в форме заказа. Сверху в командной панели документа есть кнопка Цены и валюта. Нажмем на нее и проанализируем открывшееся диалоговое окно.
Здесь крайне важны два параметра:
Проанализируем параметры договора, выбранного в документе. В 1С логика определения налогов тесно связана с условиями сделки. Перейдем в справочник Договоры контрагентов и откроем тот, который указан в заказе.
На вкладке "Налоговый учет" или в общих реквизитах договора (в зависимости от версии конфигурации) может присутствовать флаг Реализация на экспорт. Если этот признак установлен, алгоритм 1С считает сделку экспортной. Согласно налоговому кодексу, такие операции облагаются по ставке 0%, и программа автоматически переопределяет ставку в табличной части заказа, даже если в карточке товара стоит 18%.
Также проверьте реквизит Организация. Если в учетной политике организации на дату документа указано, что она не является плательщиком НДС, система будет подставлять значение "Без НДС".
Если визуальный осмотр настроек не помог, необходимо выяснить причину на уровне программного кода. Основная логика заполнения ставки НДС обычно сосредоточена в общем модуле ОбработкаТабличныхЧастей. Найдем процедуру ЗаполнитьСтавкуНДСТабЧасти и проанализируем ее структуру.
Рассмотрим пример кода, который управляет этим процессом:
Процедура ЗаполнитьСтавкуНДСТабЧасти(СтрокаТабличнойЧасти, ДокументОбъект, ВидДокумента = "") Экспорт
ИмяТабличнойЧасти = ОбщегоНазначения.ПолучитьИмяТабличнойЧастиПоСсылкеНаСтроку(СтрокаТабличнойЧасти);
МетаданныеДокумента = ДокументОбъект.Метаданные;
// Проверяем наличие реквизита в табличной части
Если ОбщегоНазначения.ЕстьРеквизитТабЧастиДокумента("СтавкаНДС", МетаданныеДокумента, ИмяТабличнойЧасти) Тогда
// Логика определения экспорта и резиденства
РеализацияНаЭкспорт = ?(ОбщегоНазначения.ЕстьРеквизитДокумента("ДоговорКонтрагента", МетаданныеДокумента),
?(ДокументОбъект.ДоговорКонтрагента.РеализацияНаЭкспорт = Истина, Истина, Ложь), Ложь);
Если ВидДокумента = "Реализация" Тогда
Если РеализацияНаЭкспорт Тогда
// Принудительная ставка 0% при экспорте
СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.НДС0;
Иначе
// Проверка учетной политики организации
Отказ = Ложь;
ПараметрыУП = ОбщегоНазначения.ПолучитьПараметрыУчетнойПолитикиНалоговыйУчет(ДокументОбъект.Дата, Отказ, ДокументОбъект.Организация);
Если ПараметрыУП.ОрганизацияНеЯвляетсяПлательщикомНДС Тогда
СтрокаТабличнойЧасти.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
Иначе
// Если все проверки пройдены, берем из номенклатуры
СтрокаТабличнойЧасти.СтавкаНДС = СтрокаТабличнойЧасти.Номенклатура.СтавкаНДС;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Разберем по шагам, что делает этот код. Сначала система проверяет, не является ли договор экспортным. Если условие РеализацияНаЭкспорт = Истина выполняется, выполнение прерывается на установке значения НДС0. Если нет — запрашиваются параметры учетной политики через функцию ПолучитьПараметрыУчетнойПолитикиНалоговыйУчет. Здесь важно помнить, что учетная политика в 1С — это периодический регистр сведений. Если наступил новый год или квартал, а запись в регистре отсутствует или заполнена неверно, функция вернет значения по умолчанию, что часто приводит к подстановке "Без НДС".
Выясним еще несколько неочевидных причин, которые могут влиять на результат:
Заказ покупателя.Типы цен номенклатуры. Там есть настройка "Цены включают НДС". Хотя она чаще влияет на расчет суммы, в кастомизированных базах к типу цен может быть привязана логика выбора ставки.Подведем итог: если в документе Заказ покупателя ставка НДС заполняется некорректно, пройдите по цепочке: Номенклатура -> Кнопка "Цены и валюта" -> Договор -> Учетная политика. В 90% случаев проблема кроется в одном из этих звеньев. Если же все настройки верны, следует обратиться к отладчику и проверить работу процедуры ЗаполнитьСтавкуНДСТабЧасти в общем модуле ОбработкаТабличныхЧастей.