Имя: Пароль:
1C
1C 7.7
v7: Класс "ПрямойЗапрос". Запрос к регистру используя ВТ Остатки и обороты.
0 Sciff
 
30.09.14
12:29
Есть такой запрос.

ВЫБРАТЬ
       Договор [Договор $Справочник.Договоры]
    ,  СуммаРубНачальныйОстаток
    ,  СуммаРубПриход
    ,  СуммаРубРасход
    ,  СуммаРубОборот
    ,  СуммаРубКонечныйОстаток
ИЗ
     $РегистрОстаткиОбороты.Покупатели(:НачалоПериода, :КонецПериода~,ПЕРИОД,,,Договор,СуммаРуб)  КАК РегПокупатели

Рабочий.
Но мне надо сделать отбор в разрезе Контрагентов. В регистре такого измерения нет. Потому хочу сделать соединение со справочником Договоры и вытащить владельца в результат запроса и потом отобрать по переданному параметру. Пишу так:

ВЫБРАТЬ
       Договор [Договор $Справочник.Договоры]
    ,  $Договоры.Владелец [Контрагент $Справочник.Контрагенты]
    ,  СуммаРубНачальныйОстаток
    ,  СуммаРубПриход
    ,  СуммаРубРасход
    ,  СуммаРубОборот
    ,  СуммаРубКонечныйОстаток
ИЗ
     $РегистрОстаткиОбороты.Покупатели(:НачалоПериода, :КонецПериода~,ПЕРИОД,,,Договор,СуммаРуб,
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры $nolock ПО Договор = $Договоры.ТекущийЭлемент)  КАК РегПокупатели

ГДЕ ($Договоры.Владелец = :ВыбКонтрагент)

В итоге получаю: Не удалось привязать составной идентификатор "Договоры.PARENTEXT". А теперь вопрос - В чем косяк? Есть мысли по этому поводу?
1 icipher
 
30.09.14
12:31
просто Договор.Владелец в параметрах виртуальной таблицы не работает?
2 Sciff
 
30.09.14
12:33
Взлетело так:

ВЫБРАТЬ
       Договор [Договор $Справочник.Договоры]
    ,  $Договоры.Владелец [Контрагент $Справочник.Контрагенты]
    ,  СуммаРубНачальныйОстаток
    ,  СуммаРубПриход
    ,  СуммаРубРасход
    ,  СуммаРубОборот
    ,  СуммаРубКонечныйОстаток
ИЗ
     $РегистрОстаткиОбороты.Покупатели(:НачалоПериода, :КонецПериода~,ПЕРИОД,,,Договор,СуммаРуб)  КАК РегПокупатели
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры $nolock ПО Договор = $Договоры.ТекущийЭлемент
ГДЕ ($Договоры.Владелец = :ВыбКонтрагент)
3 Sciff
 
30.09.14
12:35
Перенес Соединение из параметров виртуальной таблицы в сам запрос. И вуаля. Но тогда не могу понять смысл соединения в параметре виртуальной таблицы...
4 Sciff
 
30.09.14
12:44
Вот так тоже полетело:

ВЫБРАТЬ
       Договор [Договор $Справочник.Договоры]
    ,  СуммаРубНачальныйОстаток
    ,  СуммаРубПриход
    ,  СуммаРубРасход
    ,  СуммаРубОборот
    ,  СуммаРубКонечныйОстаток
ИЗ
     $РегистрОстаткиОбороты.Покупатели(:НачалоПериода, :КонецПериода~,ПЕРИОД,,$Договоры.Владелец = :ВыбКонтрагент,Договор,СуммаРуб,
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Договоры КАК Договоры $nolock ПО Договор = $Договоры.ТекущийЭлемент)  КАК РегПокупатели

Тогда суть соединения понятна.
5 hhhh
 
30.09.14
12:49
СОЕДИНЕНИЕ похоже нафиг не нужно
6 Sciff
 
30.09.14
12:51
Нужно, просто если использовать как параметр ВТ, то и условие в ВТ нужно делать. Тогда все работает.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший