Имя: Пароль:
1C
1С v8
Помогите понять логику работы запроса
0 Big_Nic
 
29.07.11
12:15
Добрый день.
Вопрос такой,не могу понять почему так получается, если в документе сделать дубли некоторых строк(к примеру чтобы строка с номенклатурой "сахарный песок" повторялась в документе несколько раз, БП 2.0 демо), то при выполнении этого запроса, в результат выходит только номенклатура, которая удовлетворяет условию, то есть "Сахарный песок".

ВЫБРАТЬ
   ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
   ПоступлениеТоваровУслугТовары1.НомерСтроки
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ПОЛНОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары1
       ПО ПоступлениеТоваровУслугТовары.НомерСтроки <> ПоступлениеТоваровУслугТовары1.НомерСтроки
           И ПоступлениеТоваровУслугТовары.Номенклатура = ПоступлениеТоваровУслугТовары1.Номенклатура
ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
   И ПоступлениеТоваровУслугТовары1.Ссылка = &Ссылка

Я думал, что должна выходить вся номенклатура таблицы "ПоступлениеТоваровУслугТовары" , а если есть совпадения удовлетворяющие условию, то поле "Номер строки" <> NULL.

Помогите разобраться?
1 hhhh
 
29.07.11
12:20
ну видимо вот это бредовое условие

ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
   И ПоступлениеТоваровУслугТовары1.Ссылка = &Ссылка


то есть и ежу понятно, что

ПоступлениеТоваровУслугТовары1.Ссылка = NULL

а ты по-лохоски веришь, что оно равно &ссылка.
2 unregistered
 
29.07.11
12:21
ПоступлениеТоваровУслугТовары1.Ссылка = NULL

почему?
3 forforumandspam
 
29.07.11
12:21
(1) По моему, ты сам не понял.
4 Fragster
 
гуру
29.07.11
12:23
логики нет. автору нужно объяснить, чего ему надо
5 hhhh
 
29.07.11
12:24
ну если ПоступлениеТоваровУслугТовары1.НомерСтроки = NULL, тогда и
ПоступлениеТоваровУслугТовары1.Ссылка = NULL

логику включай.

Поэтому ему выходят только те строчки, в которых
ПоступлениеТоваровУслугТовары1.НомерСтроки <> NULL
6 forforumandspam
 
29.07.11
12:24
(0) Запрос вывод только дубли? По моему, так и должно быть.
7 Big_Nic
 
29.07.11
12:24
(1)

ГДЕ
   ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
   И ПоступлениеТоваровУслугТовары1.Ссылка = &Ссылка

это условие говорит о том что мы работаем с одной таблицей одного и того же документа.
8 unregistered
 
29.07.11
12:25
(0) Автор, напиши по русски.

1. Что в ТЧ
2. Что в результате запроса
3. Что ожидаешь от этого запроса.
9 GenV
 
29.07.11
12:25
(0) Твое полное соединение превращается во внутреннее условием:
ГДЕ
  ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
  И ПоступлениеТоваровУслугТовары1.Ссылка = &Ссылка
10 hhhh
 
29.07.11
12:26
(7) ты не понял, ГДЕ в программах 1С применяется не таблице, а к результату соединения. Сначала Соединение, потом ГДЕ.
11 unregistered
 
29.07.11
12:28
(7) hhhh прав, т.к. (9)
12 ptiz
 
29.07.11
12:28
(0) Если я правильно понял, тебе нужна таблица документа ПЛЮС колонка, где будет признак - есть ли дубли.
Тогда нужен еще один запрос: левое соединение таб.части с результатом запроса из (0). При этом тебе надо будет сгруппировать запрос из (0) по товарам, будет задвоение строк.
13 szhukov
 
29.07.11
12:31
(0) В запросе (0) вы получаете только дубли.
Что бы получить полный список номенклатуры с указанием номеров дублированных строк, нужно сделать как указано в (12)
14 Big_Nic
 
29.07.11
12:34
(1) ты прав. Щас сначало ТЧ закинул в временную таблицу, а потом уже их соединил, и результат тот который я и ожидал.

(10) >ты не понял, ГДЕ в программах 1С применяется не таблице, а к результату соединения. Сначала Соединение, потом ГДЕ.

В этом я как раз тупанул.
Спасибо всем.
15 unregistered
 
29.07.11
12:34
может как-то так?

ВЫБРАТЬ
  ПоступлениеТоваровУслугТовары.Номенклатура
ИЗ
  Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
  ПоступлениеТоваровУслугТовары.Ссылка = &Ссылка
СГРУППИРОВАТЬ ПО
  ПоступлениеТоваровУслугТовары.Номенклатура
ИМЕЮЩИЕ
  СУММА(1) > 1
16 kosts
 
29.07.11
13:09
(1) Что за страна такая лохоски? :-)
17 kosts
 
29.07.11
13:11
(14) >  ГДЕ в программах 1С применяется не таблице, а к результату соединения. Сначала Соединение, потом ГДЕ.

Не только в 1С - в SQL то же самое