При оформлении документа реализации в системе 1С:ERP Управление предприятием 2.4 пользователи часто сталкиваются с ситуацией, когда установлена галочка «Цена включает НДС», но итоговая сумма НДС отличается от расчета покупателя на несколько копеек. Клиент просит изменить сумму НДС в документе на «правильную», оставив общую стоимость с НДС неизменной, однако типовая форма документа не дает отредактировать поле НДС вручную. Разберем, почему возникает эта проблема и как ее решить без изменения конфигуратора.
Проанализируем алгоритм, по которому программа 1С рассчитывает налог. В системах 1С расчет НДС при установленной опции «Цена включает НДС» выполняется построчно. Для каждой строки табличной части применяется формула:
НДС = Округление(Сумма с НДС * Ставка / (100 + Ставка), 2)
Если покупатель рассчитывает налог единовременно от итоговой суммы всего документа в целом, то из-за суммирования математических округлений по каждой строке возникает разница в 1–2 копейки. При этом в табличной части реквизиты неразрывно связаны соотношением:
Сумма без НДС + Сумма НДС = Всего (Сумма с НДС)
Поскольку общее значение «Всего» зафиксировано договором и ценой, программа блокирует ручное изменение НДС, чтобы не нарушать целостность учетных данных и стандартные алгоритмы пересчета.
Рассмотрим самый простой вариант, не требующий привлечения программиста и изменения базы. Если необходимо сохранить итоговую стоимость документа с НДС, но перераспределить НДС между строками:
Начиная с версии 1С:ERP 2.4.2, разработчики реализовали штатную возможность редактирования суммы НДС непосредственно в форме документа. Если вы используете более ранний релиз 2.4, рекомендуется обновить конфигурацию до актуального релиза. После обновления поле НДС становится доступным для корректировки, а программа автоматически пересчитывает сумму без НДС по формуле:
Сумма без НДС = Всего - НДС
Если быстро обновить конфигурацию невозможно, разберем решение через механизм дополнительных обработок БСП или расширений (Extension):
ОткрытиеФормы или расширение конфигурации.СуммаНДС для редактирования.СуммаБезНДС, сохраняя значение реквизита СуммаСНДС неизменным.Пример кода обработчика пересчета суммы без НДС при ручном изменении НДС в строке табличной части:
&НаКлиенте
Процедура ТЧТоварыСуммаНДСПриИзменении(Элемент)
СтрокаТЧ = Элементы.Товары.ТекущиеДанные;
Если СтрокаТЧ <> Неопределено Тогда
СтрокаТЧ.СуммаБезНДС = СтрокаТЧ.СуммаСНДС - СтрокаТЧ.СуммаНДС;
КонецЕсли;
КонецПроцедуры
Чтобы навсегда исключить проблемы округления при выделении налога из полной стоимости, проанализируем настройку ценообразования. При формировании документов и соглашений рекомендуется устанавливать параметр расчета цен в положение «Цена НЕ включает НДС».
В этом случае расчет происходит в прямом порядке:
Сумма НДС = Сумма без НДС * СтавкаНДС / 100
Прямой расчет налога исключает копейки округления при обратном выделении НДС из стоимости с налогом и совпадает с расчетами любых сторонних программ.