|
v7: Прямые запросы: Не удалось вызвать методы для char
| ☑ |
0
OnePrg
10.12.20
✎
12:20
|
"SELECT
| ЗаказыКво.Фирма as [Фирма $Справочник.Фирмы],
| ЗаказыКво.Товар as [Товар $Справочник.Товар],
| ЗаказыКво.Контрагент as [Контрагент $Справочник.Контрагенты],
| ЗаказыКво.Док as [Док $Документ],
| ЗаказыКво.КвоОстаток as Кво
|FROM
| $РегистрОстатки.ЗаказыКво(:КП~,,
| Фирма = :ВыбФирма AND Товар IN (SELECT VaL From #ВыбТовары) AND Док <> $ПустойИД13 "+Условие+",
| (Фирма,Товар,Контрагент,Док), (Кво)) AS ЗаказыКво
|LEFT JOIN
| $Справочник.МестаХранения as МестаХранения ON МестаХранения.ID = ЗаказыКво.Док.МестоХранения
|WHERE
| МестаХранения.ID = :ВыбМестоХранения";
Ругается "Не удалось вызвать методы для char" на вот это место "ON МестаХранения.ID = ЗаказыКво.Док.МестоХранения", если пишу "МестаХранения.ID = ЗаказыКво.Док" запрос выполняется без ошибки, но результат конечно не тот.
|
|
1
OnePrg
10.12.20
✎
12:21
|
Док - не типизированный документ
|
|
2
runoff_runoff
10.12.20
✎
12:46
|
через две точки нельзя
|
|
3
OnePrg
10.12.20
✎
16:57
|
Ладно.
Решил пока через костылик
RS.ВыполнитьИнструкцию(ТекстЗапроса,тбРезервы,1);
тбРезервы.ВыбратьСтроки();
Пока тбРезервы.ПолучитьСтроку() = 1 Цикл
Если тбРезервы.Док.МестоХранения <> Конт.МестоХранения Тогда
тбРезервы.Кво = 0;
КонецЕсли;
КонецЦикла;
|
|
4
Sserj
10.12.20
✎
17:17
|
Тебе будет гораздо легче если перестанешь думать в парадигме ООП. Ну давай хоть к примеру псевдонимы table1, table2 и т.д. :)
:)
ЗаказыКво.Док.МестоХранения - это чистое ООП, в SQL нет таких понятий все что видит SQL от такой записи это Таблица.Поле.АЭтоЧто!
В данном случае МестоХранения тебе нужно достать из другой таблицы в которой видимо хранятся данные шапки твоего документа.
Ну а так как у тебя Док это данные из регистра то тебе нужно связывать как то так:
|FROM
| $РегистрОстатки.ЗаказыКво(:КП~,,
| Фирма = :ВыбФирма AND Товар IN (SELECT VaL From #ВыбТовары) AND Док <> $ПустойИД13 "+Условие+",
| (Фирма,Товар,Контрагент,Док), (Кво)) AS ЗаказыКво
|LEFT JOIN $Документ.НужныйВидДокумента as докШапка with (nolock)
|ON докШапка.iddoc = ЗаказыКво.Док
|LEFT JOIN
| $Справочник.МестаХранения as МестаХранения ON МестаХранения.ID = $докШапка.МестоХранения
|
|
5
Sserj
10.12.20
✎
17:20
|
+(4) Ну и так как тебе МестоХранения нужно только ради фильтра то справочник тут будет лишним.
Достаточно:
|FROM
| $РегистрОстатки.ЗаказыКво(:КП~,,
| Фирма = :ВыбФирма AND Товар IN (SELECT VaL From #ВыбТовары) AND Док <> $ПустойИД13 "+Условие+",
| (Фирма,Товар,Контрагент,Док), (Кво)) AS ЗаказыКво
|JOIN $Документ.НужныйВидДокумента as докШапка with (nolock)
|ON докШапка.iddoc = ЗаказыКво.Док
|WHERE
| $докШапка.МестаХранения = :ВыбМестоХранения
|
|
6
Дык ё
10.12.20
✎
17:29
|
(5) ON докШапка.iddoc = ЗаказыКво.Док - к iddoc надо вид документа добавить для приведения типов
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший