В процессе ведения кадрового учета и расчета заработной платы в программе «1С:Зарплата и управление персоналом» (ЗУП 3.1) пользователи и программисты периодически сталкиваются с крайне неприятной проблемой: при заполнении документа «Больничный лист» средний заработок сотрудника успешно рассчитывается на основании исторических данных, но итоговые суммы пособия — как за счет средств работодателя (первые 3 дня), так и за счет средств фонда (СФР/ФСС) — остаются нулевыми. При этом на вкладке «Начислено (подробно)» полностью отсутствуют периоды расчета, а при попытке провести документ система выдает ошибки пересечения начислений или наложений периодов.
Давайте подробно разберем, почему возникает эта проблема, проанализируем её технические причины на уровне метаданных конфигурации, а также рассмотрим современные изменения в логике работы СФР (бывшего ФСС) и механизмов СЭДО, которые также могут приводить к подобному поведению программы.
---
Как показывает практика разбора реальных баз данных, наиболее неочевидной технической причиной, из-за которой программа рассчитывает средний заработок, но полностью игнорирует расчет дней и сумм пособия, является повреждение или некорректное изменение системных реквизитов предопределенных видов расчета в плане видов расчета Начисления.
Речь идет о двух ключевых реквизитах вида расчета:
НачисляетсяВЦеломЗаМесяц — данный реквизит указывает системе, зависит ли расчет начисления от конкретных дат внутри месяца (интервалов) или же расчет производится один раз за весь период целиком (как, например, фиксированная премия). Для больничных листов, которые жестко привязаны к графику и календарным дням болезни, этот реквизит должен иметь значение Ложь. Если по какой-то причине (сбой при обновлении, некорректный перенос данных) там устанавливается значение Истина, общий модуль РасчетЗарплатыРасширенный в функции ДанныеДляНачисленияЗарплаты прекращает расчет календарных дней болезни и формирует пустую таблицу интервалов.Рассчитывается — этот реквизит определяет, является ли начисление расчетным (то есть использующим формулу) или вводимым фиксированной суммой. Для больничного листа значение реквизита должно быть строго Истина. Если там установлено Ложь, автоматический расчет по формуле блокируется.Поскольку данные реквизиты являются системными и закрыты для редактирования пользователем через стандартный интерфейс конфигурации «1С:ЗУП», для исправления ситуации нам потребуется написать небольшую внешнюю обработку. Рассмотрим пример программного кода, который возвращает правильные настройки для предопределенных видов расчета «Больничный за счет работодателя» и основного начисления «Больничный»:
&НаСервере
Процедура ИсправитьРеквизитыБольничногоНаСервере()
// Определяем массив видов расчета для исправления
МассивНачислений = Новый Массив;
МассивНачислений.Добавить(ПланыВидовРасчета.Начисления.БольничныйЗаСчетРаботодателя);
МассивНачислений.Добавить(ПланыВидовРасчета.Начисления.Больничный);
Для Каждого СсылкаНачисление Из МассивНачислений Цикл
Если ЗначениеЗаполнено(СсылкаНачисление) Тогда
НачислениеОбъект = СсылкаНачисление.ПолучитьОбъект();
// Проверяем текущие значения и перезаписываем их при необходимости
Модифицирован = Ложь;
Если НачислениеОбъект.НачисляетсяВЦеломЗаМесяц <> Ложь Тогда
НачислениеОбъект.НачисляетсяВЦеломЗаМесяц = Ложь;
Модифицирован = Истина;
КонецЕсли;
Если НачислениеОбъект.Рассчитывается <> Истина Тогда
НачислениеОбъект.Рассчитывается = Истина;
Модифицирован = Истина;
КонецЕсли;
Если Модифицирован Тогда
// Отключаем бизнес-правила при записи для обхода системных ограничений
НачислениеОбъект.ОбменДанными.Загрузка = Истина;
НачислениеОбъект.Записать();
Сообщить("Успешно исправлены реквизиты для: " + СсылкаНачисление);
Иначе
Сообщить("Реквизиты для " + СсылкаНачисление + " уже в норме.");
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
После выполнения данного кода на сервере обязательно выполните перерасчет документа «Больничный лист» (кнопка «Еще» — «Пересчитать документ»). Вкладка начислений должна заполниться автоматически.
---
Если вы работаете в современных версиях программы (семейство редакций ЗУП 3.1), то поведение при расчете больничного листа кардинально отличается от того, что было в более ранних версиях (ЗУП 3.0).
Рассмотрим, как сейчас устроена логика выплат пособий:
---
С развитием системы электронного документооборота (СЭДО) в версиях ЗУП 3.1 появился дополнительный механизм контроля входящих данных от СФР.
Выясним причину, почему при загрузке электронного листка нетрудоспособности (ЭЛН) расчет сумм может блокироваться. На вкладке «Главное» в документе «Больничный лист» присутствует переключатель «Источник среднего заработка». Программа может автоматически установить его в положение «Входящий запрос фонда».
Если входящий запрос СФР по какой-то причине не загружен до конца, содержит некорректные или пустые сведения о заработке сотрудника за предыдущие два года, расчет сумм в документе обнулится, даже если в базе 1С есть вся история начислений по сотруднику.
Для решения этой проблемы переведите переключатель в положение «Учет организации». После этого программа мгновенно обратится к собственным регистрам накопления («Данные о начислениях для расчета среднего заработка») и произведет расчет пособия в штатном режиме.
---
Если программа ругается на «пересечение начислений» и из-за этого отказывается рассчитывать сумму за счет работодателя, нам необходимо проверить настройки вытеснения.
Рассмотрим алгоритм устранения конфликта приоритетов:
Больничный за счет работодателя.Также важно обратить внимание на пересечение с отпусками. В настройках расчета зарплаты (раздел «Настройка» — «Расчет зарплаты») проверьте, активна ли опция «Сторнировать отпуск в больничном при пересечении периодов». Если флажок снят, программа не сможет автоматически уменьшить сумму начисленного ранее отпуска, если сотрудник заболел во время отдыха. Вам придется сначала ввести документ-исправление для отпуска, уменьшив его период, и только после этого рассчитывать и проводить больничный лист.
---
Иногда нулевой расчет сумм больничного листа связан с системными ошибками конкретного релиза конфигурации. Например, в релизах ветки 3.1.30 и 3.1.31 регистрировались ошибки, связанные с неверным расчетом среднего заработка при наличии сторнирующих документов в одном и том же периоде.
Для решения таких проблем фирма «1С» оперативно выпускает исправления (патчи). Проверим наличие установленных обновлений безопасности и патчей:
---
Проанализируем еще одну частую ситуацию: стаж сотрудника не заполнен в его карточке. Если у работника отсутствует информация о страховом стаже, программа не сможет определить корректный процент оплаты пособия (60%, 80% или 100%).
В этом случае расчет будет произведен исходя из минимального размера оплаты труда (МРОТ). Однако если сотрудник оформлен на неполную ставку (например, 0.1 ставки внешнего совместителя), расчетная сумма за 3 дня болезни может оказаться настолько мала, что при округлении в интерфейсе она отразится как нулевая.
Решение: Перейдите в карточку сотрудника, нажмите на ссылку «Трудовая деятельность» и убедитесь, что в поле «Страховой стаж для оплаты больничных листов» введены корректные сведения на дату начала болезни.