Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Прямые запросы: Не удалось вызвать методы для char

v7: Прямые запросы: Не удалось вызвать методы для char
Я
   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 = ЗаказыКво.Док" запрос выполняется без ошибки, но результат конечно не тот.
   OnePrg
 
1 - 10.12.20 - 12:21
Док - не типизированный документ
   runoff_runoff
 
2 - 10.12.20 - 12:46
через две точки нельзя
   OnePrg
 
3 - 10.12.20 - 16:57
Ладно.

Решил пока через костылик
    RS.ВыполнитьИнструкцию(ТекстЗапроса,тбРезервы,1);                                 
    тбРезервы.ВыбратьСтроки();
    Пока тбРезервы.ПолучитьСтроку() = 1 Цикл
        Если тбРезервы.Док.МестоХранения <> Конт.МестоХранения Тогда
            тбРезервы.Кво = 0;
        КонецЕсли;
    КонецЦикла;
   Sserj
 
4 - 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 = $докШапка.МестоХранения
   Sserj
 
5 - 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 надо вид документа добавить для приведения типов

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.