|
Разбить интервалы по месяцам в запросе | ☑ | ||
---|---|---|---|---|
0
ЛучшийПрограммер1С
04.05.16
✎
13:34
|
Вот к примеру
Выбрать Т.Дата1, Т.Дата2 ИЗ T Дата1 Дата2 23.11.2013 22:46:00 25.02.2015 22:46:00 05.11.2014 9:00:00 25.02.2015 22:46:00 А надо НомерПериода Дата1 Дата2 1 23.11.2013 22:46:00 30.11.2013 23:59:59 1 01.12.2013 00:00:00 31.12.2013 23:59:59 1 01.01.2014 00:00:00 31.01.2014 23:59:59 ... 1 01.02.2015 00:00:00 25.02.2015 22:46:00 2 05.11.2014 9:00:00 30.11.2014 23:59:59 2 01.12.2014 00:00:00 31.12.2014 23:59:59 2 01.01.2015 00:00:00 31.01.2015 23:59:59 2 01.02.2015 00:00:00 25.02.2015 22:46:00 |
|||
1
Nuobu
04.05.16
✎
13:36
|
(0) Сделай таблицу месяцев и левым соединением соедини со своей.
|
|||
2
RomanYS
04.05.16
✎
13:37
|
1. подготовить таблицу с месяцами
2. соединить с исходной по условию пересечения |
|||
3
пипец
04.05.16
✎
13:37
|
1 23.11.2013 22:46:00 30.11.2013 23:59:59
2 01.02.2015 00:00:00 25.02.2015 22:46:00 это именно так со временем ? )) |
|||
4
ЛучшийПрограммер1С
04.05.16
✎
13:39
|
(3) Что не так?
|
|||
5
ЛучшийПрограммер1С
04.05.16
✎
13:40
|
(2) Таблицу с месяцами надо тогда по всем годам?
|
|||
6
Nuobu
04.05.16
✎
13:41
|
(5) Да.
|
|||
7
ЛучшийПрограммер1С
04.05.16
✎
13:46
|
(6) Справочник или регистр сведений или прямо в запросе залобать?
|
|||
8
Nuobu
04.05.16
✎
13:48
|
(7) Ну, это уж как пожелаешь.
|
|||
9
ЛучшийПрограммер1С
04.05.16
✎
14:42
|
Выбрать
Выбор когда Месяцы.НомерМесяца=0 тогда Т.Дата1 иначе НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(Т.Дата1, Месяц, Месяцы.НомерМесяца), Месяц) конец Дата1, Выбор когда Месяцы.НомерМесяца=РазностьДат(Т.Дата1, Т.Дата2, Месяц) тогда Т.Дата2 иначе КонецПЕРИОДА(ДОБАВИТЬКДАТЕ(Т.Дата1, Месяц, Месяцы.НомерМесяца), Месяц) конец Дата2 ИЗ Т ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Сотни.колво * 100 + Десятки.колво * 10 + Единицы.колво КАК НомерМесяца ИЗ (ВЫБРАТЬ 0 КАК колво ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК Сотни ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК колво ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК Десятки ПО (ИСТИНА) ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 0 КАК колво ОБЪЕДИНИТЬ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВЫБРАТЬ 9) КАК Единицы ПО (ИСТИНА) ) КАК Месяцы ПО (ДОБАВИТЬКДАТЕ(Т.Дата1, Месяц, Месяцы.НомерМесяца) МЕЖДУ Т.Дата1 И Т.Дата2) А вот как добавить колонку для НомерПериода? |
|||
10
ЛучшийПрограммер1С
04.05.16
✎
15:27
|
тут написано Книга знаний: Нумерация строк в запросе
но это конечно же бред такое использовать. |
|||
11
Nuobu
04.05.16
✎
15:37
|
(10) Ну так юзай регистр сведений.
|
|||
12
RomanYS
04.05.16
✎
15:54
|
(9) чем тебе Месяцы.НомерМесяца не подходит?
|
|||
13
ЛучшийПрограммер1С
04.05.16
✎
15:56
|
(12) Надо из исходной таблицы Т
|
|||
14
RomanYS
04.05.16
✎
16:05
|
(13) ну если у тебя не тысячи записей в исходной таблице, то (10) вполне работает.
Только пронумеровать надо до соединения, учитывая (9) кажется, что ты не очень дружишь с временными таблицами. |
|||
15
ЛучшийПрограммер1С
04.05.16
✎
16:19
|
(14) Честно говоря не очень )
|
|||
16
RomanYS
04.05.16
✎
16:30
|
(15) придется разобраться)
Для затравки, твой вложенный запрос можно заменить на врем. таблицу ЧЧ: ВЫБРАТЬ 1 КАК Ц ПОМЕСТИТЬ ЦЦ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 0 ; ВЫБРАТЬ ЦЦ.Ц + 10 * ЦЦ1.Ц + 100 * ЦЦ2.Ц КАК Ч ПОМЕСТИТЬ ЧЧ ИЗ ЦЦ КАК ЦЦ, ЦЦ КАК ЦЦ1, ЦЦ КАК ЦЦ2 ; |
|||
17
ЛучшийПрограммер1С
04.05.16
✎
16:32
|
(16) Спасибо, попробую.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |