1C-CodeОшибки 1С → Значение не является значением объектного типа

Значение не является значением объектного типа — причины и решение

Сообщение платформы: Значение не является значением объектного типа

Вы обратились через точку к тому, у чего точки быть не может: к Неопределено, к NULL, к числу или строке. В скобках платформа называет то поле, которое вы пытались получить.

Отчего это бывает

1. Запрос вернул пустое значение, а по нему пошли дальше

Выборка.Контрагент.Наименование   // Контрагент пуст → NULL.Наименование

Самая частая причина. В левом соединении несовпавшие строки дают NULL, и обращение к его полю падает. Проверяйте до обращения или используйте ЕСТЬNULL прямо в запросе.

2. Поиск ничего не нашёл

Ссылка = Справочники.Номенклатура.НайтиПоКоду(Код);
Ссылка.Наименование      // если не нашлось — пустая ссылка

НайтиПоКоду и НайтиПоНаименованию возвращают ПУСТУЮ ССЫЛКУ, а не Неопределено. У пустой ссылки поля читаются, но дают пустые значения; а вот метод у Неопределено уже не вызвать. В тренажёре ссылок-пустышек нет: ненайденный элемент — это Неопределено, и проверять надо «<> Неопределено». Проверка нужна в обоих случаях, разница только в том, с чем сравнивать.

3. Функция ничего не вернула

Функция Найти(Код)
	Если Условие Тогда
		Возврат Элемент;
	КонецЕсли;
	// а если условие не сработало — вернётся Неопределено
КонецФункции

Что сделать

Проверяйте перед обращением: Если ЗначениеЗаполнено(Ссылка) Тогда или Если Ссылка <> Неопределено Тогда. В запросах — ЕСТЬNULL(Поле, ЗначениеПоУмолчанию). Проверка стоит одну строку, а её отсутствие роняет обработку у пользователя.

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

Открыть тренажёр

Разобраться глубже

Другие частые ошибки

Поле объекта не обнаружено Переменная не определена Метод объекта не обнаружен Индекс находится за границами массива Деление на ноль Преобразование значения типа «Строка» к числу невозможно