Имя: Пароль:
1C
1С v8
Объединить две таблицы по параметрам виртуальной таблицы
0 толькодлявопросов
 
08.12.17
09:45
Есть потребность построить такой запрос, который бы выбирал записи из регистра накопления и при это в результирующую таблицы добавлял к записям колонку, которую брал бы с другого регистра сведений.СрезПоследних по полю периода на период записи основного регистра. То есть пример таков: Нужно выбрать закупки, но к ним добавить колонку стоимость в какой-то валюте. И рассчитывать стоимость не по сегодняшнему курсу, а по курсу, который был в момент закупки.
Если делать левым соединением, то пример таков:

    ВЫБРАТЬ
        ЗакупкиОбороты.Номенклатура,
        ЗакупкиОбороты.СтоимостьОборот,
        ЗакупкиОбороты.СтоимостьОборот / КурсыВалютСрезПоследних.Курс * КурсыВалютСрезПоследних.Кратность КАК СтоимостьВВалюте
    ИЗ
        РегистрНакопления.Закупки.Обороты(, , Авто, ) КАК ЗакупкиОбороты
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = Валюта) КАК КурсыВалютСрезПоследних
    ПО ЗакупкиОбороты.Регистратор.Дата = КурсыВалютСрезПоследних.Период

Но этот запрос не решает поставленной задачи (логично, потому что КурсыВалютСрезПоследних.Период это определенный период, а не тот по которому надо срезать последнюю предыдущую запись). То есть надо как-то в параметры виртуальной таблицы РегистрСведений.КурсыВалют.СрезПоследних() добавлять период каждый для каждой закупки
1 hhhh
 
08.12.17
09:48
(0) ну гугли сред последних на каждую дату, это же классика.
2 Ненавижу 1С
 
гуру
08.12.17
09:54
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший