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