Имя: Пароль:
1C
1С v8
Что-то не соображу как запрос написать
,
0 alexmobile
 
17.10.13
19:44
Имеются три виртуальные таблицы (ВТ). ВТ1 - полный справочник статей затрат с полем "Статья". ВТ2 - данные по расходам поля "Статья","Ресурс","Рекв", ВТ3- сгруппированный список "Рекв" из ВТ2.
Требуется получить выходную таблицу с полным списком статей и значений ресурса для каждого реквизита ВТ2 независимо было-ли значение ресурса на данной статье.
Для наглядности нарисую результат:
Рекв1
Статья1  Ресурс1
Статья2  Ресурс2
...
СтатьяН  РесурсН
Рекв2
Статья1  Ресурс1
Статья2  Ресурс2
...
СтатьяН  РесурсН
.....
РеквН
Статья1  Ресурс1
Статья2  Ресурс2
...
СтатьяН  РесурсН
1 alexmobile
 
18.10.13
08:06
апну пожалуй.
виртуальные читать как временные.
2 Лодырь
 
18.10.13
08:10
Декартово произведение статей с реквизитами соедини  левым соединением с ВТ2?
3 alexmobile
 
18.10.13
08:15
(2)В ВТ2 для некоторых реквизитов нет движений по статьям, соответственно и этих строк нету, а в результате они нужны с пустыми значениями ресурса.
4 Лодырь
 
18.10.13
08:16
(3) Поэтому и левое соединение. А вместо ресурса юзать ЕСТЬNULL(Ресурс)
5 Лодырь
 
18.10.13
08:17
точнее ЕСТЬNULL(Ресурс,"тут нихрена нету")
6 alexmobile
 
18.10.13
08:40
(2)
выбрать
вт1.Статья,
Вт2.Ресурс,
ВТ2.Реквизит
из ВТ1 как как вт1
левое соединение ВТ2 как вт2
по вт1.Статья=вт2.Статья

Такой запрос не подходит.
т.к. в результат не добавятся строки со статьями которых нет в ВТ2

Рекв1
Статья1  Ресурс1
Статья2  Ресурс2 (этой строки нету т.к. в ВТ2 нет такой статьи для рекв1. а нужна)
...
СтатьяН  РесурсН
Рекв2
Статья1  Ресурс1
Статья2  Ресурс2
...
СтатьяН  РесурсН
.....
РеквН
Статья1  Ресурс1
Статья2  Ресурс2
...
СтатьяН  РесурсН
7 Мимохожий Однако
 
18.10.13
08:52
Полное соединение пробовал?
8 m-serg74
 
18.10.13
08:56
(7) зачем полное если ВТ1 судя по (0) полный справочник статей...

(6) как при ЛЕВОМ попадут не все строки из ВТ1?
9 Лодырь
 
18.10.13
09:00
ВЫБРАТЬ
    ВложенныйЗапрос.Статья,
    ВложенныйЗапрос.Реквизит,
    ЕСТЬNULL(Вт2.Ресурс, "не было данных") КАК Поле1
ИЗ
    (ВЫБРАТЬ
        ВТ1.Статья КАК Статья,
        ВТ3.Реквизит КАК Реквизит
    ИЗ
        ВТ1 КАК ВТ1,
        ВТ3 КАК ВТ3) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ Вт2 КАК Вт2
        ПО ВложенныйЗапрос.Статья = Вт2.Статья
            И ВложенныйЗапрос.Реквизит = Вт2.Реквизит
10 alexmobile
 
18.10.13
09:04
(7) да
(8) вот так, не попадают
щас попробую (9)
11 m-serg74
 
18.10.13
09:07
(9) /с полным списком статей и значений ресурса для каждого реквизита ВТ2/
на фига в (9)
ВЫБРАТЬ
        ВТ1.Статья КАК Статья,
        ВТ3.Реквизит КАК Реквизит
    ИЗ
        ВТ1 КАК ВТ1,
        ВТ3 КАК ВТ3

не проще тогда левое с соединением просто по статье
12 m-serg74
 
18.10.13
09:10
+(11)

ВЫБРАТЬ
    ВТ1.Статья КАК Статья,
    ВТ2.Реквизит КАК Реквизит,
    ВТ2.Ресурс КАК Ресурс
ИЗ
    ВТ1 КАК ВТ1
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ2 КАК ВТ2
    ПО ВТ1.Статья = ВТ2.Статья
13 m-serg74
 
18.10.13
09:12
(11),(12) отставить (9) наверное правильно
14 alexmobile
 
18.10.13
09:12
(12)
нет.
В ВТ2 для некоторых реквизитов нет движений по статьям, соответственно и этих строк нету, а в результате они нужны с пустыми значениями ресурса.
15 m-serg74
 
18.10.13
09:14
(14) я в (13) написал уже
16 alexmobile
 
18.10.13
09:20
(9) нет. результат как при левом вт1 к вт2
17 Лодырь
 
18.10.13
09:24
(16) Не может быть.
18 m-serg74
 
18.10.13
09:43
(17) кстати может надо не к вложенному а к результату полного соединения статьи/реквизиты присоединить ВТ2
19 m-serg74
 
18.10.13
09:44
(18) опять отставить у тебя в (9) так и есть
20 Sabbath
 
18.10.13
09:47
(0) в 9 (9) написали, как и я думаю
21 Sabbath
 
18.10.13
09:50
(16) ну тебе же нужны все комбинации Статья+Рекв и к ним значения ресурса?
Статья+Рекв получается декартовым, а значение ресурса подсоединяется левым с использованием ЕСТЬNULL. Корчое как в (9) все. Или задача другая
22 alexmobile
 
18.10.13
09:50
Да. в (9) все верно. я немного ошибся.
23 alexmobile
 
18.10.13
09:50
результат получен
24 Sabbath
 
18.10.13
09:51
(16) Только рекв бери не из регистра, наверно, если тебе нужны все значения, а из справочника, или где он у тебя там