Имя: Пароль:
1C
1С v8
Есть запрос в котором связана номенклатура из табличной части документа со всей
0 Ivan_495
 
03.11.16
15:27
Есть запрос в котором связана номенклатура из табличной части документа со всей номенклатурой из справочника номенклатуры, в том числе с номенклатурой расположенной внутри групп элементов? В справочнике номенклатуры используется иерархия элементов.

При этом получаются все аналоги номенклатуры общим списком.
Как исправить запрос, чтобы аналоги были отдельно, сначала для одной номенклатуры , потом для другой?

ВЫБРАТЬ
    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Количество) КАК Количество,
    СУММА(РасходнаяНакладнаяСписокНоменклатуры.Сумма) КАК Сумма,
    РасходнаяНакладнаяСписокНоменклатуры.НомерСтроки КАК НомерСтроки
ПОМЕСТИТЬ ДокТЧ
ИЗ
    Документ.РасходнаяНакладная.СписокНоменклатуры КАК РасходнаяНакладнаяСписокНоменклатуры
ГДЕ
    РасходнаяНакладнаяСписокНоменклатуры.Ссылка = &Ссылка

СГРУППИРОВАТЬ ПО
    РасходнаяНакладнаяСписокНоменклатуры.Номенклатура,
    РасходнаяНакладнаяСписокНоменклатуры.НомерСтроки

ИНДЕКСИРОВАТЬ ПО
    НомерСтроки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ДокТЧ.Номенклатура КАК Номенклатура,
    Ном.Ссылка КАК Аналог,
    ВЫБОР
        КОГДА Ном.Ссылка = ДокТЧ.Номенклатура
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ КАК Приоритет
    ИЗ
    ДокТЧ КАК ДокТЧ
        ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Ном
        ПО ДокТЧ.Номенклатура = Ном.Ссылка
ГДЕ
    Ном.Ссылка В ИЕРАРХИИ
            (ВЫБРАТЬ
                ДокТч.Номенклатура
            ИЗ
                ДокТч)
1 bodri
 
03.11.16
15:30
группировка с начало номенклатура, а потом аналог
2 iITmenedger
 
03.11.16
15:31
(0) а вот это зачем

ВЫБОР
        КОГДА Ном.Ссылка = ДокТЧ.Номенклатура
            ТОГДА 1
        ИНАЧЕ 2
    КОНЕЦ КАК Приоритет

правильнее проверять на ЕСТЬNULL

И почему используешь именно ПОЛНОЕ СОЕДИНЕНИЕ?
3 Ivan_495
 
03.11.16
15:38
4 Ivan_495
 
03.11.16
15:39
в (3) результат работы запроса
в первой колонке вместо NULL д.б. номенклатура связанная с аналогами во второй колонке
5 d546
 
03.11.16
15:43
И почему используешь именно ПОЛНОЕ СОЕДИНЕНИЕ?
6 d546
 
03.11.16
15:43
флеш-моб :)
7 DrShad
 
03.11.16
15:44
я за попкорном
8 Ivan_495
 
03.11.16
15:52
при полном соединении попадают все нужные элементы
9 iITmenedger
 
03.11.16
15:52
(4)у тебя при соединении номенклатура связывается сама с собой:

ПОЛНОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Ном
        ПО ДокТЧ.Номенклатура = Ном.Ссылка


"в первой колонке вместо NULL д.б. номенклатура связанная с аналогами во второй колонке"

Правильнее использовать ЕСТЬNULL()
10 iITmenedger
 
03.11.16
15:55
(8) Если при выборке элемента номенклатуры у тебя не будет найдено такой номенклатуры в ТЧ Документа у тебя будет ДокТЧ.Номенклатура = NULL в первой колонке, во второй ты просто получишь Номенклатуру

В чем смысл этого всего?
11 Ivan_495
 
03.11.16
16:12
основной смысл здесь
ГДЕ
    Ном.Ссылка В ИЕРАРХИИ
            (ВЫБРАТЬ
                ДокТч.Номенклатура

            ИЗ
                ДокТч)
но это для спецов
12 Ivan_495
 
03.11.16
16:13
если есть специалисты подскажите
13 azernot
 
