Имя: Пароль:
1C
1С v8
Левое соединение в запросе
0 wmonref
 
19.03.16
10:15
Есть регистр сведений Сток (измерения: Номенклатура, Клиент. ресурсы: Количество, Цена). Хочу получить данные по нач. остатку и продажам некоторых товаров для конкретного контрагента. Сделал запрос:

ВЫБРАТЬ
   СтокСрезПервых.Номенкл,
   СтокСрезПервых.Цена,
   СтокСрезПервых.Количество КАК КолНач,
   РеализацияТМЦ.Количество КАК Продано
      
ИЗ
   РегистрСведений.Стокурь.СрезПервых(&ДатаНач, Клиент = &Клиент) КАК СтокСрезПервых

ЛЕВОЕ СОЕДИНЕНИЕ
   Документ.РеализацияТМЦ.Основная КАК РеализацияТМЦ
ПО
   СтокСрезПервых.Номенкл = РеализацияТМЦ.Аналитика1
ГДЕ
   РеализацияТМЦ.Ссылка.Контрагент = &Клиент

Запрос.УстановитьПараметр("Клиент", "ООО Альфа");

При таких условиях результат запроса выходит пустой, а вот если убрать последнее условие (РеализацияТМЦ.Ссылка.Контрагент = &Клиент) тогда результат выводит данные. В регистре на заданную дату есть товары и в документах РеализацияТМЦ тоже есть эти товары, но нет продаж именно "ООО Альфа"

Объясните, пожалуйста, почему результат пустой? Ведь Левое Соединение "показывает все записи из левой таблицы (в данном случае СтокСрезПервых) и записи из правой удовлетворяющие условию связи" т.е. в правой таблице нет ничего т.к. нет товаров проданых "ООО Альфа", но в левой же есть!
1 ДенисЧ
 
19.03.16
10:17
А что, у тебя Клиент в документе - строка?
2 NcSteel
 
19.03.16
10:20
(0) ошибка тривиальная, а именно неявное внутреннее...
3 Мимохожий Однако
 
19.03.16
10:31
Никогда не пробовал из регистра сведений получать остатки и обороты
4 shuhard_серый
 
19.03.16
10:31
(1) у него и условие на таблицу не там стоит
5 ДенисЧ
 
19.03.16
10:33
(4) Это-то и так ясно.
Но вот условие всё равно не сработает...
6 Olden2610
 
19.03.16
10:48
По пунктно:
1.) в конструкторе запроса, поставь галочку "Все" возле документа (в нём клиент есть точно, а вот в регистре - не факт);
2.) "Запрос.УстановитьПараметр("Клиент", "ООО Альфа");" за такое надо бить по пальцам. Если параметромпередаем Строку, значит и в регистре измерением стоит строка, что, при наличии одноименного справочника - является дикой ошибкой. Скорее всего надо передавать Клиента из процедуры, в которой это всё дело пишется (Объект.Клиент, как вариант, если модуль формы, или просто Клиент, если МО);
3.) если в регистре таки строка, тогда в запросе нужно не "... = &Клиент"
А
"... ПОДОБНО (% "&Клиент" %)"
7 Olden2610
 
19.03.16
10:50
(6) 1.) "в конструкторе запроса, НА ЗАКЛАДКЕ СВЯЗИ, поставь галочку.

"... ПОДОБНО (% "&Клиент" %)"
Ну или без процентов. Тоже должно отработать.
8 NcSteel
 
19.03.16
10:50
(6) Мда.... лучше жевать.
9 Olden2610
 
19.03.16
11:04
(8) В смысле?)
10 Olden2610
 
19.03.16
11:06
(8) Вернее - в каком месте не прав?
11 wmonref
 
19.03.16
11:36
(1) (6) Клиент = Справочник.Ссылка.Контрагенты (и в регистре и в доке Реализация ТМЦ) Просто для наглядности указал что именно для этого клиента "ООО Альфа" делаю запрос
12 wmonref
 
19.03.16
11:42
(6) И в регистре, и в документе Клиент есть всегда.
13 wmonref
 
19.03.16
11:47
(4) А где именно должно условие стоять?
14 alle68
 
19.03.16
13:41
(13) "ГДЕ" на "И" замени - и будет тебе счастье!
15 shuhard_серый
 
19.03.16
14:31
(13)  в условии связи
или в подзапросе
или во временной таблице
16 Лефмихалыч
 
19.03.16
16:07
>Есть регистр сведений ... Хочу получить данные по нач. остатку

хотеть - можно