Всем привет, пишу отчет по динамике персонала за период в самописной базе.
Отчет берется из справочника, в котором есть Подразделение, ФИО (Наименование), ДатаПриема, ДатаУвольнения.
Хочу, чтобы в отчете отражалась численность персонала на конец периода+прием и увольнение за период.
Пишу запрос в СКД:
В итоге какая-то ахинея выводится.)
Если отдельно прогнать три запроса - все ок.
Что я делаю не так?)
Отчет берется из справочника, в котором есть Подразделение, ФИО (Наименование), ДатаПриема, ДатаУвольнения.
Хочу, чтобы в отчете отражалась численность персонала на конец периода+прием и увольнение за период.
Пишу запрос в СКД:
ВЫБРАТЬ
КОЛИЧЕСТВО(СписокСотрудников.Наименование) КАК Принято,
СписокСотрудников.ЮридическоеЛицо,
СписокСотрудников.Должность,
СписокСотрудников.Подразделение,
СписокСотрудников.Статус,
СписокСотрудников.ДатаПриема,
СписокСотрудников.ДатаУвольнения,
СписокСотрудников.ВидЗанятости
ПОМЕСТИТЬ ТЗ_Прием
ИЗ
Справочник.СписокСотрудников КАК СписокСотрудников
ГДЕ
СписокСотрудников.ДатаПриема МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
СписокСотрудников.Подразделение,
СписокСотрудников.Наименование,
СписокСотрудников.ЮридическоеЛицо,
СписокСотрудников.Должность,
СписокСотрудников.Статус,
СписокСотрудников.ДатаПриема,
СписокСотрудников.ДатаУвольнения,
СписокСотрудников.ВидЗанятости
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
КОЛИЧЕСТВО(СписокСотрудников.Наименование) КАК Уволено,
СписокСотрудников.ЮридическоеЛицо,
СписокСотрудников.Должность,
СписокСотрудников.Подразделение,
СписокСотрудников.Статус,
СписокСотрудников.ДатаПриема,
СписокСотрудников.ДатаУвольнения,
СписокСотрудников.ВидЗанятости
ПОМЕСТИТЬ ТЗ_Увольнение
ИЗ
Справочник.СписокСотрудников КАК СписокСотрудников
ГДЕ
СписокСотрудников.ДатаУвольнения МЕЖДУ &НачалоПериода И &КонецПериода
СГРУППИРОВАТЬ ПО
СписокСотрудников.Подразделение,
СписокСотрудников.Наименование,
СписокСотрудников.ЮридическоеЛицо,
СписокСотрудников.Должность,
СписокСотрудников.Статус,
СписокСотрудников.ДатаПриема,
СписокСотрудников.ДатаУвольнения,
СписокСотрудников.ВидЗанятости
;
//////////////////////////////////////////////////////////// ////////////////////
ВЫБРАТЬ
СписокСотрудников.Наименование КАК ФИО,
КОЛИЧЕСТВО(СписокСотрудников.Наименование) КАК ЧисленностьНаКонецПериода,
КОЛИЧЕСТВО(ТЗ_Прием.Принято) КАК ПринятоЗаПериод,
КОЛИЧЕСТВО(ТЗ_Увольнение.Уволено) КАК УволеноЗаПериод,
КОЛИЧЕСТВО(СписокСотрудников.Наименование) + КОЛИЧЕСТВО(ТЗ_Увольнение.Уволено) - КОЛИЧЕСТВО(ТЗ_Прием.Принято) КАК ЧисленностьНаНачалоПериода,
СписокСотрудников.ЮридическоеЛицо,
СписокСотрудников.Должность,
СписокСотрудников.Подразделение,
СписокСотрудников.Статус,
СписокСотрудников.ДатаПриема,
СписокСотрудников.ДатаУвольнения,
СписокСотрудников.ВидЗанятости,
ТЗ_Прием.Подразделение КАК Подразделение1,
ТЗ_Увольнение.Подразделение КАК Подразделение2
ИЗ
Справочник.СписокСотрудников КАК СписокСотрудников
ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Прием КАК ТЗ_Прием
ПО СписокСотрудников.Подразделение = ТЗ_Прием.Подразделение
ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Увольнение КАК ТЗ_Увольнение
ПО СписокСотрудников.Подразделение = ТЗ_Увольнение.Подразделение
ГДЕ
(СписокСотрудников.ДатаУвольнения > &КонецПериода
ИЛИ СписокСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
СГРУППИРОВАТЬ ПО
СписокСотрудников.Подразделение,
СписокСотрудников.ЮридическоеЛицо,
СписокСотрудников.Должность,
СписокСотрудников.Статус,
СписокСотрудников.ДатаПриема,
СписокСотрудников.ДатаУвольнения,
СписокСотрудников.ВидЗанятости,
СписокСотрудников.Наименование,
ТЗ_Прием.Подразделение,
ТЗ_Увольнение.Подразделение
ПоказатьВ итоге какая-то ахинея выводится.)
Если отдельно прогнать три запроса - все ок.
Что я делаю не так?)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
ПО СписокСотрудников.Подразделение = ТЗ_Прием.Подразделение
ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Увольнение КАК ТЗ_Увольнение
ПО СписокСотрудников.Подразделение = ТЗ_Увольнение.Подразделение
нужно еще, наверное , и по датам увольнения и приема соединять , в первых двух таблицах наверное с определенным значением подразделение есть строки с разными датой увольнения и приема - поэтому и мешанина
ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Увольнение КАК ТЗ_Увольнение
ПО СписокСотрудников.Подразделение = ТЗ_Увольнение.Подразделение
нужно еще, наверное , и по датам увольнения и приема соединять , в первых двух таблицах наверное с определенным значением подразделение есть строки с разными датой увольнения и приема - поэтому и мешанина
(2)
Несомненно есть.)
(3)
мм, а тот факт, что по сути все эти таблицы - это разные варианты представления данных из одной и той-же таблицы - не помешает?
Мне же нужно получить в отчете в итоге 4 ресурса:
1 - ЧисленностьНаНачало - где условием будет
2 - ЧисленностьНаКонец - где условием будет
3 - ПринятоЗаПериод с условием
4 - УволеноЗаПериод
И для каждого из условий нужно считать
.
А при объединении СКД оставляет мне только одно поле
для ресурсов
нужно еще, наверное , и по датам увольнения и приема соединять , в первых двух таблицах наверное с определенным значением подразделение есть строки с разными датой увольнения и приема - поэтому и мешанина
Несомненно есть.)
(3)
может тогда проще объединить три таблицы и сгруппировать?
мм, а тот факт, что по сути все эти таблицы - это разные варианты представления данных из одной и той-же таблицы - не помешает?
Мне же нужно получить в отчете в итоге 4 ресурса:
1 - ЧисленностьНаНачало - где условием будет
ГДЕ
(СписокСотрудников.ДатаУвольнения < &НачалоПериода
ИЛИ СписокСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
2 - ЧисленностьНаКонец - где условием будет
ГДЕ
(СписокСотрудников.ДатаУвольнения > &КонецПериода
ИЛИ СписокСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))
3 - ПринятоЗаПериод с условием
ГДЕ
СписокСотрудников.ДатаПриема МЕЖДУ &НачалоПериода И &КонецПериода
4 - УволеноЗаПериод
ГДЕ
СписокСотрудников.ДатаУвольнения МЕЖДУ &НачалоПериода И &КонецПериода
И для каждого из условий нужно считать
КОЛИЧЕСТВО(СписокСотрудников.Наименование)
А при объединении СКД оставляет мне только одно поле
КОЛИЧЕСТВО(СписокСотрудников.Наименование)
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот