|
Соединение в запросе по двум признакам | ☑ | ||
---|---|---|---|---|
0
kalisto
16.09.15
✎
00:36
|
Доброго времени суток, всем.
Есть запрос, который выбирает данные из двух регистров: ВЫБРАТЬ ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ПартииТоваровНаСкладах.ДокументДвижения <> НЕОПРЕДЕЛЕНО ТОГДА ПартииТоваровНаСкладах.ДокументДвижения ИНАЧЕ ПартииТоваровНаСкладах.Регистратор КОНЕЦ КАК Регистратор, СУММА(ВЫБОР КОГДА НЕ ПартииТоваровНаСкладах.ДокументОприходования ССЫЛКА Документ.ОприходованиеТоваров ТОГДА ВЫБОР КОГДА ПартииТоваровНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА ПартииТоваровНаСкладах.Стоимость * -1 ИНАЧЕ ПартииТоваровНаСкладах.Стоимость КОНЕЦ ИНАЧЕ ВЫБОР КОГДА НЕ ПартииТоваровНаСкладахУценка.ДокументОприходования.Уценка ТОГДА ВЫБОР КОГДА ПартииТоваровНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА ПартииТоваровНаСкладах.Стоимость * -1 ИНАЧЕ ПартииТоваровНаСкладах.Стоимость КОНЕЦ ИНАЧЕ ПартииТоваровНаСкладахУценка.Стоимость КОНЕЦ КОНЕЦ) КАК СтоимостьОборот ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахУценка КАК ПартииТоваровНаСкладахУценка ПО ПартииТоваровНаСкладах.Номенклатура = ПартииТоваровНаСкладахУценка.Номенклатура И ПартииТоваровНаСкладах.Регистратор = ПартииТоваровНаСкладахУценка.ДокументДвижения ГДЕ ПартииТоваровНаСкладах.Период МЕЖДУ &ДатаНачала И &ДатаКонца И ПартииТоваровНаСкладахУценка.Период МЕЖДУ &ДатаНачала И &ДатаКонца И ПартииТоваровНаСкладах.Номенклатура = &НоменклатураСсылка И ПартииТоваровНаСкладахУценка.Номенклатура = &НоменклатураСсылка {ГДЕ ПартииТоваровНаСкладах.Номенклатура.* КАК Номенклатура, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры} СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладах.Номенклатура, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, ВЫБОР КОГДА ПартииТоваровНаСкладах.ДокументДвижения <> НЕОПРЕДЕЛЕНО ТОГДА ПартииТоваровНаСкладах.ДокументДвижения ИНАЧЕ ПартииТоваровНаСкладах.Регистратор КОНЕЦ Но в результат попадают не все докумменты из Регистра ПартииТоваровНаСкладах. Оказалось все просто. Если в документе нет движений по регистру ПартииТоваровНаСкладахУценка, то документ не попадпет в список. Т.е. если закомментировать строку ПартииТоваровНаСкладах.Регистратор = ПартииТоваровНаСкладахУценка.ДокументДвижения, то документ в список попадает, но получается полная ерунда. Вопрос в том, как отобрать в том числе и те документы, у которых нет движений по регистру ПартииТоваровНаСкладахУценка. |
|||
1
Aleksandr N
16.09.15
✎
00:42
|
(0) Думаю, что условия:
И ПартииТоваровНаСкладахУценка.Период МЕЖДУ &ДатаНачала И &ДатаКонца И ПартииТоваровНаСкладахУценка.Номенклатура = &НоменклатураСсылка в вашем случае лучше поставить в условия соединения, т.к. в противном случае у вас получается не совсем левое соединение. |
|||
2
Сияющий в темноте
16.09.15
✎
00:46
|
У него тпи вообще соединения нет,так как он отбирает по номенклатуре,и логичнее просто сделать выборку по документам в отдельную таблицу а потом из этой таблицы вытянуть дпныве с соединением с регистрами,т будет null,если какого то регистра нет
|
|||
3
Aleksandr N
16.09.15
✎
00:48
|
(2) Согласен. Предполагаю, что это лучше сделать через временную таблицу.
|
|||
4
kalisto
16.09.15
✎
01:16
|
Подскажите, как будет выглядеть запрос с использованием временной таблицы. С запросами только начала разбираться, поэтому с построением текстов запросов еще не очень...
|
|||
5
hhhh
16.09.15
✎
10:54
|
(4) просто ПартииТоваровНаСкладахУценка перенеси из ГДЕ в ПО. Не надо никаких таблиц
|
|||
6
bootini
16.09.15
✎
11:14
|
(5) Все таки лучше конечно виртуальные таблицы оборот регистров накопления использовать, а не физические ну и условия в ГДЕ по регистру уценки лишние, у него связи и так стоят.
|
|||
7
kalisto
16.09.15
✎
11:18
|
Условия в ГДЕ я убрала уже. И просьба, может кто дать ссылку на хорошую статью по виртуальным таблицам. Доделать бы уже этот отчет и забыть. Может кто еще приблизительно код подскажет, будут благодарна.
|
|||
8
olegves
16.09.15
✎
11:19
|
(5) +100 все условия по уценке убрать из ГДЕ в соедиинение
|
|||
9
kalisto
16.09.15
✎
11:50
|
(8) Убрала уже.
|
|||
10
bootini
16.09.15
✎
12:23
|
(7)
Много статей по виртуальным таблицам, вот например: http://www.develplatform.com/2013/06/1_23.html |
|||
11
Aleksandr N
17.09.15
✎
02:40
|
(9) Не получилось?
|
|||
12
Aleksandr N
17.09.15
✎
02:56
|
(9) Попробуйте так:
ВЫБРАТЬ ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура, ВЫБОР КОГДА ПартииТоваровНаСкладах.ДокументДвижения <> НЕОПРЕДЕЛЕНО ТОГДА ПартииТоваровНаСкладах.ДокументДвижения ИНАЧЕ ПартииТоваровНаСкладах.Регистратор КОНЕЦ КАК Регистратор, СУММА(ВЫБОР КОГДА НЕ ПартииТоваровНаСкладах.ДокументОприходования ССЫЛКА Документ.ОприходованиеТоваров ТОГДА ВЫБОР КОГДА ПартииТоваровНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА ПартииТоваровНаСкладах.Стоимость * -1 ИНАЧЕ ПартииТоваровНаСкладах.Стоимость КОНЕЦ ИНАЧЕ ВЫБОР КОГДА НЕ ПартииТоваровНаСкладахУценка.ДокументОприходования.Уценка ТОГДА ВЫБОР КОГДА ПартииТоваровНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход) ТОГДА ПартииТоваровНаСкладах.Стоимость * -1 ИНАЧЕ ПартииТоваровНаСкладах.Стоимость КОНЕЦ ИНАЧЕ ПартииТоваровНаСкладахУценка.Стоимость КОНЕЦ КОНЕЦ) КАК СтоимостьОборот ИЗ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладахУценка КАК ПартииТоваровНаСкладахУценка ПО ПартииТоваровНаСкладах.Номенклатура = ПартииТоваровНаСкладахУценка.Номенклатура И ПартииТоваровНаСкладах.Регистратор = ПартииТоваровНаСкладахУценка.ДокументДвижения И ПартииТоваровНаСкладахУценка.Период МЕЖДУ &ДатаНачала И &ДатаКонца И ПартииТоваровНаСкладахУценка.Номенклатура = &НоменклатураСсылка ГДЕ ПартииТоваровНаСкладах.Период МЕЖДУ &ДатаНачала И &ДатаКонца И ПартииТоваровНаСкладах.Номенклатура = &НоменклатураСсылка {ГДЕ ПартииТоваровНаСкладах.Номенклатура.* КАК Номенклатура, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры} СГРУППИРОВАТЬ ПО ПартииТоваровНаСкладах.Номенклатура, ПартииТоваровНаСкладах.ХарактеристикаНоменклатуры, ВЫБОР КОГДА ПартииТоваровНаСкладах.ДокументДвижения <> НЕОПРЕДЕЛЕНО ТОГДА ПартииТоваровНаСкладах.ДокументДвижения ИНАЧЕ ПартииТоваровНаСкладах.Регистратор |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |