Как получить список работающих сотрудников в ЗУП?

1. tiger12 1 14.12.21 14:05 Сейчас в теме
ЗУП 3.1

Пытаюсь получить работающих сотрудников.
Подбираю в ВТ уволенных сотрудников, а потом соединяю по Сотр <> Сотр,
выходит шляпа.

Как правильно, подскажите, пожалуйста

ВЫБРАТЬ ПЕРВЫЕ 10
	КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
	КадроваяИсторияСотрудниковИнтервальный.ВидСобытия КАК ВидСобытия
ПОМЕСТИТЬ ВТ_Уволенные
ИЗ
	РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
ГДЕ
	КадроваяИсторияСотрудниковИнтервальный.ВидСобытия = &Увольнение
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник
ИЗ
	РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Уволенные КАК ВТ_Уволенные
		ПО (КадроваяИсторияСотрудниковИнтервальный.Сотрудник <> ВТ_Уволенные.Сотрудник)
Показать
По теме из базы знаний
Найденные решения
2. homer_ 78 14.12.21 14:30 Сейчас в теме
ВЫБРАТЬ ПЕРВЫЕ 10
КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
КадроваяИсторияСотрудниковИнтервальный.ВидСобытия КАК ВидСобытия
ПОМЕСТИТЬ ВТ_Уволенные
ИЗ
РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
ГДЕ
КадроваяИсторияСотрудниковИнтервальный.ВидСобытия = &Увольнение
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник
ИЗ
РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
Где
НЕ КадроваяИсторияСотрудниковИнтервальный.Сотрудник В (Выбрать Таб.Сотрудник из ВТ_Уволенные КАК Таб)
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. homer_ 78 14.12.21 14:30 Сейчас в теме
ВЫБРАТЬ ПЕРВЫЕ 10
КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник,
КадроваяИсторияСотрудниковИнтервальный.ВидСобытия КАК ВидСобытия
ПОМЕСТИТЬ ВТ_Уволенные
ИЗ
РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
ГДЕ
КадроваяИсторияСотрудниковИнтервальный.ВидСобытия = &Увольнение
;

////////////////////////////////////////////////////////////­­////////////////////
ВЫБРАТЬ
КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник
ИЗ
РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
Где
НЕ КадроваяИсторияСотрудниковИнтервальный.Сотрудник В (Выбрать Таб.Сотрудник из ВТ_Уволенные КАК Таб)
3. tiger12 1 14.12.21 14:34 Сейчас в теме
(2) Очень круто, спасибо!
4. nomad_irk 76 14.12.21 14:41 Сейчас в теме
(3) достаточно сделать:

ВЫБРАТЬ
КадроваяИсторияСотрудниковИнтервальный.Сотрудник КАК Сотрудник
ИЗ
РегистрСведений.КадроваяИсторияСотрудниковИнтервальный КАК КадроваяИсторияСотрудниковИнтервальный
Где
НЕ КадроваяИсторияСотрудниковИнтервальный.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
5. tiger12 1 14.12.21 14:44 Сейчас в теме
(4) так там же много строк по одному сотруднику, так не выйдет
6. nomad_irk 76 14.12.21 14:45 Сейчас в теме
(5)в варианте (2) будет тоже самое

Если вам нужна последняя запись, то стройте запрос к РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних()
7. tiger12 1 14.12.21 15:35 Сейчас в теме
да нормально показывает, все по одной записи. пока так оставлю
8. Vladimir-R 167 14.12.21 16:00 Сейчас в теме
//Пример функция для получения актуальных работающих сотрудников за период
//Возвращается таблица значений

Функция ПроверитьНаличиеПодработки(Сотрудник, ДатаНазначения)
	
	СтруктураДанных = Новый Структура();
	
	СтруктураДанных.Вставить("ДатаНачала",);
	СтруктураДанных.Вставить("ДатаОкончания",);
	СтруктураДанных.Вставить("РазмерОклада",);
	
	ПараметрыПолучения = ПолучитьПараметры();
	ПараметрыПолучения.Организация = ЭтотОбъект.Организация;
	
	//Если ЗначениеЗаполнено(Подразделение) Тогда
	//	ПараметрыПолучения.Подразделение = Подразделение;	
	//КонецЕсли;
	
	//Если ВключаяУволенныхНаНачалоПериода Тогда
	//	ПараметрыПолучения.ВключаяУволенныхНаНачалоПериода = Истина;
	//КонецЕсли;
	
	ПараметрыПолучения.НачалоПериода = НачалоМесяца(ДатаНазначения);
	ПараметрыПолучения.ОкончаниеПериода = КонецМесяца(ДатаНазначения);
	ПараметрыПолучения.ПодработкиРаботниковПоТрудовымДоговорам = Истина;
	ПараметрыПолучения.РаботникиПоДоговорамГПХ = Ложь;
	
	// ОТБОР ПО ВИДУ ЗАНЯТОСТИ РАБОТАЕТ ТОЛЬКО НАЧИНАЯ С РЕДАКЦИИ 3.1.7
	//ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(
	//			ПараметрыПолучения.Отборы, "ВидЗанятости", "=", Перечисления.ВидыЗанятости.Подработка);
				
	ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(
				ПараметрыПолучения.Отборы, "ФизическоеЛицо", "=", Сотрудник.ФизическоеЛицо);

	ПараметрыПолучения.КадровыеДанные = "Сотрудник,ФизическоеЛицо,Подразделение,Должность,ДолжностьПоШтатномуРасписанию,КоличествоСтавок,ВидЗанятости,ДатаПриема,ДатаУвольнения,ГрафикРаботы";
	
	ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолучения);
	
	Возврат ТаблицаСотрудников;
	
КонецФункции


&НаСервере
Функция ПолучитьПараметры()
	Возврат КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛи­ц();	
КонецФункции
Показать


используйте универсальные функции https://infostart.ru/1c/articles/942569/
Date; VAAngelov; tindir; laperuz; tiger12; +5 Ответить
9. puzo50 15.12.21 08:55 Сейчас в теме
а потом захочется на другую дату сформировать отчёт, тогда надо уже будет сравнивать, что дата увольнения не заполнена или что она больше параметр.дата
10. tiger12 1 15.12.21 15:27 Сейчас в теме
Приходится переделать,
потому что нашлась такая шляпа:

нужно видеть сотрудника, у которого были начисления за прошлый месяц, даже если уволен в прошлом месяц (логично).

И тогда спасает фильтр по периоду увольнения:

ГДЕ
	КадроваяИсторияСотрудниковИнтервальный.ВидСобытия = &Увольнение
	И КадроваяИсторияСотрудниковИнтервальный.ПериодЗаписи < &НачалоПрошлогоМесяца
Оставьте свое сообщение

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