Untitled

mail@pastecode.io avatar
unknown
plain_text
a year ago
6.5 kB
1
Indexable
Never
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	
	// ДВИЖЕНИЯ ПО РЕГИСТРАМ ОСНОВНЫЕ НАЧИСЛЕНИЯ И ДОПОЛНИТЕЛЬНЫЕ НАЧИСЛЕНИЯ

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