Имя: Пароль:
1C
 
Рекурсия в запросе
0 myr4ik07
 
16.09.16
09:09
Есть запрос1
ВЫБРАТЬ
    НастройкиКПИ.Группа,
    НастройкиКПИ.Значение
ИЗ
    РегистрСведений.НастройкиКПИ КАК НастройкиКПИ

СГРУППИРОВАТЬ ПО
    НастройкиКПИ.Группа,
    НастройкиКПИ.Значение

и есть запрос2

ВЫБРАТЬ
    ОПзС.НоменклатураИзделие КАК НоменклатураИзделие,
    МАКСИМУМ(ОПзС.ДатаПлан) КАК ДатаПлан,
    МАКСИМУМ(ОПзС.ОтчетПроизводстваЗаСмену.ПереданыКомплектующиеНаСборкуДата) КАК ПереданыКомплектующиеНаСборкуДата
ИЗ
    РегистрСведений.ОПзС КАК ОПзС
ГДЕ
    ОПзС.ДатаПлан МЕЖДУ &Начало И &Конец
    И ОПзС.СерийныйНомерИзделия = ОПзС.СерийныйНомер
    И ОПзС.Операция = &Операция
    И ОПзС.ОтчетПроизводстваЗаСмену.Проведен
    И ОПзС.Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

СГРУППИРОВАТЬ ПО
    ОПзС.НоменклатураИзделие

как то в одном запросе нужно из запроса2 все ОПзС проверить есть ли в Иерархии каждая ОПзС в запрос1 с условием Запрос1.Группа
1 myr4ik07
 
16.09.16
09:10
короче нужно проверить находиться ли каждая ОПзС в одной из список групп из запрос1
2 FIXXXL
 
16.09.16
09:10
второй в ВТ и ВТ соединить с первым
есть там поля соединения?
3 myr4ik07
 
16.09.16
09:12
(2) есть Запрос2.ОПзС.Родитель = Запрос1.Настройка
это и там и там Родитель в справочнике ОПзС ЭтоГРуппа
4 myr4ik07
 
16.09.16
09:12
(2) есть поля соединения, смотри (3)
5 FIXXXL
 
16.09.16
09:14
(4) попробуй:

ОПзС.Номенклатура.Родитель В ИЕРАРХИИ(ВЫБРАТЬ *тут первый запрос*)
6 myr4ik07
 
16.09.16
09:18
(5) т.е. это будет показано только ту номенклатуру которая присутствует в Запрос1.Настройки, верно?
7 Fragster
 
гуру
16.09.16
09:21
если по иерархии - то это делается двумя наборами данных в СКД. еще удобно сделать доп. регистр с данными для nested sets и использовать его в запросах для соединения
8 myr4ik07
 
16.09.16
09:23
(7) к сожалению не использую скд
9 Fragster
 
гуру
16.09.16
09:24
(8) тогда либо портянка с .родитель.родитель... либо доп. РС
10 myr4ik07
 
16.09.16
09:25
(9) понял, спасибо
11 myr4ik07
 
16.09.16
09:51
Ребята, помогите додумать

ВЫБРАТЬ
    ОПзС.НоменклатураИзделие КАК НоменклатураИзделие,
    МАКСИМУМ(ОПзС.ДатаПлан) КАК ДатаПлан,
    МАКСИМУМ(ОПзС.ОтчетПроизводстваЗаСмену.ПереданыКомплектующиеНаСборкуДата) КАК Передано,
    НастройкиКПИ.Группа,
    ВЫБОР
        КОГДА НастройкиКПИ.Значение ЕСТЬ NULL
            ТОГДА 3
        ИНАЧЕ НастройкиКПИ.Значение
    КОНЕЦ КАК Значение,
    ДОБАВИТЬКДАТЕ(ОПзС.ДатаПлан, ДЕНЬ, -ВЫБОР
            КОГДА НастройкиКПИ.Значение ЕСТЬ NULL
                ТОГДА 3
            ИНАЧЕ НастройкиКПИ.Значение
        КОНЕЦ) КАК КоличествоДней
ИЗ
    РегистрСведений.ОПзС КАК ОПзС
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиКПИ КАК НастройкиКПИ
        ПО ОПзС.Номенклатура.Родитель = НастройкиКПИ.Группа
