Глиф Учебники

Ошибка «Поле объекта не обнаружено»

Справочник · 1С:Предприятие · 2 минуты чтения

Ошибка «Поле объекта не обнаружено (Имя)» значит: код обратился к полю, которого у этого значения нет. В скобках — имя поля, а в начале сообщения — модуль и номер строки, где это случилось. Откройте эту строку.

Причины по порядку

Проверяйте по очереди, начиная с самой частой причины.

  1. Опечатка или другое имя

    Самая частая причина. Товар.Наименованиие вместо Товар.Наименование, или реквизит в конфигурации называется ЦенаПродажи, а в коде — Цена. Сверьте имя с деревом конфигурации: в нём важно Имя, а не синоним, который видит пользователь.

    Имя в коде не совпадало с деревом — исправьте его, и ошибка пропадёт.

    Не помогло — дальше: «Поля нет в запросе»

  2. Поля нет в запросе

    Выборка из запроса содержит только поля, перечисленные в ВЫБРАТЬ, под теми именами, что указаны после КАК:

    1С
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Товары.Наименование КАК Товар
        |ИЗ
        |    Справочник.Товары КАК Товары";
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл
        Сообщить(Выборка.Наименование); // ошибка: поле называется Товар
    КонецЦикла;

    Исправление — Выборка.Товар или добавить поле в запрос.

    После Выборка. стоит имя, которого нет после КАК, — поправьте имя или запрос, и ошибка пропадёт.

    Не помогло — дальше: «Реквизит ссылки на клиенте»

  3. Реквизит ссылки на клиенте

    В управляемом приложении на клиенте нельзя прочитать реквизит по ссылке: Ссылка.Цена в процедуре &НаКлиенте даст эту ошибку. Данные базы доступны только на сервере. Получите значение серверной функцией:

    1С
    &НаСервереБезКонтекста
    Функция ЦенаТовара(Товар)
        Возврат Товар.Цена;
    КонецФункции
    
    &НаКлиенте
    Процедура ПоказатьЦену(Команда)
        Сообщить(ЦенаТовара(Объект.Товар));
    КонецПроцедуры

    Здесь Объект.Товар — реквизит формы, ссылка на товар; цену по ней читает сервер.

    Строка с ошибкой — в процедуре с &НаКлиенте: перенесите чтение реквизита в серверную функцию, и ошибка пропадёт.

    Не помогло — дальше: «Нет ключа в структуре»

  4. Нет ключа в структуре

    У структуры обращение к отсутствующему ключу тоже даёт «Поле объекта не обнаружено». Проверяйте ключ методом Свойство:

    1С
    Если Параметры.Свойство("Склад") Тогда
        Склад = Параметры.Склад;
    КонецЕсли;

    Значение слева от точки — структура (например, Параметры): с проверкой через Свойство ошибка пропадёт.

    Не помогло — дальше: «Код написан для другой конфигурации»

  5. Код написан для другой конфигурации

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

Похожие ошибки

Как найти причину быстрее

Поставьте точку останова на строку из сообщения (клавиша F9 в конфигураторе), запустите отладку (F5) и, когда выполнение остановится, посмотрите, что лежит в переменной: какого она типа и какие у неё поля. Часто оказывается, что там вовсе не то значение, которое ожидалось, — например, Неопределено вместо ссылки.