При загрузке электронных листков нетрудоспособности (ЭЛН) из файла в программу 1С многие пользователи сталкиваются с неожиданной ошибкой обмена. Буквально вчера загрузка работала корректно, а сегодня программа выдает сообщение: «Узел "ROW" не найден» или просто прерывает процесс с ошибкой. Давайте детально разберем эту ситуацию, проанализируем причины ее возникновения и рассмотрим все доступные способы решения.
Выясним причину технического сбоя. Ошибка связана с переходом ФСС (ныне Социальный фонд России — СФР) на новый формат обмена данными. Если раньше использовался формат версии 1.1, то теперь фонд перешел на версию 2.0. В старом формате XML-файл ответа от фонда имел плоскую структуру и содержал тег ROW, который программа 1С искала для чтения данных больничного листа.
В новом формате 2.0 структура XML существенно изменилась: стала использоваться иерархия с другими именами тегов и новыми пространствами имен. Однако в устаревших релизах 1С алгоритм поиска жестко прописан под старый формат. Посмотрим на пример кода из общего модуля ОбменЛисткамиНетрудоспособностиФСС, который вызывает сбой:
УзелROW = СериализацияБЗК.НайтиУзелDOM(СтруктураDOM, "//*[local-name = 'ROW']");
Если УзелROW = Неопределено Тогда
ВызватьИсключение ?(ПустаяСтрока(Результат.ТекстСообщенияФСС), НСтр("ru = 'Узел ""ROW"" не найден'"), Результат.ТекстСообщенияФСС);
КонецЕсли;
Поскольку нужный узел больше не существует в файле (или имеет префикс пространства имен, который не обрабатывается корректно), программа выдает исключение.
Разберем по шагам, как исправить программную часть 1С, чтобы она научилась «понимать» новые форматы файлов ФСС.
EF_10228137 (например, версия EF_10228137_7 для релиза 3.1.14.334). Этот патч корректирует алгоритм разбора XML-файла, позволяя системе без проблем обрабатывать как старые, так и новые ответы от фонда. Загрузите его с официального сайта обновлений 1С и установите в базу.Проанализируем альтернативный подход. Загрузка данных через промежуточные файлы часто становится источником проблем из-за несовместимости версий. Специалисты рекомендуют полностью отказаться от ручной загрузки XML-файлов и перейти на прямой обмен с фондом.
Для этого в 1С достаточно нажать кнопку «Получить из ФСС» в самом документе больничного листа, предварительно указав номер ЭЛН. При таком подходе 1С самостоятельно связывается с серверами СФР по защищенному каналу, запрашивает данные в том формате, который ей нужен (и который она гарантированно умеет обрабатывать), и автоматически заполняет документ. Единственное условие — на рабочем месте должен быть настроен сертификат ФСС или подключена «1С-Отчетность».
Рассмотрим ситуацию, когда программа 1С обновлена, патчи установлены, но ошибка все равно появляется. Чаще всего это происходит, если вы получаете больничные не напрямую из ФСС, а выгружаете их из программ операторов ЭДО (СБИС, Контур и др.) для последующей загрузки в 1С.
Проблема кроется в том, какой именно файл сохраняет бухгалтер. Разберем типичную ошибку при работе со СБИС:
Также вы можете самостоятельно проверить корректность файла. Откройте скачанный XML-файл через обычный «Блокнот». В самом начале файла, в атрибуте v или в теге версии формата, должно стоять значение «2.0». Если там указано «1.1», значит, файл выгружен в устаревшем формате, и вам необходимо обновить систему оператора ЭДО или изменить настройки выгрузки.
Следуя этим рекомендациям, вы сможете быстро локализовать проблему и восстановить бесперебойную загрузку электронных больничных в вашу базу 1С.