ГДЕ
    ОПзС.ДатаПлан МЕЖДУ &Начало И &Конец
    И ОПзС.СерийныйНомерИзделия = ОПзС.СерийныйНомер
    И ОПзС.Операция = &Операция
    И ОПзС.ОтчетПроизводстваЗаСмену.Проведен
    И ОПзС.Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

СГРУППИРОВАТЬ ПО
    ОПзС.НоменклатураИзделие,
    НастройкиКПИ.Группа,
    ВЫБОР
        КОГДА НастройкиКПИ.Значение ЕСТЬ NULL
            ТОГДА 3
        ИНАЧЕ НастройкиКПИ.Значение
    КОНЕЦ,
    ДОБАВИТЬКДАТЕ(ОПзС.ДатаПлан, ДЕНЬ, -ВЫБОР
            КОГДА НастройкиКПИ.Значение ЕСТЬ NULL
                ТОГДА 3
            ИНАЧЕ НастройкиКПИ.Значение
        КОНЕЦ)

сейчас работает только с Родителем, а подродитель не захватывает, т.е. когда я в РС.НастройкиКПИ выставляю значение
НастройкиКПИ.Группа = Ставлю подродитель
то при соединении получаю налл, а нужно получить подродителя
12 myr4ik07
 
16.09.16
10:07
что то типа этого вышло


ВЫБРАТЬ
    ОПзС.НоменклатураИзделие КАК НоменклатураИзделие,
    МАКСИМУМ(ОПзС.ДатаПлан) КАК ДатаПлан,
    МАКСИМУМ(ОПзС.ОтчетПроизводстваЗаСмену.ПереданыКомплектующиеНаСборкуДата) КАК Передано,
    НастройкиКПИ.Группа,
    ВЫБОР
        КОГДА НастройкиКПИ.Значение ЕСТЬ NULL
            ТОГДА 3
        ИНАЧЕ НастройкиКПИ.Значение
    КОНЕЦ КАК Значение,
    ДОБАВИТЬКДАТЕ(ОПзС.ДатаПлан, ДЕНЬ, -ВЫБОР
            КОГДА НастройкиКПИ.Значение ЕСТЬ NULL
                ТОГДА 3
            ИНАЧЕ НастройкиКПИ.Значение
        КОНЕЦ) КАК КоличествоДней
ИЗ
    РегистрСведений.ОПзС КАК ОПзС
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.НастройкиКПИ КАК НастройкиКПИ
        ПО (ОПзС.Номенклатура.Родитель В (НастройкиКПИ.Группа)
                ИЛИ ОПзС.Номенклатура.Родитель.Родитель В (НастройкиКПИ.Группа)
                ИЛИ ОПзС.Номенклатура.Родитель.Родитель.Родитель В (НастройкиКПИ.Группа)
                ИЛИ ОПзС.Номенклатура.Родитель.Родитель.Родитель.Родитель В (НастройкиКПИ.Группа))
ГДЕ
    ОПзС.ДатаПлан МЕЖДУ &Начало И &Конец
    И ОПзС.СерийныйНомерИзделия = ОПзС.СерийныйНомер
    И ОПзС.Операция = &Операция
    И ОПзС.ОтчетПроизводстваЗаСмену.Проведен
    И ОПзС.Номенклатура.Родитель В ИЕРАРХИИ(&Родитель)

СГРУППИРОВАТЬ ПО
    ОПзС.НоменклатураИзделие,
    НастройкиКПИ.Группа,
    ВЫБОР
        КОГДА НастройкиКПИ.Значение ЕСТЬ NULL
            ТОГДА 3
        ИНАЧЕ НастройкиКПИ.Значение
    КОНЕЦ,
    ДОБАВИТЬКДАТЕ(ОПзС.ДатаПлан, ДЕНЬ, -ВЫБОР
            КОГДА НастройкиКПИ.Значение ЕСТЬ NULL
                ТОГДА 3
            ИНАЧЕ НастройкиКПИ.Значение
        КОНЕЦ)

УПОРЯДОЧИТЬ ПО
    Значение
13 xafavute
 
16.09.16
10:12
(9) можно еще замыкание построить
14 xafavute
 
16.09.16
10:16
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн