Данные среднего заработка, остатка отпусков, резерва отпусков

1 Добавил: Эльдар Мингалиев

Получить данные среднего заработка, остатка отпусков, резерва отпусков в ЗУП 3

ЗУП 3
&НаСервере
Процедура ПолучитьДанныеСреднегоЗаработкаНаСервере()
	
	ДатаОтпуска     = Дата(2018,01,01);
	
	//Расчетный год отпуска
	ДатаНачала         = Дата(2017,01,01);
	ДатаОкончания     = Дата(2017,12,31);
	
	ИсходнаяТаблица = УчетСреднегоЗаработка.ПустаяТаблицаИсходныхДанныхРасчетаОбщегоСреднегоЗаработка();
	мПараметры = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
	мПараметры.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН", "0000000000");
	мПараметры.НачалоПериода     		= ДатаОтпуска;
	мПараметры.ОкончаниеПериода    	= ДатаОтпуска;
	//мПараметры.КадровыеДанные       	= "Подразделение";
	
	ЗарплатаКадрыОбщиеНаборыДанных.ДобавитьВКоллекциюОтбор(
				мПараметры.Отборы, "ФизическоеЛицо", "=", Справочники.ФизическиеЛица.НайтиПоНаименованию("Иванов Иван Иванович"));
	
	// 1. получаем сотрудников организации
	
	СотрудникиОрганизации = КадровыйУчет.СотрудникиОрганизации(Истина, мПараметры);
	
	// 2. получаем средний заработок сотрудников
	
	СотрудникиОрганизации.Колонки.Добавить("СреднийЗаработок", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2)));
	СотрудникиОрганизации.Колонки.Добавить("ОстатокОтпуска", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(4, 0)));
	СотрудникиОрганизации.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15, 2)));
	
	ОграничитьКоличество = 10;
	// получем данные для расчета среднего
	СтрокиКУдалению = Новый Массив;
	Индекс = 1;
	
	Для каждого СтрокаСотрудник из СотрудникиОрганизации Цикл
		Если Индекс <= ОграничитьКоличество Тогда
			СтрокаТаблицы = ИсходнаяТаблица.Добавить();
			СтрокаТаблицы.Сотрудник                         = СтрокаСотрудник.Сотрудник;
			СтрокаТаблицы.ПорядокРасчета                     = Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий.Постановление2010;
			СтрокаТаблицы.ДатаНачалаСобытия                 = ДатаОтпуска;
			СтрокаТаблицы.НачалоПериодаРасчетаСреднего         = ДатаНачала;
			СтрокаТаблицы.ОкончаниеПериодаРасчетаСреднего     = ДатаОкончания;
			Индекс = Индекс + 1;
		Иначе 
			СтрокиКУдалению.Добавить(СтрокаСотрудник);
		КонецЕсли;
	КонецЦикла;
	
	Для каждого пСтрока из СтрокиКУдалению Цикл
		СотрудникиОрганизации.Удалить(пСтрока);
	КонецЦикла;
	
	ДанныеДляРасчета = УчетСреднегоЗаработка.ДанныеДляРасчетаОбщегоСреднегоЗаработкаСотрудников(ИсходнаяТаблица, Неопределено, Неопределено, Истина);
	
	Для каждого СтрокаСотрудник из СотрудникиОрганизации Цикл
		
		Отбор = Новый Структура("Сотрудник",СтрокаСотрудник.Сотрудник);
		
		ДанныеОВремени         = ДанныеДляРасчета.ДанныеОВремени;
		ДанныеОНачислениях     = ДанныеДляРасчета.ДанныеОНачислениях;
		ДанныеОбИндексации     = ДанныеДляРасчета.ДанныеОбИндексации;
		
		ДанныеДляРасчетаСотрудник = Новый Структура("ДанныеОВремени,ДанныеОНачислениях,ДанныеОбИндексации");
		
		ДанныеДляРасчетаСотрудник.ДанныеОВремени         = ДанныеОВремени.Скопировать(ДанныеОВремени.НайтиСтроки(Отбор));
		ДанныеДляРасчетаСотрудник.ДанныеОНачислениях     = ДанныеОНачислениях.Скопировать(ДанныеОНачислениях.НайтиСтроки(Отбор));
		ДанныеДляРасчетаСотрудник.ДанныеОбИндексации     = ДанныеОбИндексации.Скопировать(ДанныеОбИндексации.НайтиСтроки(Отбор));
		
		ДополнительныеПараметры = УчетСреднегоЗаработкаКлиентСервер.ДополнительныеПараметрыРасчетаСреднегоЗаработка();
		
		ДополнительныеПараметры.ДатаНачалаСобытия = ДатаОтпуска;
		
		Если Не ЗначениеЗаполнено(ДополнительныеПараметры.НачалоПериода) 
			Или Не ЗначениеЗаполнено(ДополнительныеПараметры.ОкончаниеПериода) Тогда
			ПериодРасчета = УчетСреднегоЗаработка.ПериодРасчетаОбщегоСреднегоЗаработкаСотрудника(ДатаОтпуска, СтрокаСотрудник.Сотрудник, ДополнительныеПараметры.Начисление);
			ДополнительныеПараметры.НачалоПериода = ДатаНачала;
			ДополнительныеПараметры.ОкончаниеПериода = ДатаОкончания;
		КонецЕсли;
		
		Если ДополнительныеПараметры.ПорядокРасчета = Неопределено Тогда
			ДополнительныеПараметры.ПорядокРасчета = УчетСреднегоЗаработкаКлиентСервер.ПорядокРасчетаОбщегоСреднегоЗаработка(ДатаОтпуска);
		КонецЕсли;
		ДополнительныеПараметры.ПорядокРасчета         = Перечисления.ПорядокРасчетаСреднегоЗаработкаОбщий.Постановление2010;
		ДополнительныеПараметры.СпособРасчетаОтпуска = Перечисления.СпособыРасчетаНачислений.ОплатаОтпускаПоКалендарнымДням;
		
		ДополнительныеПараметры.Индексации = ДанныеДляРасчета.ДанныеОбИндексации;
		
		СтрокаСотрудник.СреднийЗаработок = УчетСреднегоЗаработкаКлиентСервер.СреднийЗаработокОбщий(ДанныеДляРасчетаСотрудник.ДанныеОНачислениях, ДанныеДляРасчетаСотрудник.ДанныеОВремени, ДополнительныеПараметры);
		
	КонецЦикла;
	
	// 3. считаем остатки отпусков
	
	СписокСотрудников = СотрудникиОрганизации.ВыгрузитьКолонку("Сотрудник");
	ВидыОтпусков = Неопределено;
	//ВидыОтпусков = Новый Массив;
	//ВидыОтпусков.Добавить(Справочники.ВидыОтпусков.Основной);
	
	ТаблицаОстаткиОтпусков = ОстаткиОтпусков.ОстаткиОтпусковСотрудниковНаДату(СписокСотрудников, ДатаОтпуска, ВидыОтпусков);
	
	Для каждого СтрокаСотрудник из СотрудникиОрганизации Цикл
		
		Отбор = Новый Структура("Сотрудник",СтрокаСотрудник.Сотрудник);
		СтрокиОтпуска = ТаблицаОстаткиОтпусков.НайтиСтроки(Отбор);
		
		ОстатокОтпуска = 0;
		
		Для каждого СтрокаОтпуска из СтрокиОтпуска Цикл
			ОстатокОтпуска = ОстатокОтпуска + СтрокаОтпуска.КоличествоДней;
		КонецЦикла;
		
		СтрокаСотрудник.ОстатокОтпуска = ОстатокОтпуска;
		СтрокаСотрудник.Сумма = ОстатокОтпуска * СтрокаСотрудник.СреднийЗаработок;
		
	КонецЦикла;
	
	//СотрудникиОрганизации.Колонки.Добавить("СреднийЗаработок",Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2)));
	//Сообщить(УчетСреднегоЗаработка.СреднийЗаработок(СотрудникиОрганизации[0].Сотрудник,Дата(2017,12,31)));
	
	//ЗаполнитьТаблицуЗначенийНаФорме(СотрудникиОрганизации,"ТЗ2");
	
КонецПроцедуры
Назад к списку

Комментарии

FastCode - сервис поиска кода 1С

Уже более 1000 разработчиков используют FastCode в работе!