|
Даты на каждый день, но без РегламентированныйПроизводственныйКалендарь | ☑ | ||
---|---|---|---|---|
0
Вася Теркин
16.04.19
✎
11:43
|
Какие есть ещё мысли? Просто по журналам выбирать разные даты документов - по воскресеньям не будет дат. Надо гарантировано без пропусков.
|
|||
1
1Сергей
16.04.19
✎
11:46
|
||||
2
Вася Теркин
16.04.19
✎
11:46
|
Как-то через скрипты абрахамс вытаскивал когда-то и в запрос передавали... Но параметром как массив дат передавать не желательно
|
|||
3
rozer76
16.04.19
✎
11:49
|
Функция ПолучитьТаблицуДатЗаПериод(НачДата, КонДата, Интервал)
тзИнтервалов = Новый ТаблицаЗначений; тзИнтервалов.Колонки.Добавить("НачИнтервала", Новый ОписаниеТипов("Дата")); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | НАЧАЛОПЕРИОДА(&НачДата, День) КАК НачИнтервала |УПОРЯДОЧИТЬ ПО | НачИнтервала |ИТОГИ ПО | НачИнтервала ПЕРИОДАМИ("+Интервал+", &НачДата, &КонДата)"; Запрос.УстановитьПараметр("НачДата", НачДата); Запрос.УстановитьПараметр("КонДата", КонДата); Выборка = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НачИнтервала", "ВСЕ"); Пока Выборка.Следующий() Цикл НоваяСтрока = тзИнтервалов.Добавить(); НоваяСтрока.НачИнтервала = Выборка.НачИнтервала; КонецЦикла; Возврат тзИнтервалов; КонецФункции |
|||
4
RomanYS
16.04.19
✎
11:50
|
(0) генерируемая таблица чисел и ДобавитьКДате
|
|||
5
1Сергей
16.04.19
✎
11:52
|
(3) такого я ещё не видел.
А как это потом соединять с другими таблицами? |
|||
6
Вася Теркин
16.04.19
✎
11:53
|
Остается только в ВТ загрузить... Автоупорядочивание и итоги нельзя...
|
|||
7
Вася Теркин
16.04.19
✎
11:53
|
(5) Никак. Это решение ради решения.
|
|||
8
Вася Теркин
16.04.19
✎
11:54
|
(4) Очень плохо, лучше параметром массив дат передавать
\ |
|||
9
RomanYS
16.04.19
✎
11:56
|
(8) Если есть возможность передать параметром передай, только ТЗ.
В принципе ничего плохого там не вижу: запрос примитивный и не тяжелый. |
|||
10
catena
16.04.19
✎
12:14
|
(8)Почему плохо-то?
|
|||
11
Вася Теркин
16.04.19
✎
12:20
|
(10) Так
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗ_Дни.День КАК День |ПОМЕСТИТЬ ВТ_Дни |ИЗ | &ТЗ_Дни КАК ТЗ_Дни |; |ВЫБРАТЬ.............."; ТекДата = НачалоМесяца(ТекущаяДата()); КонДата = ТекущаяДата(); ТЗ = Новый ТаблицаЗначений; КвалификаторыДаты = Новый КвалификаторыДаты(ЧастиДаты.ДатаВремя); ОписаниеДаты = Новый ОписаниеТипов("Дата", , ,КвалификаторыДаты); ТЗ.Колонки.Добавить("День",ОписаниеДаты); Пока НачалоДня(ТекДата) <= КонДата Цикл стр = ТЗ.Добавить(); Стр.День = ТекДата; ТекДата = КонецДня(ТекДата) + 1; КонецЦикла; Запрос.УстановитьПараметр("ТЗ_Дни",ТЗ); и то приличнее. Хотя и колхоз |
|||
12
1Сергей
16.04.19
✎
12:22
|
(11) А когда у тебя нет возможности пред/пост обработки запроса? Ну, типа всё сделать в запросе
|
|||
13
catena
16.04.19
✎
12:23
|
(11)Ты ответь, почему так неприлично?
Выбрать 0 ч поместить тч объединить все Выбрать 1 объединить все Выбрать 2 объединить все Выбрать 3 объединить все Выбрать 4 объединить все Выбрать 5 объединить все Выбрать 6 объединить все Выбрать 7 объединить все Выбрать 8 объединить все Выбрать 9; Выбрать различные тч5.ч*10000+тч4.ч*1000+тч3.ч*100+тч2.ч*10+тч1.ч ч поместить линейка из тч тч1,тч тч2,тч тч3,тч тч4,тч тч5; Выбрать ДатаВремя(1900,1,1) д поместить начДата; Выбрать ДобавитьКДате(начДата.д,день, линейка.ч) из начДата начДата,линейка линейка |
|||
14
sqr4
16.04.19
✎
12:23
|
(11) ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, 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 <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) |
|||
15
sqr4
16.04.19
✎
12:23
|
Это твой вопрос колхоз...
|
|||
16
ProxyInspector
16.04.19
✎
12:23
|
ТекстЗапроса = "
|ВЫБРАТЬ РАЗЛИЧНЫЕ |НАЧАЛОПЕРИОДА(ДатаДень, %ВидИнтервала%) КАК ДатаЦены //КонецПериода или конец отчета |ИЗ | ( | ВЫБРАТЬ | ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, ТГоды.Год - 1), МЕСЯЦ, ТМесяцы.Месяц - 1), ДЕНЬ, ТДни.День - 1) КАК ДатаДень | ИЗ | ( | ВЫБРАТЬ 1 КАК День | ОБЪЕДИНИТЬ ВЫБРАТЬ 2 | ОБЪЕДИНИТЬ ВЫБРАТЬ 3 | ОБЪЕДИНИТЬ ВЫБРАТЬ 4 | ОБЪЕДИНИТЬ ВЫБРАТЬ 5 | ОБЪЕДИНИТЬ ВЫБРАТЬ 6 | ОБЪЕДИНИТЬ ВЫБРАТЬ 7 | ОБЪЕДИНИТЬ ВЫБРАТЬ 8 | ОБЪЕДИНИТЬ ВЫБРАТЬ 9 | ОБЪЕДИНИТЬ ВЫБРАТЬ 10 | ОБЪЕДИНИТЬ ВЫБРАТЬ 11 | ОБЪЕДИНИТЬ ВЫБРАТЬ 12 | ОБЪЕДИНИТЬ ВЫБРАТЬ 13 | ОБЪЕДИНИТЬ ВЫБРАТЬ 14 | ОБЪЕДИНИТЬ ВЫБРАТЬ 15 | ОБЪЕДИНИТЬ ВЫБРАТЬ 16 | ОБЪЕДИНИТЬ ВЫБРАТЬ 17 | ОБЪЕДИНИТЬ ВЫБРАТЬ 18 | ОБЪЕДИНИТЬ ВЫБРАТЬ 19 | ОБЪЕДИНИТЬ ВЫБРАТЬ 20 | ОБЪЕДИНИТЬ ВЫБРАТЬ 21 | ОБЪЕДИНИТЬ ВЫБРАТЬ 22 | ОБЪЕДИНИТЬ ВЫБРАТЬ 23 | ОБЪЕДИНИТЬ ВЫБРАТЬ 24 | ОБЪЕДИНИТЬ ВЫБРАТЬ 25 | ОБЪЕДИНИТЬ ВЫБРАТЬ 26 | ОБЪЕДИНИТЬ ВЫБРАТЬ 27 | ОБЪЕДИНИТЬ ВЫБРАТЬ 28 | ОБЪЕДИНИТЬ ВЫБРАТЬ 29 | ОБЪЕДИНИТЬ ВЫБРАТЬ 30 | ОБЪЕДИНИТЬ ВЫБРАТЬ 31 ) КАК ТДни | ПОЛНОЕ СОЕДИНЕНИЕ | ( | ВЫБРАТЬ 1 КАК Месяц | ОБЪЕДИНИТЬ ВЫБРАТЬ 2 | ОБЪЕДИНИТЬ ВЫБРАТЬ 3 | ОБЪЕДИНИТЬ ВЫБРАТЬ 4 | ОБЪЕДИНИТЬ ВЫБРАТЬ 5 | ОБЪЕДИНИТЬ ВЫБРАТЬ 6 | ОБЪЕДИНИТЬ ВЫБРАТЬ 7 | ОБЪЕДИНИТЬ ВЫБРАТЬ 8 | ОБЪЕДИНИТЬ ВЫБРАТЬ 9 | ОБЪЕДИНИТЬ ВЫБРАТЬ 10 | ОБЪЕДИНИТЬ ВЫБРАТЬ 11 | ОБЪЕДИНИТЬ ВЫБРАТЬ 12) КАК ТМесяцы ПО (ИСТИНА) | | ПОЛНОЕ СОЕДИНЕНИЕ | (ВЫБРАТЬ 2009 КАК Год | ОБЪЕДИНИТЬ ВЫБРАТЬ 2010 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2011 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2012 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2013 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2014 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2015 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2016 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2017 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2018 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2019 | ОБЪЕДИНИТЬ ВЫБРАТЬ 2020 ) КАК ТГоды ПО (ИСТИНА) | ГДЕ | ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДОБАВИТЬКДАТЕ(ДАТАВРЕМЯ(1, 1, 1), ГОД, ТГоды.Год - 1), МЕСЯЦ, ТМесяцы.Месяц - 1), ДЕНЬ, ТДни.День - 1) МЕЖДУ &ДатаНачала И &ДатаОкончания | )КАК СписокДат |УПОРЯДОЧИТЬ ПО ДатаЦены |"; Вот кто-то умный делал. Работает. Можно по дням, неделям и т.д. |
|||
17
Вася Теркин
17.04.19
✎
06:03
|
(11) Тогда придется. И почему платформа в языке не создала возможность генерить последовательности. Стандартная задача.
|
|||
18
Вася Теркин
17.04.19
✎
06:05
|
(13) Я говорил про (1) и (14). Сама же скрыла это неприличное
|
|||
19
Вася Теркин
17.04.19
✎
06:06
|
Да и (16) не намного красивее
|
|||
20
catena
17.04.19
✎
06:13
|
(18)Я скрыла не потому, что неприличное, а потому, что много
|
|||
21
Вася Теркин
17.04.19
✎
06:37
|
(20) Правильно. Краткость - сестра копипасты. А такое даже копипастать не хочется. Тем более руки утруждать набирая 1,2,3,..33...
|
|||
22
Вася Теркин
17.04.19
✎
07:37
|
Хочу функцию, которая создаст МВТ или в переданном МВТ создаст ВТ_ВсеПериодыИнтервала. ДополнитьМВТ(МВТ,")
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |