|   |   | 
| 
 | Разбить интервалы по месяцам в запросе | ☑ | ||
|---|---|---|---|---|
| 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) Спасибо, попробую.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |