Untitled
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...