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