Имя: Пароль:
1C
1С v8
Помогите с запросом
0 woad2
 
17.08.12
15:01
Есть справочник Номенклатура в нем реквизит ОсновнойПоставщик, и два регистра, регистр сведений ЦеныКонтрагентов и регистр накопления ОстаткиНоменклатуры, нужно вывести номенклатуру, остаток, ОсновнойПостащик и его последнюю цену, но, если реквизит ОсновнойПостащик не заполнен, нужно вывести последнего контрагента от кого приходил этот товар и его цену, пока получился вот такой запрос, как теперь заполнить пустых контрагентов не знаю
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
   ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток,
   ВложенныйЗапрос.Цена,
   ВложенныйЗапрос.Контрагент
ИЗ
   РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК ОстаткиНоменклатурыОстаткиИОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЦеныКонтрагентовСрезПоследних.Контрагент КАК Контрагент,
           ЦеныКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
           ЦеныКонтрагентовСрезПоследних.Цена КАК Цена
       ИЗ
           РегистрСведений.ЦеныКонтрагентов.СрезПоследних(&КонДата, ) КАК ЦеныКонтрагентовСрезПоследних
       ГДЕ
           ЦеныКонтрагентовСрезПоследних.Номенклатура В ИЕРАРХИИ(&ВыбНоменклатура)
           И ЦеныКонтрагентовСрезПоследних.Номенклатура.ОсновнойПоставщик = ЦеныКонтрагентовСрезПоследних.Контрагент) КАК ВложенныйЗапрос
       ПО ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = ВложенныйЗапрос.Номенклатура
ГДЕ
   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура В ИЕРАРХИИ(&ВыбНоменклатура)
1 shuhard
 
17.08.12
15:23
(0) ну так сделай второй запрос и ОБЪЕДИНИТЬ ВСЕ
2 woad2
 
17.08.12
15:29
(1)Вот так?
ВЫБРАТЬ
   ЦеныКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
   0 КАК КоличествоКонечныйОстаток,
   ЦеныКонтрагентовСрезПоследних.Цена КАК Цена,
   ЦеныКонтрагентовСрезПоследних.Контрагент КАК Контрагент
ИЗ
   РегистрСведений.ЦеныКонтрагентов.СрезПоследних(&КонДата, ) КАК ЦеныКонтрагентовСрезПоследних
ГДЕ
   ЦеныКонтрагентовСрезПоследних.Номенклатура В ИЕРАРХИИ(&ВыбНоменклатура)
   И ЦеныКонтрагентовСрезПоследних.Номенклатура.ОсновнойПоставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяССылка)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура,
   ОстаткиНоменклатурыОстаткиИОбороты.КоличествоКонечныйОстаток,
   ВложенныйЗапрос.Цена,
   ВложенныйЗапрос.Контрагент
ИЗ
   РегистрНакопления.ОстаткиНоменклатуры.ОстаткиИОбороты КАК ОстаткиНоменклатурыОстаткиИОбороты
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ЦеныКонтрагентовСрезПоследних.Контрагент КАК Контрагент,
           ЦеныКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
           ЦеныКонтрагентовСрезПоследних.Цена КАК Цена
       ИЗ
           РегистрСведений.ЦеныКонтрагентов.СрезПоследних(&КонДата, ) КАК ЦеныКонтрагентовСрезПоследних
       ГДЕ
           ЦеныКонтрагентовСрезПоследних.Номенклатура В ИЕРАРХИИ(&ВыбНоменклатура)
           И ЦеныКонтрагентовСрезПоследних.Номенклатура.ОсновнойПоставщик = ЦеныКонтрагентовСрезПоследних.Контрагент) КАК ВложенныйЗапрос
       ПО ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура = ВложенныйЗапрос.Номенклатура
ГДЕ
   ОстаткиНоменклатурыОстаткиИОбороты.Номенклатура В ИЕРАРХИИ(&ВыбНоменклатура)

УПОРЯДОЧИТЬ ПО
   Номенклатура
3 woad2
 
17.08.12
15:33
4 sanja26
 
17.08.12
15:39
(3) находи сначала всех по условию " если реквизит ОсновнойПостащик не заполнен, нужно вывести последнего контрагента от кого приходил этот товар и его цену", а потом уже объединяй с данными по тем, по которым заполнен