Имя: Пароль:
1C
1С v8
УФ Отчет по Курсам валют из Периодического РС 'КурсыВалют'
0 aka AMIGO
 
26.02.18
14:46
Как же неудобно получать значения периодического регистра на дату!
В 7-ке это было гораздо проще.. Ну, да ладно, это эмоция..
Есть у меня отчет с запросом, получаю нужную мне последовательность валют и периодов, если выбираю группировки по Валюте и Периоду..
Курсы на даты в отчете получить не могу!

Сама последовательность Валют и Периодов для них в строках сформирована так, как мне и нужно:
https://i.paste.pics/58b4b07477da38947bd635e934db06d0.png

Как-же получить курсы?
СтОит обратиться к детальным записям по курсам, все результаты вверх тормашками..

Во втором посте приведу Запрос и 2 варианта выборки:
1. По Валюте и Периодам - с получением Детальных записей.
2. По Валюте, Периодам и Курсам, с получением детальных ..
1 Buster007
 
26.02.18
14:52
непонятно, что ты хочешь получить.
2 aka AMIGO
 
26.02.18
14:53
Собственно Запрос:
Запрос.Текст =
    "ВЫБРАТЬ
    |    Таблица3.Курс КАК Курс,
    |    Таблица3.Валюта КАК Валюта,
    |    Таблица3.Период КАК Период,
    |    Таблица3.Валюта.Представление КАК ВалютаПредставление
    |ИЗ
    |    (ВЫБРАТЬ
    |        Таблица1.Валюта КАК Валюта,
    |        МАКСИМУМ(Таблица1.Период) КАК Период
    |    ИЗ
    |        РегистрСведений.КурсыВалют КАК Таблица1
    |    
    |    СГРУППИРОВАТЬ ПО
    |        Таблица1.Валюта) КАК Таблица2
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК Таблица3
    |        ПО Таблица2.Валюта = Таблица3.Валюта
    |            И Таблица2.Период = Таблица3.Период
    |
    |СГРУППИРОВАТЬ ПО
    |    Таблица3.Период,
    |    Таблица3.Валюта,
    |    Таблица3.Курс,
    |    Таблица3.Валюта.Представление
    |
    |УПОРЯДОЧИТЬ ПО
    |    Период
    |ИТОГИ ПО
    |    Валюта,
    |    Период ПЕРИОДАМИ(НЕДЕЛЯ, &Дата1, &Дата2)";
    
    Запрос.УстановитьПараметр("Дата1", Дата1);
    Запрос.УстановитьПараметр("Дата2", Дата2);


Выборка - Валюта и Периоды:

    ВыборкаДетальныеЗаписиВ = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Валюта", "ВСЕ");
    Пока ВыборкаДетальныеЗаписиВ.Следующий() Цикл
            // валюта в ТД    
            //ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписиП);
            //ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписиП.Уровень());
            
            ВыборкаДетальныеЗаписиП = ВыборкаДетальныеЗаписиВ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период","ВСЕ");
        Пока ВыборкаДетальныеЗаписиП.Следующий() Цикл
             // вывод периодов в ТД
            ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписиП);
            ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписиП.Уровень());
                            
        КонецЦикла;
    
    КонецЦикла;


2. По Валюте, Периодам и Курсам, с получением детальных ..

    ВыборкаДетальныеЗаписиВ = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Валюта", "ВСЕ");
    Пока ВыборкаДетальныеЗаписиВ.Следующий() Цикл
            // валюта в ТД    
            //ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписиП);
            //ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписиП.Уровень());
            
            ВыборкаДетальныеЗаписиП = ВыборкаДетальныеЗаписиВ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Период","ВСЕ");
        Пока ВыборкаДетальныеЗаписиП.Следующий() Цикл
             // вывод периодов в ТД
            //ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписиП);
            //ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписиП.Уровень());
            
            ВыборкаДетальныеЗаписиК = ВыборкаДетальныеЗаписиВ.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
            Пока ВыборкаДетальныеЗаписиК.Следующий() Цикл
                 //// вывод Курсов в ТД
                ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписиК);
                ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписиК.Уровень());
            КонецЦикла;
            
                
        КонецЦикла;
    
    КонецЦикла;


Результат - одна дата во всей таблице - это последняя в РС:

https://i.paste.pics/52f59cecf9f0400febd7b0d70b7cf73d.png
3 aka AMIGO
 
26.02.18
14:55
(1) Мне, друже, нужно получить Курсы валют на даты, табличка дат и валют - в первом посте, повторю:
https://i.paste.pics/58b4b07477da38947bd635e934db06d0.png
4 Джинн
 
26.02.18
14:55
(0) Это Вы их готовить не умеете :)
В Книге знаний на Мисте есть пример получения значения периодического регистра на дату. Поищите. Все элементарно.
5 Джинн
 
26.02.18
14:56
6 aka AMIGO
 
26.02.18
14:57
(3) в этой таблице нехватает курсов..

(4) Абсолютно справедливо! читал 3 дня ЖКК, упражнялся с Запросами..

(5) Спасибо, сейчас попробую разобраться..
7 aka AMIGO
 
26.02.18
15:00
(5) в п. 1. По времени (год, месяц, ... секунда) запрос на одну дату
Вчера голову ломал, как отловить курс в периоде дат в запросе
Хотя-б две даты..
8 Джинн
 
26.02.18
15:02
(7) Да элементарно все.

Вот еще пример - https://guesto.ru/1c-polucheniye-kursa-valyuty-na-datu-kazhdogo-dokumenta/
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс