Иногда возникает необходимость повторить расчет зарплаты в своей обработке (по аналогии с типовым документом “Начисление зарплаты”), для такой цели можно использовать “Менеджер расчета зарплаты“, в который мы на вход задаем какие-то свои данные (сотрудников, периоды, начисления, показатели), а на выходе получаем таблицы значений с рассчитанными результатами (Начисления, Удержания, НДФЛ и другие).
Пример использования менеджера расчета приведен ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
&НаСервере Процедура РасчитатьНачисленияПоСотрудникуНаСервере() // ИНИЦИАЛИЗАЦИЯ МЕНЕДЖЕРА МенеджерРасчета = Обработки.МенеджерРасчетаЗарплаты.Создать(); МенеджерРасчета.Инициализировать(Объект.ПериодРегистрации, Объект.Организация); //// Если надо за весь месяц //МенеджерРасчета = РасчетЗарплатыРасширенный.СоздатьМенеджерРасчета(МесяцНачисления, Организация); МенеджерРасчета.НастройкиРасчета.Сотрудники = Объект.Сотрудник; МенеджерРасчета.НастройкиРасчета.РассчитыватьНачисления = Истина; МенеджерРасчета.НастройкиРасчета.ОкончательныйРасчет = Истина; //МенеджерРасчета.НастройкиРасчета.РассчитыватьНДФЛ = Иситна; //МенеджерРасчета.НастройкиНДФЛ.Сотрудники = Сотрудник; //МенеджерРасчета.НастройкиНДФЛ.ОкончательныйРасчет = Истина; //МенеджерРасчета.НастройкиРасчета.РассчитыватьУдержания = Истина; //МенеджерРасчета.НастройкиРасчета.РассчитыватьКорректировкиВыплаты = Истина; //МенеджерРасчета.НастройкиРасчета.РассчитыватьВзносы = Истина; //МенеджерРасчета.НастройкиРасчета.ПерваяПоловинаМесяца = Истина; //МенеджерРасчета.НастройкиРасчета.ИсключатьРанееОплаченныеПериоды = Ложь; //... // ФОРМИРОВАНИЕ ТАБЛИЦИ СО ВСЕМИ НАЧИСЛЕНИЯМИ ПО СОТРУДНИКАМ ТаблицаНачислений = МенеджерРасчета.НачисленияЗарплатыЗаПериод(ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(Объект.Сотрудник), Объект.ПериодРегистрации.ДатаНачала, Объект.ПериодРегистрации.ДатаОкончания); //// ИЛИ ФОРМИРУЕМ И ЗАПОЛНЯЕМ ВЫБОРОЧНО //ТаблицаНачислений = МенеджерРасчета.ТаблицаИсходныеДанныеНачисленияЗарплатыПоНачислениям(); //НовыйИнтервал = ТаблицаНачислений.Добавить(); //НовыйИнтервал.Сотрудник = Объект.Сотрудник; //НовыйИнтервал.Начисление = Объект.Начисление; //НовыйИнтервал.ДатаНачала = Объект.ПериодРегистрации.ДатаНачала; //НовыйИнтервал.ДатаОкончания = Объект.ПериодРегистрации.ДатаОкончания; //ЗАПОЛНЯЕМ КОЛЛЕКЦИЮ Зарплата.Начисления МенеджерРасчета.ЗаполнитьНачисленияСотрудникаЗаПериод(Объект.Сотрудник, ТаблицаНачислений); //РАСЧЕТ МенеджерРасчета.РассчитатьЗарплату(); //РЕЗУЛЬТАТ ТЗНачисления = МенеджерРасчета.Зарплата.Начисления; КонецПроцедуры |