Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
5.3 kB
0
Indexable
Never
Процедура РассчитатьНачисления(Регистратор, Движения) Экспорт
	
    НаборЗаписей = Движения.ОсновныеНачисления;
	РассчитатьОсновныеНачисления(Регистратор, НаборЗаписей);
	НаборЗаписей.Записать(, Истина);
	
	ДопНаборЗаписей = Движения.ДополнительныеНачисления;
	РассчитатьДопНачисления(Регистратор, ДопНаборЗаписей);
	ДопНаборЗаписей.Записать();
	
КонецПроцедуры       

Процедура РассчитатьОсновныеНачисления(Регистратор, НаборЗаписей)
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ОсновныеНачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки,
		|	ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЧасовПериодДействия, 0) КАК ЧасовПлан,
		|	ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЧасовФактическийПериодДействия, 0) КАК ЧасовФакт,
		|	ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.Параметр, 0) КАК Параметр
		|ИЗ
		|	РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(Регистратор = &Регистратор) КАК ОсновныеНачисленияДанныеГрафика";
	
	Запрос.УстановитьПараметр("Регистратор", Регистратор);
	
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
    СтруктураПоиска = Новый Структура;
	СтруктураПоиска.Вставить("НомерСтроки", 0);
	
	Для Каждого Запись Из НаборЗаписей Цикл
		СтруктураПоиска.НомерСтроки = Запись.НомерСтроки;
		Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
			Запись.Результат = ?(Выборка.ЧасовПлан = 0, 0, Выборка.Параметр / Выборка.ЧасовПлан * Выборка.ЧасовФакт);
			Запись.ОтработаноЧасов = Выборка.ЧасовФакт;
		КонецЕсли;
		Выборка.Сбросить();
	КонецЦикла;	
	
КонецПроцедуры	

Процедура РассчитатьДопНачисления(Регистратор, НаборЗаписей)
	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ
		|	ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки КАК НомерСтроки,
		|	ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.РезультатБаза, 0) КАК База,
		|	ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.Параметр, 0) КАК Параметр
		|ИЗ
		|	РегистрРасчета.ДополнительныеНачисления.БазаОсновныеНачисления(
		|			&Измерения,
		|			&Измерения,
		|			,
		|			Регистратор = &Регистратор
		|				И ВидРасчета = &ВидРасчетаПремия) КАК ДополнительныеНачисленияБазаОсновныеНачисления";
	
	Измерения = Новый Массив;
	Измерения.Добавить("Сотрудник");
	Измерения.Добавить("Подразделение");
	
	Запрос.УстановитьПараметр("ВидРасчетаПремия", ПланыВидовРасчета.ДополнительныеНачисления.Премия);
	Запрос.УстановитьПараметр("Измерения", Измерения);
	Запрос.УстановитьПараметр("Регистратор", Регистратор);
	
	РезультатЗапроса = Запрос.Выполнить();
	Выборка = РезультатЗапроса.Выбрать();
	
    СтруктураПоиска = Новый Структура;
	СтруктураПоиска.Вставить("НомерСтроки", 0);
	
	Для Каждого Запись Из НаборЗаписей Цикл
		СтруктураПоиска.НомерСтроки = Запись.НомерСтроки;
		Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
			Запись.результат = Выборка.База * Выборка.Параметр / 100;
		КонецЕсли;	                                                 
		Выборка.Сбросить();
	КонецЦикла;	
	
КонецПроцедуры