Имя: Пароль:
1C
1С v8
Запрос по периоду с группировкой по месяцам
0 sound
 
16.10.15
11:55
Товарищи, как сделать такую штуку в запросе: за выбранный период получить в результате строки, содержащие НачалоМесяца, КонецМесяца и количество дней в месяце? то есть выбираю например период 2 года
и в результате 24 строки по каждому месяцу

01.01.2015   31.01.2015  31
01.02.2015   28.02.2015  28
и т.д.
1 Горогуля
 
16.10.15
12:09
употребить начало периода, конец периода и разность дат
2 Горогуля
 
16.10.15
12:10
конечно, быстрее соединить таблицу периодов с таблицей вида "месяц_числом, количество_дней"
3 sound
 
16.10.15
12:13
ну вот и не хватает тяму как это сделать
4 Горогуля
 
16.10.15
12:20
(3) в чём затык?
5 sound
 
16.10.15
12:23
(4)

я просто думаю можно как то изъебнуться без такой хрени или нет:

ВЫБРАТЬ
ДАТАВРЕМЯ(2014,1,1),
ДАТАВРЕМЯ(2014,1,31),
31

ОБЪЕДИНИТЬ

ВЫБРАТЬ
ДАТАВРЕМЯ(2014,2,1),
ДАТАВРЕМЯ(2014,2,28),
28

.................................................

То есть чтоб не писать для каждого месяца запрос, а передать всего 2 параметра, например 01.01.2014 и 31.12.2015 и чтоб запрос вернул 24 строки по каждому месяцу из этого интервала. То есть я понимаю, что я как бы цикл в запросе хочу получить и вот думаю а не дохрена ли я хочу? )
6 sound
 
16.10.15
12:24
ой простите, мат скопировался :) извиняюсь
7 Горогуля
 
16.10.15
12:25
можешь отдать в запрос готовую таблицу периодов, сделанную циклом, можешь сам собрать из ничего в запросе, можешь запросить календарь, если есть...
8 Горогуля
 
16.10.15
12:25
в первом случае немного напиильника - и запрос не нужен ;)
9 sound
 
16.10.15
12:30
(7) Гениально, календарь же есть :))))
Тогда вопрос снимается.
Пасиба за подсказку :)_
10 Горогуля
 
16.10.15
12:30
вот тебе немного чисел из ниоткуда

выбрать 0 как цифра поместить цифры объединить выбрать 1 объединить выбрать 2 объединить выбрать 3 объединить выбрать 4 объединить выбрать 5 объединить выбрать 6 объединить выбрать 7 объединить выбрать 8 объединить выбрать 9;
выбрать 1000*тысячи.цифра+100*сотни.цифра+10*десятки.цифра+единицы.цифра
из цифры как тысячи, цифры как сотни, цифры как десятки, цифры как единицы
11 sound
 
16.10.15
12:31
Вот я туплю а )
12 Гипервизор
 
16.10.15
12:33
Ну если календарь в конфе есть можно по быстрому как-то так:
ВЫБРАТЬ
    НАЧАЛОПЕРИОДА(Календарь.ДатаКалендаря, МЕСЯЦ) КАК НачалоПериода,
    КОНЕЦПЕРИОДА(Календарь.ДатаКалендаря, МЕСЯЦ) КАК КонецПериода,
    ДЕНЬ(КОНЕЦПЕРИОДА(Календарь.ДатаКалендаря, МЕСЯЦ)) КАК ЧислоДней
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
ГДЕ
    Календарь.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
    Календарь.Год,
    НАЧАЛОПЕРИОДА(Календарь.ДатаКалендаря, МЕСЯЦ),
    КОНЕЦПЕРИОДА(Календарь.ДатаКалендаря, МЕСЯЦ),
    ДЕНЬ(КОНЕЦПЕРИОДА(Календарь.ДатаКалендаря, МЕСЯЦ))

УПОРЯДОЧИТЬ ПО
    Календарь.Год
13 sound
 
16.10.15
12:56
(12) Ну да, так и сделал, только там надо единичку прибавить еще:

1 + ДЕНЬ(КОНЕЦПЕРИОДА(Календарь.ДатаКалендаря, МЕСЯЦ)) КАК ЧислоДней
14 Горогуля
 
16.10.15
13:14
01.01.2015   31.01.2015  32
01.02.2015   28.02.2015  29

так штоль?
15 Гипервизор
 
16.10.15
13:15
Единичка зачем??
16 Гипервизор
 
16.10.15
13:15
(14) Во-во, ТС начинает путаться в показаниях
17 Горогуля
 
16.10.15
13:19
ВЫБОР
        КОГДА МЕСЯЦ(Календарь.ДатаКалендаря) = 5
            ТОГДА 32
        ИНАЧЕ ДЕНЬ(КОНЕЦПЕРИОДА(Календарь.ДатаКалендаря, МЕСЯЦ))
    КОНЕЦ КАК ЧислоДней
18 Горогуля
 
16.10.15
13:20
Да скажу вам откровенно: меня же тоже многое не устраивает. Я тоже со многим не согласен. Да, да. В частности. Я не в восторге от нашего календаря. И не первый год. Но я не позволяю себе срывы! ©
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший