В процессе работы с социальным электронным документооборотом (СЭДО) организации часто сталкиваются с ситуацией, когда форматы обмена данными обновляются быстрее, чем выходят официальные обновления для учетных систем. Особенно остро эта проблема стоит для конфигураций, находящихся на ограниченной поддержке, таких как "Управление производственным предприятием" (УПП, редакция 1.3).
Рассмотрим конкретную ситуацию, с которой сталкиваются пользователи при отправке документа "Ответ на запрос СФР для расчета пособия". При попытке выгрузки или отправки реестра система выдает сообщение об ошибке:
Ошибки (1): ERR_PR_1210: Не указан пол ребенка.
При этом пользователи справедливо замечают, что визуально в форме документа поле "Пол" заполнено корректно. Давайте разберем технические причины этого сбоя и реализуем программное решение для его устранения.
Для начала проанализируем, что скрывается за этим кодом ошибки. Данное сообщение возвращается сервером СФР при прохождении форматно-логического контроля (ФЛК). Причина кроется в несоответствии структуры отправляемого XML-файла актуальной спецификации обмена.
Разберем ситуацию подробнее:
child (сведения о ребенке) стал требовать обязательного наличия вложенного тега gender, что дополняет требования по подготовке формы сведения о застрахованном лице.Поскольку официальное обновление может задерживаться, мы, как технические специалисты, можем внести точечную правку в алгоритм выгрузки. Наша задача — найти место, где формируется узел XML, отвечающий за данные о ребенке, и принудительно добавить туда информацию о поле.
В конфигурации УПП 1.3 за формирование данных для СЭДО обычно отвечают общие модули или модули менеджера соответствующих документов. В данном случае нас интересует процедура, связанная с выгрузкой информации о ребенке для отпуска по уходу.
Рассмотрим процедуру ВыгрузитьИнформациюОРебенкеОтпускаПоУходу. Именно в ней происходит сбор данных по СНИЛС, ФИО и дате рождения ребенка.
Для исправления ошибки нам необходимо выполнить следующие шаги в конфигураторе (подобные доработки часто требуются, когда нужно реализовать импорт больничного из XML в нетиповых условиях):
Шаг 1. Откройте модуль, содержащий процедуру выгрузки (если вам часто приходится работать с конфигуратором, возможно, вам будет полезна и загрузка классификатора банков в УПП). Обычно это модуль объекта или менеджера документа, либо общий модуль, отвечающий за обмен с СЭДО.
Шаг 2. Найдите в коде место, где происходит добавление узла snils (СНИЛС ребенка). Это надежный ориентир, так как пол ребенка логически должен находиться в том же блоке данных.
Шаг 3. Сразу после выгрузки СНИЛС нам нужно добавить логику определения пола и запись нового узла. Обратите внимание, что мы должны преобразовать значение перечисления ПолФизическихЛиц в строку формата, требуемого СФР.
Посмотрим на пример кода, который решает эту задачу. В типовом коде выгрузка СНИЛС выглядит примерно так:
// СНИЛС.
МенеджерXML.ДобавитьУзел(УзелРебенок, "snils", СтрЗаменить(СтрЗаменить(Документ.РебенокСНИЛС, "-", ""), " ", ""), Истина, Истина);
Нам необходимо добавить следующий блок кода сразу после строк со СНИЛС:
// Определяем пол ребенка в формате, требуемом спецификацией СФР (MALE/FEMALE)
ПолРебенка = ?(Документ.РебенокПол = Перечисления.ПолФизическихЛиц.Женский, "FEMALE", "MALE");
// Добавляем узел gender в XML-структуру
МенеджерXML.ДобавитьУзел(УзелРебенок, "gender", ПолРебенка);
Проанализируем, что делает этот код:
?() для проверки значения в поле Документ.РебенокПол.Перечисления.ПолФизическихЛиц.Женский, переменной присваивается строка "FEMALE".МенеджерXML.ДобавитьУзел создает тег <gender> внутри родительского узла УзелРебенок и помещает туда вычисленное значение.При внедрении данного решения стоит учесть несколько нюансов:
РебенокПол в документе действительно заполнено. Если оно пустое, лучше выдать понятное предупреждение пользователю, чем отправлять некорректные данные (например, "MALE" по умолчанию).// Исправление ошибки ERR_PR_1210, чтобы при сравнении-объединении конфигураций не потерять доработку.Ошибка ERR_PR_1210 является классическим примером рассинхронизации требований регулятора и возможностей устаревшего программного обеспечения. Предложенное решение с добавлением тега gender и значений FEMALE/MALE полностью соответствует актуальным XSD-схемам СФР и позволяет успешно сдать отчетность без ожидания официального патча от вендора.