При работе в программе 1С:Зарплата и управление персоналом 3.1 (релизы 3.1.14.394, 3.1.16.133 и аналогичные) пользователи массово столкнулись с проблемой при отправке реестра прямых выплат. При попытке выгрузки или отправки через встроенный сервис 1С-Отчетность шлюз ФСС возвращает протокол с ошибкой: ERR_1822(Ф) Не указана категория ЛН: оригинал или дубликат. Проанализируем причины этой ситуации и разберем способы ее решения: от простых пользовательских манипуляций до программной правки кода через расширение.
Ситуация связана с переходом ФСС на новый формат реестра — 1.7.7. В этом формате изменились требования к обязательности заполнения некоторых полей. Рассмотрим подробнее: для электронных листков нетрудоспособности (ЭЛН) многие данные теперь считаются необязательными, так как они уже есть в базе фонда. Однако для бумажных больничных требования остались строгими.
Проблема заключается в том, что в коде конфигурации при формировании XML-файла программа некорректно применяет правила формата 1.7.7 к бумажным носителям. В результате в файл выгрузки просто не попадают обязательные теги PRIMARY_FLAG (признак первичного документа) и DUPLICATE_FLAG (признак дубликата). Шлюз ФСС, не обнаружив этих данных для бумажного листка (где LN_TYPE = 0), отклоняет весь реестр.
Прежде всего, проверим наличие официальных исправлений от разработчиков 1С. Для данной ошибки был выпущен патч под номером EF_10228885. Если ваша конфигурация находится на поддержке, выполним следующие шаги:
EF_10228885 отсутствует, нажмем Поиск и установка исправлений (требуется доступ к интернет-поддержке).Если патчи не помогают, наиболее надежным решением будет обновление конфигурации до актуального релиза. Ошибка была окончательно исправлена в версиях 3.1.14.436 и 3.1.16.174. Проанализируем ситуацию: если обновиться прямо сейчас невозможно из-за доработок базы, перейдем к техническим способам решения.
Для оперативного исправления ошибки без изменения основной конфигурации воспользуемся механизмом расширений. Нам необходимо перехватить процедуру формирования строки реестра. Рассмотрим пример программного кода, который принудительно проставляет необходимые признаки в структуру XML.
Создадим новое расширение и добавим в него документ РеестрСведенийНеобходимыхДляНазначенияИВыплатыПособий. В модуле менеджера этого документа переопределим процедуру ЗаполнитьСтрокуРеестра. Проанализируем ключевой фрагмент кода, отвечающий за исправление:
&Вместо("ЗаполнитьСтрокуРеестра")
Процедура Расш1_ЗаполнитьСтрокуРеестра(ROW, СтруктураДанных)
// Вызываем стандартную логику или полностью заменяем ее
// Важно убедиться, что заполняются признаки первичного документа и дубликата
ROW.LN_CODE = СтруктураДанных.НомерВходящегоДокумента;
ROW.LN_TYPE = Формат(СтруктураДанных.ЭтоЭЛН, "БЛ=0; БИ=1");
// Исправление признака первичного документа
Если ЗначениеЗаполнено(СтруктураДанных.НомерПервичногоБольничного) Тогда
ROW.PREV_LN_CODE = СтруктураДанных.НомерПервичногоБольничного;
ROW.PRIMARY_FLAG = 0; // Это продолжение
Иначе
ROW.PRIMARY_FLAG = 1; // Это первичный
КонецЕсли;
// Исправление признака дубликата
ROW.DUPLICATE_FLAG = Формат(СтруктураДанных.ЯвляетсяДубликатом, "БЛ=0; БИ=1");
// Далее следует заполнение остальных полей (ФИО врача, мед. организация и т.д.)
ROW.LPU_NAME = СтруктураДанных.НаименованиеМедицинскойОрганизации;
ROW.LPU_OGRN = СтруктураДанных.ОГРНМедицинскойОрганизации;
// ... остальной код заполнения ...
КонецПроцедуры
Важный нюанс: при подключении расширения обязательно снимите галочку Безопасный режим, иначе подмена кода может не сработать. После применения расширения рекомендуется перезапустить сеанс работы с программой и переформировать файл реестра заново.
Если вы бухгалтер и вам нужно отправить реестр «здесь и сейчас», а программиста нет рядом, попробуйте следующие методы, найденные опытным путем:
DUPLICATE_FLAG в XML, если заполнены сведения на закладке «Периоды простоя». Можно временно указать фиктивный период, выгрузить файл в стороннюю программу (СБИС, Контур), там удалить простои и отправить реестр.Notepad++ и найдите блок LN_DATA. Убедитесь, что внутри присутствуют теги <PRIMARY_FLAG>1</PRIMARY_FLAG> и <DUPLICATE_FLAG>0</DUPLICATE_FLAG>. Если их нет — добавьте их вручную перед закрывающим тегом блока данных больничного.Мы выяснили, что ошибка ERR_1822(Ф) — это следствие программного сбоя при реализации формата 1.7.7 для бумажных листков нетрудоспособности. Посмотрим на алгоритм действий: первым делом пробуем установить патч EF_10228885. Если это не помогает — обновляем программу до релизов конца февраля 2021 года или позже. В случае невозможности обновления используем механизм расширений для принудительного заполнения полей PRIMARY_FLAG и DUPLICATE_FLAG в XML-файле.
Помните, что формат 1.7.7 требует также более тщательного заполнения данных о медицинском учреждении (ОГРН, адрес) и враче для бумажных носителей. Ошибка WARN_920, часто идущая в паре, не является критичной и указывает лишь на лишние пробелы в поле кем выдан документ, которые шлюз ФСС удаляет автоматически.