Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Отчет "Средне учетная численность сотрудников"          
kosalex Подменю пользователя
сообщение 04.09.15, 8:01
Сообщение #1

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Доброго времени суток! Есть у меня такой отчет сделанны через построитель.
Суть моего вопроса, отдел кадров хочет чтобы колонка "Средняя" расчитывалась вот так &ДатаКонец - &КоличествоДней.
Где &КоличествоДней = &ДатаКонец - ДатаИнвалидности.
ДатаИнвалидности - берем из РС сведенья об инвалидности физ лиц.


Сейчас эта колонка рассчитывается точно так же, за исключением того что количество дней = количеству колендарных дней по производственному календарю.

Вот что я делаю, но почему то не хочет выводить колонку "КоличествоДней", и соответственно не идет рассчет "Средняя"

В &парамФизЛицо тип Справочники.СотрудникиОрганизации

Код

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РаботникиОрганизаций.Организация КАК Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение,
    РаботникиОрганизаций.Сотрудник.Физлицо КАК ФизЛицо,
    Календарь.ДатаКалендаря КАК Буква,
    1 КАК Учитывать,
    СУММА(РаботникиОрганизаций.Учитывать / РаботникиОрганизаций.КоличествоДней) КАК Средняя
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РаботникиПериод.Организация КАК Организация,
            РаботникиПериод.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
            РаботникиПериод.Сотрудник КАК Сотрудник,
            1 КАК Учитывать,
            РаботникиПериод.Начало КАК Начало,
            ВЫБОР
                КОГДА РаботникиПериод.Конец ЕСТЬ NULL
                        ИЛИ РаботникиПериод.Конец > &парамКонец
                    ТОГДА &парамКонец
                ИНАЧЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(РаботникиПериод.Конец, ДЕНЬ), ДЕНЬ, -1), ДЕНЬ)
            КОНЕЦ КАК Конец,
            NULL КАК КоличествоДней
        ИЗ
            (ВЫБРАТЬ
                РаботникиНачало.Организация КАК Организация,
                РаботникиНачало.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                РаботникиНачало.Сотрудник КАК Сотрудник,
                РаботникиНачало.Начало КАК Начало,
                МИНИМУМ(ВЫБОР
                        КОГДА НЕ Состояния.Период ЕСТЬ NULL
                            ТОГДА Состояния.Период
                        ИНАЧЕ Работники.Период
                    КОНЕЦ) КАК Конец
            ИЗ
                (ВЫБРАТЬ
                    Работники.Организация КАК Организация,
                    Работники.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                    Работники.Сотрудник КАК Сотрудник,
                    &парамНачало КАК Начало
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК Работники
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&парамНачало, ) КАК Состояния
                        ПО Работники.Организация = Состояния.Организация
                            И Работники.Сотрудник = Состояния.Сотрудник
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И (Состояния.Состояние ЕСТЬ NULL
                            ИЛИ Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                                И Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                    И Работники.Сотрудник В(&парамФизЛицо)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Работники.Организация,
                    Работники.ПодразделениеОрганизации,
                    Работники.Сотрудник,
                    Работники.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций КАК Работники
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И Работники.Период >= &парамНачало
                    И Работники.Период <= &парамКонец
                    И Работники.Сотрудник В(&парамФизЛицо)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Работники.Организация,
                    Работники.ПодразделениеОрганизации,
                    Работники.Сотрудник,
                    Состояния.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК Работники
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&парамНачало, ) КАК СостоянияНачало
                        ПО Работники.Организация = СостоянияНачало.Организация
                            И Работники.Сотрудник = СостоянияНачало.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                            Состояния.Сотрудник КАК Сотрудник,
                            Состояния.Период КАК Период,
                            МАКСИМУМ(СостоянияДо.Период) КАК ПериодДо
                        ИЗ
                            РегистрСведений.СостояниеРаботниковОрганизаций КАК Состояния
                                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостоянияДо
                                ПО (СостоянияДо.Период < Состояния.Период)
                                    И Состояния.Сотрудник = СостоянияДо.Сотрудник
                        ГДЕ
                            Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
                            И Состояния.Период >= &парамНачало
                            И Состояния.Период <= &парамКонец
                        
                        СГРУППИРОВАТЬ ПО
                            Состояния.Сотрудник,
                            Состояния.Период) КАК Состояния
                        ПО Работники.Сотрудник = Состояния.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостоянияДо
                        ПО (СостоянияДо.Сотрудник = Состояния.Сотрудник)
                            И (СостоянияДо.Период = Состояния.ПериодДо)
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И (СостоянияДо.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                            ИЛИ СостоянияДо.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                    И НЕ Состояния.Период ЕСТЬ NULL
                    И Состояния.Период >= &парамНачало
                    И Работники.Сотрудник В(&парамФизЛицо)) КАК РаботникиНачало
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
                    ПО РаботникиНачало.Сотрудник = Работники.Сотрудник
                        И (Работники.Сотрудник.ВидЗанятости В (&парамМестоРаботы))
                        И РаботникиНачало.Начало < Работники.Период
                        И (Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                            ИЛИ Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Перемещение))
                        И (Работники.Сотрудник В (&парамФизЛицо))
                    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        Состояния.Сотрудник КАК Сотрудник,
                        МИНИМУМ(Состояния.Период) КАК Период
                    ИЗ
                        РегистрСведений.СостояниеРаботниковОрганизаций КАК Состояния
                    ГДЕ
                        (Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                                ИЛИ Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                        И Состояния.Период >= &парамНачало
                        И Состояния.Период <= &парамКонец
                    
                    СГРУППИРОВАТЬ ПО
                        Состояния.Сотрудник) КАК Состояния
                    ПО РаботникиНачало.Сотрудник = Состояния.Сотрудник
                        И РаботникиНачало.Начало < Состояния.Период
            
            СГРУППИРОВАТЬ ПО
                РаботникиНачало.Организация,
                РаботникиНачало.ПодразделениеОрганизации,
                РаботникиНачало.Сотрудник,
                РаботникиНачало.Начало) КАК РаботникиПериод
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            Работники.Организация,
            Работники.ПодразделениеОрганизации,
            Работники.Сотрудник,
            1,
            ВЫБОР
                КОГДА Работники.ДатаНачала < &парамНачало
                    ТОГДА &парамНачало
                ИНАЧЕ Работники.ДатаНачала
            КОНЕЦ,
            ВЫБОР
                КОГДА Работники.ДатаОкончания > &парамКонец
                    ТОГДА &парамКонец
                ИНАЧЕ Работники.ДатаОкончания
            КОНЕЦ,
            NULL
        ИЗ
            Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК Работники
        ГДЕ
            Работники.Проведен
            И Работники.Сотрудник.ОсновноеНазначение = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
            И Работники.Сотрудник В(&парамФизЛицо)
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            NULL,
            РАЗНОСТЬДАТ(СведенияОбИнвалидностиФизлицСрезПоследних.Период, &парамКонец, ДЕНЬ)
        ИЗ
            РегистрСведений.СведенияОбИнвалидностиФизлиц.СрезПоследних(&парамКонец, Физлицо = &парамТолькоФизЛицо) КАК СведенияОбИнвалидностиФизлицСрезПоследних) КАК РаботникиОрганизаций
        ПО (Календарь.ДатаКалендаря МЕЖДУ РаботникиОрганизаций.Начало И РаботникиОрганизаций.Конец)
ГДЕ
    Календарь.ДатаКалендаря МЕЖДУ &парамНачало И &парамКонец
    И НЕ РаботникиОрганизаций.Сотрудник ЕСТЬ NULL
{ГДЕ
    РаботникиОрганизаций.Организация КАК Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение}

СГРУППИРОВАТЬ ПО
    РаботникиОрганизаций.Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации,
    РаботникиОрганизаций.Сотрудник.Физлицо,
    Календарь.ДатаКалендаря

УПОРЯДОЧИТЬ ПО
    Организация,
    Подразделение,
    ФизЛицо,
    Буква
ИТОГИ
    СУММА(Учитывать),
    СУММА(Средняя)
ПО
    ОБЩИЕ,
    Организация,
    Подразделение,
    ФизЛицо
{ИТОГИ ПО
    Организация,
    Подразделение,
    ФизЛицо,
    Буква}





Сообщение отредактировал Vofka - 06.09.15, 16:19

kosalex Подменю пользователя
сообщение 10.09.15, 9:07
Сообщение #2

Ветеран
*******
Группа: Пользователи
Сообщений: 805
Спасибо сказали: 14 раз
Рейтинг: 0

Доброго времени суток!
Мой запрос, получает день инвалидности и выводит правильно. Есть одно но, отчет должен выводить список всех сотрудников а выводит только того сотрудника у которого есть запись о инвалидности в периоде отчета.

Помогите подправить запрос, чтобы выводились все сотрудники.

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РаботникиОрганизаций.Организация КАК Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение,
    РаботникиОрганизаций.Сотрудник.Физлицо КАК ФизЛицо,
    Календарь.ДатаКалендаря КАК Буква,
    СУММА(ВЫБОР
            КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДатаИнвалидности
                ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
        КОНЕЦ) КАК Средняя,
    СУММА(ВЫБОР
            КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДатаИнвалидности
                ТОГДА РаботникиОрганизаций.Учитывать
        КОНЕЦ) КАК Результат,
    РаботникиОрганизаций.ДатаИнвалидности
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РаботникиПериод.Организация КАК Организация,
            РаботникиПериод.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
            РаботникиПериод.Сотрудник КАК Сотрудник,
            1 КАК Учитывать,
            РаботникиПериод.Начало КАК Начало,
            ВЫБОР
                КОГДА РаботникиПериод.Конец ЕСТЬ NULL
                        ИЛИ РаботникиПериод.Конец > &парамКонец
                    ТОГДА &парамКонец
                ИНАЧЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(РаботникиПериод.Конец, ДЕНЬ), ДЕНЬ, -1), ДЕНЬ)
            КОНЕЦ КАК Конец,
            РаботникиПериод.ДатаИнвалидности КАК ДатаИнвалидности
        ИЗ
            (ВЫБРАТЬ
                РаботникиНачало.Организация КАК Организация,
                РаботникиНачало.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                РаботникиНачало.Сотрудник КАК Сотрудник,
                РаботникиНачало.Начало КАК Начало,
                МИНИМУМ(ВЫБОР
                        КОГДА НЕ Состояния.Период ЕСТЬ NULL
                            ТОГДА Состояния.Период
                        ИНАЧЕ Работники.Период
                    КОНЕЦ) КАК Конец,
                ЕСТЬNULL(ДЕНЬ(СведенияОбИнвалидностиФизлиц.Период), 0) КАК ДатаИнвалидности
            ИЗ
                (ВЫБРАТЬ
                    Работники.Организация КАК Организация,
                    Работники.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                    Работники.Сотрудник КАК Сотрудник,
                    &парамНачало КАК Начало
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК Работники
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&парамНачало, ) КАК Состояния
                        ПО Работники.Организация = Состояния.Организация
                            И Работники.Сотрудник = Состояния.Сотрудник
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И (Состояния.Состояние ЕСТЬ NULL
                            ИЛИ Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                                И Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                    И Работники.Сотрудник В(&парамФизЛицо)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Работники.Организация,
                    Работники.ПодразделениеОрганизации,
                    Работники.Сотрудник,
                    Работники.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций КАК Работники
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И Работники.Период >= &парамНачало
                    И Работники.Период <= &парамКонец
                    И Работники.Сотрудник В(&парамФизЛицо)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Работники.Организация,
                    Работники.ПодразделениеОрганизации,
                    Работники.Сотрудник,
                    Состояния.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК Работники
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&парамНачало, ) КАК СостоянияНачало
                        ПО Работники.Организация = СостоянияНачало.Организация
                            И Работники.Сотрудник = СостоянияНачало.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                            Состояния.Сотрудник КАК Сотрудник,
                            Состояния.Период КАК Период,
                            МАКСИМУМ(СостоянияДо.Период) КАК ПериодДо
                        ИЗ
                            РегистрСведений.СостояниеРаботниковОрганизаций КАК Состояния
                                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостоянияДо
                                ПО (СостоянияДо.Период < Состояния.Период)
                                    И Состояния.Сотрудник = СостоянияДо.Сотрудник
                        ГДЕ
                            Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
                            И Состояния.Период >= &парамНачало
                            И Состояния.Период <= &парамКонец
                        
                        СГРУППИРОВАТЬ ПО
                            Состояния.Сотрудник,
                            Состояния.Период) КАК Состояния
                        ПО Работники.Сотрудник = Состояния.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостоянияДо
                        ПО (СостоянияДо.Сотрудник = Состояния.Сотрудник)
                            И (СостоянияДо.Период = Состояния.ПериодДо)
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И (СостоянияДо.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                            ИЛИ СостоянияДо.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                    И НЕ Состояния.Период ЕСТЬ NULL
                    И Состояния.Период >= &парамНачало
                    И Работники.Сотрудник В(&парамФизЛицо)) КАК РаботникиНачало
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
                    ПО РаботникиНачало.Сотрудник = Работники.Сотрудник
                        И (Работники.Сотрудник.ВидЗанятости В (&парамМестоРаботы))
                        И РаботникиНачало.Начало < Работники.Период
                        И (Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                            ИЛИ Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Перемещение))
                        И (Работники.Сотрудник В (&парамФизЛицо))
                    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        Состояния.Сотрудник КАК Сотрудник,
                        МИНИМУМ(Состояния.Период) КАК Период
                    ИЗ
                        РегистрСведений.СостояниеРаботниковОрганизаций КАК Состояния
                    ГДЕ
                        (Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                                ИЛИ Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                        И Состояния.Период >= &парамНачало
                        И Состояния.Период <= &парамКонец
                    
                    СГРУППИРОВАТЬ ПО
                        Состояния.Сотрудник) КАК Состояния
                    ПО РаботникиНачало.Сотрудник = Состояния.Сотрудник
                        И РаботникиНачало.Начало < Состояния.Период
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СведенияОбИнвалидностиФизлиц КАК СведенияОбИнвалидностиФизлиц
                    ПО РаботникиНачало.Сотрудник.Физлицо = СведенияОбИнвалидностиФизлиц.Физлицо
            ГДЕ
                СведенияОбИнвалидностиФизлиц.Период МЕЖДУ &парамНачало И &парамКонец
                И СведенияОбИнвалидностиФизлиц.Физлицо В(&парамТолькоФизЛица)
            
            СГРУППИРОВАТЬ ПО
                РаботникиНачало.Организация,
                РаботникиНачало.ПодразделениеОрганизации,
                РаботникиНачало.Сотрудник,
                РаботникиНачало.Начало,
                ЕСТЬNULL(ДЕНЬ(СведенияОбИнвалидностиФизлиц.Период), 0)) КАК РаботникиПериод
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            Работники.Организация,
            Работники.ПодразделениеОрганизации,
            Работники.Сотрудник,
            1,
            ВЫБОР
                КОГДА Работники.ДатаНачала < &парамНачало
                    ТОГДА &парамНачало
                ИНАЧЕ Работники.ДатаНачала
            КОНЕЦ,
            ВЫБОР
                КОГДА Работники.ДатаОкончания > &парамКонец
                    ТОГДА &парамКонец
                ИНАЧЕ Работники.ДатаОкончания
            КОНЕЦ,
            NULL
        ИЗ
            Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК Работники
        ГДЕ
            Работники.Проведен
            И Работники.Сотрудник.ОсновноеНазначение = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
            И Работники.Сотрудник В(&парамФизЛицо)) КАК РаботникиОрганизаций
        ПО (Календарь.ДатаКалендаря МЕЖДУ РаботникиОрганизаций.Начало И РаботникиОрганизаций.Конец)
ГДЕ
    Календарь.ДатаКалендаря МЕЖДУ &парамНачало И &парамКонец
    И НЕ РаботникиОрганизаций.Сотрудник ЕСТЬ NULL
{ГДЕ
    РаботникиОрганизаций.Организация КАК Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение}

СГРУППИРОВАТЬ ПО
    РаботникиОрганизаций.Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации,
    РаботникиОрганизаций.Сотрудник.Физлицо,
    Календарь.ДатаКалендаря,
    РаботникиОрганизаций.ДатаИнвалидности

УПОРЯДОЧИТЬ ПО
    Организация,
    Подразделение,
    ФизЛицо,
    Буква
ИТОГИ
    СУММА(Средняя),
    СУММА(Результат)
ПО
    ОБЩИЕ,
    Организация,
    Подразделение ИЕРАРХИЯ КАК Подразделение,
    ФизЛицо
{ИТОГИ ПО
    Организация,
    Подразделение,
    ФизЛицо,
    Буква}


ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РаботникиОрганизаций.Организация КАК Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение,
    РаботникиОрганизаций.Сотрудник.Физлицо КАК ФизЛицо,
    Календарь.ДатаКалендаря КАК Буква,
    ВЫБОР
        КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДеньИнвалидности
            ТОГДА РаботникиОрганизаций.Учитывать
        ИНАЧЕ ВЫБОР
                КОГДА РаботникиОрганизаций.ДеньИнвалидности = NULL
                    ТОГДА РаботникиОрганизаций.Учитывать
            КОНЕЦ
    КОНЕЦ КАК Результат,
    ВЫБОР
        КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДеньИнвалидности
            ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
        ИНАЧЕ ВЫБОР
                КОГДА РаботникиОрганизаций.ДеньИнвалидности = NULL
                    ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
            КОНЕЦ
    КОНЕЦ КАК Средняя
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РаботникиПериод.Организация КАК Организация,
            РаботникиПериод.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
            РаботникиПериод.Сотрудник КАК Сотрудник,
            1 КАК Учитывать,
            РаботникиПериод.Начало КАК Начало,
            ВЫБОР
                КОГДА РаботникиПериод.Конец ЕСТЬ NULL
                        ИЛИ РаботникиПериод.Конец > &парамКонец
                    ТОГДА &парамКонец
                ИНАЧЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(РаботникиПериод.Конец, ДЕНЬ), ДЕНЬ, -1), ДЕНЬ)
            КОНЕЦ КАК Конец,
            РаботникиПериод.ДеньИнвалидности КАК ДеньИнвалидности
        ИЗ
            (ВЫБРАТЬ
                РаботникиНачало.Организация КАК Организация,
                РаботникиНачало.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                РаботникиНачало.Сотрудник КАК Сотрудник,
                РаботникиНачало.Начало КАК Начало,
                МИНИМУМ(ВЫБОР
                        КОГДА НЕ Состояния.Период ЕСТЬ NULL
                            ТОГДА Состояния.Период
                        ИНАЧЕ Работники.Период
                    КОНЕЦ) КАК Конец,
                Инвалидность.ДеньИнвалидности КАК ДеньИнвалидности
            ИЗ
                (ВЫБРАТЬ
                    Работники.Организация КАК Организация,
                    Работники.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                    Работники.Сотрудник КАК Сотрудник,
                    &парамНачало КАК Начало
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК Работники
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&парамНачало, ) КАК Состояния
                        ПО Работники.Организация = Состояния.Организация
                            И Работники.Сотрудник = Состояния.Сотрудник
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И (Состояния.Состояние ЕСТЬ NULL
                            ИЛИ Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                                И Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                    И Работники.Сотрудник В(&парамФизЛицо)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Работники.Организация,
                    Работники.ПодразделениеОрганизации,
                    Работники.Сотрудник,
                    Работники.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций КАК Работники
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И Работники.Период >= &парамНачало
                    И Работники.Период <= &парамКонец
                    И Работники.Сотрудник В(&парамФизЛицо)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Работники.Организация,
                    Работники.ПодразделениеОрганизации,
                    Работники.Сотрудник,
                    Состояния.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК Работники
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&парамНачало, ) КАК СостоянияНачало
                        ПО Работники.Организация = СостоянияНачало.Организация
                            И Работники.Сотрудник = СостоянияНачало.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                            Состояния.Сотрудник КАК Сотрудник,
                            Состояния.Период КАК Период,
                            МАКСИМУМ(СостоянияДо.Период) КАК ПериодДо
                        ИЗ
                            РегистрСведений.СостояниеРаботниковОрганизаций КАК Состояния
                                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостоянияДо
                                ПО (СостоянияДо.Период < Состояния.Период)
                                    И Состояния.Сотрудник = СостоянияДо.Сотрудник
                        ГДЕ
                            Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
                            И Состояния.Период >= &парамНачало
                            И Состояния.Период <= &парамКонец
                        
                        СГРУППИРОВАТЬ ПО
                            Состояния.Сотрудник,
                            Состояния.Период) КАК Состояния
                        ПО Работники.Сотрудник = Состояния.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостоянияДо
                        ПО (СостоянияДо.Сотрудник = Состояния.Сотрудник)
                            И (СостоянияДо.Период = Состояния.ПериодДо)
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И (СостоянияДо.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                            ИЛИ СостоянияДо.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                    И НЕ Состояния.Период ЕСТЬ NULL
                    И Состояния.Период >= &парамНачало
                    И Работники.Сотрудник В(&парамФизЛицо)) КАК РаботникиНачало
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
                    ПО РаботникиНачало.Сотрудник = Работники.Сотрудник
                        И (Работники.Сотрудник.ВидЗанятости В (&парамМестоРаботы))
                        И РаботникиНачало.Начало < Работники.Период
                        И (Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                            ИЛИ Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Перемещение))
                        И (Работники.Сотрудник В (&парамФизЛицо))
                    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        Состояния.Сотрудник КАК Сотрудник,
                        МИНИМУМ(Состояния.Период) КАК Период
                    ИЗ
                        РегистрСведений.СостояниеРаботниковОрганизаций КАК Состояния
                    ГДЕ
                        (Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                                ИЛИ Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                        И Состояния.Период >= &парамНачало
                        И Состояния.Период <= &парамКонец
                    
                    СГРУППИРОВАТЬ ПО
                        Состояния.Сотрудник) КАК Состояния
                    ПО РаботникиНачало.Сотрудник = Состояния.Сотрудник
                        И РаботникиНачало.Начало < Состояния.Период
                    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        СведенияОбИнвалидностиФизлиц.Физлицо КАК Физлицо,
                        ЕСТЬNULL(ДЕНЬ(СведенияОбИнвалидностиФизлиц.Период), 0) КАК ДеньИнвалидности
                    ИЗ
                        РегистрСведений.СведенияОбИнвалидностиФизлиц КАК СведенияОбИнвалидностиФизлиц
                    ГДЕ
                        СведенияОбИнвалидностиФизлиц.Физлицо В(&парамТолькоФизЛица)
                        И СведенияОбИнвалидностиФизлиц.Период МЕЖДУ &парамНачало И &парамКонец
                    
                    СГРУППИРОВАТЬ ПО
                        СведенияОбИнвалидностиФизлиц.Физлицо,
                        ЕСТЬNULL(ДЕНЬ(СведенияОбИнвалидностиФизлиц.Период), 0)) КАК Инвалидность
                    ПО РаботникиНачало.Сотрудник.Физлицо = Инвалидность.Физлицо
            
            СГРУППИРОВАТЬ ПО
                РаботникиНачало.Организация,
                РаботникиНачало.ПодразделениеОрганизации,
                РаботникиНачало.Сотрудник,
                РаботникиНачало.Начало,
                Инвалидность.ДеньИнвалидности) КАК РаботникиПериод
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            Работники.Организация,
            Работники.ПодразделениеОрганизации,
            Работники.Сотрудник,
            1,
            ВЫБОР
                КОГДА Работники.ДатаНачала < &парамНачало
                    ТОГДА &парамНачало
                ИНАЧЕ Работники.ДатаНачала
            КОНЕЦ,
            ВЫБОР
                КОГДА Работники.ДатаОкончания > &парамКонец
                    ТОГДА &парамКонец
                ИНАЧЕ Работники.ДатаОкончания
            КОНЕЦ,
            NULL
        ИЗ
            Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК Работники
        ГДЕ
            Работники.Проведен
            И Работники.Сотрудник.ОсновноеНазначение = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
            И Работники.Сотрудник В(&парамФизЛицо)) КАК РаботникиОрганизаций
        ПО (Календарь.ДатаКалендаря МЕЖДУ РаботникиОрганизаций.Начало И РаботникиОрганизаций.Конец)
ГДЕ
    Календарь.ДатаКалендаря МЕЖДУ &парамНачало И &парамКонец
    И НЕ РаботникиОрганизаций.Сотрудник ЕСТЬ NULL
{ГДЕ
    РаботникиОрганизаций.Организация КАК Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение}

СГРУППИРОВАТЬ ПО
    РаботникиОрганизаций.Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации,
    РаботникиОрганизаций.Сотрудник.Физлицо,
    Календарь.ДатаКалендаря,
    ВЫБОР
        КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДеньИнвалидности
            ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
        ИНАЧЕ ВЫБОР
                КОГДА РаботникиОрганизаций.ДеньИнвалидности = NULL
                    ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
            КОНЕЦ
    КОНЕЦ,
    ВЫБОР
        КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДеньИнвалидности
            ТОГДА РаботникиОрганизаций.Учитывать
        ИНАЧЕ ВЫБОР
                КОГДА РаботникиОрганизаций.ДеньИнвалидности = NULL
                    ТОГДА РаботникиОрганизаций.Учитывать
            КОНЕЦ
    КОНЕЦ

УПОРЯДОЧИТЬ ПО
    Организация,
    Подразделение,
    ФизЛицо,
    Буква
ИТОГИ
    СУММА(Результат),
    СУММА(Средняя)
ПО
    ОБЩИЕ,
    Организация,
    Подразделение ИЕРАРХИЯ КАК Подразделение,
    ФизЛицо
{ИТОГИ ПО
    Организация,
    Подразделение,
    ФизЛицо,
    Буква}




Выводит всех. но если во вложенно мзапросе Инвалидность нету записи то тогда не считает Средняя и Результат. Как если вложенно запросе нету записи тогда взять "1"?

Получилось :-)

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    РаботникиОрганизаций.Организация КАК Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение,
    РаботникиОрганизаций.Сотрудник.Физлицо КАК ФизЛицо,
    Календарь.ДатаКалендаря КАК Буква,
    ВЫБОР
        КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДеньИнвалидности
            ТОГДА РаботникиОрганизаций.Учитывать
        ИНАЧЕ ВЫБОР
                КОГДА РаботникиОрганизаций.ДеньИнвалидности ЕСТЬ NULL
                    ТОГДА РаботникиОрганизаций.Учитывать
            КОНЕЦ
    КОНЕЦ КАК Результат,
    ВЫБОР
        КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДеньИнвалидности
            ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
        ИНАЧЕ ВЫБОР
                КОГДА РаботникиОрганизаций.ДеньИнвалидности ЕСТЬ NULL
                    ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
            КОНЕЦ
    КОНЕЦ КАК Средняя
ИЗ
    РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК Календарь
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            РаботникиПериод.Организация КАК Организация,
            РаботникиПериод.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
            РаботникиПериод.Сотрудник КАК Сотрудник,
            1 КАК Учитывать,
            РаботникиПериод.Начало КАК Начало,
            ВЫБОР
                КОГДА РаботникиПериод.Конец ЕСТЬ NULL
                        ИЛИ РаботникиПериод.Конец > &парамКонец
                    ТОГДА &парамКонец
                ИНАЧЕ НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(НАЧАЛОПЕРИОДА(РаботникиПериод.Конец, ДЕНЬ), ДЕНЬ, -1), ДЕНЬ)
            КОНЕЦ КАК Конец,
            РаботникиПериод.ДеньИнвалидности КАК ДеньИнвалидности
        ИЗ
            (ВЫБРАТЬ
                РаботникиНачало.Организация КАК Организация,
                РаботникиНачало.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                РаботникиНачало.Сотрудник КАК Сотрудник,
                РаботникиНачало.Начало КАК Начало,
                МИНИМУМ(ВЫБОР
                        КОГДА НЕ Состояния.Период ЕСТЬ NULL
                            ТОГДА Состояния.Период
                        ИНАЧЕ Работники.Период
                    КОНЕЦ) КАК Конец,
                Инвалидность.ДеньИнвалидности КАК ДеньИнвалидности
            ИЗ
                (ВЫБРАТЬ
                    Работники.Организация КАК Организация,
                    Работники.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
                    Работники.Сотрудник КАК Сотрудник,
                    &парамНачало КАК Начало
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК Работники
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&парамНачало, ) КАК Состояния
                        ПО Работники.Организация = Состояния.Организация
                            И Работники.Сотрудник = Состояния.Сотрудник
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И (Состояния.Состояние ЕСТЬ NULL
                            ИЛИ Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                                И Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                    И Работники.Сотрудник В(&парамФизЛицо)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Работники.Организация,
                    Работники.ПодразделениеОрганизации,
                    Работники.Сотрудник,
                    Работники.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций КАК Работники
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И Работники.Период >= &парамНачало
                    И Работники.Период <= &парамКонец
                    И Работники.Сотрудник В(&парамФизЛицо)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    Работники.Организация,
                    Работники.ПодразделениеОрганизации,
                    Работники.Сотрудник,
                    Состояния.Период
                ИЗ
                    РегистрСведений.РаботникиОрганизаций.СрезПоследних(&парамНачало, ) КАК Работники
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций.СрезПоследних(&парамНачало, ) КАК СостоянияНачало
                        ПО Работники.Организация = СостоянияНачало.Организация
                            И Работники.Сотрудник = СостоянияНачало.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                            Состояния.Сотрудник КАК Сотрудник,
                            Состояния.Период КАК Период,
                            МАКСИМУМ(СостоянияДо.Период) КАК ПериодДо
                        ИЗ
                            РегистрСведений.СостояниеРаботниковОрганизаций КАК Состояния
                                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостоянияДо
                                ПО (СостоянияДо.Период < Состояния.Период)
                                    И Состояния.Сотрудник = СостоянияДо.Сотрудник
                        ГДЕ
                            Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.Работает)
                            И Состояния.Период >= &парамНачало
                            И Состояния.Период <= &парамКонец
                        
                        СГРУППИРОВАТЬ ПО
                            Состояния.Сотрудник,
                            Состояния.Период) КАК Состояния
                        ПО Работники.Сотрудник = Состояния.Сотрудник
                        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостоянияДо
                        ПО (СостоянияДо.Сотрудник = Состояния.Сотрудник)
                            И (СостоянияДо.Период = Состояния.ПериодДо)
                ГДЕ
                    Работники.ПричинаИзмененияСостояния <> ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                    И Работники.Сотрудник.ВидЗанятости В(&парамМестоРаботы)
                    И (СостоянияДо.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                            ИЛИ СостоянияДо.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                    И НЕ Состояния.Период ЕСТЬ NULL
                    И Состояния.Период >= &парамНачало
                    И Работники.Сотрудник В(&парамФизЛицо)) КАК РаботникиНачало
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РаботникиОрганизаций КАК Работники
                    ПО РаботникиНачало.Сотрудник = Работники.Сотрудник
                        И (Работники.Сотрудник.ВидЗанятости В (&парамМестоРаботы))
                        И РаботникиНачало.Начало < Работники.Период
                        И (Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Увольнение)
                            ИЛИ Работники.ПричинаИзмененияСостояния = ЗНАЧЕНИЕ(Перечисление.ПричиныИзмененияСостояния.Перемещение))
                        И (Работники.Сотрудник В (&парамФизЛицо))
                    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        Состояния.Сотрудник КАК Сотрудник,
                        МИНИМУМ(Состояния.Период) КАК Период
                    ИЗ
                        РегистрСведений.СостояниеРаботниковОрганизаций КАК Состояния
                    ГДЕ
                        (Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоБеременностиИРодам)
                                ИЛИ Состояния.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияРаботникаОрганизации.ОтпускПоУходуЗаРебенком))
                        И Состояния.Период >= &парамНачало
                        И Состояния.Период <= &парамКонец
                    
                    СГРУППИРОВАТЬ ПО
                        Состояния.Сотрудник) КАК Состояния
                    ПО РаботникиНачало.Сотрудник = Состояния.Сотрудник
                        И РаботникиНачало.Начало < Состояния.Период
                    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        СведенияОбИнвалидностиФизлиц.Физлицо КАК Физлицо,
                        ЕСТЬNULL(ДЕНЬ(СведенияОбИнвалидностиФизлиц.Период), 0) КАК ДеньИнвалидности
                    ИЗ
                        РегистрСведений.СведенияОбИнвалидностиФизлиц КАК СведенияОбИнвалидностиФизлиц
                    ГДЕ
                        СведенияОбИнвалидностиФизлиц.Физлицо В(&парамТолькоФизЛица)
                        И СведенияОбИнвалидностиФизлиц.Период МЕЖДУ &парамНачало И &парамКонец
                    
                    СГРУППИРОВАТЬ ПО
                        СведенияОбИнвалидностиФизлиц.Физлицо,
                        ЕСТЬNULL(ДЕНЬ(СведенияОбИнвалидностиФизлиц.Период), 0)) КАК Инвалидность
                    ПО РаботникиНачало.Сотрудник.Физлицо = Инвалидность.Физлицо
            
            СГРУППИРОВАТЬ ПО
                РаботникиНачало.Организация,
                РаботникиНачало.ПодразделениеОрганизации,
                РаботникиНачало.Сотрудник,
                РаботникиНачало.Начало,
                Инвалидность.ДеньИнвалидности) КАК РаботникиПериод
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            Работники.Организация,
            Работники.ПодразделениеОрганизации,
            Работники.Сотрудник,
            1,
            ВЫБОР
                КОГДА Работники.ДатаНачала < &парамНачало
                    ТОГДА &парамНачало
                ИНАЧЕ Работники.ДатаНачала
            КОНЕЦ,
            ВЫБОР
                КОГДА Работники.ДатаОкончания > &парамКонец
                    ТОГДА &парамКонец
                ИНАЧЕ Работники.ДатаОкончания
            КОНЕЦ,
            NULL
        ИЗ
            Документ.ДоговорНаВыполнениеРаботСФизЛицом КАК Работники
        ГДЕ
            Работники.Проведен
            И Работники.Сотрудник.ОсновноеНазначение = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
            И Работники.Сотрудник В(&парамФизЛицо)) КАК РаботникиОрганизаций
        ПО (Календарь.ДатаКалендаря МЕЖДУ РаботникиОрганизаций.Начало И РаботникиОрганизаций.Конец)
ГДЕ
    Календарь.ДатаКалендаря МЕЖДУ &парамНачало И &парамКонец
    И НЕ РаботникиОрганизаций.Сотрудник ЕСТЬ NULL
{ГДЕ
    РаботникиОрганизаций.Организация КАК Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации КАК Подразделение}

СГРУППИРОВАТЬ ПО
    РаботникиОрганизаций.Организация,
    РаботникиОрганизаций.ПодразделениеОрганизации,
    РаботникиОрганизаций.Сотрудник.Физлицо,
    Календарь.ДатаКалендаря,
    ВЫБОР
        КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДеньИнвалидности
            ТОГДА РаботникиОрганизаций.Учитывать
        ИНАЧЕ ВЫБОР
                КОГДА РаботникиОрганизаций.ДеньИнвалидности ЕСТЬ NULL
                    ТОГДА РаботникиОрганизаций.Учитывать
            КОНЕЦ
    КОНЕЦ,
    ВЫБОР
        КОГДА ДЕНЬ(Календарь.ДатаКалендаря) > РаботникиОрганизаций.ДеньИнвалидности
            ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
        ИНАЧЕ ВЫБОР
                КОГДА РаботникиОрганизаций.ДеньИнвалидности ЕСТЬ NULL
                    ТОГДА РаботникиОрганизаций.Учитывать / &парамКоличествоДней
            КОНЕЦ
    КОНЕЦ

УПОРЯДОЧИТЬ ПО
    Организация,
    Подразделение,
    ФизЛицо,
    Буква
ИТОГИ
    СУММА(Результат),
    СУММА(Средняя)
ПО
    ОБЩИЕ,
    Организация,
    Подразделение ИЕРАРХИЯ КАК Подразделение,
    ФизЛицо
{ИТОГИ ПО
    Организация,
    Подразделение,
    ФизЛицо,
    Буква}

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 16.04.24, 19:43
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!