03.11.16
16:18
Если аналог - это любая номенклатура лежащая в той же группе, то проще соединять по родителю, и слева:

ДокТЧ КАК ДокТЧ
        Левое СОЕДИНЕНИЕ Справочник.Номенклатура КАК Ном
        ПО ДокТЧ.Номенклатура.Родитель = Ном.Родитель

Тогда и эта муть
Ном.Ссылка В ИЕРАРХИИ
            (ВЫБРАТЬ
                ДокТч.Номенклатура
не нужна
14 iITmenedger
 
03.11.16
16:21
(11) о каких спецах ты говоришь?

Смысл полного соединения если ты делаешь условие по номенклатуре из ТЧ документа??? ты сам понимаешь что делаешь?
15 DrShad
 
03.11.16
16:28
(14) ты не спец ))))
16 iITmenedger
 
03.11.16
16:32
(15) аха-ха-ха)))) точно нужны спецы по обсуждению ламерских корявых запросов
17 DrShad
 
03.11.16
16:36
(16) обсуждению!? акстись ирод
18 iITmenedger
 
03.11.16
16:40
(17) не понимаю твоего черного юмора)))
19 DrShad
 
03.11.16
16:41
(18) запомни ТС, потом поймешь
20 iITmenedger
 
03.11.16
16:44
(19)ТС делает ПОЛНОЕ СОЕДИНЕНИЕ и при этом ограничивает в условии выборку

Ном.Ссылка В ИЕРАРХИИ
            (ВЫБРАТЬ
                ДокТч.Номенклатура

Я не вижу, что этот запрос написан спецом
21 Ivan_495
 
03.11.16
19:39
это решение задачи 1.19 экзамена на спеца
22 Ivan_495
 
03.11.16
19:40
кто решал, просьба прокомментировать
23 bootini
 
03.11.16
19:59
Толком то объясни как аналог с номенклатурой связан, тебе (13) ответили, что через родителя если аналоги это вся номенклатура одной группы.
24 Ivan_495
 
04.11.16
12:52
да связь через родителя, но не так просто как в (13),есть еще связь родитель.родитель, и надо не забывать,что используется ирархия элементов
25 Ivan_495
 
04.11.16
12:54
каждый элемент связан с веткой аналогов, родителем этой ветки он и является
26 Ivan_495
 
04.11.16
12:59
глубина ирархии ветки может быть несколько уровней,а не один как в (13)
27 azernot
 
04.11.16
14:31
ДокТЧ КАК ДокТЧ
        Левое СОЕДИНЕНИЕ Справочник.Номенклатура КАК Ном
        ПО ДокТЧ.Номенклатура= Ном.Родитель
ИЛИ ДокТЧ.Номенклатура= Ном.Родитель.Родитель
ИЛИ ДокТЧ.Номенклатура= Ном.Родитель.Родитель.Родитель
ИЛИ ДокТЧ.Номенклатура= Ном.Родитель.Родитель.Родитель.Родитель
и т.п.


А вообще, давай оригинальный текст задачи 1.19
Сдаётся мне, что-то ты не договариваешь
28 Ivan_495
 
04.11.16
14:34
а если 10 уровней вложенности, то при использовании (13) делать десять левых соединений?
29 azernot
 
04.11.16
14:43
(28) Одно, но с десятью условиями.
Ну нет возможности соединения по условию В ИЕРАРХИИ в запросе. Смирись.
Если бы это был к примеру отчёт на СКД, там можно было бы связать два набора.

Нужно до конца и чётко понимать задачу, со всеми условиями и нюансами. Ты стойко переносишь все пытки и хранишь свою тайну. Дело твоё.
30 azernot
 
04.11.16
14:45
Тьфу блин, я вспомнил ТС.
Нафиг-нафиг. С этим куском неадеквта лучше не связываться... так что - без меня.
31 bootini
 
04.11.16
15:18
(26) сделай как все нормальные люди через регистр сведений, номенклатура - аналог.
32 Ivan_495
 
04.11.16
18:55
(30) Слышь ты засранюка малолетняя, это ты папе своему скажешь, что он кусок говна, не научил тебя с людьми разговаривать.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан