Каталог решений - ЗиК: Заполнение данных о заработке у предыдущих работодателей в больничном

ЗиК: Заполнение данных о заработке у предыдущих работодателей в больничном

ЗиК: Заполнение данных о заработке у предыдущих работодателей в больничном

В наличии

Доработка ЗиК 314. Заполнение данных в больничном за 2 предыдущих года у другого работодателя. Для работы необходимо добавить в конфигурацию новый справочник.

Категория:

Описание

Для хранения данных о заработках за 2 года у предыдущих работодателей создадим новый справочник. ПрошлыеДоходыДляБЛ. Справочник подчиненный справочнику Сотрудники. Длина кода 4, длина наименования 0, один реквизит Сумма Тип: Число длина 10 точность 2. Тип кода текстовый.ПрошлыеДоходыДляБЛ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Создадим форму списка этого справочник. В заголовке колонки код напишем «год». В форме списка внесем следующий код:

Процедура ПриОткрытии()
    Если ТипЗначения(Форма.Параметр) = 11 Тогда
        ИспользоватьВладельца(Форма.Параметр,0);
        ИерархическийСписок(1,0);
    КонецЕсли;
    глОткрытьВладельца(Контекст)
КонецПроцедуры //ПриОткрытии

В форму элемента справочника сотрудники добавим в процедуру ПриНажатииКнопки():

        СписокВыбора.ДобавитьЗначение("ФормаСЗВ2010","Персонифицированный учет ПФР (ввод сведений о стаже)");
        СписокВыбора.ДобавитьЗначение("ВводДанныхСЗВК","Форма СЗВ-К");
        СписокВыбора.ДобавитьЗначение("СтарыеФормы","Формы прошлых лет");
        //Allexe добавленные строки
        СписокВыбора.ДобавитьЗначение("ДоходыДляБл","Прошлые доходы для больничных");
        //Allexe

а также строки:

                        ОткрытьФорму("Обработка."+ИмяПодМеню+"#"+Код,Параметры);
                    КонецЕсли;
                КонецЕсли;
            //Allexe добавленные строки
            ИначеЕсли Имя = "ДоходыДляБл" Тогда
                ОткрытьФорму("Справочник.ПрошлыеДоходыДляБЛ.ФормаСписка",ТекущийЭлемент());
            //Allexe
            Иначе
                ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата");
                Параметры = СоздатьОбъект("СписокЗначений");
                Параметры.Установить("Сотрудник",ТекущийЭлемент());
                Параметры.Установить("ДатаАктуальности",ЖЗ.КонецТекущегоПериода());
                Параметры.Установить("ТолькоПросмотр",Форма.ТолькоПросмотр());
                ОткрытьФорму("Обработка."+Имя+"#"+Код,Параметры);
            КонецЕсли;
        КонецЕсли;
    // Если нажали кнопку , то

После этих изменений из карточки сотрудника, по кнопке «Ввод данных» в списке выпадающего меню появится последний пункт «Прошлые доходы для больничных». При выборе этого пункта можно внести данные по этому сотрудника о заработке для расчета больничных у предыдущих работодателей за прошлые 2 года.

Ввод данных за 2 года
Теперь внесем изменения в форму документа больничный лист, чтобы эти данные автоматом заполнялись в больничном. Перед процедурой ПолучитьЗаработок(), вставим свою процедуру ДоходыПредыдущиРаботодателей()

Процедура ДоходыПредыдущихРаботодателей()
    ЗаработокЗаПервыйГодДругиеСтрахователи = 0;
    ЗаработокЗаВторойГодДругиеСтрахователи = 0;
    СписокЛет = СоздатьОбъект("СписокЗначений");
    ГодСобытия = ДатаГод(ДатаНачалаСобытия);
    СписокЛет.ДобавитьЗначение(Строка(ГодСобытия-1));
    СписокЛет.ДобавитьЗначение(Строка(ГодСобытия-2));
    Запрос = СоздатьОбъект("Запрос");
    ТекстЗапроса =
    "//{{ЗАПРОС(Сформироватьыаваыва)
    |Владелец = Справочник.ПрошлыеДоходыДляБЛ.Владелец;
    |Код = Справочник.ПрошлыеДоходыДляБЛ.Код;
    |Сумма = Справочник.ПрошлыеДоходыДляБЛ.Сумма;
    |Функция ИтогСумма = Сумма(Сумма);
    |Группировка Код;
    |Условие(Владелец = Сотрудник);
    |Условие(Код в СписокЛет);
    |"//}}ЗАПРОС
    ;
    Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
        Возврат;
    КонецЕсли;
    Пока Запрос.Группировка(1) = 1 Цикл
        Если Запрос.Код = Строка(ГодСобытия-1) Тогда
            ЗаработокЗаВторойГодДругиеСтрахователи = Запрос.ИтогСумма;
        ИначеЕсли Запрос.Код = Строка(ГодСобытия-2) Тогда
            ЗаработокЗаПервыйГодДругиеСтрахователи = Запрос.ИтогСумма;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры //ДоходыПредыдущихРаботодателей

В саму процедуру ПолучитьЗаработок() внесем изменения

Процедура ПолучитьЗаработок()
    Если Сотрудник.Выбран()=0 Тогда
        Возврат;
    КонецЕсли;
    Если ПервичныйБольничный.Выбран()=0 Тогда
        СписокЗаработка = глПолучитьЗаработокДляБЛ(Сотрудник,ДатаНачалаСобытия);
        ЗаработокЗаПервыйГод = СписокЗаработка.ПолучитьЗначение(1);
        ЗаработокЗаВторойГод = СписокЗаработка.ПолучитьЗначение(2);
        //Allexe добавленные строки
        Если УчитыватьЗаработокПредыдущихСтрахователей=1 Тогда
            ДоходыПредыдущихРаботодателей()
        КонецЕсли;
        //Allexe
    Иначе
        Если ТипРасчетаБольничного = Перечисление.ТипРасчетаБольничного.С2011года Тогда
            ПредыдущийПервичный = ПервичныйБольничный;
            Пока ПредыдущийПервичный.ПервичныйБольничный.Выбран() = 1  Цикл
                ПредыдущийПервичный = ПредыдущийПервичный.ПервичныйБольничный;
            КонецЦикла;
            ПервичныйДокумент = ПредыдущийПервичный;
            Док = СоздатьОбъект("Документ.БольничныйЛист");
            Док.НайтиДокумент(ПервичныйДокумент);
            Если глЕстьОткрытыеДокументы(Док.ТекущийДокумент())=1 Тогда
                Предупреждение("Закройте форму первичного больничного");
                Возврат;
            КонецЕсли;
            Если (Док.ЗаработокЗаПервыйГод+Док.ЗаработокЗаВторойГод+Док.ЗаработокЗаПервыйГодДругиеСтрахователи+Док.ЗаработокЗаВторойГодДругиеСтрахователи <> 0)Тогда
                Предупреждение("Данные о среднем заработке уже имеются в первчном больничном, не требуется заполнение данных");
            Иначе
                СписокЗаработка = глПолучитьЗаработокДляБЛ(Сотрудник,ДатаНачалаСобытия);
                ЗаработокЗаПервыйГод = СписокЗаработка.ПолучитьЗначение(1);
                ЗаработокЗаВторойГод = СписокЗаработка.ПолучитьЗначение(2);
                //Allexe добавленные строки
                Если УчитыватьЗаработокПредыдущихСтрахователей=1 Тогда
                    ДоходыПредыдущихРаботодателей()
                КонецЕсли;
                //Allexe
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

КонецПроцедуры //ПолучитьЗаработок

 Теперь возможно вносить через карточку сотрудника данные о прошлых заработках и эти данные автоматом заполнятся в больничном листе.

has been added to your cart:
Оформление заказа