Как исправить ошибку ORA-20013 при повторной отправке электронного больничного в ФСС?

Бухгалтер 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом Налоговый учет
← На главную

В процессе работы бухгалтера или специалиста по кадрам в 1С нередко возникает ситуация, когда уже отправленный и принятый Фондом социального страхования (ныне СФР) электронный больничный лист (ЭЛН) требует корректировки. Это может быть связано с предоставлением сотрудником новых справок о доходах, обнаружением ошибки в стаже или иными обстоятельствами. Однако при попытке отправить исправленный расчет система может выдать критическую ошибку: «Ответ ФСС: Найдены ошибки при выполнении форматно-логических проверок ORA-20013: Не удалось обновить данные. Обновляемая запись потеряла актуальность».

Давайте проанализируем ситуацию, разберем причины возникновения этой технической коллизии и рассмотрим пошаговые алгоритмы решения проблемы в конфигурациях 1С.

Выясним причину ошибки: почему возникает ORA-20013?

Ошибка с кодом ORA-20013 генерируется не самой программой 1С, а сервером базы данных Oracle, на которой работает шлюз СФР. Сообщение «Обновляемая запись потеряла актуальность» (Stale Data) означает конфликт версий документа. В базе данных фонда уже существует запись по данному больничному с определенным статусом. Когда мы пытаемся отправить «исправление», система фонда сравнивает входящие данные с уже имеющимися. Если фонд считает, что документ уже «закрыт» для изменений или если номер версии (номер исправления) в вашем пакете данных не соответствует ожидаемому, сервер блокирует транзакцию, чтобы избежать порчи данных.

Чаще всего это происходит по следующим причинам:

  1. Вы пытаетесь отправить реестр с тем же номером исправления (или без него), который уже был принят ранее.
  2. На стороне фонда зафиксирован окончательный статус выплаты, и стандартный механизм реестров больше не принимает правки.
  3. Произошел технический сбой в работе шлюза СЭДО (Системы электронного документооборота), из-за чего статус документа в 1С рассинхронизировался со статусом на сервере фонда.

Способ 1: Использование механизма «Исправить» и указание причины перерасчета

Рассмотрим стандартный порядок действий в 1С:Зарплата и Управление Персоналом. Если вы обнаружили необходимость изменить данные в уже рассчитанном и отправленном больничном, ни в коем случае не пытайтесь просто изменить старый документ.

Алгоритм действий:

  1. Откроем первичный документ Больничный лист.
  2. В нижней части формы нажмем на ссылку «Исправить». Система создаст новый документ-исправление в текущем периоде.
  3. В новом документе внесем необходимые изменения (например, добавим справку с предыдущего места работы).
  4. Проанализируем вкладку «Сведения для ФСС» (или «Сведения для реестра»). Здесь критически важно заполнить поле «Причина перерасчета». Без указания кода причины (например, «01 - Предоставление справок о доходах») фонд может отклонить пакет как дубликат.
  5. Проведем документ.

При формировании нового Реестра прямых выплат или Ответа на запрос СФР программа должна автоматически подтянуть этот больничный как исправленный. Если вы используете СЭДО, убедитесь, что в Ответе на запрос стоит галочка «Исправление» и указан порядковый номер итерации.


Способ 2: Обновление записей в Реестре ЭЛН

Иногда ошибка ORA-20013 возникает из-за того, что в реестр «затянулись» старые идентификаторы. Попробуем выполнить техническую очистку связей внутри документа Реестр данных ЭЛН.

Разберем по шагам:

  1. Зайдем в ранее созданный (неотправленный или ошибочный) реестр.
  2. Удалим из табличной части строку с проблемным больничным листом.
  3. Запишем документ (кнопка «Записать»).
  4. Нажмем кнопку «Подбор» или «Заполнить», чтобы заново добавить исправленный Больничный лист в реестр.
  5. Проверим, что в колонке с признаком исправления появилось соответствующее значение.

Этот метод позволяет 1С перегенерировать внутренние метаданные пакета XML, что часто помогает шлюзу СФР воспринять документ как актуальное обновление, а не как «устаревшую запись».


Способ 3: Переход на современные механизмы СЭДО

Если ваша организация все еще использует старый механизм Реестров прямых выплат (которые постепенно выводятся из обращения), попробуйте воспользоваться механизмом «Исходящее сообщение о страховом случае».

Проанализируем ситуацию: фонд перешел на проактивные выплаты. Если стандартный реестр выдает ошибку актуальности, выполним следующее:

  1. Перейдем в раздел «Кадры» — «Пособия» — «Исходящие сообщения о страховых случаях СФР».
  2. Создадим новый документ, выберем сотрудника и тот самый больничный лист.
  3. В поле «Вид сообщения» укажем, что это именно исправление или перерасчет ранее поданных сведений.
  4. Отправим данное сообщение. В ответ фонд должен прислать новый Входящий запрос, на который вы ответите актуальными данными.

Технические нюансы 1С-Отчетности и спецоператоров

Если вы используете встроенный сервис 1С-Отчетность (через оператора «Калуга Астрал»), и вышеперечисленные методы не помогают, проблема может лежать в плоскости кэширования ответов на промежуточных серверах.

Посмотрим, что можно сделать в плане диагностики:

  1. Проверьте статус ЭЛН в личном кабинете страхователя на сайте СФР. Если там документ стоит в статусе «Исполнен» или «Выплата произведена», то любые попытки отправить электронный реестр из 1С могут блокироваться базой Oracle фонда.
  2. В таких случаях перерасчет часто возможен только через подачу бумажного заявления в территориальный орган фонда или через специальный тикет в техподдержку СФР с просьбой «откатить» статус ЭЛН до «030» (Документ готов к расчету).
  3. Если ошибка сохраняется, подготовьте GUID (уникальный идентификатор) документа и скриншот ошибки, после чего направьте запрос в техподдержку вашего оператора отчетности (например, info@astral-ural.ru). Разработчики могут вручную «протолкнуть» пакет или сбросить зависшую сессию на шлюзе.

Резюме для программистов и системных администраторов

Для тех, кто работает с кодом и структурой данных, приведем пример логики, которую можно реализовать через внешнюю обработку, если штатные средства не очищают идентификаторы (использовать с осторожностью!):


// Пример логики очистки идентификаторов в документе для сброса состояния
ДокументОбъект = СсылкаНаРеестр.ПолучитьОбъект();
Для Каждого Строка Из ДокументОбъект.Пособия Цикл
    Если Строка.БольничныйЛист = ПроблемныйБЛ Тогда
        // Очистка скрытых полей, если они заполнены
        Строка.ИдентификаторСообщенияФСС = ""; 
        Строка.СтатусДокументаВФонде = Перечисления.СтатусыДокументовСЭДО.ПустаяСсылка();
    КонецЕсли;
КонецЦикла;
ДокументОбъект.Записать();

Важный момент: Ошибка ORA-20013 — это сигнал о том, что данные в вашей базе 1С «разошлись» с реальностью в базе фонда. Всегда начинайте решение с проверки Личного Кабинета Страхователя на сайте СФР, чтобы понять, какой статус документа является истинным на текущий момент.

← На главную