|
Не получается отчет | ☑ | ||
---|---|---|---|---|
0
dman54
28.12.18
✎
10:00
|
Есть кто поможет по запросу\скд: есть независимый регистр сведений КурсыВалют (период-день, валюта, курс), нужно вывести отчет курс валют со всеми датами в заданном промежутке (дата1, дата2), причем если на тек.дату нет курса, выводится последний известный
есть конфа, наработки отчета вывожу дополнение по дням в указанном промежутке, но в итоге нет данных за последнюю часть периода ВЫБРАТЬ КурсыВалютСрезПоследних.Валюта КАК Валюта ПОМЕСТИТЬ ВсеВалюты ИЗ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПо, ) КАК КурсыВалютСрезПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВсеВалюты.Валюта КАК Валюта, КурсыВалют.Курс КАК Курс, КурсыВалют.Период КАК Период ИЗ ВсеВалюты КАК ВсеВалюты ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалют ПО ВсеВалюты.Валюта = КурсыВалют.Валюта ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних() КАК КурсыВалютСрезПоследних ПО ВсеВалюты.Валюта = КурсыВалютСрезПоследних.Валюта |
|||
1
Beduin
28.12.18
✎
10:02
|
Стандартная задачка про курсы валют на дату документа. У Радченко все расписано
|
|||
2
dman54
28.12.18
✎
10:04
|
Находил похожие решения для дат из документов. Тут нет документов, в базе только справочник и регистрСведений
|
|||
3
Beduin
28.12.18
✎
10:07
|
(2) Ну и привязывай левым соединением табличку по валютам ограниченную заданным интервалом
|
|||
4
IOANNscrp
28.12.18
✎
10:11
|
(3) Проблему услышали? нужно вывести курс валют на каждый день ограниченный интервалом, каких-то дней может и не быть, а нужно вывести.
|
|||
5
Beduin
28.12.18
✎
10:12
|
(4) Нужна табличка с датами. Без нее не получится.
|
|||
6
Eiffil123
28.12.18
✎
10:45
|
нужно сначала получить все даты, например от рождества Тутанхамона, до 4000 года (это делается через ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ... и тд).
Потом фильтр по этим датам, чтобы они были в диапазоне. Ну и левое соединение можно сделать прямо в СКД, тогда конечно будет запрос в цикле, но не думаю, что особо критично. |
|||
7
dman54
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.Цифра) <= &ДатаКонца ИНДЕКСИРОВАТЬ ПО День ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТабДней.День КАК Дата, КурсыВалютСрезПоследних.Валюта КАК Валюта ИЗ ТабДней КАК ТабДней, РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКонца, ) КАК КурсыВалютСрезПоследних; |
|||
8
Eiffil123
28.12.18
✎
12:47
|
(7) Твой запрос покажет курс только на дату &ЛатаКонца, но подход к получению списка дат правильный.
|
|||
9
dman54
28.12.18
✎
13:02
|
(8) да, потом соединение через скд сделал к срезу последних с параметром дата, таких примеров уже много было (типа как получить срез последних на каждую дату http://catalog.mista.ru/public/77568/) Спасибо:) работает полностью как надо
|
|||
10
КонецЕсли
28.12.18
✎
13:18
|
(0) регистрсведений.РегламентированныйПроизводственныйКалендарь есть в конфигурации?
|
|||
11
dman54
30.12.18
✎
07:33
|
(10) нет, видел с ним решения
это тестовое задание, не думал, что оно может включать создание таблицы дат, поэтому создал тему |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |