|
Как получить массив дней из диапазона дат? | ☑ | ||
---|---|---|---|---|
0
tabarigen
23.08.19
✎
10:13
|
Всем добра, всем бабла.
У меня есть 2 дата, ДатаОт и ДатаДо. Как без лишних телодвижений получить массив дней между этими датами, включая сами даты? |
|||
1
Волшебник
23.08.19
✎
10:14
|
циклом
|
|||
2
catena
23.08.19
✎
10:15
|
запросом
|
|||
3
tabarigen
23.08.19
✎
10:31
|
КоличествоДней = (ДатаКонец - ДатаНачала) / 60 / 60 / 24;
|
|||
4
tabarigen
23.08.19
✎
10:33
|
блин вроде изи задача, но не так все и просто..
|
|||
5
tabarigen
23.08.19
✎
10:34
|
на ум приходит только запросом..
|
|||
6
НЕА123
23.08.19
✎
10:35
|
(5)
та не. рекурсией только. |
|||
7
dka80
23.08.19
✎
10:36
|
Выбрать Дата из регистрсведений.производственныйкалендарь (или справочник)
где дата между &Нач и &Кон |
|||
8
Кир Пластелинин
23.08.19
✎
10:50
|
а в чем проблема получить разность дат (читай - количество дней) и в цикле "для ... по ..." заполнить массив накопительной переменной-датой? потом просто в цикле с прерыванием по условию? что тут такого непростого то?
|
|||
9
kobzon2
23.08.19
✎
10:53
|
(3) (4)
Массив = Новый Массив; КоличествоДней = (ДатаКонец - ДатаНачала) / 60 / 60 / 24; Массив.Добавить(ДатаНач); н = Дата(1, 1, 1); Пока Массив.Количество() < КоличествоДней Цикл н = н + 24*60*60; Массив.Добавить(н); КонецЦикла; Массив.Добавить(ДатаКон); |
|||
10
JeHer
23.08.19
✎
11:07
|
(0) на коленке
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | КурсыВалют.Период КАК Период |ИЗ | РегистрСведений.КурсыВалют КАК КурсыВалют |ГДЕ | КурсыВалют.Период МЕЖДУ &ДатаНачала И &ДатаОкончания"; Запрос.УстановитьПараметр("ДатаНачала", ПериодОбработки.ДатаНачала); Запрос.УстановитьПараметр("ДатаОкончания", ПериодОбработки.ДатаОкончания); РезультатЗапроса = Запрос.Выполнить(); А дальше выгрузишь куда угодно |
|||
11
Кир Пластелинин
23.08.19
✎
11:10
|
(10) это было сейчас всерьез?)
|
|||
12
dka80
23.08.19
✎
11:15
|
(10) ваш выбор источника дат вызвает сомнения
|
|||
13
Кир Пластелинин
23.08.19
✎
11:25
|
(12) да собственно как и производственный календарь. т.к. в определенных случаях может не быть подобных метаданных или же они могут быть не заполнены.
|
|||
14
Aleksandr N
23.08.19
✎
11:26
|
(1) +1
(2), (10) — Массив дней запросом? Месье знает толк в извращениях. |
|||
15
Лефмихалыч
23.08.19
✎
11:26
|
||||
16
НадюшаЯЯ
23.08.19
✎
11:27
|
(10) надо различные выбрать
|
|||
17
dezss
23.08.19
✎
11:42
|
(9) ппц просто...
может все же н = ДатаНачала; |
|||
18
tabarigen
23.08.19
✎
11:42
|
(10) запросом не стал, потому что у меня данные хранились во временных таблицах.
сделал так. врОтчет = Отчет.Скопировать(); массивДат = Отчет.ВыгрузитьКолонку("ДатаЧека"); тзДаты = Новый ТаблицаЗначений; тзДаты.Колонки.Добавить("ДатаЧека",Новый ОписаниеТипов("Дата")); Для каждого стр из массивДат Цикл строкаМассива = тзДаты.Добавить(); строкаМассива.ДатаЧека = стр; КонецЦикла; тзДаты.Свернуть("ДатаЧека"); |
|||
19
tabarigen
23.08.19
✎
11:42
|
воше на изичах
|
|||
20
kobzon2
23.08.19
✎
11:47
|
(17) Да, точно
|
|||
21
JeHer
23.08.19
✎
11:51
|
(11) (12) Уээ, написано же "на коленке". ТС хотел запросом, накидал. Что не нравится? Подсуньте вместо курсов валют любой другой параметр.
|
|||
22
АгентБезопасной Нацио
23.08.19
✎
11:56
|
(15) ildarovich знает толк...
Я вот сколько раз пытаюсь реализовать его "бабочку" - нифига... |
|||
23
Simod
23.08.19
✎
12:34
|
Из консоли запросов ИР:
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период ИЗ (ВЫБРАТЬ 0 КАК a ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК aa ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК b ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК bb ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК c ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК cc ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК d ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК dd ПО (ИСТИНА) ГДЕ aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) |
|||
24
Ботаник Гарден Меран
23.08.19
✎
13:38
|
(22)
Транзитивное замыкание использую уже довольно часто. А для бабочки нужна уже пронумерованная таблица - где-ж такую в запросе взять. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |