Имя: Пароль:
1C
 
СКД, проблема отбора в запросе
0 bolobol
 
10.04.18
09:37
Доброго дня!

Запрос в СКД, типа:
ВЫБРАТЬ
    5 КАК Оценка,
    ИСТИНА КАК Хорошая
ПОМЕСТИТЬ ХорошиеОценки
;
ВЫБРАТЬ
Оценки.Оценка,
ЕСТЬNULL(ХорошиеОценки, ложь) КАК Хорошая
ИЗ
Оценки ЛЕВОЕ ХорошиеОценки ПО Оценка = Оценка

Ставлю отбор в пользовательском режиме Хорошие = Истина - отличный выбор! Ставлю Хорошие = ложь - результат: любые оценки, а не только не хорошие.

Как поправить, чтоб работало и почему не работает, как задумано?

Спасибо!
1 Rovan
 
гуру
10.04.18
09:43
Чем заполнена "Оценки" ?
2 Rovan
 
гуру
10.04.18
09:45
Чтобы не было даже намека на возможные разночтения я пишу с КАК и с именами таблиц:

Оценки КАК Оценки
ЛЕВОЕ СОЕДИНЕНИЕ ХорошиеОценки КАК ХорошиеОценки
ПО Оценки.Оценка = ХорошиеОценки.Оценка
3 bolobol
 
10.04.18
09:46
ВЫБРАТЬ
  5 КАК Оценка
ПОМЕСТИТЬ Оценки
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
  4
;
ВЫБРАТЬ
    5 КАК Оценка,
    ИСТИНА КАК Хорошая
ПОМЕСТИТЬ ХорошиеОценки
;
ВЫБРАТЬ
Оценки.Оценка,
ЕСТЬNULL(ХорошиеОценки.Хорошая, ложь) КАК Хорошая
ИЗ
Оценки ЛЕВОЕ СОЕДИНЕНИЕ ХорошиеОценки ПО Оценки.Оценка = ХорошиеОценки.Оценка
4 Адинэснег
 
10.04.18
09:53
садись, два :-D
5 Малыш Джон
 
10.04.18
09:54
(3) потому что ты параметр вводишь:

ВЫБРАТЬ
    5 КАК Оценка
ПОМЕСТИТЬ Оценки

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    4
;


ВЫБРАТЬ
    5 КАК Оценка,
    ИСТИНА КАК Хорошая
ПОМЕСТИТЬ ХорошиеОценки
ГДЕ
    ИСТИНА = &П
;


ВЫБРАТЬ
    Оценки.Оценка КАК Оценка,
    ЕСТЬNULL(ХорошиеОценки.Хорошая, ЛОЖЬ) КАК Хорошая
ИЗ
    Оценки КАК Оценки
        ЛЕВОЕ СОЕДИНЕНИЕ ХорошиеОценки КАК ХорошиеОценки
        ПО Оценки.Оценка = ХорошиеОценки.Оценка
ГДЕ
    ЕСТЬNULL(ХорошиеОценки.Хорошая, ЛОЖЬ) = &П
6 unregistered
 
10.04.18
09:55
Поле "Хорошая" есть и во временной таблице ХорошиеОценки и в во втором запросе пакета.
Переименуй. Или в настройках компановки определи на какие поля можно накладывать условия.
ИМХО, твое условие Хорошие = ложь ложиться на первый запрос пакета. В результате имеем пустую временную таблицу ХорошиеОценки, а это в свою очередь приводит к тому, что в результате второго запроса всегда Хорошая - ложь (так как соединяться не с чем и всегда выполняется условие ЕСТЬNULL.
7 unregistered
 
10.04.18
09:58
+ к (6): Вообще убери поле Хорошая из первого запроса. Оно там не нужно. Например так.

ВЫБРАТЬ
   5 КАК Оценка
ПОМЕСТИТЬ ХорошиеОценки
;
ВЫБРАТЬ
   Оценки.Оценка,
   НЕ ХорошиеОценки ЕСТЬ NULL КАК Хорошая
ИЗ
   Оценки ЛЕВОЕ ХорошиеОценки ПО Оценка = Оценка
8 unregistered
 
10.04.18
09:59
уточнение к (7)

ВЫБРАТЬ
   5 КАК Оценка
ПОМЕСТИТЬ ХорошиеОценки
;
ВЫБРАТЬ
   Оценки.Оценка,
   НЕ ХорошиеОценки.Оценка ЕСТЬ NULL КАК Хорошая
ИЗ
   Оценки ЛЕВОЕ ХорошиеОценки ПО Оценка = Оценка
9 mehfk
 
10.04.18
09:59
(0) А ты сними галочку "Автозаполнение" и расставь скд-конструкции в нужных местах сам.
10 bolobol
 
10.04.18
10:10
Спасибо!

Действительно, отбор накладывается на всё одноимённое, а не только на конечный выбор.

Второй вариант - тоже работает!

Спасибо!
11 bolobol
 
10.04.18
10:13
(9) С Автозаполнением не стал разбираться, это ещё нужно погружаться, чем без него полезнее станет СКД. Слава багам, пока не пригождалось)

Спасибо!
12 mehfk
 
10.04.18
10:27
(11) Так и будешь всю жизнь на форумах спрашивать.
13 bolobol
 
10.04.18
11:32
Ясен пень!