Привет.
Это мой 3-й запрос в браке с 1С и что-то с ним не так
ВЫБРАТЬ
СпрНоменклатура.Наименование КАК Наименование,
ЦенаОпт.ЦенаСНДС КАК ОптЦенаСНДС,
ЦенаРозница.ЦенаСНДС КАК РозницаЦенаСНДС
ИЗ
Справочник.Номенклатура КАК СпрНоменклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПродажи.СрезПоследних(&Дата, ) КАК ЦенаОпт
ПО (ЦенаОпт.Номенклатура.Ссылка = СпрНоменклатура.Ссылка)
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПродажи.СрезПоследних(&Дата, ) КАК ЦенаРозница
ПО (ЦенаРозница.Номенклатура.Ссылка = СпрНоменклатура.Ссылка)
ГДЕ
ЦенаОпт.Прайс = &ПрайсОпт
И ЦенаРозница.Прайс = &ПрайсРозница
Прайсы надо отбирать во вложенном запросе и там накладывать условие, т.е. у вас должно быть два вложенных запроса - для одного и другого прайса, и в них условия отбора. А номенклатуру уже соединять с результатами вложенных запросов.
Как-то так
"ВЫБРАТЬ
| Номенклатура.Наименование,
| ВложенныйЗапрос.Цена1,
| ВложенныйЗапрос1.Цена2
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура2,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена2
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ВидЦен = &Прайс2) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос1
| ПО Номенклатура.Ссылка = ВложенныйЗапрос1.Номенклатура2
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена1
| ИЗ
| РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&Дата, ВидЦен = &Прайс1) КАК ЦеныНоменклатурыСрезПоследних) КАК ВложенныйЗапрос
| ПО Номенклатура.Ссылка = ВложенныйЗапрос.Номенклатура1"
Задача усложнена тем, что в начале я показал только 2 прайса в запросе. на самом деле их известное количество, но оно большее. Есть справочник прайсовых типов. В нём перечислены наименования прайсов (Опт, Розница, Киев ...) и есть поле с номером (порядоковый номер для колонки отчёта). Смысл сделать реестр цен Наименование / колонки с ценами этого наименования в определённых прайсах.
Можно ли замутить какой-то цикл в запросе, который бы перебрал справочник прайсов на предмет наличия этого поля с номером и по каждому найденному прайсу получить цену для номенклатуры?
Завернул?
Слава, направление понял, спасибо. Сейчас прикручу, думаю это более простой вариант из предложенных.
А с циклом в запросе поможете?
Возник дополнительный вопрос:
ВЫБРАТЬ
| СпрНоменклатура.Наименование КАК Наименование,
| ЦенаОпт.ЦенаСНДС КАК ОптЦенаСНДС,
| ЦенаКиев.ЦенаСНДС КАК КиевЦенаСНДС
|ИЗ
| Справочник.Номенклатура КАК СпрНоменклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПродажи.СрезПоследних(&Дата, Прайс = &ПрайсОпт) КАК ЦенаОпт
| ПО (ЦенаОпт.Номенклатура.Ссылка = СпрНоменклатура.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныПродажи.СрезПоследних(&Дата, Прайс = &ПрайсКиев) КАК ЦенаКиев
| ПО (ЦенаКиев.Номенклатура.Ссылка = СпрНоменклатура.Ссылка)
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua