Для хранения данных о заработках за 2 года у предыдущих работодателей создадим новый справочник. ПрошлыеДоходыДляБЛ. Справочник подчиненный справочнику Сотрудники. Длина кода 4, длина наименования 0, один реквизит Сумма Тип: Число длина 10 точность 2. Тип кода текстовый.
Создадим форму списка этого справочник. В заголовке колонки код напишем «год». В форме списка внесем следующий код:
Процедура ПриОткрытии() Если ТипЗначения(Форма.Параметр) = 11 Тогда ИспользоватьВладельца(Форма.Параметр,0); ИерархическийСписок(1,0); КонецЕсли; глОткрытьВладельца(Контекст) КонецПроцедуры //ПриОткрытии
В форму элемента справочника сотрудники добавим в процедуру ПриНажатииКнопки():
СписокВыбора.ДобавитьЗначение("ФормаСЗВ2010","Персонифицированный учет ПФР (ввод сведений о стаже)"); СписокВыбора.ДобавитьЗначение("ВводДанныхСЗВК","Форма СЗВ-К"); СписокВыбора.ДобавитьЗначение("СтарыеФормы","Формы прошлых лет"); //Allexe добавленные строки СписокВыбора.ДобавитьЗначение("ДоходыДляБл","Прошлые доходы для больничных"); //Allexe
а также строки:
ОткрытьФорму("Обработка."+ИмяПодМеню+"#"+Код,Параметры); КонецЕсли; КонецЕсли; //Allexe добавленные строки ИначеЕсли Имя = "ДоходыДляБл" Тогда ОткрытьФорму("Справочник.ПрошлыеДоходыДляБЛ.ФормаСписка",ТекущийЭлемент()); //Allexe Иначе ЖЗ = СоздатьОбъект("ЖурналРасчетов.Зарплата"); Параметры = СоздатьОбъект("СписокЗначений"); Параметры.Установить("Сотрудник",ТекущийЭлемент()); Параметры.Установить("ДатаАктуальности",ЖЗ.КонецТекущегоПериода()); Параметры.Установить("ТолькоПросмотр",Форма.ТолькоПросмотр()); ОткрытьФорму("Обработка."+Имя+"#"+Код,Параметры); КонецЕсли; КонецЕсли; // Если нажали кнопку , то
После этих изменений из карточки сотрудника, по кнопке «Ввод данных» в списке выпадающего меню появится последний пункт «Прошлые доходы для больничных». При выборе этого пункта можно внести данные по этому сотрудника о заработке для расчета больничных у предыдущих работодателей за прошлые 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 КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры //ПолучитьЗаработок
Теперь возможно вносить через карточку сотрудника данные о прошлых заработках и эти данные автоматом заполнятся в больничном листе.




Доработка ЗиК 314. Заполнение данных в больничном за 2 предыдущих года у другого работодателя. Для работы необходимо добавить в конфигурацию новый справочник.
Перейти к публикации
Справка с предыдущего места работы используется для расчета ндфл и в общем случае может включать в себя те же начисления по больничному листу — что не позволяет даже теоретически использовать данные справки для начисления больничного на новом месте работы…
«Справка с предыдущего места работы используется для расчета ндфл» — для расчета НДФЛ в пределах текущего года? Но я предлагаю вводить в эту справку данные о заработке за предыдущие года. Насколько я понимаю смысл этой справки в том чтобы при приеме на работу нового сотрудника учесть в ней заработок в пределах этого года для расчета НДФЛ. Соответственно чем могут помешать данные за 2 предыдущих года?
(2) а, это было предложение хранить данные из справок для больничных в справках о доходах с предыдущего места работы?! — тогда придется затирать уже существующие для некоторых сотрудников реальные данные использовавшиеся для расчета ндфл за прошлые годы — что также не гуд…
— не, я для зик уже создал конструкцию по хранению этих данных, просто уже столкнулся с вариантами наличия двух и более справок за разные периоды работы по одному сотруднику и прочей фигней… — у меня холдинг с постоянно мечущимися по организациям холдинга толпой сотрудников и посему пришлось для зик-овцев сделать исчо пару обработкок по автообмену кучей справок.
(3) Я понимаю что лучше сделать отдельный объект для хранения данных о предыдущих заработках, просто цель была сделать без доработки конфигурации.
не совсем понимаю откуда там возьмутся данные за прошлые годы? Насколько я понял эти данные вводятся только для вновь принятых сотрудников и в период с начала года до даты принятия?
— ну можно сложить эти данные и внести в эту справку за 2 года.
Не не не, так делать категорически нельзя. Лучше написать отдельную обработку и использовать нужно другой справочник для хранения данных, т.к. суммы для НДФЛ и больничных будут разные.
(1)(5) Согласен с вами первоначальный вариант хранения данных о заработке в справке о доходах был некорректен. Исправил. Сделал с использованием нового справочника.
При создании справочника нужно внимательно смотреть на Тип реквизита Код.
У меня создался справочник код(N,4,0). Отсюда, запрос не дает результата.
Считаю, что решение хорошее.
Нужно, создать отчет «Список сотрудников имеющие зарплату прошлых лет».
(8) Да все верно. Я указал что тип кода должен быть текстовый. Спасибо за предложение отчет сделаю + в планах добавить обработку по заполнению уже внесенных данных из больничных в справочник зп прошлых лет (чтобы не забивать повторно по тем сотрудникам у кого уже есть эти данные в больничном)
очень актуально, молодец, хорошая идея, немного запоздало правда, но всё же *ушёл внедрять*. Ждём отчёта.
В связи с новыми правилами расчета среднего заработка для расчета больничного по беременности и родам необходимо сделать обработку для выбора среднего заработка за период который можно установить вручную,(есть женщины уходящие из декрета в декрет для них нужен средний за 2008-2009 годы для расчета больничного листа по правилам до 2010 года какие у кого есть мысли
(10) в документе попробуйте перед собиранием данных для среднего установить нужную Вам дату декретного(отп.по уходу и т.д. и т.п.) — допустим 01.01.2010 (для сбора данных для среднего за 2009 год, если в первый декретный он уходил 01.01.2010), заполняете вкладку для среднего заработка — а затем ставите реальную дату события и далее обрабатываете документ как обычно — расчет будет вестись на основе уже заполненных данных за 2009 год… как-то так было…