База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку в формуле расчета цены без НДС с перечислением?
- В этой теме 1 ответ, 2 участника, последнее обновление 10 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
6 июля 2026 в 13:27 #38056
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена *(1-ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС/(100+ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС))
ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
КОНЕЦ КАК ЦенаРубБезНДС,Где ошибка, как поправить ?
-
6 июля 2026 в 13:27 #38057
Ошибка в формуле расчёта цены без НДС в части:
|ЦеныНоменклатурыСрезПоследних.Цена *(1-ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС/(100+ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС))
Проблема в том, что ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС — это перечисление, а не число. Нельзя напрямую делить перечисление на число.
Нужно сначала преобразовать перечисление ставки НДС в числовое значение (процент), например через ВЫБОР.
Правильный вариант:
|ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
| ТОГДА
| ЦеныНоменклатурыСрезПоследних.Цена *
| (1 —
| (ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ТОГДА 20
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ТОГДА 18
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ТОГДА 10
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 ТОГДА 0
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ТОГДА 0
| ИНАЧЕ 0
| КОНЕЦ
| /
| (100 + ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС20 ТОГДА 20
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС18 ТОГДА 18
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС10 ТОГДА 10
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.НДС0 ТОГДА 0
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС ТОГДА 0
| ИНАЧЕ 0
| КОНЕЦ
| )
| )
| ИНАЧЕ
| ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
|КОНЕЦ КАК ЦенаРубБезНДСЕсли нужно, можно упростить, вынеся ВЫБОР ставки НДС в отдельный параметр или переменную.
Так вы корректно получите цену без НДС с учётом ставки из перечисления.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.