| 
    
            
         
         | 
    
    
  | 
Не получается отчет | ☑ | ||
|---|---|---|---|---|
| 
    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) нет, видел с ним решения
 
        это тестовое задание, не думал, что оно может включать создание таблицы дат, поэтому создал тему  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |