|
СКД, компоновка и выборка данных | ☑ | ||
---|---|---|---|---|
0
Axel2009
29.03.13
✎
11:11
|
есть запрос
ВЫБРАТЬ ПродажиОбороты.Контрагент КАК Контрагент, ПродажиОбороты.Номенклатура КАК Номенклатура ПОМЕСТИТЬ втОборотыПродаж {ВЫБРАТЬ Контрагент.*, Номенклатура.*} ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , {(Номенклатура).*, (Номенклатура.ОсновнойПоставщик).* КАК Поставщик, (Контрагент).*}) КАК ПродажиОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыПереданныеОстатки.Номенклатура КАК Номенклатура, ТоварыПереданныеОстатки.Контрагент КАК Контрагент ПОМЕСТИТЬ втТоварыПереданные {ВЫБРАТЬ Контрагент.*, Номенклатура.*} ИЗ РегистрНакопления.ТоварыПереданные.Остатки(&КонецПериода, {(Номенклатура).*, (Номенклатура.ОсновнойПоставщик).* КАК Поставщик, (Контрагент).*}) КАК ТоварыПереданныеОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ втОборотыПродаж.Контрагент КАК Контрагент, ЕСТЬNULL(втОборотыПродаж.Номенклатура,втТоварыПереданные.Номенклатура) КАК Номенклатура {ВЫБРАТЬ Контрагент.*, Номенклатура.*} ИЗ втОборотыПродаж КАК втОборотыПродаж ЛЕВОЕ СОЕДИНЕНИЕ втТоварыПереданные КАК втТоварыПереданные ПО втОборотыПродаж.Контрагент = втТоварыПереданные.Контрагент И втОборотыПродаж.Номенклатура = втТоварыПереданные.Номенклатура в выбранных полях ТОЛЬКО Номенклатура. как добиться, чтобы СКД не выбирала в первых 2х запросах поле Контрагент? что-то не получается.. |
|||
1
SherifSP
29.03.13
✎
11:13
|
(0) В ручную стереть?
|
|||
2
Axel2009
29.03.13
✎
11:19
|
(1) если понадобится выбор торговой точки в выводе отчета, то куда стирать?
|
|||
3
Axel2009
29.03.13
✎
12:17
|
костыль найден. решение нет.
|
|||
4
Defender aka LINN
29.03.13
✎
12:20
|
У тебя ж соединение по контрагенту идет.
|
|||
5
c00Lo
29.03.13
✎
12:36
|
Ничего не понятно, ты к втОборотыПродаж пытаешься прицепить левым соединением другую таблицу.
У тебя втОборотыПродаж.Номенклатура никогда не будет рана NULL. |
|||
6
c00Lo
29.03.13
✎
12:42
|
Попробую протелепатировать.
Сделать отдельно таблицу с контрагентами по 2м регистрам. и уже к ней цеплять втОборотыПродаж и втТоварыПереданные с левым соединением со связью по контрагенту. |
|||
7
Axel2009
29.03.13
✎
12:56
|
(4) да идет. но только когда СКДшка формируется в выбранных полях нет Контрагент, значит их и выбирать не надо и по ним соединять не надо.
однако подобного не происходит, и выбираются ВСЕ колонки. но этого можно избежать, если использовать внутренний запрос: ВЫБРАТЬ ПродажиОбороты.Контрагент КАК Контрагент, ПродажиОбороты.Номенклатура КАК Номенклатура ПОМЕСТИТЬ втОборотыПродаж {ВЫБРАТЬ Контрагент.* КАК Контрагент, Номенклатура.*} ИЗ РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , {(Номенклатура).*, (Номенклатура.ОсновнойПоставщик).* КАК Поставщик, (Контрагент).* КАК Контрагент}) КАК ПродажиОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыПереданныеОстатки.Номенклатура КАК Номенклатура, ТоварыПереданныеОстатки.Контрагент КАК Контрагент ПОМЕСТИТЬ втТоварыПереданные {ВЫБРАТЬ Контрагент.* КАК Контрагент, Номенклатура.*} ИЗ РегистрНакопления.ТоварыПереданные.Остатки(&КонецПериода, {(Номенклатура).*, (Номенклатура.ОсновнойПоставщик).* КАК Поставщик, (Контрагент).* КАК Контрагент}) КАК ТоварыПереданныеОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЕСТЬNULL(втОборотыПродаж.Контрагент, втТоварыПереданные.Контрагент) КАК Контрагент, ЕСТЬNULL(втОборотыПродаж.Номенклатура, втТоварыПереданные.Номенклатура) КАК Номенклатура {ВЫБРАТЬ Контрагент.* КАК Контрагент, Номенклатура.* КАК Номенклатура} ИЗ втОборотыПродаж КАК втОборотыПродаж ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ втТоварыПереданные.Номенклатура КАК Номенклатура, втТоварыПереданные.Контрагент КАК Контрагент {ВЫБРАТЬ Номенклатура.*, Контрагент.*} ИЗ втТоварыПереданные КАК втТоварыПереданные) КАК втТоварыПереданные ПО втОборотыПродаж.Номенклатура = втТоварыПереданные.Номенклатура И втОборотыПродаж.Контрагент = втТоварыПереданные.Контрагент в этом случае результирующий запрос не будет нигде содержать поле "Контрагент", что даст прирост, потому как во временных таблицах не будет среза по контрагентам. |
|||
8
Axel2009
29.03.13
✎
13:20
|
(5) вопрос был связан не с ISNULL, а с другой вещью, убрать из выборки лишние колонки, чтобы результирующий запрос выполнялся быстрее
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |