Настройка - Расчет зарплаты - Настройка состава начислений и удержаний - Отпуска - Отпуска без оплаты Создаем показатель "Сумма компенсации" Создаем начисление "Возмещение медицинских расходов", компенсационные выплаты Формула СуммаКомпенсации Создаем перечисление КатегорииДолжностей Создаем РС ГодовойЛимитМедицинскихРасходов, Измерение- КатегорияДолжности, Ресурсы - ГодовойЛимитМедицинскихРасходов Создаем РН ПодтвержденныеРасходы(обороты), измерение - Сотрудник, Ресурсы- Поддтвержденный расход, регистратор - РасчетЛимитов Создаем РН ЗаработаноЛимитов, измерение - Сотрудник, Год(Число4) . Ресурсы - СуммаЛимита Создаем документ "РасчетЛимитов", Реквизиты - Организация, Показатель ТЧСотрудники, реквизиты - Сотрудник, РазмерОклада, КатегорияДолжности, ПлановыйЛимит, КоэффициентВремени, ЗаработанныйЛимит, ПодтвержденныеРасходы, ФактическиВозмещенныеРасходы В справочник Должности добавляем реквизит КатегорияДолжности ################################################################################## ---Форма документа "РасчетЛимитов"--- &НаКлиенте Процедура Заполнить(Команда) ЗаполнитьНаСервере(); КонецПроцедуры &НаСервере Процедура ЗаполнитьНаСервере() МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; ПараметрыПолученияДанных = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц(); ПараметрыПолученияДанных.Организация = Объект.Организация; ПараметрыПолученияДанных.КадровыеДанные = "Сотрудник, Должность, ТарифнаяСтавка"; ПараметрыПолученияДанных.НачалоПериода = НачалоМесяца(Объект.Дата); ПараметрыПолученияДанных.ОкончаниеПериода = КонецМесяца(Объект.Дата); КадровыйУчет.СоздатьВТСотрудникиОрганизации(МенеджерВременныхТаблиц, Истина, ПараметрыПолученияДанных, "ВТСотрудникиОрганизации"); Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | ВТСотрудникиОрганизации.Сотрудник КАК Сотрудник, | ВЫРАЗИТЬ(ВТСотрудникиОрганизации.Должность КАК Справочник.Должности) КАК Должность, | ВТСотрудникиОрганизации.ТарифнаяСтавка КАК ТарифнаяСтавка |ПОМЕСТИТЬ ВТСотрудникиДанные |ИЗ | ВТСотрудникиОрганизации КАК ВТСотрудникиОрганизации |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТСотрудникиДанные.Сотрудник КАК Сотрудник, | ВТСотрудникиДанные.ТарифнаяСтавка КАК ТарифнаяСтавка, | ЕСТЬNULL(ГодовойЛимитМедицинскихРасходов.МножительГодовогоЛимита, 0) * ВТСотрудникиДанные.ТарифнаяСтавка / 12 КАК ПлановыйЛимит, | &Месяц КАК Месяц, | &ДатаНачала КАК ДатаНачала, | &ДатаОкончания КАК ДатаОкончания, | &ДатаАктуальности КАК ДатаАктуальности, | ВТСотрудникиДанные.Должность КАК Должность |ПОМЕСТИТЬ ВТСотрудники |ИЗ | ВТСотрудникиДанные КАК ВТСотрудникиДанные | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГодовойЛимитМедицинскихРасходов КАК ГодовойЛимитМедицинскихРасходов | ПО ВТСотрудникиДанные.Должность.КатегорияДолжности = ГодовойЛимитМедицинскихРасходов.КатегорияДолжности"; Запрос.УстановитьПараметр("Месяц", Месяц(Объект.Дата)); Запрос.УстановитьПараметр("ДатаНачала", НачалоМесяца(Объект.Дата)); Запрос.УстановитьПараметр("ДатаОкончания",КонецМесяца(Объект.Дата)); Запрос.УстановитьПараметр("ДатаАктуальности", КонецМесяца(Объект.Дата)); Запрос.Выполнить(); ПараметрыПолученияДанных = УчетРабочегоВремениРасширенный.ПараметрыДляЗапросВТДанныеУчетаВремениИСостоянийСотрудников(); //ПараметрыПолученияДанных.Вставить("ИмяВТСотрудники", "ВТСотрудники"); //ПараметрыПолученияДанных.Вставить("ИмяВТРезультат", "ВТДанныеУчета"); ПараметрыПолученияДанных.ДатаНачала = НачалоМесяца(Объект.Дата); ПараметрыПолученияДанных.ДатаОкончания = КонецМесяца(Объект.Дата); ПараметрыПолученияДанных.МесяцДатаНачала = НачалоМесяца(Объект.Дата); ПараметрыПолученияДанных.МесяцДатаОкончания = КонецМесяца(Объект.Дата); ПараметрыПолученияДанных.ДатаАктуальности = КонецМесяца(Объект.Дата); ПараметрыПолученияДанных.Организация = Объект.Организация; УчетРабочегоВремениРасширенный.СоздатьВТДанныеУчетаВремениИСостоянийСотрудников(МенеджерВременныхТаблиц, Истина, ПараметрыПолученияДанных); Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц; Запрос.Текст = "ВЫБРАТЬ | ВТСотрудники.Сотрудник КАК Сотрудник, | ВЫРАЗИТЬ(ВТСотрудники.Должность КАК Справочник.Должности) КАК Должность, | ВТСотрудники.ТарифнаяСтавка КАК ТарифнаяСтавка, | ВТСотрудники.ПлановыйЛимит КАК ПлановыйЛимит |ПОМЕСТИТЬ ВТСотрудникиКРасчету |ИЗ | ВТСотрудники КАК ВТСотрудники |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТДанныеУчетаВремениИСостоянийСотрудников.Сотрудник КАК Сотрудник, | СУММА(ВТДанныеУчетаВремениИСостоянийСотрудников.Дни) КАК Дни |ПОМЕСТИТЬ ВТОтпуск |ИЗ | ВТДанныеУчетаВремениИСостоянийСотрудников КАК ВТДанныеУчетаВремениИСостоянийСотрудников |ГДЕ | ВТДанныеУчетаВремениИСостоянийСотрудников.ВидУчетаВремени = &ВидУчетаВремениОтпуск | |СГРУППИРОВАТЬ ПО | ВТДанныеУчетаВремениИСостоянийСотрудников.Сотрудник |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТСотрудникиКРасчету.Сотрудник КАК Сотрудник, | ВТСотрудникиКРасчету.ТарифнаяСтавка КАК РазмерОклада, | ВТСотрудникиКРасчету.ПлановыйЛимит КАК ПлановыйЛимит, | (&КалендарныхДней - ЕСТЬNULL(ВТОтпуск.Дни, 0)) / &КалендарныхДней КАК КоэффициентВремени, | (&КалендарныхДней - ЕСТЬNULL(ВТОтпуск.Дни, 0)) / &КалендарныхДней * ВТСотрудникиКРасчету.ПлановыйЛимит КАК ЗаработанныйЛимит, | ВТСотрудникиКРасчету.Должность.КатегорияДолжности КАК КатегорияДолжности, | ЕСТЬNULL(ЗаработаноЛимитовОстатки.СуммаЛимитаОстаток, 0) КАК ОстатокЛимитаНаНачалоМесяца |ИЗ | ВТСотрудникиКРасчету КАК ВТСотрудникиКРасчету | ЛЕВОЕ СОЕДИНЕНИЕ ВТОтпуск КАК ВТОтпуск | ПО ВТСотрудникиКРасчету.Сотрудник = ВТОтпуск.Сотрудник | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаработаноЛимитов.Остатки(&НачалоМесяца, Год = &Год) КАК ЗаработаноЛимитовОстатки | ПО ВТСотрудникиКРасчету.Сотрудник = ЗаработаноЛимитовОстатки.Сотрудник"; Запрос.УстановитьПараметр("ВидУчетаВремениОтпуск", Справочники.ВидыИспользованияРабочегоВремени.НеоплачиваемыйОтпускПоЗаконодательству); Запрос.УстановитьПараметр("КалендарныхДней", ДЕНЬ(КонецМесяца(Объект.Дата))); Запрос.УстановитьПараметр("НачалоМесяца", НачалоМесяца(Объект.Дата)); Запрос.УстановитьПараметр("Год", Год(Объект.Дата)); Объект.Сотрудники.Загрузить(Запрос.Выполнить().Выгрузить()); КонецПроцедуры ########################################################################################################################## Документ делает движения в ПодтвержденныеРасходы и ЗаработаноЛимитов Модуль объекта копируем из РегистрацияПереработок ---Модуль объекта РасчетЛимитов--- #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда #Область ОбработчикиСобытий Процедура ОбработкаПроведения(Отказ, РежимПроведения) ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект); ЗаписатьЗначенияПоказателейРасчетаЗарплаты(Движения, Отказ); СформироватьДвиженияЗаработаноЛимитов(); СформироватьДвиженияПодтвержденныеРасходы(); КонецПроцедуры #КонецОбласти #Область СлужебныеПроцедурыИФункции Процедура ЗаписатьЗначенияПоказателейРасчетаЗарплаты(Движения, Отказ) ЗначенияПоказателей = Новый ТаблицаЗначений; ЗначенияПоказателей.Колонки.Добавить("ПериодДействия", Новый ОписаниеТипов("Дата")); ЗначенияПоказателей.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники")); ЗначенияПоказателей.Колонки.Добавить("Показатель", Новый ОписаниеТипов("СправочникСсылка.ПоказателиРасчетаЗарплаты")); ЗначенияПоказателей.Колонки.Добавить("Значение", Новый ОписаниеТипов("Число")); Для каждого Сотрудник Из Сотрудники Цикл НоваяСтрока = ЗначенияПоказателей.Добавить(); НоваяСтрока.ПериодДействия = НачалоМесяца(Дата); НоваяСтрока.Сотрудник = Сотрудник.Сотрудник; НоваяСтрока.Показатель = Показатель; НоваяСтрока.Значение = Сотрудник.ФактическиВозмещенныеРасходы; КонецЦикла; РасчетЗарплатыРасширенный.ЗарегистрироватьЗначенияРазовыхПоказателейСотрудников(Движения, Организация, ЗначенияПоказателей); КонецПроцедуры #КонецОбласти #КонецЕсли #Область ОбработчикиСобытий Процедура СформироватьДвиженияЗаработаноЛимитов() // регистр ЗаработаноЛимитов Приход Движения.ЗаработаноЛимитов.Записывать = Истина; Для Каждого ТекСтрокаСотрудники Из Сотрудники Цикл Движение = Движения.ЗаработаноЛимитов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = НачалоМесяца(Дата); Движение.Сотрудник = ТекСтрокаСотрудники.Сотрудник; Движение.Год = Год(Дата); Движение.СуммаЛимита = ТекСтрокаСотрудники.ЗаработанныйЛимит; КонецЦикла; Для Каждого ТекСтрокаСотрудники Из Сотрудники Цикл Движение = Движения.ЗаработаноЛимитов.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = НачалоМесяца(Дата); Движение.Сотрудник = ТекСтрокаСотрудники.Сотрудник; Движение.Год = Год(Дата); Движение.СуммаЛимита = ТекСтрокаСотрудники.ФактическиВозмещенныеРасходы; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры Процедура СформироватьДвиженияПодтвержденныеРасходы() Движения.ПодтвержденныеРасходы.Записывать = Истина; Для Каждого ТекСтрокаСотрудники Из Сотрудники Цикл Движение = Движения.ПодтвержденныеРасходы.Добавить(); Движение.Период = НачалоМесяца(Дата); Движение.Сотрудник = ТекСтрокаСотрудники.Сотрудник; Движение.ПодтвержденныйРасход = ТекСтрокаСотрудники.ПодтвержденныеРасходы; КонецЦикла; КонецПроцедуры #КонецОбласти ---Отчет--- ВЫБРАТЬ ЗаработаноЛимитовОстаткиИОбороты.Сотрудник КАК Сотрудник, ЗаработаноЛимитовОстаткиИОбороты.Период КАК Период, ЗаработаноЛимитовОстаткиИОбороты.СуммаЛимитаНачальныйОстаток КАК ОстатокЛимитаНаНачалоПериода, ЗаработаноЛимитовОстаткиИОбороты.СуммаЛимитаПриход КАК ЗаработаноЛимитаЗаПериод, ЗаработаноЛимитовОстаткиИОбороты.СуммаЛимитаРасход КАК ФактическиВозмещенныйРасход, ЗаработаноЛимитовОстаткиИОбороты.СуммаЛимитаКонечныйОстаток КАК ОстатокЛимитаНаКонецПериода, ЕСТЬNULL(ПодтвержденныеРасходыОбороты.ПодтвержденныйРасходОборот, 0) КАК ПодтвержденныеРасходы ИЗ РегистрНакопления.ЗаработаноЛимитов.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Месяц, , Год = &Год) КАК ЗаработаноЛимитовОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПодтвержденныеРасходы.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПодтвержденныеРасходыОбороты ПО ЗаработаноЛимитовОстаткиИОбороты.Сотрудник = ПодтвержденныеРасходыОбороты.Сотрудник И ЗаработаноЛимитовОстаткиИОбороты.Период = ПодтвержденныеРасходыОбороты.Период Настройки - Группировка СОтрудник - Группировка Период