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

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

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

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

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

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

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

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

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

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

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

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

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

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

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