Имя: Пароль:
1C
1С v8
Элементарный запрос
0 Doman26
 
08.09.11
13:04
хочу чтобы в выборку попадали документы у которых в табличной части услуги нет указанной номенклатуры:
ВЫБРАТЬ
   РеализацияТоваровУслуг.Ссылка КАК Ссылка,
   РеализацияТоваровУслуг.Услуги.(
       Заявка
   ),
   РеализацияТоваровУслуг.Товары.(
       Номенклатура
   )
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
   РеализацияТоваровУслуг.Дата МЕЖДУ &Нач И &Кон
   И РеализацияТоваровУслуг.Услуги.Номенклатура <> &Номенклатура

так не выводит, а как выводит?
1 shuhard
 
08.09.11
13:06
(0) ты опять &Нач И &Кон перепутал
2 Renat11111
 
08.09.11
13:06
&Номенклатура а как параметр устанавливаешь?
3 Evgenchik
 
08.09.11
13:08
ВЫБРАТЬ
   РеализацияТоваровУслугУслуги.Ссылка
ИЗ
   Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
ГДЕ
   РеализацияТоваровУслугУслуги.Номенклатура <> &Ном
4 Cube
 
08.09.11
13:08
ВЫБРАТЬ РАЗЛИЧНЫЕ
   РеализацияТоваровУслугТовары.Ссылка
ИЗ
   Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
ГДЕ
   РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &Нач И &Кон
   И РеализацияТоваровУслугТовары.Номенклатура <> &Номенклатура
5 mzelensky
 
08.09.11
13:09
(4) не прокатит! так ты просто НЕ выберишь ОДНУ СТРОЧКУ из ТЧ !!!
6 Evgenchik
 
08.09.11
13:11
(4) у него из услуг неравенство
7 Cube
 
08.09.11
13:11
(5) В натуре!!!)) Прогнал :)
8 mzelensky
 
08.09.11
13:12
(0) я бы сделал:

выбираешь различные ссылки (документы) ,в которых ЕСТЬ эта позиция - засовываешь это во временную таблицу или вложенный запрос.

Потом выбираешь из данного временного диапазона все те ссылки (документы), которые у тебя НЕ попали в ту выборку!
9 mzelensky
 
08.09.11
13:18
(0) ну так ШО ??? Получилось?
10 Мыш
 
08.09.11
13:20
(8) А я бы сделал соединение и потом условие на нулл. :)
11 Doman26
 
08.09.11
13:21
(8) можно поподробнее...
12 mzelensky
 
08.09.11
13:23
(10) так дольше будет, мне кажется! Т.е. ты выбирать будешь 2 раза полную выборку доком, а уже потом обрезать.

У меня выберутся сперва по одному условию, а потом выберутся опять таки не все, ток часть....

хотя может я и ошибаюсь :) просто привычней работать с ВТ
13 Doman26
 
08.09.11
13:24
(8)как вывести все ссылки кторые не попали в вложеннызапрос
14 Doman26
 
08.09.11
13:25
(10) какое соединение?
15 mzelensky
 
08.09.11
13:27
(13) ну типа:

выбрать док.ссылка

из Документ.Реализация как док
ГДЕ
док.ссылка НЕ В ( Вложенный запрос )
16 Arseny
 
08.09.11
13:28
ВЫБРАТЬ
   Ссылка,
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ
   РеализацияТоваровУслуг.Дата МЕЖДУ &Нач И &Кон
   И РеализацияТоваровУслуг не в (Выбрать ссылка из      Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги где Номенклатура=&Номенклатура)
17 Arseny
 
08.09.11
13:29
упс
ВЫБРАТЬ
   Ссылка,
ИЗ
   Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
ГДЕ

  РеализацияТоваровУслуг.Дата МЕЖДУ &Нач И &Кон
  И РеализацияТоваровУслуг.ссылка не в (Выбрать ссылка из      Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги где Номенклатура=&Номенклатура)
18 mzelensky
 
08.09.11
13:29
(16) умничка :)
19 Мыш
 
08.09.11
13:30
(14) ПРАВОЕ [ВНЕШНЕЕ] СОЕДИНЕНИЕ означает, что в результат запроса надо включить комбинации записей из обеих исходных таблиц, которые соответствуют указанному условию. Кроме того, в результат запроса надо включить также еще и записи из второго (указанного справа от слова СОЕДИНЕНИЕ) источника, для которых не найдено соответствующих условию записей из первого источника.

Таким образом, в результат запроса будут включены все записи из второго источника; они будут соединены с записями из первого источника при выполнении указанного условия. Строки результата запроса, для которых не найдено соответствующих условию записей из первого источника, будут содержать NULL в полях, формируемых на основании записей из этого источника.
20 Мыш
 
08.09.11
13:31
(12) Скуль умеет оптимизировать ;)
21 Renat11111
 
08.09.11
13:31
так много извращенцев в одной теме давно не видел.
22 Ненавижу 1С
 
гуру
08.09.11
13:33
ВЫБРАТЬ
   Ссылка
ИЗ
   Документ.РеализацияТоваровУслуг.Услуги КАК РеализацияТоваровУслугУслуги
ГДЕ
 РеализацияТоваровУслугУслуги.Ссылка.Дата МЕЖДУ &Нач И &Кон
СГРУППИРОВАТЬ ПО Ссылка
ИМЕЮЩИЕ
 КОЛИЧЕСТВО(ВЫБОР КОГДА РеализацияТоваровУслугУслуги.Номенклатура=&Номенклатура ТОГДА 1 КОНЕЦ)=0
23 mzelensky
 
08.09.11
13:35
(22) прикольно :)

(21) а ты что предлагаешь???
24 mzelensky
 
08.09.11
13:35
(19) это еще вилами писано, что он там оптимизирует!
25 Ненавижу 1С
 
гуру
08.09.11
13:36
(23) люблю прикалываться )))
26 Мыш
 
08.09.11
13:40
(21) Знаешь способ лучше?
27 Ненавижу 1С
 
гуру
08.09.11
13:42
(19) чем правое лучше левого?
28 mzelensky
 
08.09.11
13:48
(27) (19) да никакой разницы! причем если будешь делать конструктором запросов, то 1С-ка сама переделает все в ЛЕВОЕ СОЕДИНЕНИЕ!
29 Мыш
 
08.09.11
13:59
(27) Наше дело правое! (цы) :)
30 ErrorEd88
 
08.09.11
14:02
Можно без условия:
Если Выборка.Следующий() И Выборка.Номенклатура <> Номенклатура Тогда