Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 16:43

Курс валюты в запросе

Автор Дмитрий357, 24 сен 2022, 12:02

0 Пользователей и 1 гость просматривают эту тему.

Дмитрий357

LexaK, Все есть остатки. Другие валюты все нормально считается и подставляется за исключением российского рубля

LexaK

Цитата: Дмитрий357 от 24 сен 2022, 15:57за исключением российского рубля
все правильно, вместо рубля используется Курс = 1
если помогло нажмите: Спасибо!

Дмитрий357

LexaK, почему тогда табличная часть не заполняется? 

LexaK

LexaK, вот в консоли такой запрос выполните

        ВЫБРАТЬ
            ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
            ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
            ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(КурсыВалютСрезПоследних.Курс,1) КАК Цена,
            ТоварыНаСкладахОстатки.КоличествоОстаток * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) /
                ЕСТЬNULL(КурсыВалютСрезПоследних.Курс,1) КАК Стоимость,

            &Валюта КАК Валюта,
            ЕСТЬNULL(КурсыВалютСрезПоследних.Курс,1) КАК Курс

        ИЗ
            РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
                ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура,
            РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
        ГДЕ
            ТоварыНаСкладахОстатки.КоличествоОстаток > 0
   
если помогло нажмите: Спасибо!

Дмитрий357

LexaK, Выполнил. При выборе РоссийскогоРубля запрос не дает результата. При выборе других валют все выдает

LexaK

Дмитрий357, странно, а так?

        ВЫБРАТЬ
            ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
            ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
            ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(КурсыВалютСрезПоследних.Курс,1) КАК Цена,
            ТоварыНаСкладахОстатки.КоличествоОстаток * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) /
                ЕСТЬNULL(КурсыВалютСрезПоследних.Курс,1) КАК Стоимость,

            &Валюта КАК Валюта,
            ЕСТЬNULL(КурсыВалютСрезПоследних.Курс,1) КАК Курс

        ИЗ
            РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
                ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ
            РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
по Истина
        ГДЕ
            ТоварыНаСкладахОстатки.КоличествоОстаток > 0
   
если помогло нажмите: Спасибо!

Дмитрий357

LexaK, Подсказали решение. Я с трудом до него дошел, но ничего не понял. Привожу код можете как-нибудь его прокомментировать?
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество,
| ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 1) КАК Цена,
| ТоварыНаСкладахОстатки.КоличествоОстаток * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) / ЕСТЬNULL(КурсыВалютСрезПоследних.Курс, 1) КАК Стоимость
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(, Склад = &Склад) КАК ТоварыНаСкладахОстатки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
| ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(, Валюта = &Валюта) КАК КурсыВалютСрезПоследних
| ПО (ИСТИНА)
|ГДЕ
| ТоварыНаСкладахОстатки.КоличествоОстаток > 0";

Запрос.УстановитьПараметр("Склад", Склад);
Запрос.УстановитьПараметр("ВидЦены", ВидЦены);
Запрос.УстановитьПараметр("Валюта", Валюта);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Возврат ВыборкаДетальныеЗаписи;

Дмитрий357

LexaK, Вы тоеж это предложили. Сразу не увидел весь запрос. Спасибо большое за помощь!!

LexaK

Цитата: Дмитрий357 от 24 сен 2022, 16:38Спасибо большое за помощь!!

Внизу каждого топика, есть кнопка: Сказать спасибо
смело давите на нее!

Цитироватьно ничего не понял. Привожу код можете как-нибудь его прокомментировать?
вообще, запросы, это как программирование, ты либо умеешь программировать либо нет! (тогда учи по книжкам) 
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск