Вывести подразделения, у которых нет сотрудников в декретном отпуске

1. user1816391 06.02.23 14:26 Сейчас в теме
Здравствуйте, есть вот такой запрос:

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

СГРУППИРОВАТЬ ПО
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение
Показать


Как можно вывести подразделения, у которых 0 сотрудников с декретном отпуске?
Заранее спасибо
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Prikum 3 06.02.23 14:49 Сейчас в теме
(1)Может быть использовать регистр состояний сотрудников?
2. user1847230 06.02.23 14:36 Сейчас в теме
Возможно нужно изменить связь
4. user1816391 06.02.23 14:51 Сейчас в теме
5. Prikum 3 06.02.23 14:53 Сейчас в теме
(4)поможет правильно составить запрос!
1. Получить всех сотрудников которые находятся в декрете
2. Получить подразделения сотрудников
3. Вывести все подразделения которые не входят в список из п.2
4. Бинго
6. user1816391 06.02.23 14:56 Сейчас в теме
7. user1816391 06.02.23 15:02 Сейчас в теме
(5) а разве в состоянии сотрудников есть подразделение?
8. Prikum 3 06.02.23 15:03 Сейчас в теме
(7)мне запрос полностью написать? Или какое то слово в п.2 непонятно?
9. user1816391 06.02.23 15:04 Сейчас в теме
(8) через какой регистр мы должны получать подразделение?
11. Prikum 3 06.02.23 15:07 Сейчас в теме
(9)оно есть в "Кадровая история"
10. user1816391 06.02.23 15:04 Сейчас в теме
(8) был бы благодарен, если бы показали, как должен выглядеть этот запрос
12. user1816391 06.02.23 15:38 Сейчас в теме
(11) Сделал вот так, но не знаю, как вывести все подразделения, которые не входят

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

СГРУППИРОВАТЬ ПО
	СостоянияСотрудниковСрезПоследних.Сотрудник,
	СостоянияСотрудниковСрезПоследних.Состояние,
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение
;
Показать
13. Prikum 3 06.02.23 15:45 Сейчас в теме
(12)неужели так трудно посмотреть какие состояния есть в системе? Согласно этого запроса будут выведены и сотрудники которые находятся в отпуске, в командировке и т.д.
14. user1816391 06.02.23 15:46 Сейчас в теме
(13) добавил "И СостоянияСотрудниковСрезПоследних.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтпускПоУходуЗаРебенком)"
16. Prikum 3 06.02.23 15:49 Сейчас в теме
(14)Отлично, надеюсь что все состояния получаем на определенную дату? Помещаем все в ВТ, таким образом 1 пункт, считаем выполненным
15. user1816391 06.02.23 15:48 Сейчас в теме
(13) у нас в системе только Отпуск по уходу за ребенком, поэтому и не добавил отбор. Но вопрос в том, как ко всему этому дальше вывести подразделения, которые не имею сотрудников в отпуске
17. Prikum 3 06.02.23 15:50 Сейчас в теме
(15)теперь получаем подразделения сотрудников из регистра "Кадровая история" и связываем с нашей ВТ
18. user1816391 06.02.23 15:55 Сейчас в теме
(17) а по какому принципу связываем?
19. Prikum 3 06.02.23 15:56 Сейчас в теме
(18)а какие варианты есть?
20. user1816391 06.02.23 15:57 Сейчас в теме
21. Prikum 3 06.02.23 15:58 Сейчас в теме
(20)Отлично, мы уже нашли связь, теперь осталось написать часть нашего запроса и выложить здесь.
22. user1816391 06.02.23 16:00 Сейчас в теме
(21)
ВЫБРАТЬ
	ВТ_Сотруд.Сотрудник КАК Сотрудник,
	КадроваяИсторияСотрудников.Подразделение КАК Подразделение1
ИЗ
	ВТ_Сотруд КАК ВТ_Сотруд
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
		ПО (КадроваяИсторияСотрудников.Сотрудник=ВТ_Сотруд.Сотрудник)

но тут явно соединение иначе нужно делать, т.к оно выдаёт пустые подразделения
23. Prikum 3 06.02.23 16:02 Сейчас в теме
(22)я просил выложить весь текст запроса, иначе мы будем бесконечно долго блуждать в поисках истины.
24. user1816391 06.02.23 16:05 Сейчас в теме
(23) Так работает

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

СГРУППИРОВАТЬ ПО
	СостоянияСотрудниковСрезПоследних.Сотрудник,
	СостоянияСотрудниковСрезПоследних.Состояние,
	КадроваяИсторияСотрудниковСрезПоследних.Подразделение
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	КОЛИЧЕСТВО(ВТ_Сотруд.Сотрудник) КАК Сотрудник,
	КадроваяИсторияСотрудников.Подразделение КАК Подразделение
ИЗ
	ВТ_Сотруд КАК ВТ_Сотруд
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников КАК КадроваяИсторияСотрудников
		ПО (ВТ_Сотруд.Сотрудник = КадроваяИсторияСотрудников.Сотрудник)

СГРУППИРОВАТЬ ПО
	КадроваяИсторияСотрудников.Подразделение
Показать
25. Prikum 3 06.02.23 16:08 Сейчас в теме
(24)Понятно, если работает, то тогда вопрос в чем?
26. user1816391 06.02.23 16:09 Сейчас в теме
(25) как вывести ещё подразделения, у которых ещё нет отпуска. Чтобы писало "0".
28. Prikum 3 06.02.23 16:18 Сейчас в теме
(26)Написать нормальный запрос, в котором сначала выбираются все сотрудники которые находятся в декрете, потом получить подразделения для этих сотрудников, потом вывести подразделения не входящие в полученный выше список. Это по простому.
27. user1816391 06.02.23 16:12 Сейчас в теме
(26) Сейчас вот так, это те, у кого есть
Прикрепленные файлы:
29. user1816391 06.02.23 16:39 Сейчас в теме
Оставьте свое сообщение

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