Untitled

 avatar
unknown
plain_text
2 years ago
9.3 kB
4
Indexable
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	Движения.ОсновныеНачисления.Записывать = Истина;
	Движения.ДополнительныеНачисления.Записывать = Истина;
	
	// Запрос для формирования рабочих наборов записей
	Запрос = Новый Запрос;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	НачислениеЗарплатыДополнительныеНачисления.Сотрудник КАК Сотрудник,
	|	НачислениеЗарплатыДополнительныеНачисления.Автомобиль КАК Автомобиль,
	|	НачислениеЗарплатыДополнительныеНачисления.ВидРасчета КАК ВидРасчета
	|ПОМЕСТИТЬ ВТ_ДанныеПоНадбавке
	|ИЗ
	|	Документ.НачислениеЗарплаты.ДополнительныеНачисления КАК НачислениеЗарплатыДополнительныеНачисления
	|ГДЕ
	|	НачислениеЗарплатыДополнительныеНачисления.Ссылка = &Ссылка
	|	И НачислениеЗарплатыДополнительныеНачисления.ВидРасчета = &ВидРасчетаНадбавка
	|
	|ИНДЕКСИРОВАТЬ ПО
	|	Сотрудник,
	|	Автомобиль
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	ВТ_ДанныеПоНадбавке.Сотрудник КАК Сотрудник,
	|	ВТ_ДанныеПоНадбавке.Автомобиль КАК Автомобиль,
	|	ВТ_ДанныеПоНадбавке.ВидРасчета КАК ВидРасчета,
	|	ЕСТЬNULL(ОплатыПассажировОбороты.СуммаОборот * ПоказателиДляНачисленийСрезПоследних.ПроцентНадбавки / 100, 0) КАК Результат,
	|	&ПериодРегистрации КАК ПериодРегистрации
	|ИЗ
	|	ВТ_ДанныеПоНадбавке КАК ВТ_ДанныеПоНадбавке
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказателиДляНачислений.СрезПоследних(&ПериодРегистрации, ) КАК ПоказателиДляНачисленийСрезПоследних
	|		ПО (ИСТИНА)
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОплатыПассажиров.Обороты(
	|				&НачалоПериодаБазы,
	|				&КонецПериодаБазы,
	|				,
	|				(Сотрудник, Автомобиль) В
	|					(ВЫБРАТЬ
	|						ВТ_ДанныеПоНадбавке.Сотрудник,
	|						ВТ_ДанныеПоНадбавке.Автомобиль
	|					ИЗ
	|						ВТ_ДанныеПоНадбавке КАК ВТ_ДанныеПоНадбавке)) КАК ОплатыПассажировОбороты
	|		ПО ВТ_ДанныеПоНадбавке.Сотрудник = ОплатыПассажировОбороты.Сотрудник
	|			И ВТ_ДанныеПоНадбавке.Автомобиль = ОплатыПассажировОбороты.Автомобиль
	|
	|ОБЪЕДИНИТЬ ВСЕ
	|
	|ВЫБРАТЬ
	|	НачислениеЗарплатыДополнительныеНачисления.Сотрудник,
	|	НачислениеЗарплатыДополнительныеНачисления.Автомобиль,
	|	НачислениеЗарплатыДополнительныеНачисления.ВидРасчета,
	|	ЕСТЬNULL(ПоказателиДляНачисленийСрезПоследних.ФиксированнаяСумма, 0),
	|	&ПериодРегистрации
	|ИЗ
	|	Документ.НачислениеЗарплаты.ДополнительныеНачисления КАК НачислениеЗарплатыДополнительныеНачисления
	|		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказателиДляНачислений.СрезПоследних(&ПериодРегистрации, ) КАК ПоказателиДляНачисленийСрезПоследних
	|		ПО (ИСТИНА)
	|ГДЕ
	|	НачислениеЗарплатыДополнительныеНачисления.Ссылка = &Ссылка
	|	И НачислениеЗарплатыДополнительныеНачисления.ВидРасчета = &ВидРасчетаФиксированнаяСумма
	|;
	|
	|////////////////////////////////////////////////////////////////////////////////
	|ВЫБРАТЬ
	|	НачислениеЗарплатыОсновныеНачисления.Сотрудник КАК Сотрудник,
	|	НачислениеЗарплатыОсновныеНачисления.Автомобиль КАК Автомобиль,
	|	НачислениеЗарплатыОсновныеНачисления.ВидРасчета КАК ВидРасчета,
	|	НачислениеЗарплатыОсновныеНачисления.ДатаНачала КАК ПериодДействияНачало,
	|	НачислениеЗарплатыОсновныеНачисления.ДатаОкончания КАК ПериодДействияКонец,
	|	&ПериодРегистрации КАК ПериодРегистрации,
	|	ДОБАВИТЬКДАТЕ(&ПериодРегистрации, МЕСЯЦ, -3) КАК БазовыйПериодНачало,
	|	ДОБАВИТЬКДАТЕ(&ПериодРегистрации, СЕКУНДА, -1) КАК БазовыйПериодКонец
	|ИЗ
	|	Документ.НачислениеЗарплаты.ОсновныеНачисления КАК НачислениеЗарплатыОсновныеНачисления
	|ГДЕ
	|	НачислениеЗарплатыОсновныеНачисления.Ссылка = &Ссылка
	|	И НачислениеЗарплатыОсновныеНачисления.ВидРасчета = &ВидРасчетаОтпуск";
	
	ПериодРегистрации = НачалоМесяца(Дата);

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

	РезультатОН = МассивРезультатов[2];	
	Если Не РезультатОН.Пустой() Тогда
		Выборка = РезультатОН.Выбрать();
		Пока Выборка.Следующий() Цикл
			Движение = Движения.ОсновныеНачисления.Добавить();
			ЗаполнитьЗначенияСвойств(Движение, Выборка);
		КонецЦикла;
	КонецЕсли;
	
	// Запись рабочих наборов записей, при этом по видам расчета "Надбавка" и "Фиксированная сумма" уже выполнен расчет Результата
	Движения.Записать();
	
	// Окончательный расчет данных в регистре
	Расчет.РассчитатьНачисления(Ссылка, Движения.ОсновныеНачисления);				 
	
КонецПроцедуры
Editor is loading...