Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Не получается отчет

Не получается отчет
Я
   dman54
 
28.12.18 - 10:00
Есть кто поможет по запросу\скд: есть независимый регистр сведений КурсыВалют (период-день, валюта, курс), нужно вывести отчет курс валют со всеми датами в заданном промежутке (дата1, дата2), причем если на тек.дату нет курса, выводится последний известный
есть конфа, наработки отчета

вывожу дополнение по дням в указанном промежутке, но в итоге нет данных за последнюю часть периода

ВЫБРАТЬ
    КурсыВалютСрезПоследних.Валюта КАК Валюта
ПОМЕСТИТЬ ВсеВалюты
ИЗ
    РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПо, ) КАК КурсыВалютСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВсеВалюты.Валюта КАК Валюта,
    КурсыВалют.Курс КАК Курс,
    КурсыВалют.Период КАК Период
ИЗ
    ВсеВалюты КАК ВсеВалюты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют
        ПО ВсеВалюты.Валюта = КурсыВалют.Валюта  
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних() КАК КурсыВалютСрезПоследних
        ПО ВсеВалюты.Валюта = КурсыВалютСрезПоследних.Валюта
 
 
   Beduin
 
1 - 28.12.18 - 10:02
Стандартная задачка про курсы валют на дату документа. У Радченко все расписано
   dman54
 
2 - 28.12.18 - 10:04
Находил похожие решения для дат из документов. Тут нет документов, в базе только справочник и регистрСведений
   Beduin
 
3 - 28.12.18 - 10:07
(2) Ну и привязывай левым соединением табличку по валютам ограниченную заданным интервалом
   IOANNscrp
 
4 - 28.12.18 - 10:11
(3) Проблему услышали? нужно вывести курс валют на каждый день ограниченный интервалом, каких-то дней может и не быть, а нужно вывести.
   Beduin
 
5 - 28.12.18 - 10:12
(4) Нужна табличка с датами. Без нее не получится.
   Eiffil123
 
6 - 28.12.18 - 10:45
нужно сначала получить все даты, например от рождества Тутанхамона, до 4000 года (это делается через ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ... и тд).
Потом фильтр по этим датам, чтобы они были в диапазоне.


Ну и левое соединение можно сделать прямо в СКД, тогда конечно будет запрос в цикле, но не думаю, что особо критично.
   dman54
 
7 - 28.12.18 - 11:24
Всем спасибо, пришлось использовать таблицу дат

ВЫБРАТЬ
    0 КАК Цифра
ПОМЕСТИТЬ ТабЦифр

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   1

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   2

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   3

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   4

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   5

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   6

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   7

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   8

ОБЪЕДИНИТЬ

ВЫБРАТЬ
   9
; 
////////////////////////////////////////////////////////////////////////////////

 
ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) КАК День
ПОМЕСТИТЬ ТабДней
ИЗ
    ТабЦифр КАК ТабЦифр1,
    ТабЦифр КАК ТабЦифр2,
    ТабЦифр КАК ТабЦифр3,
    ТабЦифр КАК ТабЦифр4
ГДЕ
    ДОБАВИТЬКДАТЕ(&ДатаНачала, ДЕНЬ, ТабЦифр1.Цифра + 10 * ТабЦифр2.Цифра + 100 * ТабЦифр3.Цифра + 1000 * ТабЦифр4.Цифра) <= &ДатаКонца

ИНДЕКСИРОВАТЬ ПО
    День
;

////////////////////////////////////////////////////////////////////////////////

 
ВЫБРАТЬ
    ТабДней.День КАК Дата,
    КурсыВалютСрезПоследних.Валюта КАК Валюта 
ИЗ
    ТабДней КАК ТабДней,
    РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКонца, ) КАК КурсыВалютСрезПоследних;
   Eiffil123
 
8 - 28.12.18 - 12:47
(7) Твой запрос покажет курс только на дату &ЛатаКонца, но подход к получению списка дат правильный.
   dman54
 
9 - 28.12.18 - 13:02
(8) да, потом соединение через скд сделал к срезу последних с параметром дата, таких примеров уже много было (типа как получить срез последних на каждую дату http://catalog.mista.ru/public/77568/) Спасибо:) работает полностью как надо
   КонецЕсли
 
10 - 28.12.18 - 13:18
(0) регистрсведений.РегламентированныйПроизводственныйКалендарь  есть в конфигурации?
 
 Рекламное место пустует
   dman54
 
11 - 30.12.18 - 07:33
(10) нет, видел с ним решения
это тестовое задание, не думал, что оно может включать создание таблицы дат, поэтому создал тему

Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует