Вход | Регистрация
 

Наложение отборов в динамическом списке во вложенном подзапросе.

Наложение отборов в динамическом списке во вложенном подзапросе.
Я
   romashov
 
14.03.19 - 09:37
УФ. есть форма обработки со списком заказов клиентов (динамический список). в списке должны быть только заказы которые еще не размещены в заказах поставщику.

Итоговый запрос списка взять из исполняемой схемы скд и настроек

условия наложились на базовый запрос правильно. но не наложились во вложенном
хотя текст запроса одинаковый часть расширения которая отвечает за отборы

|{ГДЕ
|    ЗаказКлиентаТоварыВЗ.Номенклатура КАК Номенклатура,
|    Выбор Когда ЗаказКлиентаТоварыВЗ.Номенклатура.ВидНоменклатуры.ТипНоменклатуры = Значение(Перечисление.ТипыНоменклатуры.Услуга)
|            Тогда Истина
|        Иначе Ложь
|    Конец КАК Услуга}

Данная секция есть в обоих запросах основном и вложенном, но отборы наложены только на основной.

что я делаю не так?

ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    ЗаказКлиента.Дата КАК Дата,
    ЗаказКлиента.Ссылка КАК Ссылка,
    ЗаказКлиента.Организация КАК Организация,
    ЗаказКлиента.Партнер КАК Клиент,
    ЗаказКлиента.Склад КАК Склад,
    ЗаказКлиентаДополнительныеРеквизиты.Значение КАК НомерЗаказа,
    ЗаказКлиента.СуммаДокумента КАК Сумма
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        ПО (ЗаказКлиентаТовары.Ссылка = ЗаказКлиента.Ссылка)
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
        ПО ЗаказКлиента.Ссылка = ЗаказКлиентаДополнительныеРеквизиты.Ссылка
            И (ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство)
ГДЕ
    ЗаказКлиента.Ссылка В
            (ВЫБРАТЬ
                ЗаказКлиентаТоварыВЗ.Ссылка
            ИЗ
                Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТоварыВЗ
                    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТоварыВЗ
                    ПО
                        ЗаказПоставщикуТоварыВЗ.Витра_ЗаказКлиента = ЗаказКлиентаТоварыВЗ.Ссылка
                            И ЗаказПоставщикуТоварыВЗ.Номенклатура = ЗаказКлиентаТоварыВЗ.Номенклатура
                            И ЗаказПоставщикуТоварыВЗ.Характеристика = ЗаказКлиентаТоварыВЗ.Характеристика
            СГРУППИРОВАТЬ ПО
                ЗаказКлиентаТоварыВЗ.Ссылка
            ИМЕЮЩИЕ
                СУММА(ЕСТЬNULL(ЗаказПоставщикуТоварыВЗ.КоличествоУпаковок, 0)) <> СУММА(ЗаказКлиентаТоварыВЗ.КоличествоУпаковок))
    И НЕ ЗаказКлиентаТовары.Номенклатура В ИЕРАРХИИ (&П)
    И ВЫБОР
            КОГДА ЗаказКлиентаТовары.Номенклатура.ВидНоменклатуры.ТипНоменклатуры = ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга)
                ТОГДА ИСТИНА
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ = &П2
    И НЕ ЗаказКлиентаТовары.Номенклатура В ИЕРАРХИИ (&П3)
 
 
   kabanoff
 
1 - 14.03.19 - 10:02
(0) Покажи исходный запрос, который прописан в динамическом списке.
   romashov
 
2 - 14.03.19 - 10:05
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    ЗаказКлиента.Дата КАК Дата,
    ЗаказКлиента.Ссылка КАК Ссылка,
    ЗаказКлиента.Организация КАК Организация,
    ЗаказКлиента.Партнер КАК Клиент,
    ЗаказКлиента.Склад КАК Склад,
    ЗаказКлиентаДополнительныеРеквизиты.Значение КАК НомерЗаказа,
    ЗаказКлиента.СуммаДокумента КАК Сумма,
    ЗаказКлиента.ПометкаУдаления
ИЗ
    Документ.ЗаказКлиента КАК ЗаказКлиента
        {ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
                                ПО (ЗаказКлиентаТовары.Ссылка = ЗаказКлиента.Ссылка)} 

        {ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ЗаказКлиентаДополнительныеРеквизиты
                                ПО ЗаказКлиента.Ссылка = ЗаказКлиентаДополнительныеРеквизиты.Ссылка
                                    И ЗаказКлиентаДополнительныеРеквизиты.Свойство = &Свойство} 
ГДЕ
    ЗаказКлиента.Ссылка В (Выбрать
    ЗаказКлиентаТоварыВЗ.Ссылка
ИЗ
    Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТоварыВЗ 
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТоварыВЗ
        ПО ЗаказПоставщикуТоварыВЗ.Витра_ЗаказКлиента = ЗаказКлиентаТоварыВЗ.Ссылка
            И ЗаказПоставщикуТоварыВЗ.Номенклатура = ЗаказКлиентаТоварыВЗ.Номенклатура
            И ЗаказПоставщикуТоварыВЗ.Характеристика = ЗаказКлиентаТоварыВЗ.Характеристика
{ГДЕ 
    ЗаказКлиентаТоварыВЗ.Номенклатура КАК Номенклатура,
    Выбор Когда ЗаказКлиентаТоварыВЗ.Номенклатура.ВидНоменклатуры.ТипНоменклатуры = Значение(Перечисление.ТипыНоменклатуры.Услуга) 
            Тогда Истина 
        Иначе Ложь 
    Конец КАК Услуга}

СГРУППИРОВАТЬ ПО
    ЗаказКлиентаТоварыВЗ.Ссылка

ИМЕЮЩИЕ
    СУММА(ЕСТЬNULL(ЗаказПоставщикуТоварыВЗ.КоличествоУпаковок,0)) <> СУММА(ЗаказКлиентаТоварыВЗ.КоличествоУпаковок))

{ГДЕ ЗаказКлиентаТовары.Номенклатура КАК Номенклатура,
                                        Выбор Когда ЗаказКлиентаТовары.Номенклатура.ВидНоменклатуры.ТипНоменклатуры = Значение(Перечисление.ТипыНоменклатуры.Услуга) Тогда Истина Иначе Ложь Конец КАК Услуга}
   kabanoff
 
3 - 14.03.19 - 10:09
(2) Фиг его знает. Попробуй в качестве эксперимента назвать вложенный отбор по полю "Услуга" иначе. Например, "Услуга1". И отбери по нему. Что будет?

А вообще крайне не советую делать такие запросы к БД, да еще и в динамическом списке.
Неразмещенные заказы лучше рассчитывать отдельно, а в динамическом списке уже обращаться к результатам этого расчета.
   romashov
 
4 - 14.03.19 - 10:11
по ходу ни как.

вложенный запрос в условиях не отрабатывает.

запрос строится в ручную по типу переданного документа.

сделал новый список на форме вставил запрос нажал конструктор и все условия как не бывало.
   aleks_default
 
5 - 14.03.19 - 10:36
(4)А нафига тебе фигурные скобки в запросе дин. списка?
   sqr4
 
6 - 14.03.19 - 10:45
а вроде можно виртуальные таблицы уже использовать в запросе дин списка нет?
   Fragster
 
7 - 14.03.19 - 10:52
нужно на вкладке "компоновка данных" в разделе "условия" прокинуть, ну, или руками добавить для необязательных параметров
   Fragster
 
8 - 14.03.19 - 10:52
по умолчанию оптимизатор работает только на верхнем уровне запросов
   romashov
 
9 - 14.03.19 - 11:17
сделал соединение с вложенным запросом.
   cons24
 
10 - 14.03.19 - 11:25
кривая архитектура у вас
вот эта строка "И НЕ ЗаказКлиентаТовары.Номенклатура В ИЕРАРХИИ (&П) " будет жутко тормозить
   romashov
 
11 - 14.03.19 - 11:27
а я и не спорю.
   cons24
 
12 - 14.03.19 - 11:30
зачем-то еще изобрели Витра_ЗаказКлиента вместо типового "ДокументОснование".
А проверка "заказы которые еще не размещены в заказах поставщику" называется обеспеченность заказов. И проверяется по одноименному регистру.

Список тем форума
Рекламное место пустует  Рекламное место пустует
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.