gifts2017

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

Опубликовал Александр (allexe) в раздел Программирование - Практика программирования

Доработка ЗиК 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
            КонецЕсли;
        КонецЕсли;
    КонецЕсли;

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

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

См. также

Подписаться Добавить вознаграждение

Комментарии

0. Александр (allexe) 04.10.11 13:39
Доработка ЗиК 314. Заполнение данных в больничном за 2 предыдущих года у другого работодателя. Для работы необходимо добавить в конфигурацию новый справочник.


Перейти к публикации

1. Юрий В (UV2) 04.10.11 13:39
Справка с предыдущего места работы используется для расчета ндфл и в общем случае может включать в себя те же начисления по больничному листу - что не позволяет даже теоретически использовать данные справки для начисления больничного на новом месте работы...
2. Александр (allexe) 04.10.11 14:03
"Справка с предыдущего места работы используется для расчета ндфл" - для расчета НДФЛ в пределах текущего года? Но я предлагаю вводить в эту справку данные о заработке за предыдущие года. Насколько я понимаю смысл этой справки в том чтобы при приеме на работу нового сотрудника учесть в ней заработок в пределах этого года для расчета НДФЛ. Соответственно чем могут помешать данные за 2 предыдущих года?
3. Юрий В (UV2) 04.10.11 15:06
(2) а, это было предложение хранить данные из справок для больничных в справках о доходах с предыдущего места работы?! - тогда придется затирать уже существующие для некоторых сотрудников реальные данные использовавшиеся для расчета ндфл за прошлые годы - что также не гуд...
- не, я для зик уже создал конструкцию по хранению этих данных, просто уже столкнулся с вариантами наличия двух и более справок за разные периоды работы по одному сотруднику и прочей фигней... - у меня холдинг с постоянно мечущимися по организациям холдинга толпой сотрудников и посему пришлось для зик-овцев сделать исчо пару обработкок по автообмену кучей справок.
4. Александр (allexe) 04.10.11 15:23
(3) Я понимаю что лучше сделать отдельный объект для хранения данных о предыдущих заработках, просто цель была сделать без доработки конфигурации.
тогда придется затирать уже существующие для некоторых сотрудников реальные данные использовавшиеся для расчета ндфл за прошлые годы
не совсем понимаю откуда там возьмутся данные за прошлые годы? Насколько я понял эти данные вводятся только для вновь принятых сотрудников и в период с начала года до даты принятия?
просто уже столкнулся с вариантами наличия двух и более справок за разные периоды работы по одному сотруднику
- ну можно сложить эти данные и внести в эту справку за 2 года.
5. Maxim Kolkin (the1) 04.10.11 16:20
Не не не, так делать категорически нельзя. Лучше написать отдельную обработку и использовать нужно другой справочник для хранения данных, т.к. суммы для НДФЛ и больничных будут разные.
6. Александр (allexe) 04.10.11 21:53
(1)(5) Согласен с вами первоначальный вариант хранения данных о заработке в справке о доходах был некорректен. Исправил. Сделал с использованием нового справочника.
7. Александр Иванов (ivanes) 06.10.11 12:25
При создании справочника нужно внимательно смотреть на Тип реквизита Код.
У меня создался справочник код(N,4,0). Отсюда, запрос не дает результата.
Считаю, что решение хорошее.
Нужно, создать отчет "Список сотрудников имеющие зарплату прошлых лет".
8. Александр (allexe) 06.10.11 14:10
(8) Да все верно. Я указал что тип кода должен быть текстовый. Спасибо за предложение отчет сделаю + в планах добавить обработку по заполнению уже внесенных данных из больничных в справочник зп прошлых лет (чтобы не забивать повторно по тем сотрудникам у кого уже есть эти данные в больничном)
9. Программулькин (Программулькин) 08.10.11 06:13
очень актуально, молодец, хорошая идея, немного запоздало правда, но всё же *ушёл внедрять*. Ждём отчёта.
10. Щеглова Елена (berta) 21.05.12 11:21
В связи с новыми правилами расчета среднего заработка для расчета больничного по беременности и родам необходимо сделать обработку для выбора среднего заработка за период который можно установить вручную,(есть женщины уходящие из декрета в декрет для них нужен средний за 2008-2009 годы для расчета больничного листа по правилам до 2010 года какие у кого есть мысли
11. Юрий В (UV2) 31.05.12 08:36
(10) в документе попробуйте перед собиранием данных для среднего установить нужную Вам дату декретного(отп.по уходу и т.д. и т.п.) - допустим 01.01.2010 (для сбора данных для среднего за 2009 год, если в первый декретный он уходил 01.01.2010), заполняете вкладку для среднего заработка - а затем ставите реальную дату события и далее обрабатываете документ как обычно - расчет будет вестись на основе уже заполненных данных за 2009 год... как-то так было...
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа