При работе в программе 1С:Зарплата и управление персоналом (редакция 3.1) пользователи часто сталкиваются с ситуацией, когда при отправке реестра электронных листков нетрудоспособности (ЭЛН) в ФСС (ныне СФР) возникает ошибка форматно-логического контроля: «Заполните поле "Средний заработок для исчисления пособия"». Особенно часто это происходит в случаях, когда сотрудник только устроился на работу и его средний заработок за предыдущие два года равен нулю, в связи с чем пособие рассчитывается исходя из МРОТ.
Рассмотрим детально, почему возникает эта проблема, проанализируем механизмы программы и разберем несколько способов её решения — от простых пользовательских манипуляций до внесения правок в программный код.
Выясним причину такого поведения системы. Когда мы рассчитываем больничный лист для сотрудника, не имеющего заработка в расчетном периоде (например, в первый месяц работы при отсутствии справок с предыдущих мест), программа 1С:ЗУП автоматически применяет расчет по МРОТ. В самом документе Больничный лист сумма начисления отображается корректно, однако при формировании XML-файла для обмена с фондом возникают сложности.
Согласно требованиям XSD-схемы ФСС, тег, отвечающий за средний заработок (BASE_AVG_SAL), является обязательным. В старых релизах (таких как 3.1.7) механизм выгрузки был реализован таким образом, что если значение среднего заработка равно 0, программа могла просто не включать этот тег в файл. Приемный шлюз фонда, не найдя обязательного поля, возвращает ошибку.
Ситуация осложняется тем, что в интерфейсе программы поле Средний заработок в документе часто закрыто для прямого редактирования. Даже при попытке открыть форму изменения данных (нажатием на кнопку «карандаш»), ячейки могут оставаться заблокированными, если в таблице нет данных за прошлые периоды.
Прежде всего, проанализируем текущую версию вашей базы. Данная ошибка была официально признана разработчиками 1С (ошибка №000043047) и исправлена в последующих релизах. Если ваша конфигурация позволяет выполнить обновление, это будет самым правильным и безопасным решением.
Если обновление невозможно, рекомендуем проверить наличие официальных исправлений (патчей) в разделе Администрирование — Обслуживание — Обновление программы — Установленные исправления. Для релизов ветки 3.1.7 и 3.1.8 выпускались специальные расширения, устраняющие проблему выгрузки нулевого заработка.
Если ошибка блокирует работу прямо сейчас, а обновить программу нет возможности, рассмотрим обходной путь через редактирование Реестра прямых выплат (или Реестра ЭЛН).
Разберем по шагам:
Больничный лист флаг Расчитывать пособие из МРОТ (если он не установился автоматически) и перевыбрать сотрудника в реестре.Проанализируем ситуацию: программе нужно, чтобы средний заработок не был пустым. Чтобы «оживить» заблокированные поля в форме ввода среднего заработка, можно применить следующий алгоритм:
Больничный лист нажмем кнопку редактирования среднего заработка.Если вы имеете навыки программирования или доступ к конфигуратору, можно внести исправление непосредственно в логику формирования XML-файла. Это позволит избежать ошибок при массовой отправке больничных.
Нам необходимо найти общий модуль или модуль менеджера, отвечающий за обмен с ФСС. В старых версиях ЗУП это часто объект XDTO-пакеты или специализированный модуль ОбменЛисткамиНетрудоспособностиФСС.
Рассмотрим пример кода, который решает проблему. Нам нужно найти функцию ВыгрузитьЗапросДляОтправкиРеестраЭЛН и подкорректировать обработку значения BASE_AVG_SAL.
Найдем строку:
УстановитьЗначениеЕслиЗаполнено(ROW.BASE_AVG_SAL, ДанныеЛН.БазаДляРасчетаСреднегоЗаработка);
И заменим её на условие, которое принудительно устанавливает 0, даже если значение не заполнено:
Если ДанныеЛН.БазаДляРасчетаСреднегоЗаработка = 0 Тогда
ROW.BASE_AVG_SAL = 0;
Иначе
УстановитьЗначениеЕслиЗаполнено(ROW.BASE_AVG_SAL, ДанныеЛН.БазаДляРасчетаСреднегоЗаработка);
КонецЕсли;
Посмотрим, что мы сделали: метод УстановитьЗначениеЕслиЗаполнено пропускает запись в структуру XML, если значение равно Неопределено или пусто. Наша проверка гарантирует, что если база равна нулю, в XML-файл попадет именно числовой ноль, что удовлетворит требованиям форматно-логической проверки фонда.
Проанализируем дополнительные настройки, которые могут влиять на этот процесс:
Доля времени (ставка) в реестре должно стоять значение (например, 1.0). Если это поле пустое, фонд также может выдать ошибку, связанную со средним заработком.В современных версиях 1С (3.1.23 и выше) работа с больничными переведена на систему СЭДО (Социальный Электронный Документооборот). Там механизм обмена значительно отличается: данные о заработке приходят напрямую из фонда. Если вы работаете в устаревшем релизе 3.1.7, крайне рекомендуется рассмотреть вопрос перехода на актуальную версию, так как требования законодательства и форматы обмена с СФР меняются очень часто.
Используя предложенные методы, вы сможете успешно отправить данные в фонд и обеспечить своевременную выплату пособия сотруднику.