|
Особенность или недопонимание работы запросов | ☑ | ||
---|---|---|---|---|
0
Skaz_ru
29.05.17
✎
14:02
|
Здравствуйте.
Изучаю создание отчетов с помощью СКД. Такая ситуация: добавил набор данных "Запрос" и с помощью конструктора создал запрос: - выбрал справочник, выбрал регистр сведений; - добавил левое внешнее соединение (из справочника берутся все элементы); - создал ресурсы, настройки. Формирую отчет без отбора - отчет выводится как надо: в колонках идут все элементы справочника, а в строках все данные что есть в регистре сведений. Пример (в ячейках указана дата покупки): | Товар 1 | Товар 2 | Товар 3 | ... | Товар N | Покупатель 1 | 27.05.2017 | | 22.05.2017 | | | Покупатель 2 | | 24.05.2017 | | | | Если я использую отбор (например выбираю "Покупатель 1"), то выводятся колонки в которых есть данные: | Товар 1 | Товар 3 | Покупатель 1 | 27.05.2017 | 22.05.2017 | А я думал что должно быть: | Товар 1 | Товар 2 | Товар 3 | ... | Товар N | Покупатель 1 | 27.05.2017 | | 22.05.2017 | | | Так и должно быть или я что-то не так делаю? Ведь если не применять отбор то ЛЕВОЕ соединение отрабатывает и выводятся все элементы из справочника. |
|||
1
Волшебник
модератор
29.05.17
✎
14:03
|
ты что-то не так делаешь
|
|||
2
cw014
29.05.17
✎
14:04
|
А точно товары у тебя все? Запрос хоть покажи
|
|||
3
aleks_default
29.05.17
✎
14:09
|
Отбор на ВСЮ таблицу нужно накладывать а не на отдельную группировку
|
|||
4
Лефмихалыч
29.05.17
✎
14:11
|
Ветку не читал потому, что и так понятно, что это очередная избитая граблями тема о том, что условие в ГДЕ превращает левое соединение во внутреннее.
|
|||
5
Лефмихалыч
29.05.17
✎
14:13
|
И это - отборы в группировке СКД накладываются после того, как набор был сгруппирован. Очень важно это понимать.
|
|||
6
Letum
29.05.17
✎
14:17
|
Нужно снять в полях галку "автозаполнение" и самому указать в запросе в каких местах должны применяться отборы (Компоновка данных - условия).
|
|||
7
aleks_default
29.05.17
✎
14:38
|
(6) Проще поля разыменовать.
|
|||
8
Letum
29.05.17
✎
14:38
|
Соответственно, при необходимости накладывать отбор только на регистр нужно прописать возможные поля отбора в параметры виртуальной таблицы на закладке "Компоновка данных".
Если таблица регистра не виртуальная то стоит переделать левое соединение в объединение. ИМХО его изначально стоит переделать. |
|||
9
Letum
29.05.17
✎
14:44
|
(7) Не понял, что имеется ввиду.
|
|||
10
aleks_default
29.05.17
✎
14:56
|
(9)При снятии галки автозаполнение придется каждое поле описывать вручную. А так, при создании у поля в нужном нам месте запроса уникального псевдонима отбор накладывается только на него и только там там где нам нужно.
|
|||
11
Skaz_ru
29.05.17
✎
15:25
|
(8) Вы имеете ввиду, что нужно сделать пакет запросов где в первом запросе я буду получать данные по условию (если условие задано) из регистра, а во втором запросе объединить этот результат со справочником?
(6) Вот этот способ получился. Спасибо большое (4) (5) Буду знать об этом и надеюсь не забуду. Спасибо (7) (10) До такого я еще не дошел, но буду искать информацию где можно указать в нужном месте запроса отбор. Спасибо |
|||
12
Letum
29.05.17
✎
15:33
|
(11) Можно и без пакетника сделать объединение, образно:
выбрать Регистр - Товар,Склад, Количество {Где Склад.*, Товар.*} Объединить Справочник - Ссылка, NULL, 0 для склада нужно указать "Игнорировать NULL". Без джойна имхо лучше. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |