Коротко
Код обращается к реквизиту или методу через точку, а в переменной лежит не объект: «Неопределено», «Null», строка или число. В скобках — имя, к которому шло обращение.
Как выглядит
{ОбщийМодуль.ПримерМодуля.Модуль(310)}: Значение не является значением объектного типа (Контрагент)
Причины
- Функция не нашла данные и вернула «Неопределено», а код сразу обратился к реквизиту результата.
- В результате запроса с левым соединением поле не заполнено и имеет значение «Null»; обращение к его реквизитам даёт ошибку.
- Составной реквизит не заполнен и содержит «Неопределено», а код рассчитывает на ссылку определённого типа.
- В структуру или соответствие не записан ожидаемый ключ, и при получении значения пришло «Неопределено».
- Значение пришло строкой или числом, например из файла загрузки или внешнего источника, а код ожидает ссылку.
Что делать
Пользователю
- Проверьте, заполнены ли в документе или карточке поля, нужные для операции: пустое поле — частая причина. Имя в скобках подсказывает, какое поле искать.
- Заполните поле и повторите действие.
- Если поля заполнены, передайте администратору полный текст ошибки вместе со строкой в фигурных скобках.
Администратору
- По модулю из фигурных скобок определите источник: типовой код, расширение или внешняя обработка.
- Найдите в журнале регистрации, на каком объекте возникла ошибка, и проверьте его реквизиты.
- Если ошибка в расширении или обработке и появилась после обновления, передайте её разработчику доработки.
- Если ошибка появилась после загрузки данных или обмена, проверьте загруженные объекты: ссылки, которые не удалось сопоставить при загрузке, могут остаться пустыми.
Разработчику
- В отладчике посмотрите тип значения перед обращением через точку.
- Добавьте проверку перед обращением: «ЗначениеЗаполнено» для ссылок, сравнение с «Неопределено» и «Null» для результатов запросов и составных реквизитов.
- В запросе с левым соединением обрабатывайте пустые поля функцией «ЕСТЬNULL» или выбирайте нужные реквизиты в самом запросе, а не получайте их в коде через точку.
Помогло?
Работаете с 1С постоянно? После регистрации сопоставитель отвечает на 50 запросов в сутки вместо 10. Зарегистрироваться
Не помогло? Напишите специалисту
Ответ придёт на указанный email. Текст ошибки вставьте целиком, вместе со стеком.
Частые вопросы
Чем эта ошибка отличается от «Поле объекта не обнаружено»?
Здесь значение вовсе не объект, и обращаться к его свойствам нельзя. «Поле объекта не обнаружено» означает, что объект есть, но нужного реквизита у него нет.
Почему ошибка возникает не на всех документах?
Она зависит от данных: на документах, где нужное поле заполнено, код проходит, а на тех, где пусто, падает.
Комментарии
Комментариев пока нет. Если решение сработало иначе, чем описано, расскажите об этом.
Войдите, чтобы оставить комментарий.