Список физ. лиц с датой приема и увольнения

1. olgita_n 20.08.18 14:38 Сейчас в теме
Добрый день! Мне в самописную базу необходимо загрузить спр. Физ. лица из ЗУП 3.1. Причем нужно взять физ.лица с датой приема и увольнения. В ЗУП не работала, поэтому возникли трудности. Знаю, что физ. лицо одно, а сотрудников по нему может быть много и дата приема и увольнения есть у сотрудника, а не физ.лица.
Т.е. мне нужно взять последнего сотрудника по физ.лицу. Причем выгружать выгружать текущих сотрудников и уволенных позже 1.01.2017г.

До этого находила только работающих физ лиц таким образом:

ПараметрыПолученияСотрудников = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛи­ц();
ПараметрыПолученияСотрудников.КадровыеДанные = "ТекущийВидЗанятости, ДатаУвольнения";
ПараметрыПолученияСотрудников.Организация = Справочники.Организации.НайтиПоНаименованию("Орг");
//ПараметрыПолученияСотрудников.ОкончаниеПериода = ТекущаяДата();
Сотрудники = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолученияСотрудников);

Для каждого Строка из Сотрудники Цикл
ОснМестоРаботы = Перечисления.ВидыЗанятости.ОсновноеМестоРаботы;
Если Строка.ТекущийВидЗанятости = ОснМестоРаботы И (Строка.ДатаУвольнения = Дата(0001,01,01) ИЛИ Строка.ДатаУвольнения > ТекущаяДата()) Тогда
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ТолькоРазрешенные = Истина;
КадровыеДанные = "ТабельныйНомер, Фамилия, Имя, Отчество, ФИОПолные, Пол, ДатаРождения, ДатаПриема, ДатаУвольнения";
ДатаСрезаИнформации = ТекущаяДата();
КадровыеДанныеСотрудника = КадровыйУчет.КадровыеДанныеСотрудников(ТолькоРазрешенные, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Строка.Сотрудник),КадровыеДанные, ДатаСрезаИнформации);

Для Каждого Данные из КадровыеДанныеСотрудника Цикл

Сообщить(Данные.ТабельныйНомер);
Сообщить(Данные.ФИОПолные);

КонецЦикла;
КонецЕсли;
КонецЦикла;


Все корректно работает, т.к. у текущих сотрудников только одна строчка с приемом на работу.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. SlavaKron 20.08.18 17:30 Сейчас в теме
Кустарный запрос:
ВЫБРАТЬ
	Т1.ФизическоеЛицо КАК ФизическоеЛицо,
	Т1.Сотрудник КАК Сотрудник,
	Т2.Период КАК ДатаПриема,
	ВЫБОР
		КОГДА Т1.ВидСобытия = ЗНАЧЕНИЕ(Перечисление.ВидыКадровыхСобытий.Увольнение)
			ТОГДА Т1.Период
		ИНАЧЕ &ПустаяДата
	КОНЕЦ КАК ДатаУвольнения
ПОМЕСТИТЬ ДанныеПоСотрудникам
ИЗ
	РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(, ) КАК Т1
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КадроваяИсторияСотрудников.СрезПервых КАК Т2
		ПО (Т1.Сотрудник = Т2.Сотрудник)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДанныеПоСотрудникам.ФизическоеЛицо КАК ФизическоеЛицо,
	МАКСИМУМ(ДанныеПоСотрудникам.ДатаПриема) КАК ДатаПриема
ПОМЕСТИТЬ ПоследниеДатыПриема
ИЗ
	ДанныеПоСотрудникам КАК ДанныеПоСотрудникам

СГРУППИРОВАТЬ ПО
	ДанныеПоСотрудникам.ФизическоеЛицо
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ДанныеПоСотрудникам.ФизическоеЛицо КАК ФизическоеЛицо,
	ДанныеПоСотрудникам.Сотрудник КАК Сотрудник,
	ДанныеПоСотрудникам.ДатаПриема КАК ДатаПриема,
	ДанныеПоСотрудникам.ДатаУвольнения КАК ДатаУвольнения
ИЗ
	ПоследниеДатыПриема КАК ПоследниеДатыПриема
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДанныеПоСотрудникам КАК ДанныеПоСотрудникам
		ПО (ПоследниеДатыПриема.ФизическоеЛицо = ДанныеПоСотрудникам.ФизическоеЛицо)
			И (ПоследниеДатыПриема.ДатаПриема = ДанныеПоСотрудникам.ДатаПриема)
ГДЕ
	(ДанныеПоСотрудникам.ДатаУвольнения >= &ДатаНачала
			ИЛИ ДанныеПоСотрудникам.ДатаУвольнения = &ПустаяДата)
Показать
olgita_n; +1 Ответить
3. olgita_n 21.08.18 08:15 Сейчас в теме
(2) Спасибо, попробую. Хотела из общих модулей вытащить данные, т.к. коллегам на обучении по ЗУП не советовали брать информацию из регистров, а пользоваться общими модулями
4. azali 21.08.18 09:23 Сейчас в теме
(3)
А если попробовать изменить задачу ?

Формально вам нужно выбрать всех сотрудников , которые работали с 01.01.17 по текущую дату.
5. KlesAlex 3 22.08.18 10:15 Сейчас в теме
Попробуйте штатный механизм:

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


Только вместо
ЗначениеВМассиве(Сотрудник)
подставьте нужный вам массив. Массив можете запросом собрати преварительно с выгрузкой колонки.
olgita_n; +1 Ответить
6. olgita_n 22.08.18 10:24 Сейчас в теме
(5) Спасибо, тоже буду пробовать) В принципе сейчас получилось через регистр. Но хотелось бы и через модули вытащить
7. KlesAlex 3 22.08.18 10:41 Сейчас в теме
(6) штатный механизм покажет все) Попробуйте - посмотрите что выдает.
Оставьте свое сообщение

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