![]() |
![]() |
![]() |
|
Как в запросе получить все склады? | ☑ | ||
---|---|---|---|---|
0
Zombi
11.03.12
✎
14:30
|
Делаю запрос по остаткам и реализации, обращаюсь к регистрам "ПартииТоваров", объединяю с "ТоварыНаСкладах", получаю необходимые данные. Список складов у меня ограничен списком значений, но если на каком то складе не было ни остатков ни оборотов, я в результате запроса его вообще не вижу. Вопрос: Как сделать так, чтобы в результате запроса я видел все склады(пусть с нулевыми показателями), которые есть в списке значений?
|
|||
1
Wobland
11.03.12
✎
14:31
|
список левое соединение...
|
|||
2
Рэйв
11.03.12
✎
14:31
|
Помести список во временную таблицу и соединяй с ней
|
|||
3
Zombi
11.03.12
✎
14:33
|
Вот мой запрос:
Запрос.Текст = "ВЫБРАТЬ | ПартииТоваровНаСкладах.Склад КАК Склад, | ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура, | МАКСИМУМ(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток, | СУММА(ПартииТоваровНаСкладах.Количество) КАК Количество, | МАКСИМУМ(ВЫБОР | КОГДА ПартииТоваровНаСкладах.Склад = &СкладОтправитель | ТОГДА ТоварыНаСкладахОстатки.КоличествоОстаток | КОНЕЦ) КАК КолОснСклад, | СУММА(ВЫБОР | КОГДА ПартииТоваровНаСкладах.Склад = &СкладОтправитель | ТОГДА ПартииТоваровНаСкладах.Количество | КОНЕЦ) КАК РасходОснСклад |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&КонДата, ) КАК ТоварыНаСкладахОстатки | ПО ПартииТоваровНаСкладах.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура | И ПартииТоваровНаСкладах.Склад = ТоварыНаСкладахОстатки.Склад |ГДЕ | ПартииТоваровНаСкладах.Период МЕЖДУ &НачДата И &КонДата | И (ПартииТоваровНаСкладах.Склад В (&СписокСкладов) | ИЛИ ПартииТоваровНаСкладах.Склад = &СкладОтправитель) | И (ПартииТоваровНаСкладах.КодОперации = &КодОперацииРеализация | ИЛИ ПартииТоваровНаСкладах.КодОперации = &КодОперацииРеализацияВРозницу) | И ВЫБОР | КОГДА &ПоГруппе | ТОГДА ПартииТоваровНаСкладах.Номенклатура В ИЕРАРХИИ (&НомГруппа) | ИНАЧЕ ИСТИНА | КОНЕЦ | |СГРУППИРОВАТЬ ПО | ПартииТоваровНаСкладах.Склад, | ПартииТоваровНаСкладах.Номенклатура |ИТОГИ ПО | Склад, | Номенклатура"; Как его со списком соединить? Список.Склад =ПартииТоваровНаСкладах.Склад ? |
|||
4
Wobland
11.03.12
✎
14:36
|
(3) выбрать * из &ТвойСписок поместить ВТ;
выбрать что-то из вт левое соединение регистр по... |
|||
5
Zombi
11.03.12
✎
14:46
|
А у меня на выборку из регистра куча условий стоит, то есть левого соединения не получится ведь?
|
|||
6
ИС-2
11.03.12
✎
14:47
|
(4) За чем так усложнять.
В первой ВТ выбираем все склады из справочника, где условие Ссылка в &СписокСкладов. А потом условиях виртуальных таблица партии и остатки проверяем на нахождение в ВТ_Склады. |
|||
7
ИС-2
11.03.12
✎
14:47
|
(5) запрос в студию
|
|||
8
0xFFFFFF
11.03.12
✎
14:48
|
(3) открой для себя параметры виртуальной таблицы.
|
|||
9
hhhh
11.03.12
✎
14:52
|
(6) тогда не получишь ответа на (0)
|
|||
10
Zombi
11.03.12
✎
14:55
|
(7) См (3)
(8) В виртуальных таблицах РН "ПартииТоваровНаСкладах" можно обратиться к реквизиту "КодОперации"? |
|||
11
hhhh
11.03.12
✎
14:57
|
(10) в остатках точно нет, а в оборотах через Регистратор. Но это нехилые тормоза тогда получатся.
|
|||
12
Zombi
11.03.12
✎
15:00
|
(11) Поэтому я и не стал использовать виртуальную таблицу.
|
|||
13
mehfk
11.03.12
✎
15:03
|
Zombi,все еще воюешь с продажами и остатками сводно в одной таблице?
|
|||
14
0xFFFFFF
11.03.12
✎
15:07
|
(10) ну да - нелогичное сложно в реализации
Это типа Приход 10 (код операции 1) Приход 10 (код операции 2) Расход 15 (код операции 3) Вопрос - в каком коде операции на остатках 5 штук? :))) |
|||
15
Zombi
11.03.12
✎
15:07
|
(13) Так точно! Как освобождаюсь от экстренных задач, берусь за это вот.
|
|||
16
Zombi
11.03.12
✎
15:09
|
(14) Вопрос: Где тут продажа, а не перемещение?
|
|||
17
ptrtss
11.03.12
✎
15:44
|
Чорт, решил открыть в конструкторе, да так и просидел пол часа)))
Вот так пойдет? ВЫБРАТЬ Склады.Ссылка ПОМЕСТИТЬ втСклады ИЗ Справочник.Склады КАК Склады ГДЕ Склады.Ссылка В(&СписокСклады) И Склады.Ссылка = &СкладОтправитель ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПартииТоваровНаСкладах.Склад КАК Склад, ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура, СУММА(ПартииТоваровНаСкладах.Количество) КАК Количество ПОМЕСТИТЬ втРасход ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах ВНУТРЕННЕЕ СОЕДИНЕНИЕ втСклады КАК Склады ПО ПартииТоваровНаСкладах.Склад = Склады.Ссылка ГДЕ ПартииТоваровНаСкладах.Период МЕЖДУ &НачДата И &КонДата И (ПартииТоваровНаСкладах.КодОперации = &КодОперацииРеализация ИЛИ ПартииТоваровНаСкладах.КодОперации = &КодОперацииРеализацияВРозницу) И (ПартииТоваровНаСкладах.Номенклатура В ИЕРАРХИИ (&НомГруппа) ИЛИ НЕ &ПоГруппе) СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладах.Склад, ПартииТоваровНаСкладах.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.Склад, СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток ПОМЕСТИТЬ втОстаткиНаСкладах ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки( &КонДата, Склад В (ВЫБРАТЬ т.Ссылка ИЗ втСклады КАК т) И (Номенклатура В ИЕРАРХИИ (&НомГруппа) ИЛИ НЕ &ПоГруппе)) КАК ТоварыНаСкладахОстатки СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстатки.Склад, ТоварыНаСкладахОстатки.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Подзапрос.Номенклатура, Подзапрос.Склад, СУММА(Подзапрос.Количество) КАК Количество, СУММА(Подзапрос.КоличествоОстаток) КАК КоличествоОстаток, СУММА(Подзапрос.КолОснСклад) КАК КолОснСклад, СУММА(Подзапрос.РасходОснСклад) КАК РасходОснСклад ПОМЕСТИТЬ втОстаткиИОбороты ИЗ (ВЫБРАТЬ Расход.Номенклатура КАК Номенклатура, Расход.Склад КАК Склад, Расход.Количество КАК Количество, 0 КАК КоличествоОстаток, 0 КАК КолОснСклад, ВЫБОР КОГДА Расход.Склад = &СкладОтправитель ТОГДА Расход.Количество КОНЕЦ КАК РасходОснСклад ИЗ втРасход КАК Расход ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ОстаткиНаСкладах.Номенклатура, ОстаткиНаСкладах.Склад, 0, ОстаткиНаСкладах.КоличествоОстаток, ВЫБОР КОГДА ОстаткиНаСкладах.Склад = &СкладОтправитель ТОГДА ОстаткиНаСкладах.КоличествоОстаток КОНЕЦ, 0 ИЗ втОстаткиНаСкладах КАК ОстаткиНаСкладах) КАК Подзапрос СГРУППИРОВАТЬ ПО Подзапрос.Номенклатура, Подзапрос.Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Склады.Ссылка КАК Склад, ОстаткиИОбороты.Номенклатура, ОстаткиИОбороты.Количество КАК Количество, ОстаткиИОбороты.КоличествоОстаток КАК КоличествоОстаток, ОстаткиИОбороты.КолОснСклад КАК КолОснСклад, ОстаткиИОбороты.РасходОснСклад КАК РасходОснСклад ИЗ втСклады КАК Склады ЛЕВОЕ СОЕДИНЕНИЕ втОстаткиИОбороты КАК ОстаткиИОбороты ПО Склады.Ссылка = ОстаткиИОбороты.Склад ИТОГИ СУММА(Количество), СУММА(КоличествоОстаток), СУММА(КолОснСклад), СУММА(РасходОснСклад) ПО Склад |
|||
18
Zombi
11.03.12
✎
15:51
|
(17) Нифига себе, ушел долго ковыряться :) Спасибо
|
|||
19
Zombi
12.03.12
✎
10:56
|
Вот что соорудил в итоге:
Запрос.Текст = "ВЫБРАТЬ | ПартииТоваровНаСкладах.Склад КАК Склад, | ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура, | МАКСИМУМ(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток, | СУММА(ПартииТоваровНаСкладах.Количество) КАК Количество, | МАКСИМУМ(ВЫБОР | КОГДА ПартииТоваровНаСкладах.Склад = &СкладОтправитель | ТОГДА ТоварыНаСкладахОстатки.КоличествоОстаток | КОНЕЦ) КАК КолОснСклад, | СУММА(ВЫБОР | КОГДА ПартииТоваровНаСкладах.Склад = &СкладОтправитель | ТОГДА ПартииТоваровНаСкладах.Количество | КОНЕЦ) КАК РасходОснСклад |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах | ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&КонДата, ) КАК ТоварыНаСкладахОстатки | ПО ПартииТоваровНаСкладах.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура | И ПартииТоваровНаСкладах.Склад = ТоварыНаСкладахОстатки.Склад |ГДЕ | ПартииТоваровНаСкладах.Период МЕЖДУ &НачДата И &КонДата | И (ПартииТоваровНаСкладах.Склад В (&СписокСкладов) | ИЛИ ПартииТоваровНаСкладах.Склад = &СкладОтправитель) | И (ПартииТоваровНаСкладах.КодОперации = &КодОперацииРеализация | ИЛИ ПартииТоваровНаСкладах.КодОперации = &КодОперацииРеализацияВРозницу) | И ВЫБОР | КОГДА &ПоГруппе | ТОГДА ПартииТоваровНаСкладах.Номенклатура В ИЕРАРХИИ (&НомГруппа) | ИНАЧЕ ИСТИНА | КОНЕЦ | |СГРУППИРОВАТЬ ПО | ПартииТоваровНаСкладах.Склад, | ПартииТоваровНаСкладах.Номенклатура | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Склады.Ссылка, | NULL, | 0, | 0, | 0, | 0 |ИЗ | Справочник.Склады КАК Склады |ГДЕ | Склады.Ссылка В(&СписокСкладов) |ИТОГИ ПО | Склад, | Номенклатура"; Всем спасибо за помощь! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |