Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

УФ Отчет по Курсам валют из Периодического РС 'КурсыВалют'

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

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

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

Во втором посте приведу Запрос и 2 варианта выборки:
1. По Валюте и Периодам - с получением Детальных записей.
2. По Валюте, Периодам и Курсам, с получением детальных ..
 
 
   Buster007
 
1 - 26.02.18 - 14:52
непонятно, что ты хочешь получить.
   aka AMIGO
 
2 - 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
   aka AMIGO
 
3 - 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
   aka AMIGO
 
6 - 26.02.18 - 14:57
(3) в этой таблице нехватает курсов..

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

(5) Спасибо, сейчас попробую разобраться..
   aka AMIGO
 
7 - 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/

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует