|
Вывод отчета с периодичностью | ☑ | ||
---|---|---|---|---|
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; Текст = Текст + Символы.ПС + "ОБЪЕДИНИТЬ" + Символы.ПС +"ВЫБРАТЬ |ДАТАВРЕМЯ("+Формат(ДатаМасс,"ДФ=""гггг""")+","+Месяц(ДатаМасс)+","+День(ДатаМасс)+","+Час(ДатаМасс)+","+Минута(ДатаМасс)+","+Секунда(ДатаМасс)+") |"; КонецЦикла; Теперь выводит все даты, но нужно чтобы при отсутствии движений он брал последнее значение ресурса. Как это организовать? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |