Имя: Пароль:
1C
1С v8
Запрос по регистру накопления с параметром на измерение.
0 lirt82
 
17.02.26
16:19
Объясните ситуацию.
В базе есть самописный регистр накопления "ВалютнаяПереоценка" у него есть измерения Организация тип справочник Организации, Валюта тип справочник Валюты, Партия  составной тип самописный документ Отражение и самописный документ ВалютнаяОперация. Ресурсы Сумма и СуммаВВалюте.
формирую запрос, в первом пакете выбрал таблицу документа Отражение в секции ГДЕ установил параметр Ссылка передаю в него нужный мне документ Отражение, в следующем пакете уже выборка данных выбираю вирт таблицу оборотов регистра "ВалютнаяПереоценка" и делаю связь левым соединением документ Отражение к измерению Партия регистра накопления, в результате запрос пустой, но если в секции ГДЕ установить параметр Партия = &ДокОтражения и указать мой документ Отражения то запрос отрабатывает корректно, т.е. выводит записи.
Что сделать чтобы записи появились?
1 Ёпрст
 
гуру
17.02.26
16:21
(0) показать текст запроса, для начала
2 unenu
 
17.02.26
16:24
Выразить() может быть стоит в соединении использовать, вернее нужно или выбор когда с выразить
3 lirt82
 
17.02.26
16:30
(1) ВЫБРАТЬ
    Отражение.Ссылка КАК СсылкаОтражение
ПОМЕСТИТЬ ВТ_Отражения
ИЗ
    Документ.Отражение КАК Отражение
ГДЕ
    Отражение.Ссылка = &ДокОтражение
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВалютнаяПереоценкаОбороты.Партия КАК Партия,
    ВалютнаяПереоценкаОбороты.Организация КАК Организация,
    ВалютнаяПереоценкаОбороты.СуммаПриход КАК СуммаПриход,
    ВалютнаяПереоценкаОбороты.СуммаРасход КАК СуммаРасход
ИЗ
    ВТ_Отражения КАК ВТ_Отражения
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВалютнаяПереоценка.Обороты КАК ВалютнаяПереоценкаОбороты
        ПО ВТ_Отражения.СсылкаОтражение = ВалютнаяПереоценкаОбороты.Партия
4 Ёпрст
 
гуру
17.02.26
16:30
(3) но это же не тот запрос, что проверяешь в (0), верно ?
5 Ёпрст
 
гуру
17.02.26
16:31
Ну или, как минимум, это не весь текст запроса.
Тот чт0 в (3) будет казать, как минимум, сам док Отражение
6 Ёпрст
 
гуру
17.02.26
16:34
Накой тут временная табличка для одного дока, загадка.
В япрочем, весь запрос в топку
7 aka MIK
 
17.02.26
16:42
(3) во втором случае оптимизатор запроса SQL догадался что параметр нужно поробросить во вложенный запрос, которым является виртуальная таблица.

Что в первом случае - хз, вообще-то надо периодичность указывать в параметрах актуальной таблицы, и отборы.

Стандарты разработки вообще не рекомендуют соединения с виртуальными таблицами и вложенными запросами
8 paramedic
 
17.02.26
17:05
(7) "Стандарты разработки вообще не рекомендуют соединения с виртуальными таблицами и вложенными запросами"
Вы это еще разработчикам типовых попробуйте сказать.
9 maxab72
 
17.02.26
18:04
(3) Второй запрос какой-то уродский. Видимо ГигаЧад писал. К временной таблице с одним документом слева присоединяется виртуальная таблица оборотов регистра, без отборов и периода. Тут вообще оптимизатор может с ума сойти. Сделай нормальные отборы и соединяй потом если надо.
2 + 2 = 3.9999999999999999999999999999999...