Имя: Пароль:
1C
1С v8
Подскажите по запросу
0 D_Pavel
 
18.04.12
12:11
Нужно найти по артикулу Группу и Элемент в этой группе, в результате должна быть такая таблица:

Группа    |    Элемент

Если элемент не найден, то должна быть такая таблица:

Группа    |    Null

Но получается что если элемент не найден, то результат вообще пустой. Как исправить?


ВЫБРАТЬ
   Группа.Ссылка КАК Родитель,
   Элемент.Ссылка
ИЗ
   Справочник.Товары КАК Группа
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Товары КАК Элемент
       ПО Группа.Ссылка = Элемент.Родитель.Ссылка
ГДЕ
   Группа.ЭтоГруппа = ИСТИНА
   И Группа.Артикул = &АртикулГруппы
   И Элемент.ЭтоГруппа = ЛОЖЬ
   И Элемент.Артикул = &Артикул
1 Wobland
 
18.04.12
12:16
а зачем соединять?
2 D_Pavel
 
18.04.12
12:17
Чтобы было условие что родителем элемента является выбранная группа. Разве так не должно работать?
3 le_
 
18.04.12
12:19
(0) Условия Элемент.ЭтоГруппа = ЛОЖЬ И Элемент.Артикул = &Артикул перенеси в условия соединения.
4 Explorer1c
 
18.04.12
12:22
(0)А зачем такой запрос то?
Не проще
ВЫБРАТЬ
   Спражнайцк.Ссылка.Родитель КАК Родитель,
   Спражнайцк.Ссылка
ИЗ
   Справочник.Товары КАК Спражнайцк
       
ГДЕ
Итоги По
Родитель
5 Explorer1c
 
18.04.12
12:23
* Спражнайцк.Родитель
6 D_Pavel
 
18.04.12
12:30
(4) Нет. Если элемент не существует, нужно чтобы родитель хотябы был найден.
7 D_Pavel
 
18.04.12
12:32
(3) Ужс! Так вообще медленно стало работать! Запрос выполняется пол секунды! Хотя работает верно. Но не годится по времени.
8 Wobland
 
18.04.12
12:33
(6) несуществующий родитель?
9 Плот
 
18.04.12
12:34
(6) ОбходПоРезультатамЗапрос с группировкой тоже чтоле не выводит пустого родители?
10 Плот
 
18.04.12
12:35
(9) Ну тогда тебе нужно две таблицы, в одной чисто Группы, а в другой элементы и левым соедниенем.
11 Explorer1c
 
18.04.12
12:37
(0)А нах ты ссылку передаешь,попробуй наименование
12 Шапокляк
 
18.04.12
12:39
ВЫБРАТЬ
   Номенклатура.Ссылка
ПОМЕСТИТЬ Группа
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.ЭтоГруппа = ИСТИНА
   И Номенклатура.Артикул = &АртикулГруппы
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Группа.Ссылка Как Группа,
   Номенклатура.Ссылка КАК Элемент
ИЗ
   Группа КАК Группа
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
       ПО Группа.Ссылка = Номенклатура.Родитель
ГДЕ
   Номенклатура.Артикул = &Артикул
   И Номенклатура.ЭтоГруппа = ЛОЖЬ

Ну вот примерно так. А вообще интересно - у вас уникальность артикулов во всем справочнике не соблюдается?
13 le_
 
18.04.12
12:39
(7) Вот энто:
ПО Группа.Ссылка = Элемент.Родитель.Ссылка
Можно заменить на энто:
ПО Группа.Ссылка = Элемент.Родитель
14 D_Pavel
 
18.04.12
12:40
(8) Исключено
15 D_Pavel
 
18.04.12
12:41
(13) Можно
16 D_Pavel
 
18.04.12
12:42
(12) Спасибо! ! !
Получается логика работы запроса (0) Немного не такая как ожидается?
17 D_Pavel
 
18.04.12
12:43
(12) Артикулы загружаются из прайса поставщика, кто его знает соблюдается там уникальность артикулов или нет...
18 _RTFM_
 
18.04.12
12:45
В (3) правильно говорят, но лучше так:
ВЫБРАТЬ
   Группа.Ссылка КАК Родитель,
   Элемент.Ссылка
ИЗ
   Справочник.Товары КАК Группа
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                            Товары.Ссылка
                         ИЗ
                            Справочник.Товары КАК Товары
                         ГДЕ
                            Товары.ЭтоГруппа = ЛОЖЬ
                            И Товары.Артикул = &Артикул) КАК Элемент
       ПО Группа.Ссылка = Элемент.Родитель
ГДЕ
   Группа.ЭтоГруппа = ИСТИНА
   И Группа.Артикул = &АртикулГруппы
19 _RTFM_
 
18.04.12
12:47
(18) забыл в левом соединении Родителя выбрать:
ВЫБРАТЬ
   Группа.Ссылка КАК Родитель,
   Элемент.Ссылка
ИЗ
   Справочник.Товары КАК Группа
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                            Товары.Ссылка,
                            Товары.Родитель
                         ИЗ
                            Справочник.Товары КАК Товары
                         ГДЕ
                            Товары.ЭтоГруппа = ЛОЖЬ
                            И Товары.Артикул = &Артикул) КАК Элемент
       ПО Группа.Ссылка = Элемент.Родитель
ГДЕ
   Группа.ЭтоГруппа = ИСТИНА
   И Группа.Артикул = &АртикулГруппы
20 D_Pavel
 
18.04.12
12:55
(19) Тоже долго выполняется. около 0.5 сек
21 _RTFM_
 
18.04.12
13:04
(20) Ну либо так, либо не как... ну максимум можно так...:
ВЫБРАТЬ
    Товары.Ссылка,
    Товары.Родитель
ПОМЕСТИТЬ Элемент
ИЗ
    Справочник.Товары КАК Товары
ГДЕ
    Товары.ЭтоГруппа = ЛОЖЬ
    И Товары.Артикул = &Артикул;
/////////////////////////////////////////////
ВЫБРАТЬ
   Группа.Ссылка КАК Родитель,
   Элемент.Ссылка
ИЗ
   Справочник.Товары КАК Группа
   ЛЕВОЕ СОЕДИНЕНИЕ Элемент КАК Элемент
   ПО Группа.Ссылка = Элемент.Родитель
ГДЕ
   Группа.ЭтоГруппа = ИСТИНА
   И Группа.Артикул = &АртикулГруппы
22 D_Pavel
 
18.04.12
13:13
Спасибо! Быстрее все равно не получается
23 _RTFM_
 
18.04.12
13:18
(22) Ну еще посмотри реквизит справочника Артикул Индексируется?
24 D_Pavel
 
18.04.12
13:20
да. я еще туда добавил условие "В ИЕРАРХИИ", из-за него тормозит