При создании новых документов реализации или счетов на оплату в программе 1С:Бухгалтерия 3.0 пользователи часто сталкиваются с тем, что расчет налога по умолчанию выполняется в режиме «НДС в сумме». Если учетная политика предприятия или специфика договоров предполагает выставление цен без налога с начислением НДС поверх суммы, необходимость каждый раз переключать флаг вручную замедляет работу. Разберем, как устроен этот механизм изнутри и какими способами можно настроить автоматическую установку режима «НДС сверху».
Проанализируем программный алгоритм заполнения реквизитов нового документа. В конфигурации 1С:Бухгалтерия за данный режим отвечает реквизит СуммаВключаетНДС (тип Булево). Посмотрим на типовой код в процедуре ОбработкаЗаполнения модуля объекта документа:
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
// ...
Если ДанныеЗаполнения <> Неопределено И ТипДанныхЗаполнения <> Тип("Структура") И Метаданные.ВводитсяНаОсновании.Содержит(ДанныеЗаполнения.Метаданные) Тогда
ЗаполнитьПоДокументуОснованию(ДанныеЗаполнения);
ИначеЕсли ТипДанныхЗаполнения = Тип("Структура") И ДанныеЗаполнения.Свойство("АдресТаблицыНоменклатуры") Тогда
СуммаВключаетНДС = ДанныеЗаполнения.СуммаВключаетНДС;
ЗаполнитьИзТаблицыНоменклатуры(ДанныеЗаполнения.АдресТаблицыНоменклатуры, СуммаВключаетНДС);
Иначе
СуммаВключаетНДС = Истина;
КонецЕсли;
КонецПроцедуры
Рассмотрим логику работы данного кода:
СуммаВключаетНДС = Истина, что соответствует варианту «НДС в сумме».Важно отметить распространенное заблуждение относительно встроенного механизма статистики платформы (автообучения). Механизм автозаполнения по статистике работает только для ссылочных полей (например, реквизиты Организация, Склад, БанковскийСчет). На внутренние булевы переключатели форм и правила расчета табличных частей статистика не распространяется, поэтому программа не станет автоматически выбирать «НДС сверху» просто от регулярного ручного переключения.
Если требуется настроить автоматический выбор режима без изменения конфигурации и написания программного кода, воспользуемся связкой справочников «Типы цен номенклатуры» и «Договоры контрагентов». Разберем порядок действий по шагам:
Договоры контрагентов и заполним реквизит ТипЦен.Теперь при создании нового документа «Счет покупателю» или «Реализация (акт, накладная, УПД)» после выбора контрагента и договора система считает параметры из договора и автоматически переключит режим на «НДС сверху».
Если договоров в базе немного или автоматизация через типы цен не подходит, рассмотрим базовые пользовательские сценарии работы:
F9). При копировании все флаги и параметры расчета цен полностью сохраняются, останется лишь изменить контрагента, дату и состав позиций.Когда требуется, чтобы режим «НДС сверху» устанавливался вообще для всех вновь создаваемых документов без привязки к договорам и типам цен, разработаем расширение конфигурации. Это позволит сохранить типовую конфигурацию на полной поддержке без снятия с замка.
Реализовать переопределение можно двумя способами:
ОбработкаЗаполнения с директивой &После:
&После("ОбработкаЗаполнения")
Процедура Расш1_ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
Если ЭтоНовый() И ДанныеЗаполнения = Неопределено Тогда
ЭтотОбъект.СуммаВключаетНДС = Ложь;
КонецЕсли;
КонецПроцедуры
ПриСозданииНаСервере с директивой &После, где принудительно зададим реквизит объекта и обновим отображение состояния цен на форме:
&После("ПриСозданииНаСервере")
Процедура Расш1_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Объект.Ссылка.Пустая() И Параметры.Основание = Неопределено Тогда
Объект.СуммаВключаетНДС = Ложь;
КонецЕсли;
КонецПроцедуры
Отметим, что параметр СуммаВключаетНДС управляет исключительно математическим пересчетом колонок «Цена», «Сумма» и «НДС» в экранных формах и печатных документах. На сами бухгалтерские проводки и налоговый учет выручки и налога данный режим влияния не оказывает, так как проводки всегда формируются исходя из рассчитанных итоговых сумм документа.