Имя: Пароль:
1C
1C 7.7
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 надо вид документа добавить для приведения типов
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший