|
Учу 8ку. Запрос к двум регистрам | ☑ | ||
---|---|---|---|---|
0
Тихий омут
03.06.14
✎
08:45
|
Есть два регистра остатков - Остатки и Брак. Структура одинаковая - измерения Товар, Склад, ресурс Количество. Задача - выбрать остатки из этих регистров в виде Товар-ОстатокТовара-ОстатокБрака. Само собой, что товар может отсутствовать на остатках как в одном, так и в другом регистре, в этом случае в соответствующем поле должен быть 0.
Набросал вот такой запрос: ВЫБРАТЬ | ОстаткиТоваровОстатки.Товар КАК Товар, | ОстаткиТоваровОстатки.КоличествоОстаток КАК Ост, | 0 КАК ОстБрак |ИЗ | РегистрНакопления.ОстаткиТоваров.Остатки(КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), Склад = &Склад) КАК ОстаткиТоваровОстатки | |ОБЪЕДИНИТЬ | |ВЫБРАТЬ | БракОстатки.Товар, | 0, | БракОстатки.КоличествоОстаток |ИЗ | РегистрНакопления.Брак.Остатки(КОНЕЦПЕРИОДА(&ДатаОтчета, ДЕНЬ), Склад = &Склад) КАК БракОстатки но он, само собой, выдает по две строчки на товар - Товар-Остаток-0 и Товар-0-ОстатокБрака. Как сделать правильно? Временная таблица, группировка, итоги - ткните носом, что использовать... Курс Гилева по СКД не помог, разработка сложных отчетов Хрусталевой тоже:) |
|||
1
butterbean
03.06.14
✎
08:46
|
например ИТОГИ СУММА(Ост),СУММА(ОстБрак) ПО Товар
|
|||
2
senior
03.06.14
✎
08:47
|
даже как-то неудобно соединение предлагать
|
|||
3
NcSteel
03.06.14
✎
08:49
|
(0) Впихнуть во вложенный запрос и сгруппировать.
(2) Далеко не факт что соединение будет оптимальней |
|||
4
Тихий омут
03.06.14
✎
08:50
|
(2) Которое именно? Насколько хватает моего межушного ганглия, левое обрежет товары, отсутствующие в первом, но имеющиеся во втором регистре, разве не так?
|
|||
5
butterbean
03.06.14
✎
08:51
|
(4) еще есть ПОЛНОЕ и ВНУТРЕННЕЕ, продолжай развивать ганглий
|
|||
6
senior
03.06.14
✎
08:52
|
(4) кто-то заставляет силой использовать ЛЕВОЕ?
|
|||
7
IVT_2009
03.06.14
✎
08:53
|
Справочник Товар - регистр 1
- регистр 2 используем левое соединение от товара к регистру. Правда покажет и тот товар по которому нет ничего , но можно в условии поставить - не отбирать пустые позиции |
|||
8
senior
03.06.14
✎
08:55
|
(7) забудьте здесь про ЛЕВОЕ
|
|||
9
IVT_2009
03.06.14
✎
08:55
|
Вариант 2 - из области извращений. ! таблица запрос на объединение из двух регистров - получим то что вообще присутствует. От этой таблицы запрос с левым соединением к обоим регистрам. Покажет только то что присутствует.
|
|||
10
IVT_2009
03.06.14
✎
08:55
|
(8) в чем я ошибаюсь в таком случае ?
|
|||
11
СвинТуз
03.06.14
✎
08:59
|
не факт что 1с не делает именно так внутри себя )
|
|||
12
Тихий омут
03.06.14
✎
09:01
|
(5) ага, а ещё есть правое, только не в 8ке:) Внутреннее оставляет только те товары, которые есть в обоих регистрах. Полное - показывает вроде то, что нужно.
Ушёл думать. |
|||
13
jsmith82
03.06.14
✎
09:05
|
выбрать
естьnull(остаткитоваров.товар, остаткибрака.товар) как товар, естьnull(остаткитоваров.количествоостаток, 0) как остатоктовара, естьnull(остаткибрака.количествоостаток, 0) как остатокбрака из рн.остаткитоваров как остаткитоваров внутреннеесоединение рн.остаткибрака как остаткибрака по остаткитоваров.товар = остаткибрака = брак |
|||
14
jsmith82
03.06.14
✎
09:06
|
по остаткитоваров.товар = остаткибрака.товар
|
|||
15
jsmith82
03.06.14
✎
09:06
|
хотя нет. тут полное. сорри
|
|||
16
IVT_2009
03.06.14
✎
09:07
|
(12) пойду почитаю теорию , освежу познания.
|
|||
17
senior
03.06.14
✎
09:11
|
(12) открою секрет правое и в восьмерке есть
|
|||
18
jsmith82
03.06.14
✎
09:19
|
конструктор запроса переделывает правое в левое
|
|||
19
jsmith82
03.06.14
✎
09:20
|
ибо на низком уровне всегда левое идёт при сравнении
|
|||
20
Jokero
03.06.14
✎
09:27
|
(17) правого нет, правое - это левое только таблицы меняются местами))
(0)стандартным соединением)) полным Но если хочется, то можно еще попробовать в цикле сравнивать позиции регистров через точку, вообще без запроса, нелогичных объединений и страшных соединений многоликих))) ну а чо, главное результат) з.Ы Итак варианты 1.Объединение с Итогами 2.Полное Соединение 3.Цикл с обращением через точку (Вроде ниче не забыл), кто еще какой поизвращеннее способ предложит? |
|||
21
Тихий омут
03.06.14
✎
09:32
|
покурил SQL FULL JOIN. Всё стало понятно. Всем огромное спасибо.
(20) прямой запрос к таблицам регистров. Когда-нить 8ка мну достанет, так и сделаю))) |
|||
22
СвинТуз
03.06.14
✎
10:00
|
(21)
а чего тянуть то? "внешние источники данных" . И вперед. Флаг в руки. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |