|
Соединение по условию | ☑ | ||
---|---|---|---|---|
0
skyadmin
02.06.16
✎
08:14
|
Сделал такой простенький запрос, смысл которого в том, что если выбран контрагент, то выводилась только та номенклатура, которая есть у контрагента.
ВЫБРАТЬ СправочникНоменклатура.Ссылка КАК Номенклатура ИЗ Справочник.Номенклатура КАК СправочникНоменклатура ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураПоставщика.СрезПоследних(, {Контрагент В ИЕРАХИИ(&Контрагент)}) КАК НоменклатураПоставщика ПО НоменклатураПоставщика.Номенклатура = СправочникНоменклатура.Ссылка Вопрос в том , как сделать в запросе или СКД так, чтобы правого соединения небыло вообще, если контрагент не выбран, чтобы воводилась вся номенклатура, а не только та что есть у контрагентов? При таком запросе не выводиться номенклатура, если она не зарегистрирована хотябы у одного контрагента... |
|||
1
Рэйв
02.06.16
✎
08:26
|
тебе вообще не нужно соединение.
Сделай запрос на срез последних к регистру как у тебя написано, там уже будет номенклатура |
|||
2
Enterprise
02.06.16
✎
08:28
|
(1) Но не вся
|
|||
3
Рэйв
02.06.16
✎
08:29
|
(2)Как раз та, которая принадлежит контрагентам в фильтре
|
|||
4
Рэйв
02.06.16
✎
08:30
|
(0)А чтобы вся выводлась тогда тебе нужно левое соединение а не правое
|
|||
5
skyadmin
02.06.16
✎
08:35
|
Надо что то вроде такого результата
Если Контрагент.Выбран() ТОГДА ПРАВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураПоставщика.СрезПоследних(, {Контрагент В ИЕРАХИИ(&Контрагент)}) КАК НоменклатураПоставщика ПО НоменклатураПоставщика.Номенклатура = СправочникНоменклатура.Ссылка КонецЕсли Если сделать левое соединение, тогда будет выводиться и та, что не нужна.. Ладно спасибо, поэксперементирую еще.. |
|||
6
Enterprise
02.06.16
✎
08:37
|
(5) Ну добавь еще в конце условие, которое отберет нужные строки
|
|||
7
Enterprise
02.06.16
✎
08:42
|
- ВЫБРАТЬ
- СправочникНоменклатура.Ссылка КАК Номенклатура, - НоменклатураПоставщика.Номенклатура КАК НоменклатураПоставщика - ИЗ - Справочник.Номенклатура КАК СправочникНоменклатура - ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураПоставщика.СрезПоследних(, {Контрагент В ИЕРАХИИ(&Контрагент)}) КАК НоменклатураПоставщика - ПО НоменклатураПоставщика.Номенклатура = СправочникНоменклатура.Ссылка - ГДЕ ВЫБОР КОГДА &ПустойКонтрагент - ТОГДА ИСТИНА - ИНАЧЕ НЕ НоменклатураПоставщика.Номенклатура ЕСТЬ NULL - КОНЕЦ Ну это если грубо) |
|||
8
skyadmin
02.06.16
✎
08:58
|
Спасибо))
|
|||
9
skyadmin
02.06.16
✎
14:21
|
Довольно странно, но на СКД заработало все как нужно в таком запросе.
В группировках только номенклатура и характеристика, а контрагент в отборе. ВЫБРАТЬ РАЗЛИЧНЫЕ СправочникНоменклатура.Ссылка КАК Номенклатура, ХарактеристикиНоменклатуры.Ссылка КАК ХарактеристикаНоменклатуры, НоменклатураПоставщика.Контрагент ИЗ Справочник.Номенклатура КАК СправочникНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры ПО (ХарактеристикиНоменклатуры.Владелец = СправочникНоменклатура.Ссылка) ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураПоставщика.СрезПоследних(, ) КАК НоменклатураПоставщика ПО (НоменклатураПоставщика.Номенклатура = СправочникНоменклатура.Ссылка) ГДЕ СправочникНоменклатура.ЭтоГруппа = ЛОЖЬ И СправочникНоменклатура.ПометкаУдаления = ЛОЖЬ И ВЫБОР КОГДА ХарактеристикиНоменклатуры.ПометкаУдаления ЕСТЬ NULL ТОГДА ИСТИНА ИНАЧЕ ХарактеристикиНоменклатуры.ПометкаУдаления = ЛОЖЬ КОНЕЦ |
|||
10
skyadmin
02.06.16
✎
15:15
|
Похоже, что при наличии отбора скд меняет соединение на внутреннее.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |