Динамика персонала_СКД

1. user591603_neterpenie 21.07.17 18:44 Сейчас в теме
Всем привет, пишу отчет по динамике персонала за период в самописной базе.

Отчет берется из справочника, в котором есть Подразделение, ФИО (Наименование), ДатаПриема, ДатаУвольнения.

Хочу, чтобы в отчете отражалась численность персонала на конец периода+прием и увольнение за период.

Пишу запрос в СКД:

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

СГРУППИРОВАТЬ ПО
	СписокСотрудников.Подразделение,
	СписокСотрудников.Наименование,
	СписокСотрудников.ЮридическоеЛицо,
	СписокСотрудников.Должность,
	СписокСотрудников.Статус,
	СписокСотрудников.ДатаПриема,
	СписокСотрудников.ДатаУвольнения,
	СписокСотрудников.ВидЗанятости
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	КОЛИЧЕСТВО(СписокСотрудников.Наименование) КАК Уволено,
	СписокСотрудников.ЮридическоеЛицо,
	СписокСотрудников.Должность,
	СписокСотрудников.Подразделение,
	СписокСотрудников.Статус,
	СписокСотрудников.ДатаПриема,
	СписокСотрудников.ДатаУвольнения,
	СписокСотрудников.ВидЗанятости
ПОМЕСТИТЬ ТЗ_Увольнение
ИЗ
	Справочник.СписокСотрудников КАК СписокСотрудников
ГДЕ
	СписокСотрудников.ДатаУвольнения МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
	СписокСотрудников.Подразделение,
	СписокСотрудников.Наименование,
	СписокСотрудников.ЮридическоеЛицо,
	СписокСотрудников.Должность,
	СписокСотрудников.Статус,
	СписокСотрудников.ДатаПриема,
	СписокСотрудников.ДатаУвольнения,
	СписокСотрудников.ВидЗанятости
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СписокСотрудников.Наименование КАК ФИО,
	КОЛИЧЕСТВО(СписокСотрудников.Наименование) КАК ЧисленностьНаКонецПериода,
	КОЛИЧЕСТВО(ТЗ_Прием.Принято) КАК ПринятоЗаПериод,
	КОЛИЧЕСТВО(ТЗ_Увольнение.Уволено) КАК УволеноЗаПериод,
	КОЛИЧЕСТВО(СписокСотрудников.Наименование) + КОЛИЧЕСТВО(ТЗ_Увольнение.Уволено) - КОЛИЧЕСТВО(ТЗ_Прием.Принято) КАК ЧисленностьНаНачалоПериода,
	СписокСотрудников.ЮридическоеЛицо,
	СписокСотрудников.Должность,
	СписокСотрудников.Подразделение,
	СписокСотрудников.Статус,
	СписокСотрудников.ДатаПриема,
	СписокСотрудников.ДатаУвольнения,
	СписокСотрудников.ВидЗанятости,
	ТЗ_Прием.Подразделение КАК Подразделение1,
	ТЗ_Увольнение.Подразделение КАК Подразделение2
ИЗ
	Справочник.СписокСотрудников КАК СписокСотрудников
		ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Прием КАК ТЗ_Прием
		ПО СписокСотрудников.Подразделение = ТЗ_Прием.Подразделение
		ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Увольнение КАК ТЗ_Увольнение
		ПО СписокСотрудников.Подразделение = ТЗ_Увольнение.Подразделение
ГДЕ
	(СписокСотрудников.ДатаУвольнения > &КонецПериода
			ИЛИ СписокСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))

СГРУППИРОВАТЬ ПО
	СписокСотрудников.Подразделение,
	СписокСотрудников.ЮридическоеЛицо,
	СписокСотрудников.Должность,
	СписокСотрудников.Статус,
	СписокСотрудников.ДатаПриема,
	СписокСотрудников.ДатаУвольнения,
	СписокСотрудников.ВидЗанятости,
	СписокСотрудников.Наименование,
	ТЗ_Прием.Подразделение,
	ТЗ_Увольнение.Подразделение
Показать


В итоге какая-то ахинея выводится.)

Если отдельно прогнать три запроса - все ок.

Что я делаю не так?)
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. alxarz 31 21.07.17 21:21 Сейчас в теме
(1)
В итоге какая-то ахинея выводится.)
Если отдельно прогнать три запроса - все ок.

может тогда проще объединить три таблицы и сгруппировать?
2. zoikins 21.07.17 20:16 Сейчас в теме
ПО СписокСотрудников.Подразделение = ТЗ_Прием.Подразделение
ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Увольнение КАК ТЗ_Увольнение
ПО СписокСотрудников.Подразделение = ТЗ_Увольнение.Подразделение

нужно еще, наверное , и по датам увольнения и приема соединять , в первых двух таблицах наверное с определенным значением подразделение есть строки с разными датой увольнения и приема - поэтому и мешанина
4. user591603_neterpenie 24.07.17 11:16 Сейчас в теме
(2)
нужно еще, наверное , и по датам увольнения и приема соединять , в первых двух таблицах наверное с определенным значением подразделение есть строки с разными датой увольнения и приема - поэтому и мешанина


Несомненно есть.)

(3)
может тогда проще объединить три таблицы и сгруппировать?


мм, а тот факт, что по сути все эти таблицы - это разные варианты представления данных из одной и той-же таблицы - не помешает?

Мне же нужно получить в отчете в итоге 4 ресурса:

1 - ЧисленностьНаНачало - где условием будет
ГДЕ
	(СписокСотрудников.ДатаУвольнения < &НачалоПериода
			ИЛИ СписокСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))


2 - ЧисленностьНаКонец - где условием будет
ГДЕ
	(СписокСотрудников.ДатаУвольнения > &КонецПериода
			ИЛИ СписокСотрудников.ДатаУвольнения = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0))


3 - ПринятоЗаПериод с условием
ГДЕ
	СписокСотрудников.ДатаПриема МЕЖДУ &НачалоПериода И &КонецПериода


4 - УволеноЗаПериод
ГДЕ
	СписокСотрудников.ДатаУвольнения МЕЖДУ &НачалоПериода И &КонецПериода


И для каждого из условий нужно считать

КОЛИЧЕСТВО(СписокСотрудников.Наименование)
.

А при объединении СКД оставляет мне только одно поле
КОЛИЧЕСТВО(СписокСотрудников.Наименование)
для ресурсов
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот