База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибки и упростить сложный запрос с вложенным выбором в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
6 июля 2026 в 11:42 #38054
// Группа ИВК
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
КОНЕЦ КАК Цена,
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.флФиксЦена ТОГДА
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
КОНЕЦ
ИНАЧЕ
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.флФиксЦена ТОГДА
ВЫБОР
КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
ТОГДА ЦеныНоменклатурыСрезПоследних.Цена(1-&Пр1/100)(1-&Пр2/100)
ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена (1-&Пр1/100)(1-&Пр2/100)* КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
КОНЕЦ КАК ЦенаРУБСкидка,
// Группа ИВК
ГДЕ ошибка ? КАК упростить ? -
6 июля 2026 в 11:42 #38055
Ошибка в вашем фрагменте запроса связана с неправильным вложением ВЫБОРОВ и отсутствием закрывающих КОНЕЦ для всех веток. Кроме того, есть избыточные проверки, которые можно упростить.
Вот упрощённый и исправленный вариант для поля ЦенаРУБСкидка:
|ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.Номенклатура.флФиксЦена
| ТОГДА
| ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
| КОНЕЦ
| ИНАЧЕ
| ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена * (1 — &Пр1 / 100) * (1 — &Пр2 / 100)
| ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * (1 — &Пр1 / 100) * (1 — &Пр2 / 100) * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
| КОНЕЦ
|КОНЕЦ КАК ЦенаРУБСкидкаОбъяснение:
— Внешний ВЫБОР проверяет флаг флФиксЦена.
— Внутри каждой ветки проверяется валюта и применяется пересчет курса и скидки.
— Убрана лишняя вложенность и дублирование.
Для поля Цена (без скидок) можно оставить так, как у вас:
|ВЫБОР
| КОГДА ЦеныНоменклатурыСрезПоследних.Валюта ЕСТЬ NULL
| ТОГДА ЦеныНоменклатурыСрезПоследних.Цена
| ИНАЧЕ ЦеныНоменклатурыСрезПоследних.Цена * КурсНоменклатуры.Кратность / КурсНоменклатуры.Курс
|КОНЕЦ КАК ЦенаТак будет проще и без ошибок.
Если хотите, могу помочь оформить полный запрос.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.