Untitled

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

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