Имя: Пароль:
1C
1С v8
Запрос для отчета (СКД) по количеству сотрудников по месяцам рождения и по возрасту.
0 Kitttt
 
24.01.22
17:35
Всем здравствуйте, есть отчет на СКД, подскажите пожалуйста, как сделать чтобы возраст сотрудника анализировался на конец каждого месяца в выбранном периоде, а не на конец выбранного периода?

ВЫБРАТЬ
    Сотрудники.Наименование КАК Наименование,
    Сотрудники.ДатаРождения КАК ДатаРождения,
    ГОД(&ТекущаяДата) - ГОД(Сотрудники.ДатаРождения) - ВЫБОР
        КОГДА МЕСЯЦ(&ТекущаяДата) < МЕСЯЦ(Сотрудники.ДатаРождения)
            ТОГДА 1
        ИНАЧЕ ВЫБОР
                КОГДА МЕСЯЦ(&ТекущаяДата) = МЕСЯЦ(Сотрудники.ДатаРождения)
                        И ДЕНЬ(&ТекущаяДата) < ДЕНЬ(Сотрудники.ДатаРождения)
                    ТОГДА 1
                ИНАЧЕ 0
            КОНЕЦ
    КОНЕЦ КАК Возраст
ПОМЕСТИТЬ ВТ_Информация
ИЗ
    Справочник.Сотрудники КАК Сотрудники
ГДЕ
    ВЫБОР
            КОГДА ГОД(&ДатаНачала) = ГОД(&ТекущаяДата)
                ТОГДА МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(&ДатаНачала) И МЕСЯЦ(&ТекущаяДата)
            ИНАЧЕ МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(&ДатаНачала) И МЕСЯЦ(КОНЕЦПЕРИОДА(&ДатаНачала, ГОД))
                    ИЛИ МЕСЯЦ(Сотрудники.ДатаРождения) МЕЖДУ МЕСЯЦ(НАЧАЛОПЕРИОДА(&ДатаНачала, ГОД)) И МЕСЯЦ(&ТекущаяДата)
        КОНЕЦ
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВЫБОР
        КОГДА ВТ_Информация.Возраст < 20
            ТОГДА "возраст менее 20"
        КОГДА ВТ_Информация.Возраст >= 20
                И ВТ_Информация.Возраст <= 30
            ТОГДА "возраст от 20 до 30"
        КОГДА ВТ_Информация.Возраст >= 31
                И ВТ_Информация.Возраст <= 40
            ТОГДА "возраст от 31 до 40"
        КОГДА ВТ_Информация.Возраст >= 41
                И ВТ_Информация.Возраст <= 50
            ТОГДА "возраст от 41 до 50"
        ИНАЧЕ "возраст от 50"
    КОНЕЦ КАК Диапозон,
    ВТ_Информация.ДатаРождения КАК ДатаРождения,
    ВТ_Информация.Наименование КАК Сотрудник
ПОМЕСТИТЬ ВТ_Заключение
ИЗ
    ВТ_Информация КАК ВТ_Информация
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Заключение.Сотрудник КАК Сотрудник,
    ВТ_Заключение.Диапозон КАК Диапозон,
    МЕСЯЦ(ВТ_Заключение.ДатаРождения) КАК МесяцРождения,
    НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Заключение.ДатаРождения, ГОД, -ГОД(ДОБАВИТЬКДАТЕ(ВТ_Заключение.ДатаРождения, ГОД, -10))), МЕСЯЦ) КАК Период,
    КОЛИЧЕСТВО(ВТ_Заключение.Сотрудник) КАК Количество
ИЗ
    ВТ_Заключение КАК ВТ_Заключение

СГРУППИРОВАТЬ ПО
    ВТ_Заключение.Сотрудник,
    ВТ_Заключение.Диапозон,
    МЕСЯЦ(ВТ_Заключение.ДатаРождения),
    НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ВТ_Заключение.ДатаРождения, ГОД, -ГОД(ДОБАВИТЬКДАТЕ(ВТ_Заключение.ДатаРождения, ГОД, -10))), МЕСЯЦ)
1 DrShad
 
24.01.22
17:40
опять?
2 vicof
 
24.01.22
17:42
(1) Раньше было "по возрастному диапазону", теперь "по возрасту". "Ты не понимаешь" (с) :)
3 Dmitrii
 
гуру
24.01.22
17:42
(1) Еженедельная рубрика. Скоро, как "Геоплитика", получит статус номерных веток с продолжением.
4 Kitttt
 
24.01.22
17:42
(1) угу(
5 Kassern
 
24.01.22
17:50
(0) Вот у вас табличка, в колонках месяцы (с января по декабрь) в строках возрастные группы. Ресурсом будет количество сотрудников. Так вот ваше "как сделать чтобы возраст сотрудника анализировался на конец каждого месяца" можете на примере нескольких условных сотрудников расписать?
6 Kitttt
 
24.01.22
18:09
К примеру, у меня сейчас есть 10 сотрудников, в данный момент отчет отрабатывает так,
если у одного сотрудника день рождение в январе, то он запишет в колонку январь 1, если у двоих в феврале,
то в колонке февраль 2 сотрудника, и так далее.. соответствуя возрастному диапозону. А нужно,
к примеру один сотрудник находится в возрастном диапозоне "менее 20 лет" и в декабре ему исполняется допустим 20 лет,
следовательно он переходит в диапозон "от 20 до 30", и к примеру отчет бы выглядел так: когда сотруднику еще было "менее 20 лет", в строке "от 20 до 30 лет" и во всех колонках с января по декабрь(либо любой указанный период) было по 9 человек в каждой колонке, если выбрали период когда сотруднику исполнилось исполнилось 20 лет в декабре, то в колонках с января по ноябрь было бы по 9 чел, а в колонке декабрь 10, то есть анализ ведется на каждый месяц выбранного периода..