Как исправить ошибку Поле объекта не обнаружено (УТ2__Отчество) в СЗВ-СТАЖ для сотрудников без отчества

Программист 1С v8.3 (Обычные формы) 1С:Комплексная автоматизация Налоговый учет
← На главную

При подготовке отчетности в Социальный фонд России (ранее ПФР) бухгалтеры и технические специалисты часто сталкиваются с проблемой проведения документа Сведения о страховом стаже застрахованных лиц (СЗВ-СТАЖ). Ситуация осложняется, когда в штате организации числятся иностранные граждане, у которых в документах, удостоверяющих личность, отсутствует отчество. При попытке провести документ программа выдает фатальную ошибку: Поле объекта не обнаружено (УТ2__Отчество). Давайте разберем причины этой проблемы и рассмотрим несколько эффективных способов её решения.

Почему возникает эта ошибка?

Проанализируем техническую сторону вопроса. Данная ошибка является следствием недоработки в программном коде типовых конфигураций на обычных формах (таких как Комплексная автоматизация 1.1 или Управление производственным предприятием 1.3). В определенный период развития формата обмена данными с контролирующими органами (формат УТ2) разработчики добавили обращение к свойству УТ2__Отчество в структуре данных.

Когда мы заполняем сведения по сотруднику, у которого поле «Отчество» пустое, программа при формировании внутренней структуры данных просто не создает ключ УТ2__Отчество. Однако в модуле объекта документа прописано прямое обращение к этому полю без предварительной проверки его наличия. В результате 1С «спотыкается», не находя нужного свойства, и прерывает проведение документа.

Способ 1: Обновление конфигурации

Это самый правильный и надежный метод. Фирма «1С» оперативно выпустила исправления для этой ошибки в последующих релизах. Если ваша база данных позволяет выполнить обновление, рекомендуем выполнить следующие действия:

  1. Проверим текущий релиз конфигурации. Ошибка массово проявлялась в КА 1.1.109.1 и УПП 1.3.114.1.
  2. Выполним обновление до релиза 1.1.110.1 (для КА) или выше.
  3. После обновления пересчитаем и перепроведем документ СЗВ-СТАЖ.

Если же ваша конфигурация сильно доработана и быстрое обновление невозможно, рассмотрим альтернативные варианты.

Способ 2: Временное «фиктивное» отчество (ручной метод)

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

  1. Откроем карточку сотрудника, на котором возникает ошибка, и временно впишем ему любое отчество (например, Иванович или просто набор цифр 012345).
  2. Вернемся в документ СЗВ-СТАЖ, обновим данные по этому сотруднику и нажмем кнопку Провести. Теперь программа найдет заполненное поле и не выдаст ошибку.
  3. Сформируем файл выгрузки (XML) на диск.
  4. Откроем полученный файл любым текстовым редактором (лучше всего использовать Notepad++ или обычный Блокнот).
  5. Найдем в тексте наше фиктивное отчество и аккуратно удалим его, оставив теги пустыми. Например, было: <УТ2:Отчество>Иванович</УТ2:Отчество>, должно стать: <УТ2:Отчество/> или тег должен быть полностью удален согласно схеме XSD.
  6. Сохраним файл и загрузим его в программу для отправки отчетности (СБИС, Контур, 1С-Отчетность).
  7. Важно: Не забудьте после этого удалить временное отчество из карточки сотрудника в 1С, чтобы не исказить данные в будущих периодах.

Способ 3: Программное исправление в конфигураторе

Рассмотрим, как системный администратор или программист может внести точечное исправление в код, чтобы навсегда забыть об этой ошибке без полного обновления конфигурации. Нам необходимо добавить проверку на существование свойства в структуре.

Выясним причину в коде. Нам нужно найти МодульОбъекта документа СведенияОСтраховомСтажеЗастрахованныхЛицСЗВ_СТАЖ. Примерно в районе строки 758 (номер зависит от релиза) мы увидим обращение к полю УТ2__Отчество. Исправим этот участок кода следующим образом:


// Вместо прямого обращения: 
// ЗначениеОтчества = Данные.УТ2__Отчество;

// Используем безопасное извлечение свойства:
Если Данные.Свойство("УТ2__Отчество") Тогда
    ЗначениеОтчества = Данные.УТ2__Отчество;
Иначе
    ЗначениеОтчества = "";
КонецЕсли;

После внесения этого изменения 1С будет корректно обрабатывать сотрудников без отчества, просто пропуская заполнение этого поля в структуре XML.

Почему нельзя использовать точки или пробелы?

Многие пользователи пытаются поставить в поле отчества точку, прочерк или неразрывный пробел (через Alt+0160). Рассмотрим, почему это плохая идея:

Дополнительные рекомендации

Проанализируем еще один интересный «костыль», который иногда помогает без вмешательства в код. Попробуйте переместить сотрудников без отчества в самый конец списка в табличной части документа. В некоторых случаях алгоритм обхода коллекции в 1С построен так, что ошибка на последнем элементе при определенных условиях не блокирует запись самого набора данных, хотя это менее надежный способ, чем описанные выше.

Подводя итог, отметим: если вы столкнулись с ошибкой Поле объекта не обнаружено (УТ2__Отчество), самым эффективным решением будет либо установка обновленного релиза, либо (если это невозможно) временная подстановка данных с последующей правкой XML-файла вручную. Это гарантирует, что отчетность будет принята фондом без лишних вопросов к персональным данным сотрудников.

← На главную