Имя: Пароль:
1C
1С v8
ОФ. Запрос к периодическому РС, результаты - по периодам (по дням, неделям) в интервале дат
0 aka AMIGO
 
22.02.18
12:42
Сдаюсь..
Есть в КЗ мисты Книга знаний: Срез последних на каждую дату в запросе
Пример запроса - __1. По времени (год, месяц, ... секунда) __
Работает прекрасно.
Но в результате запроса - один день.
Мне надо несколько дней. Выполнять запрос в цикле - забавный совет одного форумчанина, но это - не комильфо © :)
В ветке v8: Как в запросе сгенерировать таблицу всех дат в заданном диапозоне? есть пример:
   |ИТОГИ
...
    |ПО
    |    ОБЩИЕ,
    |    Период ПЕРИОДАМИ(ДЕНЬ, &ДатаНачала, &ДатаОкончания)";

Очень заманчивая конструкция, если-б я еще и почитал про неё в "Практическом пособии разработчика", или в ИТС.. Увы, нет ни того, ни другого.

Растолмачите? или хотя-б ссылку на инструкцию..
1 aka AMIGO
 
22.02.18
12:46
Более того, последняя конструкция Период Периодами - идет после ИТОГИ, что наводит на грустные размышления..
2 Optan
 
22.02.18
13:49
(0) Не совсем понял что ты хочешь.
Почему не сгенерить таблицу необходимых дат во ВТ и соединятся с регистром с условием на период<=? (как в первом запросе из статьи, но вместо дат курсов только нужные тебе даты)
3 aka AMIGO
 
22.02.18
14:04
(2) Видимо, не совсем ясно сам представляю.
1. Есть периодический РС (КурсыВалют)
2. Есть записи в РС
3. Мне нужно вывести что-то типа истории курсов, с периодом Дата
4 aka AMIGO
 
22.02.18
14:08
Запрос таки работает, добился я:
Запрос.Текст =
    "ВЫБРАТЬ
    |    Таблица3.Курс КАК Курс,
    |    Таблица3.Валюта КАК Валюта,
    |    Таблица3.Период КАК Период,
    |    Таблица3.Валюта.Представление КАК ВалютаПредставление
    |ИЗ
    |    (ВЫБРАТЬ
    |        Таблица1.Валюта КАК Валюта,
    |        МАКСИМУМ(Таблица1.Период) КАК Период
    |    ИЗ
    |        РегистрСведений.КурсыВалют КАК Таблица1
    |    
    |    СГРУППИРОВАТЬ ПО
    |        Таблица1.Валюта) КАК Таблица2
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК Таблица3
    |        ПО Таблица2.Валюта = Таблица3.Валюта
    |            И Таблица2.Период = Таблица3.Период
    |
    |СГРУППИРОВАТЬ ПО
    |    Таблица3.Валюта,
    |    Таблица3.Период,
    |    Таблица3.Курс,
    |    Таблица3.Валюта.Представление
    |
    |УПОРЯДОЧИТЬ ПО
    |    Период
    |ИТОГИ ПО
    |    Валюта,
    |    Период ПЕРИОДАМИ(НЕДЕЛЯ, &Дата1, &Дата2)";



Далее опять незадача: выбираются только Периоды, но поля Валюта и Курс отсутствуют:

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


ПоГруппировкам("Период.. - через запятую вставить эти Группировки из Запроса не даёт: ошибка.
5 aka AMIGO
 
22.02.18
14:14
Вот и остается только период в результатах запроса:

https://i.paste.pics/2cc93f847b377a13ad9f6af3898c1caa.png
6 aka AMIGO
 
22.02.18
14:20
Пытаюсь вставить "Валюта,Период"
{ВнешнийОтчет.КурсыВалют.Форма.ФормаОтчета.Форма(51)}: Ошибка при вызове метода контекста (Выбрать)
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Валюта,Период", "ВСЕ");
по причине:
Различное количество измерений в списке измерений и списке источников для заполнения измерения
7 hhhh
 
22.02.18
14:21
(5) это потому что

    |ИТОГИ ПО
    |    Валюта,Период

написал . Значит ты решил, что в дереве 2 уровня, а уровень валюта ты выкинул из выборки. как-то так

ВыборкаСверхДетальныеЗаписи = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Валюта");
    Пока ВыборкаСверхДетальныеЗаписи.Следующий() Цикл
ВыборкаДетальныеЗаписи = ВыборкаСверхДетальныеЗаписи.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Период", "ВСЕ");
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
   ВыборкаМиниДетальныеЗаписи = ВыборкаДетальныеЗаписи.Выбрать();
    Пока ВыборкаМиниДетальныеЗаписи.Следующий() Цикл
        ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаМиниДетальныеЗаписи);
        ТабДок.Вывести(ОбластьДетальныхЗаписей);
    КонецЦикла;    
    КонецЦикла;      
    КонецЦикла;
8 aka AMIGO
 
22.02.18
14:23
(7) Ёлкины-ж зеленые, друже!
Не меньше месяца-б потратил, прежде чем сообразить..

Пока в испуге от 8-ки, в 7-ке-б сообразил.
Спасибо!!!