При отправке реестра сведений о пособиях по временной нетрудоспособности из программы 1С:Зарплата и Управление Персоналом (редакция 2.5) пользователи часто сталкиваются со следующей ошибкой форматного контроля:
Ошибка: Не соответствует формату XSD: Проверьте значение и порядок элемента RECALC_REASON_CODE в xml-документе на соответствие с Регламентом
В этой статье мы подробно разберем техническую причину возникновения данной ошибки, проанализируем требования XSD-схемы ФСС и рассмотрим доступные варианты исправления проблемы в конфигурации.
Проанализируем структуру XML-файла выгрузки. Ошибка возникала даже при использовании актуального формата выгрузки версии 1.7.5. В сгенерированном файле выгрузки первичного документа можно увидеть следующий фрагмент кода XML:
<TYPE_INFO>0</TYPE_INFO>
<RECALC_REASON_CODE/>
<DOC_TYPE>1</DOC_TYPE>
Выясним причину, почему приемный комплекс ФСС отвергает такой файл:
TYPE_INFO со значением 0 означает, что выгружается первичный документ (не перерасчет).RECALC_REASON_CODE отвечает за код причины перерасчета пособия.minOccurs="0"). Однако при первичной подаче документа (когда TYPE_INFO = 0) данный элемент в XML-файле должен полностью отсутствовать.TYPE_INFO = 1), тег RECALC_REASON_CODE становится обязательным и должен содержать числовой код причины (от 1 до 5).<RECALC_REASON_CODE/> для первичных документов, что XSD-анализатор ФСС расценивал как некорректное числовое значение и выдавал ошибку 503.Рассмотрим основной технический вариант решения проблемы — внесение небольшого исправления в программный код конфигурации.
Для реализации этого решения выполним следующие шаги:
ОбменСведениямиОПособияхСФСС.ДобавитьСтрокуВРеестр.В исходном коде конфигурации данный фрагмент выглядит следующим образом:
Если СтруктураДанных.Перерасчет Тогда
НаборЗаписей.RECALC_REASON_CODE.Значение = Число(СтруктураДанных.КодПричиныПерерасчета);
КонецЕсли;
Доработаем этот алгоритм: если документ не является перерасчетом, принудительно удалим элемент RECALC_REASON_CODE из структуры набора записей выгрузки. Добавим ветку Иначе:
Если СтруктураДанных.Перерасчет Тогда
НаборЗаписей.RECALC_REASON_CODE.Значение = Число(СтруктураДанных.КодПричиныПерерасчета);
Иначе
НаборЗаписей.Удалить("RECALC_REASON_CODE");
КонецЕсли;
После сохранения изменений и повторного формирования реестра пустой тег <RECALC_REASON_CODE/> перестанет попадать в итоговый XML-файл первичного документа, и выгрузка успешно пройдет контроль ФСС.
Если нет необходимости править логику общего модуля, разберем альтернативный вариант через редактирование макета формирования XML-файла.
RECALC_REASON_CODE.RECALC_REASON_CODE, для случая первичного реестра сведений.Рассмотрим быстрое решение, если требуется срочно отправить реестр без изменения конфигурации 1С:
<RECALC_REASON_CODE/> и заменим их на пустую строку (удалим).Важно: Ручная правка подходит только как разовое оперативное решение. Для постоянной работы рекомендуется внести изменения в общий модуль ОбменСведениямиОПособияхСФСС или обновить конфигурацию до актуального релиза.