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