|
Отбор в Построителе Отчета и левое соединение | ☑ | ||
---|---|---|---|---|
0
МастерВопросов
26.12.12
✎
15:22
|
Подскажите, пожалуйста, как сделать отбор средствами ПостроителяОтчета по полю СкладПродаж.
СкладПродаж - это Склад либо в регистраторе ОтчетОРозничныхПродажах, либо в регистраторе ОтчетОРозничныхПродажах. ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, Продажи.ХарактеристикаНоменклатуры, Продажи.Количество * Продажи.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Продажи.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК ПроданоВСЕГО ИЗ РегистрНакопления.Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ПО Продажи.Регистратор = РеализацияТоваровУслуг.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах ПО Продажи.Регистратор = ОтчетОРозничныхПродажах.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя ПО Продажи.Регистратор = ВозвратТоваровОтПокупателя.Ссылка ГДЕ Продажи.Период >= &ДатаНачПродаж И Продажи.Период <= &ДатаКонПродаж И Продажи.ЗаказПокупателя = НЕОПРЕДЕЛЕНО И ВозвратТоваровОтПокупателя.Ссылка ЕСТЬ NULL {ГДЕ Продажи.Номенклатура.* КАК Номенклатура, РеализацияТоваровУслуг.Склад КАК СкладПродаж, ОтчетОРозничныхПродажах.Склад КАК СкладПродаж} |
|||
1
МастерВопросов
26.12.12
✎
15:22
|
Подскажите, пожалуйста, как сделать отбор средствами ПостроителяОтчета по полю СкладПродаж.
СкладПродаж - это Склад либо в регистраторе РеализацияТоваровУслуг, либо в регистраторе ОтчетОРозничныхПродажах. |
|||
2
kumena
26.12.12
✎
15:27
|
предположу что через "Выбор Когда ...
|
|||
3
kabanoff
26.12.12
✎
15:39
|
Уродский запрос, ну да ладно.
Программный отбор можно сделать так:
|
|||
4
kumena
26.12.12
✎
15:45
|
(3) наверное чтобы использовать поле "СкладПродаж", нужно сначала его выбрать, а в исходном запросе его нет.
|
|||
5
kabanoff
26.12.12
✎
15:54
|
(4) Не обязательно. В отборе поле есть.
|
|||
6
МастерВопросов
26.12.12
✎
16:12
|
(3) я не спрашивал как мне програмно добавить отбор, это я и сам знаю. Мне нужно сформулировать условие в запросе по полю "СкладПродаж". То, что я привел в (0) не рабочее.
|
|||
7
Axel2009
26.12.12
✎
16:15
|
{ГДЕ
Продажи.Номенклатура.* КАК Номенклатура, ЕСТЬNULL(РеализацияТоваровУслуг.Склад, ОтчетОРозничныхПродажах.Склад) КАК СкладПродаж} |
|||
8
МастерВопросов
26.12.12
✎
16:21
|
(3) " Уродский запрос, ну да ладно."
=============================== Если подскажите как по Складу отфильтровать данные в регистре Продажи, буду благодарен. Нужны данные именно из этого регистра. В (0) только маленький фрагмент. //Естественно измерения "Склад" в нем нет. |
|||
9
МастерВопросов
26.12.12
✎
16:22
|
(7) спасибо.
Завтра попробую, думаю то что надо. |
|||
10
kabanoff
26.12.12
✎
16:36
|
(8) {ГДЕ (ВЫБОР
КОГДА Регистратор ССЫЛКА Документ.РеализацияТоваровИУслуг ТОГДА ВЫРАЗИТЬ(Регистратор КАК Документ.РеализацияТоваровИУслуг).Склад КОГДА ... ТОГДА ... КОНЕЦ).* КАК СкладПродаж} Уродский он из-за связей с таблицами документов, которые по сути не нужны, а также из-за использования таблицы движений регистра вместо виртуальной таблицы оборотов. И условие "И ВозвратТоваровОтПокупателя.Ссылка ЕСТЬ NULL" превращает левое соединение во внутреннее. |
|||
11
Axel2009
26.12.12
✎
16:38
|
(10) "И условие "И ВозвратТоваровОтПокупателя.Ссылка ЕСТЬ NULL" превращает левое соединение во внутреннее."
посмеялсо |
|||
12
kabanoff
26.12.12
✎
16:39
|
(11) Где смеяться? не понял.
|
|||
13
Axel2009
26.12.12
✎
16:39
|
(0)
кстати да ВЫБРАТЬ Продажи.Номенклатура КАК Номенклатура, Продажи.ХарактеристикаНоменклатуры, Продажи.Количество * Продажи.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / Продажи.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК ПроданоВСЕГО ИЗ РегистрНакопления.Продажи КАК Продажи ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ПО Продажи.Регистратор = РеализацияТоваровУслуг.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Документ.ОтчетОРозничныхПродажах КАК ОтчетОРозничныхПродажах ПО Продажи.Регистратор = ОтчетОРозничныхПродажах.Ссылка ГДЕ Продажи.Период >= &ДатаНачПродаж И Продажи.Период <= &ДатаКонПродаж И Продажи.ЗаказПокупателя = НЕОПРЕДЕЛЕНО И НЕ Продажи.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя |
|||
14
Axel2009
26.12.12
✎
16:40
|
(12) про с левого на внутренний.
|
|||
15
kabanoff
26.12.12
✎
16:44
|
(14) Ну а как его еще назвать? Не левое однозначно.
|
|||
16
Axel2009
26.12.12
✎
16:45
|
(15) а как выбирают такие записи из одной таблицы, которых нет в другой???
|
|||
17
kabanoff
26.12.12
✎
16:46
|
(16) Именно так и выбирают. Мы же говорим про название данного типа соединения. Как его назвать?
|
|||
18
Axel2009
26.12.12
✎
16:47
|
(17) внутреннее соединение это какое?
оно левым и остается. |
|||
19
МастерВопросов
26.12.12
✎
16:48
|
(10) "Уродский он из-за связей с таблицами документов, которые по сути не нужны"
============================ я подумал что при неявном соединении регистр будет искать поле "Склад" во всех таблицах документов, которые есть в составном типе регистратора. Поэтому написал явное и только с тремя таблицами. " а также из-за использования таблицы движений регистра вместо виртуальной таблицы оборотов." ========================= Во первых виртуальная таблица это тот же подзапрос, а я делаю все за один проход. Во вторых и в главных - каким параметром виртульной таблицы задать условие на Склад? |
|||
20
toypaul
гуру
26.12.12
✎
16:49
|
если СкладПродаж есть только в этих документах, то можно попробовать {ГДЕ Регистратор.СкладПродаж}
|
|||
21
Axel2009
26.12.12
✎
16:50
|
(19) правильно все сделал. именно так и надо писать, чтобы другие после тебя все поняли
|
|||
22
kabanoff
26.12.12
✎
16:50
|
(18) Я имею ввиду, что это внутреннее соединение первой таблицы по отношению к пустому множеству второй таблицы. Это уже не левое соединение. Что не так?
|
|||
23
toypaul
гуру
26.12.12
✎
16:50
|
(19) все правильно сделал.
|
|||
24
МастерВопросов
26.12.12
✎
16:52
|
(20) нет, Склад есть в том же "ВозвратОтПокупателя" и в других доках тоже.
|
|||
25
Axel2009
26.12.12
✎
16:54
|
(24) если надо только 2 таблицы учесть, добавь отбор на эти 2 вида регистратора..
|
|||
26
kabanoff
26.12.12
✎
16:54
|
(21) "Во первых виртуальная таблица это тот же подзапрос, а я делаю все за один проход"
Глупость. Для чего они (виртуальные таблицы) по твоему мнению тогда нужны? "Во вторых и в главных - каким параметром виртульной таблицы задать условие на Склад" Если его нет в измерениях регистра, то никаким. Но это не повод не использовать виртуальные таблицы. |
|||
27
Axel2009
26.12.12
✎
16:55
|
(22) сколько на форумах читаю про эти соединения и не только в 1с, но такой извращенной мысли не видел.. можешь называть это так
|
|||
28
kabanoff
26.12.12
✎
16:55
|
(20) Так делать нельзя. Разыменование полей составного типа приводит к увеличению соединений в запросе.
|
|||
29
kabanoff
26.12.12
✎
16:56
|
(27) Называй как хочешь, я не против.
|
|||
30
Axel2009
26.12.12
✎
16:56
|
(26)
1. для того, чтобы по регистратору не читать ниче. как бы в виртуальной таблице все свернуто. а если идет периодичность регистратор, то запросы идут в любом случае к основной таблице. 2. вполне себе повод. и причем очень даже правильный |
|||
31
kabanoff
26.12.12
✎
16:58
|
(30) А как насчет других отборов, например, по номенклатуре? Тоже не повод?
|
|||
32
Axel2009
26.12.12
✎
16:58
|
(29) ты главное на форумах так не говори, а то не поймут сразу то. придется объяснять. либо сразу вот это все и пиши.
|
|||
33
Axel2009
26.12.12
✎
16:58
|
(31) естественно.
|
|||
34
kabanoff
26.12.12
✎
17:05
|
(33) Т.е. ты считаешь, что использовать таблицу движений РН в случае, если нужна периодичность по регистратору, будет правильно, нежели использовать виртуальную таблицу оборотов?
|
|||
35
Axel2009
26.12.12
✎
17:12
|
(31) открою махонький секрет. в виртуальной таблице итогов нет поля регистратор. да и поле Период там периодичен месяцу. поэтому если ты собираешь данные за 1 день, то может выгоднее взять данные с таблицы движений, чем с виртуальной таблицы.
|
|||
36
kabanoff
26.12.12
✎
17:22
|
(35) Не хочу тебя расстраивать, но это не секрет.
А если пользователь укажет другой период? Да и с чего ты взял, что компоновщику запроса выгоднее, а что нет? Сделай отбор по таблице движений, это будет быстрее? |
|||
37
Axel2009
26.12.12
✎
17:25
|
(36)
1. пусть указывает. пользуй обороты, только с периодичностью регистратор все равно к таблице итогов не будет обращений 2. я беру то, что 1с отправляет на скуль сервер. 3. в каком случае? если нужен регистратор или если он не нужен? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |