|
Запрос к регистру остатков и регистру сведений для получения цен | ☑ | ||
---|---|---|---|---|
0
brenli
23.08.20
✎
16:47
|
Всем добра.
Написал запрос для получения остатков из регистра остатков и цен из регистра сведений. Запрос к регистру сведений хочется сделать максимально грамотно, а именно получить цены только по переданным значениям. Можно ли пакет запроса передать в проверку условия вхождения номенклатуры? Так тоже не получается, так как первый запрос из за пакетного режима возвращает одну строку Количество МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ВЫРАЗИТЬ(ТоварыНаСкладахОстатки.КоличествоОстаток КАК ЧИСЛО(15,3)) КАК Количество |ПОМЕСТИТЬ | ЗапросОстатки |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаВыбор, Склад= &СкладВыбор) КАК ТоварыНаСкладахОстатки"; Запрос.УстановитьПараметр("ДатаВыбор", Новый Граница (НачалоДня(Объект.ДатаО), ВидГраницы.Включая)); Запрос.УстановитьПараметр("СкладВыбор", Объект.Склад); РезультатЗапроса = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура"); Запрос2 = Новый Запрос; Запрос2.МенеджерВременныхТаблиц = МенеджерВТ; Запрос2.Текст = "ВЫБРАТЬ | ЦеныНоменклатуры.Номенклатура КАК Номенклатура, //| ЦеныНоменклатуры.ВидЦены КАК ВидЦены, | ЦеныНоменклатуры.Цена КАК Цена, | ЗапросОстатки.Количество КАК Количество |ИЗ | ЗапросОстатки КАК ЗапросОстатки |ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаВыбор, Номенклатура В (&Остатки)) КАК ЦеныНоменклатуры |ПО | ЗапросОстатки.Номенклатура = ЦеныНоменклатуры.Номенклатура"; Запрос2.УстановитьПараметр("ДатаВыбор", Новый Граница (НачалоДня(Объект.ДатаО), ВидГраницы.Включая)); Запрос2.УстановитьПараметр("Остатки", РезультатЗапроса); РезультатЗапроса2 = Запрос2.Выполнить().Выгрузить(); Полюбому делать 3 запроса? Первый для получения остатков и помещения в виртуальную таблицу, второй для получения списка номенклатуры, третий для получения цен и объединения, или 2 запроса... в которых 1й и 3й совмещен и отдельно получается список номенклатуры? |
|||
1
brenli
23.08.20
✎
17:05
|
Все решил 2 запросами
МенеджерВТ = Новый МенеджерВременныхТаблиц; Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВТ; Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, | ВЫРАЗИТЬ(ТоварыНаСкладахОстатки.КоличествоОстаток КАК ЧИСЛО(15,3)) КАК Количество |ПОМЕСТИТЬ | ЗапросОстатки |ИЗ | РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаВыбор, Склад= &СкладВыбор) КАК ТоварыНаСкладахОстатки"; Запрос.УстановитьПараметр("ДатаВыбор", Новый Граница (НачалоДня(Объект.ДатаО), ВидГраницы.Включая)); Запрос.УстановитьПараметр("СкладВыбор", Объект.Склад); РезультатЗапроса = Запрос.Выполнить(); Запрос2 = Новый Запрос; Запрос2.МенеджерВременныхТаблиц = МенеджерВТ; Запрос2.Текст = "ВЫБРАТЬ | ЗапросОстатки.Номенклатура КАК Номенклатура, // | ЦеныНоменклатуры.ВидЦены КАК ВидЦены, | ЦеныНоменклатуры.Цена КАК Цена, | ЗапросОстатки.Количество КАК Количество |ИЗ | ЗапросОстатки КАК ЗапросОстатки |ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаВыбор, Номенклатура В ( | ВЫБРАТЬ | ЗапросОстатки.Номенклатура КАК Номенклатура | ИЗ | ЗапросОстатки) И ВидЦены = &ВидЦены) КАК ЦеныНоменклатуры | |ПО | ЗапросОстатки.Номенклатура = ЦеныНоменклатуры.Номенклатура"; Запрос2.УстановитьПараметр("ДатаВыбор", Новый Граница (НачалоДня(Объект.ДатаО), ВидГраницы.Включая)); Запрос2.УстановитьПараметр("ВидЦены", Объект.ВидЦены); РезультатЗапроса2 = Запрос2.Выполнить().Выгрузить(); |
|||
2
Мимохожий Однако
23.08.20
✎
19:49
|
для подобных случаев придумали пакетные запросы
|
|||
3
Kassern
24.08.20
✎
11:42
|
А что мешало сделать так?
ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.ВНаличииОстаток КАК ВНаличииОстаток ПОМЕСТИТЬ Остатки ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Остатки.Номенклатура КАК Номенклатура, Остатки.ВНаличииОстаток КАК ВНаличииОстаток, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена ИЗ Остатки КАК Остатки ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаВыбор, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ПО Остатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |