Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
4.2 kB
1
Indexable
Never
Процедура РассчитатьНачисления (Регистратор, НаборЗаписей) Экспорт
	
	// РАСЧЕТ ОТПУСКА
	// Формула расчета: [Сумма базы (по всем начислениям)] / [Количество рабочих дней в базовом периоде] * [Количество дней в отпуске]	
	
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ОсновныеНачисленияДанныеГрафика.НомерСтроки,
	|	ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ДнейПятидневкиФактическийПериодДействия, 0) КАК ДнейФакт,
	|	ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.РабочихДнейБазовыйПериод, 0) КАК ДнейБаза,
	|	ЕСТЬNULL(ОсновныеНачисленияБазаОсновныеНачисления.РезультатБаза, 0) + ЕСТЬNULL(ОсновныеНачисленияБазаДополнительныеНачисления.РезультатБаза, 0) КАК База
	|ИЗ
	|	РегистрРасчета.ОсновныеНачисления.ДанныеГрафика(
	|			Регистратор = &Регистратор
	|				И ВидРасчета = &ВидРасчетаОтпуск) КАК ОсновныеНачисленияДанныеГрафика
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаОсновныеНачисления(
	|				&Измерения,
	|				&Измерения,
	|				,
	|				Регистратор = &Регистратор
	|					И ВидРасчета = &ВидРасчетаОтпуск) КАК ОсновныеНачисленияБазаОсновныеНачисления
	|		ПО ОсновныеНачисленияДанныеГрафика.НомерСтроки = ОсновныеНачисленияБазаОсновныеНачисления.НомерСтроки
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисления.БазаДополнительныеНачисления(
	|				&Измерения,
	|				&Измерения,
	|				,
	|				Регистратор = &Регистратор
	|					И ВидРасчета = &ВидРасчетаОтпуск) КАК ОсновныеНачисленияБазаДополнительныеНачисления
	|		ПО ОсновныеНачисленияДанныеГрафика.НомерСтроки = ОсновныеНачисленияБазаДополнительныеНачисления.НомерСтроки";
	
	Измерения = Новый Массив(2);
	Измерения[0] = "Сотрудник";
	Измерения[1] = "Автомобиль";
	
	Запрос.УстановитьПараметр("Измерения", Измерения);
	Запрос.УстановитьПараметр("Регистратор", Регистратор);
	Запрос.УстановитьПараметр("ВидРасчетаОтпуск", ПланыВидовРасчета.ОсновныеНачисления.Отпуск);	
		
	СтруктураПоиска = Новый Структура;
	СтруктураПоиска.Вставить("НомерСтроки", 0);
	
	Выборка = Запрос.Выполнить().Выбрать();
	Для Каждого Запись Из НаборЗаписей Цикл
		СтруктураПоиска.НомерСтроки = Запись.НомерСтроки;
		Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
			Запись.Результат = ?(Выборка.ДнейБаза = 0, 0, Выборка.База / Выборка.ДнейБаза * Выборка.ДнейФакт);
		КонецЕсли;
		Выборка.Сбросить();
	КонецЦикла;
	
	НаборЗаписей.Записать(, Истина);	

КонецПроцедуры