|
Левое соединение в запросе | ☑ | ||
---|---|---|---|---|
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
|
>Есть регистр сведений ... Хочу получить данные по нач. остатку
хотеть - можно |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |