|
Запрос по остаткам с обходом по иерархии | ☑ | ||
|---|---|---|---|---|
|
0
yur4egg
11.09.15
✎
09:12
|
Первоначальный вариант запроса:
0) ТекстЗапроса= "ВЫБРАТЬ | ОстаткиОстатки.Номенклатура КАК Товар, | ОстаткиОстатки.Склад КАК Склад, | ОстаткиОстатки.КоличествоОстаток КАК Остаток |ИЗ | РегистрНакопления.Остатки.Остатки КАК ОстаткиОстатки | |ИТОГИ | СУММА(Остаток) |ПО | Товар ТОЛЬКО ИЕРАРХИЯ, |"; ................ ТЗ = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); В ТЗ возвращает дерево значений с иерархией по группам справочника. Если добавить в эту же таблицу остатки резерва, тогда запрос такой: 1) ТекстЗапроса= "ВЫБРАТЬ | ОстаткиОстатки.Номенклатура КАК Товар, | ОстаткиОстатки.Склад КАК Склад, | ОстаткиОстатки.КоличествоОстаток КАК Остаток, | РезервыОстатки.КоличествоОстаток КАК Резерв |ИЗ | РегистрНакопления.Остатки.Остатки КАК ОстаткиОстатки | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Резервы.Остатки КАК РезервыОстатки | ПО ОстаткиОстатки.Номенклатура = РезервыОстатки.Номенклатура | И ОстаткиОстатки.Склад = РезервыОстатки.Склад | |ИТОГИ | СУММА(Остаток) |ПО | Товар ТОЛЬКО ИЕРАРХИЯ, |"; И тут все правильно выгружается. Но проблема в том, что в запрос не попадают позиции зарезервированные, но отсутствующие на остатках. Заменяю соединение ЛЕВОЕ на ПОЛНОЕ, дерево формируется, но зарезервированные позиции появляются с пустыми значениями там, где нет остатков. Ставлю проверку на NULL и окончательный вид запроса такой: 2) ТекстЗапроса= "ВЫБРАТЬ | ЕСТЬNULL(ОстаткиОстатки.Номенклатура, РезервыОстатки.Номенклатура) КАК Товар, | ОстаткиОстатки.Склад КАК Склад, | ОстаткиОстатки.КоличествоОстаток КАК Остаток, | РезервыОстатки.КоличествоОстаток КАК Резерв |ИЗ | РегистрНакопления.Остатки.Остатки КАК ОстаткиОстатки | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.Резервы.Остатки КАК РезервыОстатки | ПО ОстаткиОстатки.Номенклатура = РезервыОстатки.Номенклатура | И ОстаткиОстатки.Склад = РезервыОстатки.Склад |ИТОГИ | СУММА(Остаток) |ПО | Товар ТОЛЬКО ИЕРАРХИЯ, |; Все наименования попадают правильно, но сбивается иерархия, в дереве только первая запись - это пустая группа, а внутри идут все подряд позиции. Пробовал помещать все во временную таблицу, а вторым запросом брать данные из нее, иерархия вернулась, но содержимое - как при ЛЕВОМ соединении, хотя указано ПОЛНОЕ. Подскажите, у меня больше идей нет ((( |
|||
|
1
DimGan
11.09.15
✎
10:32
|
Закинь в подзапрос.
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |