Как настроить расчет цены в коммерческом предложении с учетом ставки НДС и наценки в 1С:Управление торговлей?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Управленческий учет Торговля и дистрибуция
← На главную

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

Почему 1С не считает цену через НДС напрямую?

Важно понимать, что в типовых конфигурациях 1С:Управление торговлей или 1С:ERP ставка СтавкаНДС в карточке номенклатуры предназначена для целей налогового и бухгалтерского учета, а не для логики ценообразования. Механизм ВидыЦен оперирует базовыми ценами и формулами, которые при расчете не «смотрят» на налоговую ставку конкретной строки товара. Именно поэтому создание универсальной формулы вида «Цена = База + НДС + 1%» в стандартном конструкторе цен невозможно без доработок.

Метод 1: Использование ценовых групп (без программирования)

Если вы хотите избежать написания кода, самым правильным подходом будет использование сегментации товаров. Разберем этот алгоритм по шагам:

  1. Создайте Ценовые группы для товаров с разными ставками НДС (например: «НДС 20%», «НДС 10%», «Без НДС»).
  2. Для каждой ценовой группы создайте отдельный Вид цены, в формуле которого будет заложена нужная наценка (например, 21% для группы «НДС 20%»).
  3. При формировании Коммерческого предложения используйте автоматический подбор цен согласно правилам ценообразования.

Этот метод позволяет системе автоматически подставлять корректную цену при выборе товара, исключая необходимость ручного пересчета.

Метод 2: Автоматизация через программную доработку (Расширение)

Если специфика вашего бизнеса требует динамического расчета, при котором цена должна пересчитываться «на лету» в табличной части документа, необходимо использовать Расширение конфигурации. Разберем подход к реализации:

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

Рассмотрим структуру кода, который нужно использовать при работе с табличной частью:


// Пример правильного перебора строк ТЧ
Для Каждого СтрокаТЧ Из Объект.Товары Цикл
    Ставка = СтрокаТЧ.СтавкаНДС;
    Если Ставка = Перечисления.СтавкиНДС.НДС20 Тогда
        Коэффициент = 1.21;
    ИначеЕсли Ставка = Перечисления.СтавкиНДС.НДС10 Тогда
        Коэффициент = 1.11;
    Иначе
        Коэффициент = 1.01;
    КонецЕсли;
    СтрокаТЧ.Цена = СтрокаТЧ.ЦенаПриобретения * Коэффициент;
КонецЦикла;

Как правильно получать цену приобретения через запрос?

Если вы столкнулись с трудностями при подтягивании ЦенаПриобретения в документ, обратите внимание на структуру запроса. Чтобы получить актуальную цену из регистра ЦеныНоменклатуры, запрос должен обязательно учитывать номенклатуру как параметр:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ЦеныНоменклатурыСрезПоследних.Цена КАК Цена
    |ИЗ
    |	РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ВидЦены = &ВидЦены И Номенклатура = &Номенклатура) КАК ЦеныНоменклатурыСрезПоследних";

Запрос.УстановитьПараметр("ВидЦены", Справочники.ВидыЦен.НайтиПоНаименованию("Цена приобретения"));
Запрос.УстановитьПараметр("Дата", Объект.Дата);
Запрос.УстановитьПараметр("Номенклатура", СсылкаНаТовар);

Рекомендации по реализации

Проанализировав поставленную задачу, мы можем сделать следующие выводы:

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

← На главную