Telegram и WhatsApp в России работают с перебоями. Пишите нам в чат на сайте: ответ придёт и в окно, и на почту. Открыть чат

Коротко

Код обращается к реквизиту или методу через точку, а в переменной лежит не объект: «Неопределено», «Null», строка или число. В скобках — имя, к которому шло обращение.

Как выглядит

{ОбщийМодуль.ПримерМодуля.Модуль(310)}: Значение не является значением объектного типа (Контрагент)

Причины

  • Функция не нашла данные и вернула «Неопределено», а код сразу обратился к реквизиту результата.
  • В результате запроса с левым соединением поле не заполнено и имеет значение «Null»; обращение к его реквизитам даёт ошибку.
  • Составной реквизит не заполнен и содержит «Неопределено», а код рассчитывает на ссылку определённого типа.
  • В структуру или соответствие не записан ожидаемый ключ, и при получении значения пришло «Неопределено».
  • Значение пришло строкой или числом, например из файла загрузки или внешнего источника, а код ожидает ссылку.

Что делать

Пользователю

  1. Проверьте, заполнены ли в документе или карточке поля, нужные для операции: пустое поле — частая причина. Имя в скобках подсказывает, какое поле искать.
  2. Заполните поле и повторите действие.
  3. Если поля заполнены, передайте администратору полный текст ошибки вместе со строкой в фигурных скобках.

Администратору

  1. По модулю из фигурных скобок определите источник: типовой код, расширение или внешняя обработка.
  2. Найдите в журнале регистрации, на каком объекте возникла ошибка, и проверьте его реквизиты.
  3. Если ошибка в расширении или обработке и появилась после обновления, передайте её разработчику доработки.
  4. Если ошибка появилась после загрузки данных или обмена, проверьте загруженные объекты: ссылки, которые не удалось сопоставить при загрузке, могут остаться пустыми.

Разработчику

  1. В отладчике посмотрите тип значения перед обращением через точку.
  2. Добавьте проверку перед обращением: «ЗначениеЗаполнено» для ссылок, сравнение с «Неопределено» и «Null» для результатов запросов и составных реквизитов.
  3. В запросе с левым соединением обрабатывайте пустые поля функцией «ЕСТЬNULL» или выбирайте нужные реквизиты в самом запросе, а не получайте их в коде через точку.

Помогло?

Не помогло? Напишите специалисту

Ответ придёт на указанный email. Текст ошибки вставьте целиком, вместе со стеком.

Необязательно — ответим на email.

Частые вопросы

Чем эта ошибка отличается от «Поле объекта не обнаружено»?

Здесь значение вовсе не объект, и обращаться к его свойствам нельзя. «Поле объекта не обнаружено» означает, что объект есть, но нужного реквизита у него нет.

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

Она зависит от данных: на документах, где нужное поле заполнено, код проходит, а на тех, где пусто, падает.

Все ошибки раздела «Платформа» · Справочник ошибок 1С

Комментарии

Комментариев пока нет. Если решение сработало иначе, чем описано, расскажите об этом.