|   |   | 
| 
 | Вывод отчета с периодичностью | ☑ | ||
|---|---|---|---|---|
| 0
    
        chingiz 28.09.11✎ 12:41 | 
        Данные беру из периодических(в пределах секунды) РегистровСведений. Нужно выводить дату-время с периодичностью 5 минут. Т.е. допустим у нас есть время 14:12:30,14:11:40,14:04:39,14:06:07 и нужно, чтобы в отчете это выглядело:
  14:00 - сюда попадает время 14:04 14:05 - сюда 14:06:07 14:10 - сюда 14:12, 14:11 14:15 и т.д. И ресурсы, которые попали в один промежуток нужно сложить. Возможно ли вообще такое? | |||
| 1
    
        Inform 28.09.11✎ 12:43 | 
        (0) сделай поле, в котором будет начало пятиминутки и по нему группировку     | |||
| 2
    
        chingiz 28.09.11✎ 13:00 | 
        (1) как? Регистр то не виртуальный, периодичность мышкой не задать.     | |||
| 3
    
        Defender aka LINN 28.09.11✎ 13:05 | 
        (2) Вы знаете, иногда таки приходится брать в руки клавиатуру и писать этот ваш код.     | |||
| 4
    
        chingiz 28.09.11✎ 13:07 | 
        Ну я же не прошу писать мне код...подскажите какой функцией это можно сделать, дальше уж разберусь. Думал мб поможет
  ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(нашПериод, ЧАС), МИНУТА, 5), но не то... | |||
| 5
    
        IronDemon 28.09.11✎ 13:08 | 
        (4) Почему не то?     | |||
| 6
    
        IronDemon 28.09.11✎ 13:11 | 
        (0) Нужно сделать таблицу с нужной периодичностью и с ней соединять.     | |||
| 7
    
        Ненавижу 1С гуру 28.09.11✎ 13:20 | 
        вот это НАЧАЛОПЕРИОДА(Период,Минута) даст начало минуты
  вот это НАЧАЛОПЕРИОДА(Период,Час) даст начало часа вот это РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(Период,Минута),НАЧАЛОПЕРИОДА(Период,Час),Минута) даст минут с начала часа ВЫРАЗИТЬ((РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(Период,Минута),НАЧАЛОПЕРИОДА(Период,Час),Минута)/5-0.5) КАК ЧИСЛО (2,0)) даст число полных пятиминуток наконец ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(Период,Час),Минута,ВЫРАЗИТЬ((РАЗНОСТЬДАТ(НАЧАЛОПЕРИОДА(Период,Минута),НАЧАЛОПЕРИОДА(Период,Час),Минута)/5-0.5) КАК ЧИСЛО (2,0))*5) даст начало каждой пятиминутки вот по последнему и надо группировать | |||
| 8
    
        FIXXXL 28.09.11✎ 13:24 | 
        Минута (Minute)
  Синтаксис: Минута(<Дата>) Параметры: <Дата> (обязательный) Тип: Дата. Исходная дата. Возвращаемое значение: Тип: Число. Минута в часе указанной даты. Описание: Определяет минуту в часе указанной даты. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Пример: Сообщить(Минута(ТекущаяДата())); и в ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(нашПериод, ЧАС), МИНУТА, 5) вместо "5" выбор когда тогда | |||
| 9
    
        IronDemon 28.09.11✎ 13:25 | 
        или так (7)     | |||
| 10
    
        Inform 28.09.11✎ 13:33 | 
        (0) Держи:
  ВЫБОР КОГДА МИНУТА(&Период) / 5 > (ВЫРАЗИТЬ(МИНУТА(&Период) / 5 КАК ЧИСЛО(2, 0))) ТОГДА ВЫРАЗИТЬ(МИНУТА(&Период) / 5 КАК ЧИСЛО(2, 0)) ИНАЧЕ (ВЫРАЗИТЬ(МИНУТА(&Период) / 5 КАК ЧИСЛО(2, 0))) - 1 КОНЕЦ * 5 | |||
| 11
    
        Inform 28.09.11✎ 13:37 | 
        + (10) вернее вот так будет целиком получение даты:
  ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(&Период, ЧАС), МИНУТА, ВЫБОР КОГДА МИНУТА(&Период) / 5 >= (ВЫРАЗИТЬ(МИНУТА(&Период) / 5 КАК ЧИСЛО(2, 0))) ТОГДА ВЫРАЗИТЬ(МИНУТА(&Период) / 5 КАК ЧИСЛО(2, 0)) ИНАЧЕ (ВЫРАЗИТЬ(МИНУТА(&Период) / 5 КАК ЧИСЛО(2, 0))) - 1 КОНЕЦ * 5) | |||
| 12
    
        chingiz 28.09.11✎ 13:50 | 
        Респект, пока обедал уже выдали решение на готово :) Всем спасибо!     | |||
| 13
    
        chingiz 29.09.11✎ 11:25 | 
        Возник еще один вопрос. Каким образом можно вывести вообще весь день с заданной периодичностью? Если данные на период отсутствуют, то нужно получить последнее состояние ресурса.
  Например: 00:05 есть данные, что объект на месте 00:10 нет никаких данных, но нужно получить последние с 00:05 | |||
| 14
    
        chingiz 29.09.11✎ 12:55 | 
        МассивДат = Новый Массив;
  ТекДата = НачалоПериода; ДатаК = КонецПериода; Пока ТекДата < ДатаК Цикл МассивДат.Добавить(ТекДата); ТекДата = ТекДата +60*5 КонецЦикла; Получаем массив пятиминуток в требуемом периоде. Как теперь это совместить с моим запросом? | |||
| 15
    
        Ненавижу 1С гуру 29.09.11✎ 13:13 | 
        (14) получи ТЗ, отправь на сервер в виде временной таблицы     | |||
| 16
    
        chingiz 03.10.11✎ 10:37 | 
        Все-таки через ТЗ не получится. Знакомый подсказал:
  в СКД нужно получить колонку дат, а не массив дат программно выбор датавремя(данныедаты1) как Период объединить выбрать датавремя(данные2) объединить .... Но скилл маловат, чтобы самому осмыслить это :\ | |||
| 17
    
        chingiz 03.10.11✎ 14:23 | 
        Все еще актуально.     | |||
| 18
    
        chingiz 03.10.11✎ 14:24 | 
        Чтобы не читать с начала - задание в (13)     | |||
| 19
    
        chingiz 04.10.11✎ 12:13 | 
        В скд создал второй набор и после создания текста, заменяю запрос.
  Текст = " |ВЫБРАТЬ |ДАТАВРЕМЯ("+Формат(ДатаНач,"ДФ=""гггг""")+","+Месяц(ДатаНач)+","+День(ДатаНач)+","+Час(ДатаНач)+","+Минута(ДатаНач)+","+Секунда(ДатаНач)+") |КАК Период"; Пока ДатаМасс <= ДатаКон Цикл ДатаМасс = ДатаМасс + 60*5; Текст = Текст + Символы.ПС + "ОБЪЕДИНИТЬ" + Символы.ПС +"ВЫБРАТЬ |ДАТАВРЕМЯ("+Формат(ДатаМасс,"ДФ=""гггг""")+","+Месяц(ДатаМасс)+","+День(ДатаМасс)+","+Час(ДатаМасс)+","+Минута(ДатаМасс)+","+Секунда(ДатаМасс)+") |"; КонецЦикла; Теперь выводит все даты, но нужно чтобы при отсутствии движений он брал последнее значение ресурса. Как это организовать? | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |