Суть проблемы такова:
Требуется сделать отчет по остаткам с суммами. Цена может браться как из регистра сведений "Цены номенклатуры" или из регистра сведений "Цены себестоимости". Вопрос: как правильно сделать настройку, чтобы в параметре пользователь мог выбирать либо перечисление "Тип цен себестоимости" либо элемент справочника "Тип цен номенклатуры" и в зависимости от этого выбиралась цена из соответствующего регистра?
Как-то так: (единственно, завести перечисление для выбора)
ВЫБРАТЬ
СпрНоменклатура.Ссылка,
ВЫБОР
КОГДА &Парам = ИСТИНА
ТОГДА ЦеныСрезПоследних.Цена
ИНАЧЕ Цены1СрезПоследних.Цена
КОНЕЦ КАК Цена
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних КАК ЦеныСрезПоследних
ПО ЦеныСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены1.СрезПоследних КАК Цены1СрезПоследних
ПО Цены1СрезПоследних.Номенклатура = СпрНоменклатура.Ссылка
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
(4) Вариант 1. Можно попробовать сделать Цену вычисляемым полем, а из запроса ее убрать. Т.е. вынести два ценовых ресурса в пользовательские поля компоновки (через {}), по желанию разработчика их можно сделать недоступными для выбора пользователю. И затем создать вычисляемое поле с конструкцией выбора:
ВЫБОР
КОГДА &Парам = ИСТИНА
ТОГДА Цена1Регистра
ИНАЧЕ Цена2Регистра
КОНЕЦ
Вариант 2. Можно сделать так:
ВЫБРАТЬ
СпрНоменклатура.Ссылка,
ВЫБОР
КОГДА &Парам = ИСТИНА
ТОГДА ЦеныСрезПоследних.Цена
ИНАЧЕ Цены1СрезПоследних.Цена
КОНЕЦ КАК Цена
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены.СрезПоследних(, &Парам = ИСТИНА) КАК ЦеныСрезПоследних
ПО ЦеныСрезПоследних.Номенклатура = СпрНоменклатура.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Цены1.СрезПоследних(, &Парам = ЛОЖЬ) КАК Цены1СрезПоследних
ПО Цены1СрезПоследних.Номенклатура = СпрНоменклатура.Ссылка
ГДЕ
НЕ СпрНоменклатура.ЭтоГруппа
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший