User Rating: 0 / 5

Star InactiveStar InactiveStar InactiveStar InactiveStar Inactive
 

Доброго времени суток.

Столкнулся на днях с такой ситуацией в 1С ЗУП при расчете продолжения больничного листка не всегда правильно считает количество дней за счет работодателя.

 

Примечание: сегодня (08 апреля 2014 обновился) не помогло, статья все еще актуальна



Ситуация проявляется, когда в первичный больничный менее трех дней. В этом случае он весь идет за счет работодателя (2 или 1 день).

На картинке пример с двумя днями больничного за счет работодателя. Больничный оформлен со 2 января по 3 января.

 1С ЗУП 3.0 Первичный больничный лист продолжительностью 2 дня

Далее вводим больничный являющийся продолжением предыдущего. Выбираем в нем первичный больничный лист, заполняем период с 4 января по 7 февраля. Программа сама автоматически рассчитывает средний и считает начисления по ним. На рисунке ниже главная закладка продолжения больничного листка.

 Продолжение больничного листка, 1С ЗУП 3.0

Уже тут видно, что за счет работодателя насчиталось немного лишку. Залезая на закладку документа "Начисления" видим, что за счет работодателя начислено аж за 3 дня вместо положенного одного дня.

 1С ЗУП Больничный лист, продолжение, начисление за счет работодателя

Решается это проблема залезанием в код формы документа. Если Вы надеялись увидеть тут решение проблемы с помощью настроек, то зря)) Все таки это раздел о программировании и ваша база должна быть снята с поддержки.

Итак открываем модуль формы!

В коде ориентироваться в этой 3.0 трудно. Нам нужна функция "ДатыИзменений()". Она возвращает таблицу значений, которая содержит вид расчета и дату начала его действия. Дата конца потом определяется по следующей строчке или дате окончания периода болезни.

Ищем следующую строку кода:

Если Объект.ДатаНачалаСобытия + ДнейЗаСчетРаботодателя(Объект.ДатаНачалаСобытия) * ДлинаСуток() > Объект.ДатаНачалаОплаты Тогда

По русски она означает, что еще не все дни за счет работодателя оплачены.

Если это ИСТИНА, то первый период у нас начнется с даты начала этого больничного листа и это будет оплата за счет работодателя.

Далее в таблицу значений добавляется строка с оплатой пособия за счет ФСС при условии, что вся длинна больничного больше количества дней за счет работодателя.

Вот тут и зарыта собака, дата начала пособия за счет ФСС определяется, как дата начала + 3 дня! То, что два дня уже были оплачены, никто не смотрит:

НоваяДата.Дата = Объект.ДатаНачалаОплаты + ДнейЗаСчетРаботодателя(Объект.ДатаНачалаСобытия) * ДлинаСуток();

ДнейЗаСчетРаботодателя(Объект.ДатаНачалаСобытия) возвращает всегда число 3 (ну не всегда, но в 2-14ом году всегда).

Вот ту и надо всунуть свой кусок кода, и отнять ранее оплаченное количество дней за счет работодателя.

Предлагаю следующий кусок кода:

Если Объект.ЯвляетсяПродолжениемБолезни Тогда
      МОИ_ДнейЗаСчетРаботодателя = ДнейЗаСчетРаботодателя(Объект.ДатаНачалаСобытия) - (Объект.ДатаНачалаОплаты - Объект.ДатаНачалаСобытия) / ДлинаСуток();
     Иначе
      МОИ_ДнейЗаСчетРаботодателя  = ДнейЗаСчетРаботодателя(Объект.ДатаНачалаСобытия);
     КонецЕсли;
      
     НоваяДата.Дата = Объект.ДатаНачалаОплаты + МОИ_ДнейЗаСчетРаботодателя * ДлинаСуток();

 Вот и все, сохраняемся, запускаем 1С, заходим в больничный, жмем кнопку "Пересчитать документ" (пиктограмма, выглядит как обновить) и радуемся.

 Скачать можно тут выложил её на форуме инфостарта

 

Авторизуйтесь пожалуйста