Как исправить ошибку «Метод объекта не обнаружен (ЭтоНовый)» при записи регистра сведений «Гражданство физических лиц»?

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

При создании физического лица или попытке внести запись в периодический регистр сведений ГражданствоФизическихЛиц в конфигурации «1С:Бухгалтерия предприятия 3.0» может возникать критическая ошибка: «Метод объекта не обнаружен (ЭтоНовый)». При этом удаление записей проходит штатно, а стандартное тестирование и исправление базы данных не дает результата. Разберем детально природу этой ошибки и способы ее полного устранения.

Анализ журнала регистрации и техническая причина сбоя

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


{ОбщийМодуль.ОбменДаннымиСобытия.Модуль(1233)}: Ошибка выполнения правил регистрации объектов для плана обмена ОбменЗарплата3Бухгалтерия3.
Описание ошибки: {ОбщийМодуль.ОбменДаннымиСобытия.Модуль(2402)}: Ошибка при выполнении обработчика: "При обработке";
План обмена: ОбменЗарплата3Бухгалтерия3; Объект метаданных: РегистрСведений.ГражданствоФизическихЛиц
Описание ошибки: {ОбщийМодуль.ОбменДаннымиСобытия.Модуль(1360)}: Метод объекта не обнаружен (ЭтоНовый)
Если Не Объект.ЭтоНовый Тогда

Выясним причину такого поведения платформы. Метод ЭтоНовый() доступен исключительно для объектов ссылочных типов: справочников, документов, планов видов характеристик и аналогичных сущностей метаданных. При записи данных в регистр сведений переменная Объект внутри событий подсистемы БСП представляет собой набор записей — РегистрСведенийНаборЗаписей. У набора записей регистра нет метода ЭтоНовый(), равно как отсутствует и стандартный реквизит Ссылка.

Подобный ошибочный код часто попадает в обработчик правила регистрации объектов (ПРО) путем механического копирования условий из правила для справочника ФизическиеЛица. Совет заменить проверку на условие Объект.Ссылка.Пустая() является некорректным: для набора записей регистра такая инструкция сразу же вызовет исключение «Поле объекта не обнаружено (Ссылка)».

Кроме того, накатывание конфигурации из заведомо рабочей чистой базы не помогает решить проблему. В типовых решениях на Библиотеке стандартных подсистем правила конвертации и правила регистрации объектов сохраняются не только в макетах метаданных, но и кэшируются непосредственно в таблицах информационной базы — в служебном регистре сведений Правила для обмена данными. При включенной синхронизации механизм считывает алгоритмы именно из базы, игнорируя метаданные конфигурации.

Способ 1. Восстановление типовых правил обмена через пользовательский интерфейс

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

  1. Перейдем в раздел Администрирование → Синхронизация данных → Настройки синхронизации данных.
  2. Выберем проблемную настройку синхронизации с конфигурацией «Зарплата и управление персоналом 3.0» (план обмена ОбменЗарплата3Бухгалтерия3).
  3. Откроем параметры подключения и перейдем к разделу управления правилами регистрации данных.
  4. Переключим опцию использования правил в положение «Использовать типовые правила» либо выполним повторную загрузку актуального комплекта правил регистрации (файл ПравилаРегистрации.xml) из каталога шаблона обновления текущего релиза конфигурации.
  5. Если интерфейс не отображает нужную команду, воспользуемся меню Функции для технического специалиста: откроем регистр сведений Правила для обмена данными, найдем строку правил регистрации для нужного плана обмена и перезапишем ее из типового макета конфигурации.

Способ 2. Корректировка обработчика в правилах регистрации (ПРО)

Если в вашей организации используются модифицированные правила регистрации объектов, проанализируем их структуру в конфигурации «1С:Конвертация данных 2.1» и внесем необходимые правки вручную.

  1. Откроем правила регистрации объектов в «Конвертации данных».
  2. Найдем узел метаданных РегистрСведений.ГражданствоФизическихЛиц.
  3. Перейдем к обработчику «При обработке», где содержится ошибочный вызов метода.
  4. Удалим обращение к Объект.ЭтоНовый либо добавим строгую проверку типа сущности перед вызовом специфических ссылочных методов:

Если ОбщегоНазначенияКлиентСервер.ЭтоСсылка(ТипЗнч(Объект)) Тогда
    Если Не Объект.ЭтоНовый() Тогда
        // Ссылочная логика проверки
    КонецЕсли;
Иначе
    // Логика для наборов записей регистров
КонецЕсли;

Обратите внимание: чтобы проверить факт новизны для набора записей регистра сведений, необходимо обращаться к отбору Объект.Отбор и выполнять запрос к физической таблице базы данных на наличие существующих записей по данным измерениям.

Способ 3. Отключение авторегистрации для регистра в БП

Если кадровый учет и расчет заработной платы вынесены во внешнюю программу (1С:ЗУП 3.0), а конфигурация «Бухгалтерия предприятия» выступает исключительно приемником кадровой информации, регистрировать изменения по регистру ГражданствоФизическихЛиц со стороны БП не имеет практического смысла.

В таком случае в правилах регистрации достаточно полностью отключить авторегистрацию для набора записей данного регистра. Это исключит запуск сбойного кода при интерактивном вводе физических лиц пользователями, и синхронизация продолжит функционировать в штатном режиме.

← На главную