Имя: Пароль:
1C
1С v8
v8: Запрос: получить не совпадающие наименования
0 Fedor
 
19.10.11
17:16
Есть 2 справочника - ОС и Номенклатура. У некоторых элементов справочников наименования совпадают. Нужно из ОС выбрать только те, у которых наименования не совпадают.
Я сначала получаю все элементы, у которых наименования совпадают. И сохраняю в временную табл (ВТ).
А потом пытаюсь получить из ОС все элементы, у которых наименования не совпадают с наименованиями в ВТ. Но процесс при этом зависает.
1 CTmuB
 
19.10.11
17:18
запрос неправильно написан )
2 Vovka_Jetta
 
19.10.11
17:18
3 Vovka_Jetta
 
19.10.11
17:18
Это не поможет?
4 Жан Пердежон
 
19.10.11
17:20
хз что с чем у тебя совпадать/не совпадать должно, телепатирую:

выбрать ос.ссылка
из ос левое соединение ном
по ос.наименование = ном.наименование
где ном.ссылка is null
5 andrewks
 
19.10.11
17:20
погоди-погоди, что именно надо получить:

нужно выбрать из ОС такие эл-ты, наименования которых не встречаются среди наименований спр. номенклатуры? так, что-ли?
6 SeregaMW
 
19.10.11
17:21
Код в студию!
7 Fedor
 
19.10.11
17:21
ВЫБРАТЬ
   ОсновныеСредства.Наименование КАК ОС,
   Номенклатура.Наименование КАК Номенклатура
ПОМЕСТИТЬ ВТ_ЕстьНаим
ИЗ
   Справочник.ОсновныеСредства КАК ОсновныеСредства
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
       ПО ОсновныеСредства.Наименование = Номенклатура.Наименование
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ОсновныеСредства.Наименование
ИЗ
   Справочник.ОсновныеСредства КАК ОсновныеСредства
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЕстьНаим КАК ВТ_ЕстьНаим
       ПО ОсновныеСредства.Наименование = ВТ_ЕстьНаим.ОС
8 Жан Пердежон
 
19.10.11
17:22
(5) (6) с кодом и детальным описанием проблемы любой ответить сможет)
9 andrewks
 
19.10.11
17:25
жертва конструктора запросов?
10 Fedor
 
19.10.11
17:26
(7) опечатка там. Соединение такое:
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ЕстьНаим КАК ВТ_ЕстьНаим
       ПО ОсновныеСредства.Наименование <> ВТ_ЕстьНаим.ОС
11 SeregaMW
 
19.10.11
17:28
(10) Спасибо помог нам ответить на твой вопрос )))
12 izekia
 
19.10.11
17:28
жесть какая-то , а зачем второй запрос?
13 andrewks
 
19.10.11
17:29
(12) ты ещё спроси, зачем ВТ
14 izekia
 
19.10.11
17:29
хотя рекомендации 1с
15 Fedor
 
19.10.11
17:29
(12) Ну, я делал одним запросом, но результат тот же
16 izekia
 
19.10.11
17:30
а зачем вт действительно?
17 Fedor
 
19.10.11
17:31
(16) Сначала так делал:
ВЫБРАТЬ
   ОсновныеСредства.Наименование
ИЗ
   Справочник.ОсновныеСредства КАК ОсновныеСредства
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
       ПО ОсновныеСредства.Наименование <> Номенклатура.Наименование
Но результат тот же - зависает.
18 izekia
 
19.10.11
17:33
(17) нееее, так не надо делать
19 izekia
 
19.10.11
17:33
(17) оно не зависает, просто на ночь оставь
20 izekia
 
19.10.11
17:34
выбрать наименование из ос где не наименование не в(выбрать наименование из номенклатуры)

так доступно?
21 izekia
 
19.10.11
17:35
(19) + к утру будет результат, если клиент или сервер не сдохнет
22 Fedor
 
19.10.11
17:35
Да. Понял. Сейчас попробую, спасибо.
23 izekia
 
19.10.11
17:35
ответ в (20) короче
24 Fedor
 
19.10.11
17:35
(19)Ну да. я понял, что там много вариантов, и он их все перебирает. Но раз их так много, значит это не правильно...
25 izekia
 
