Как исправить ошибку «Поле объекта не обнаружено (ПолучениеНовыхЭД)» при открытии настроек программы

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

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

Анализируем причину возникновения ошибки

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

{ОбщаяФорма.НастройкаПрограммы.Форма(308)}: Поле объекта не обнаружено (ПолучениеНовыхЭД)

Эта формулировка в контексте 1С означает, что программный код пытается обратиться к некоторому объекту через точку (например, Метаданные.РегламентныеЗадания.ИмяОбъекта), но объект с таким именем в системе отсутствует. В данном случае проблема локализована в строке 308 модуля формы НастройкаПрограммы.

Выясним причину такого поведения. Рассмотрим строку кода, которая вызывает исключение:


мРегламентноеЗаданиеПолучениеНовыхЭД = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ПолучениеНовыхЭД);

Здесь система пытается найти ссылку на предопределенное регламентное задание ПолучениеНовыхЭД. Если в дереве метаданных конфигурации имя этого задания отличается (например, оно называется ЗаданиеПолучениеНовыхЭД или вовсе удалено), платформа 1С не находит соответствия и выбрасывает ошибку «Поле объекта не обнаружено».

Проанализируем ситуацию: почему так происходит? Чаще всего это следствие некорректного обновления конфигурации. Например, если конфигурация была сильно доработана и при очередном обновлении на новый релиз типовой код обновился (стал искать ПолучениеНовыхЭД), а сами объекты метаданных остались старыми или были переименованы вручную разработчиком ранее.

Пошаговое решение проблемы через Конфигуратор

Для исправления ситуации нам потребуется доступ в Конфигуратор с правами на изменение конфигурации. Рассмотрим по шагам, что необходимо сделать:

  1. Поиск объекта в дереве метаданных. Откроем дерево конфигурации. Перейдем в ветку Общие -> Регламентные задания. Посмотрим внимательно на список имен. Нам нужно найти задание, которое отвечает за получение новых электронных документов (ЭДО). Скорее всего, оно будет называться ЗаданиеПолучениеНовыхЭД или как-то похоже.
  2. Проверка соответствия имен. Если мы видим, что в дереве метаданных объект называется иначе, чем указано в ошибке, у нас есть два пути: либо переименовать объект в дереве (что может повлечь другие ошибки, если на него завязаны другие модули), либо поправить программный код.
  3. Правка модуля формы. Рассмотрим второй вариант как более безопасный для конкретной формы. Находим в дереве метаданных Общие -> Общие формы -> НастройкаПрограммы.
  4. Щелкнем правой кнопкой мыши по форме и выберем Открыть модуль.
  5. Нажмем Ctrl + G и введем номер строки 308 (или воспользуемся поиском Ctrl + F по тексту "ПолучениеНовыхЭД").

Теперь приведем код в соответствие с реальностью. Если наше регламентное задание в метаданных называется ЗаданиеПолучениеНовыхЭД, то изменим строку кода следующим образом:


// Было:
// мРегламентноеЗаданиеПолучениеНовыхЭД = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ПолучениеНовыхЭД);

// Стало:
мРегламентноеЗаданиеПолучениеНовыхЭД = РегламентныеЗадания.НайтиПредопределенное(Метаданные.РегламентныеЗадания.ЗаданиеПолучениеНовыхЭД);

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

Дополнительные факторы и использование расширений

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

Проанализируем список установленных расширений:

Почему это критично для работы?

Функционал ПолучениеНовыхЭД отвечает за автоматический обмен данными с оператором электронного документооборота. Когда форма НастройкаПрограммы не открывается, вы теряете возможность не только настроить обмен документами, но и изменить любые другие системные константы, параметры учета или интерфейсные настройки, которые выведены на эту форму.

Рассмотрим еще один технический момент: иногда ошибка может возникать из-за кэша метаданных. Если вы только что обновили конфигурацию и уверены, что имена совпадают, попробуйте запустить базу с параметром /ClearCache. Это заставит платформу заново пересчитать дерево метаданных и исключит вероятность обращения к «призрачным» объектам, которых уже нет в текущей версии кода.

Подводя итог, можно сказать, что решение данной проблемы всегда кроется в синхронизации имен объектов метаданных и обращений к ним в коде встроенного языка. Будьте внимательны при объединении конфигураций и всегда проверяйте ссылки на регламентные задания, так как они часто подвергаются рефакторингу со стороны разработчиков типовых решений (БСП и БЭД).

← На главную