Имя: Пароль:
1C
1С v8
Как заставить отбор в СКД вести себя как условие ГДЕ в данном случае.
0 Drac0
 
04.10.13
11:04
Добрый день.

Есть такая структура данных:

Справочник Владелец (СпрВл), подчиненный ему справочник СпрП, у которого есть ТЧ с полем П1, тип значения некий справочник.

Мне необходимо настроить отбор по следующй логике: если установлено условие на равенство или вхождение в список, то берем те элементы СпрП, где в ТЧ есть значение параметра, а если условие на неравенство или не вхождение, то элемент, чья ТЧ содержит параметр, исключаем полностью.

Запрос имеет следующий вид:

[CODE]
ВЫБРАТЬ
    СпрП.Ссылка КАК СпрП_Ссылка,
    СпрП_ТЧ.П1 КАК ТЧ_П1
ИЗ
    Справочник.СпрП КАК СпрП
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпрВл КАК СпрВл
        ПО СпрВл.Ссылка = Фабрики.Владелец
            И &ТутНекийОтбор
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпрП.ТЧ КАК СпрП_ТЧ
        ПО СпрП_ТЧ.Ссылка = СпрП.Ссылка    
ГДЕ
    НЕ СпрП.ТЧ.П1 = &ОтборП1
[/CODE]

Это его вид в Консоли. И если в ГДЕ ставить или убирать НЕ, то получаем абсолютно нужный эффект. Но при переносе в СКД и изменении для использования П1 в качестве отбора:

[CODE]
ВЫБРАТЬ
    СпрП.Ссылка КАК СпрП_Ссылка,
    СпрП_ТЧ.П1 КАК ТЧ_П1
ИЗ
    Справочник.СпрП КАК СпрП
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпрВл КАК СпрВл
        ПО СпрВл.Ссылка = Фабрики.Владелец
            И &ТутНекийОтбор
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпрП.ТЧ КАК СпрП_ТЧ
        ПО СпрП_ТЧ.Ссылка = СпрП.Ссылка    
{ГДЕ
    СпрП.ТЧ.П1 КАК ОтборП1}
[/CODE]

Условия на неравенство и невхождения в список не работают корректно. Собственно, можно ли как-то логику работы отбора приблизить к варианту работы условия?
1 Drac0
 
04.10.13
11:20
Пусть будет ап.
2 Drac0
 
04.10.13
11:36
Ладно, делаю через два параметра: один список на вхождение, другой список на невхождение.
2 + 2 = 3.9999999999999999999999999999999...