19.10.11
17:37
(24) нет, он декартово тебе выкидывает, кроме тех у которых наименование совпадает
26 НЕА123
 
19.10.11
17:37
плагиат (4)

ВЫБРАТЬ
   ОсновныеСредства.Наименование
ИЗ
   Справочник.ОсновныеСредства КАК ОсновныеСредства
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
       ПО ОсновныеСредства.Наименование = Номенклатура.Наименование
ГДЕ Номенклатура.ссылка is null
27 izekia
 
19.10.11
17:39
(26) не надо нам таких запросов
28 Жан Пердежон
 
19.10.11
17:45
(23) как оказалось, ответ был еще в (4)
29 Fedor
 
19.10.11
17:47
(20) Пока так не выходит. Не дает выбрать из номенклатуры.
30 izekia
 
19.10.11
17:50
(29) в смысле не дает?
(28) логика у твоего запроса немного извращенная, на мой взгляд)
31 НЕА123
 
19.10.11
17:54
(30)
>логика у твоего запроса немного извращенная, на мой взгляд)

однако, на практике, рекомендуют именно (4), а не (20).
32 izekia
 
19.10.11
17:57
сиквела под рукой нет доступного, посмотри план запроса примерный?
33 SMakcik
 
19.10.11
18:01
А кто так мешает:

ВЫБРАТЬ
  ОС.Наименование
ИЗ
 Справочник.ОсновныеСредства КАК ОС
ГДЕ ОС.Наименование НЕ (ВЫБРАТЬ .... )
34 Fedor
 
19.10.11
18:01
Написал Так:
ВЫБРАТЬ
   ОсновныеСредства.Наименование
ИЗ
   Справочник.Номенклатура КАК Номенклатура,
   Справочник.ОсновныеСредства КАК ОсновныеСредства
ГДЕ
   (НЕ ОсновныеСредства.Наименование В
               (ВЫБРАТЬ
                   Номенклатура.Наименование
               ИЗ
                   Справочник.Номенклатура КАК Номенклатура))

Но немного не то выходит
35 Fedor
 
19.10.11
18:01
Или я что-то не правильно делаю?
36 Fedor
 
19.10.11
18:03
А это работает правильно:
ВЫБРАТЬ
   ОсновныеСредства.Наименование
ИЗ
   Справочник.ОсновныеСредства КАК ОсновныеСредства
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
       ПО ОсновныеСредства.Наименование = Номенклатура.Наименование
ГДЕ Номенклатура.ссылка is null
37 НЕА123
 
19.10.11
18:03
ВЫБРАТЬ
   ОсновныеСредства.Наименование
ИЗ
   Справочник.ОсновныеСредства КАК ОсновныеСредства
ГДЕ
   (НЕ ОсновныеСредства.Наименование В
               (ВЫБРАТЬ
                   Номенклатура.Наименование
               ИЗ
                   Справочник.Номенклатура КАК Номенклатура))
38 izekia
 
19.10.11
18:03
ВЫБРАТЬ
   ОсновныеСредства.Наименование
ИЗ
   Справочник.Номенклатура КАК Номенклатура,  <===== эту строку удали, блин
   Справочник.ОсновныеСредства КАК ОсновныеСредства
ГДЕ
   (НЕ ОсновныеСредства.Наименование В
               (ВЫБРАТЬ
                   Номенклатура.Наименование
               ИЗ
                   Справочник.Номенклатура КАК Номенклатура))
39 Fedor
 
19.10.11
18:04
(38) Спасибо. (Сори, сглупил) Так работает правильно.
ВЫБРАТЬ
   ОсновныеСредства.Наименование
ИЗ
   Справочник.ОсновныеСредства КАК ОсновныеСредства
ГДЕ
   (НЕ ОсновныеСредства.Наименование В
               (ВЫБРАТЬ
                   Номенклатура.Наименование
               ИЗ
                   Справочник.Номенклатура КАК Номенклатура)
40 НЕА123
 
19.10.11
18:05
(32)
тоже нет.
по-крайней мере в файловой утверждают, что долго лишнее ВЫБРАТЬ отрабатывает.
41 izekia
 
20.10.11
15:01
(40) вчера торопился, по сути это одинаковые планы будут, если я ничего не путаю
просто мой вариант мне больше нравится, в плане наглядности

надо дома на буке посмотреть