Поле объекта не обнаружено 1С: 8 причин и как исправить

Дата: 21.09.2026 09:37:29
Ошибки 1С
Отладка
Реквизиты
Формы
Комментарий:
0
Платформа:
8.3
Конфигурация:
Любая
Формы:
Любые

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

Поле объекта не обнаружено в 1С: как читать текст ошибки

Полный текст выглядит так: {Документ.РеализацияТоваровУслуг.Форма.ФормаДокумента.Форма(112)}: Поле объекта не обнаружено (Склад). В фигурных скобках — модуль, в круглых после него — номер строки, в конце — имя, которое не нашлось. Префикс ВнешняяОбработка или ВнешнийОтчет в имени модуля сразу указывает на подключаемый файл.

В найденной строке возьмите выражение вида Значение.Склад и ответьте на три вопроса:

  1. Какого типа значение слева от точки? В отладчике это видно по ТипЗнч().
  2. Есть ли у этого типа такое поле — в метаданных, в тексте запроса, в реквизитах формы?
  3. Где выполняется строка — на клиенте или на сервере? На клиенте доступных полей меньше.

Опечатка: регистр не важен, «ё» и латиница — важны

Встроенный язык не различает регистр: объект.склад и Объект.Склад равнозначны. Зато «ё» вместо «е» и латинская буква, похожая на кириллическую, дают другое имя. Латиница попадает в код при копировании с сайтов и наборе в английской раскладке, а в тексте ошибки такое имя выглядит правильным.

// Было: сначала «Поле объекта не обнаружено (СчётУчёта)» — в имени «ё»,
// после исправления — «(Cумма)»: первая «C» набрана латиницей
&НаСервере
Процедура ЗаполнитьСчетаУчетаНаСервере(СчетПоУмолчанию)
	Итого = 0;
	Для Каждого СтрокаТовары Из Объект.Товары Цикл
		СтрокаТовары.СчётУчёта = СчетПоУмолчанию;
		Итого = Итого + СтрокаТовары.Cумма;
	КонецЦикла;
	Объект.СуммаДокумента = Итого;
КонецПроцедуры

// Стало: имена скопированы из дерева метаданных
&НаСервере
Процедура ЗаполнитьСчетаУчетаНаСервере(СчетПоУмолчанию)
	Итого = 0;
	Для Каждого СтрокаТовары Из Объект.Товары Цикл
		СтрокаТовары.СчетУчета = СчетПоУмолчанию;
		Итого = Итого + СтрокаТовары.Сумма;
	КонецЦикла;
	Объект.СуммаДокумента = Итого;
КонецПроцедуры

// Проверка имени из текста ошибки: латиница и «ё» видны по кодам символов
&НаКлиентеНаСервереБезКонтекста
Функция ПодозрительныеСимволы(ИмяПоля)
	Найдено = Новый Массив;
	Для Позиция = 1 По СтрДлина(ИмяПоля) Цикл
		Код = КодСимвола(ИмяПоля, Позиция);
		ЭтоЛатиница = (Код >= 65 И Код <= 90) Или (Код >= 97 И Код <= 122);
		Если ЭтоЛатиница Или Код = 1025 Или Код = 1105 Тогда // 1025, 1105 — «Ё» и «ё»
			Найдено.Добавить(СтрШаблон("«%1» в позиции %2", Сред(ИмяПоля, Позиция, 1), Позиция));
		КонецЕсли;
	КонецЦикла;
	Возврат СтрСоединить(Найдено, "; ");
КонецФункции

// ПодозрительныеСимволы("Cумма") вернёт: «C» в позиции 1

Если имя из ошибки совпадает с реквизитом «на глаз», проверьте его функцией ПодозрительныеСимволы(): поиск по правильному имени строку с латиницей не найдёт. Латиница бывает законной, например в префиксе расширения, поэтому функция только подсказывает.

Реквизит удалён или переименован после обновления

Типовой код обновляется вместе с метаданными, а падают внешние обработки, расширения и доработки под прошлый релиз. Перед удалением реквизита разработчики типовых обычно переименовывают его с префиксом Удалить. Нашли в дереве УдалитьСклад — данные уже переехали, новое место ищите в описании релиза.

// Было: обработка писалась под прошлый релиз, где Склад был реквизитом шапки.
// В новом релизе склад перенесли в товары — «Поле объекта не обнаружено (Склад)»
&НаСервереБезКонтекста
Функция СкладДокумента(ДокументСсылка)
	Возврат ДокументСсылка.Склад;
КонецФункции

// Стало: сначала метаданные, потом чтение оттуда, где склад есть в этом релизе
&НаСервереБезКонтекста
Функция СкладДокумента(ДокументСсылка)
	МетаДокумента = ДокументСсылка.Метаданные();
	Если МетаДокумента.Реквизиты.Найти("Склад") <> Неопределено Тогда
		Возврат ДокументСсылка.Склад;
	КонецЕсли;

	МетаТовары = МетаДокумента.ТабличныеЧасти.Найти("Товары");
	Если МетаТовары = Неопределено Или МетаТовары.Реквизиты.Найти("Склад") = Неопределено Тогда
		ВызватьИсключение СтрШаблон("В документе %1 нет реквизита Склад ни в шапке, ни в товарах",
			МетаДокумента.Имя);
	КонецЕсли;

	Запрос = Новый Запрос;
	Запрос.Текст = СтрШаблон(
		"ВЫБРАТЬ ПЕРВЫЕ 1
		|	Т.Склад КАК Склад
		|ИЗ
		|	Документ.%1.Товары КАК Т
		|ГДЕ
		|	Т.Ссылка = &Ссылка
		|УПОРЯДОЧИТЬ ПО
		|	Т.НомерСтроки", МетаДокумента.Имя);
	Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Склад;
	КонецЕсли;
	Возврат Неопределено;
КонецФункции

Реквизиты.Найти() работает с метаданными в памяти, без обращения к базе. Если склада нет нигде, функция падает с понятным текстом, а не с голым «Поле объекта не обнаружено».

На клиенте: поля нет в данных формы

Клиентский код управляемой формы видит данные формы, а не объект базы, и ссылка на клиенте — только идентификатор: её реквизиты через точку не читаются. Код из обычных форм падает на Объект.Контрагент.ИНН и любой «второй точке» вроде Объект.Ссылка.Дата.

Реквизит ссылки

// Было: на тонком и веб-клиенте реквизиты по ссылке не читаются —
// «Поле объекта не обнаружено (ИНН)»
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
	Если ЗначениеЗаполнено(Объект.Контрагент) И ПустаяСтрока(Объект.Контрагент.ИНН) Тогда
		Сообщить("У контрагента не заполнен ИНН");
	КонецЕсли;
КонецПроцедуры

// Стало: реквизит ссылки читается на сервере
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
	Если ЗначениеЗаполнено(Объект.Контрагент) И ПустаяСтрока(ИННКонтрагента(Объект.Контрагент)) Тогда
		Сообщить("У контрагента не заполнен ИНН");
	КонецЕсли;
КонецПроцедуры

&НаСервереБезКонтекста
Функция ИННКонтрагента(Контрагент)
	Возврат Контрагент.ИНН;
КонецФункции

Функция без контекста не передаёт данные формы на сервер, вызов лёгкий. В конфигурациях на БСП внутри неё удобнее ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Контрагент, "ИНН") — она читает одно поле запросом.

Текущие данные динамического списка

В Элементы.Список.ТекущиеДанные есть только поля, выведенные колонками в таблицу формы, и поля с флажком «Использовать всегда». Удалили колонку — код, который её читал, падает.

// Было: колонки «Склад» на форме списка нет, поле не загружено —
// «Поле объекта не обнаружено (Склад)»
&НаКлиенте
Процедура ОткрытьСклад(Команда)
	ПоказатьЗначение(, Элементы.Список.ТекущиеДанные.Склад);
КонецПроцедуры

// Стало, вариант 1: у поля Склад реквизита Список включено «Использовать всегда»
&НаКлиенте
Процедура ОткрытьСклад(Команда)
	ТекущиеДанные = Элементы.Список.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	ПоказатьЗначение(, ТекущиеДанные.Склад);
КонецПроцедуры

// Стало, вариант 2: реквизиты формы не меняем, склад читаем по ссылке на сервере
&НаКлиенте
Процедура ОткрытьСклад(Команда)
	ДокументСсылка = Элементы.Список.ТекущаяСтрока;
	Если ДокументСсылка = Неопределено Тогда
		Возврат;
	КонецЕсли;
	ПоказатьЗначение(, СкладПоСсылке(ДокументСсылка));
КонецПроцедуры

&НаСервереБезКонтекста
Функция СкладПоСсылке(ДокументСсылка)
	Возврат ДокументСсылка.Склад;
КонецФункции

Флажок ставится в редакторе формы у поля Склад реквизита Список. Второй вариант не трогает реквизиты формы: ТекущаяСтрока списка документов — это ссылка, склад читается по ней на сервере. Проверка на Неопределено защищает от другой ошибки, когда строка не выделена.

Ключа нет в структуре

Отсутствующий ключ структуры даёт ту же ошибку. Типичные источники — сохранённые настройки старой версии обработки, ответ сервиса из ПрочитатьJSON() и параметры, собранные в разных местах по-разному.

// Было: настройки сохранила прошлая версия обработки, ключа ДатаСреза в них нет —
// «Поле объекта не обнаружено (ДатаСреза)»
&НаСервере
Процедура ВосстановитьНастройки()
	Настройки = ХранилищеОбщихНастроек.Загрузить("ВыгрузкаЦен", "Основные");
	Если Настройки <> Неопределено Тогда
		Объект.Склад = Настройки.Склад;
		Объект.ДатаСреза = Настройки.ДатаСреза;
	КонецЕсли;
КонецПроцедуры

// Стало: каждый ключ читается через Свойство() со значением по умолчанию
&НаСервере
Процедура ВосстановитьНастройки()
	Настройки = ХранилищеОбщихНастроек.Загрузить("ВыгрузкаЦен", "Основные");
	Если ТипЗнч(Настройки) <> Тип("Структура") Тогда
		Возврат;
	КонецЕсли;
	Объект.Склад = ЗначениеНастройки(Настройки, "Склад", Объект.Склад);
	Объект.ДатаСреза = ЗначениеНастройки(Настройки, "ДатаСреза", НачалоДня(ТекущаяДатаСеанса()));
КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗначениеНастройки(Настройки, Ключ, ЗначениеПоУмолчанию)
	Значение = Неопределено;
	Если Настройки.Свойство(Ключ, Значение) Тогда
		Возврат Значение;
	КонецЕсли;
	Возврат ЗначениеПоУмолчанию;
КонецФункции

ЗначениеНастройки() не полагается на содержимое второго параметра Свойство() при отсутствии ключа и возвращает умолчание явно. Остальные приёмы работы с ключами — в статье Структура 1С.

Поля нет в ВЫБРАТЬ запроса

У выборки и у таблицы из Выгрузить() есть только поля секции ВЫБРАТЬ, и называются они по псевдонимам после КАК, а не по именам реквизитов.

// Было: «Поле объекта не обнаружено (Цена)» — поля нет в ВЫБРАТЬ;
// после его добавления — «(Сумма)»: в запросе поле названо СуммаСтроки
&НаСервереБезКонтекста
Процедура ВывестиТовары(ДокументСсылка)
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Т.Номенклатура КАК Номенклатура,
		|	Т.Количество КАК Количество,
		|	Т.Сумма КАК СуммаСтроки
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК Т
		|ГДЕ
		|	Т.Ссылка = &Ссылка";
	Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Сообщить(СтрШаблон("%1: %2 * %3 = %4", Выборка.Номенклатура,
			Выборка.Количество, Выборка.Цена, Выборка.Сумма));
	КонецЦикла;
КонецПроцедуры

// Стало: поле есть в ВЫБРАТЬ, обращения идут по псевдонимам после КАК
&НаСервереБезКонтекста
Процедура ВывестиТовары(ДокументСсылка)
	Запрос = Новый Запрос;
	Запрос.Текст =
		"ВЫБРАТЬ
		|	Т.Номенклатура КАК Номенклатура,
		|	Т.Количество КАК Количество,
		|	Т.Цена КАК Цена,
		|	Т.Сумма КАК СуммаСтроки
		|ИЗ
		|	Документ.РеализацияТоваровУслуг.Товары КАК Т
		|ГДЕ
		|	Т.Ссылка = &Ссылка";
	Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		Сообщить(СтрШаблон("%1: %2 * %3 = %4", Выборка.Номенклатура,
			Выборка.Количество, Выборка.Цена, Выборка.СуммаСтроки));
	КонецЦикла;
КонецПроцедуры

В запросе с ОБЪЕДИНИТЬ имена полей берутся из первого запроса: псевдоним, заданный только во втором, в выборке не появится. Если текст собирается по настройкам, проверяйте поле через Результат.Колонки.Найти("Цена") до обхода.

Колонка табличной части вместо реквизита шапки

Одно имя может быть в шапке документа, в табличной части или в обоих местах. Код, написанный для документа со складом в строках, падает на документе со складом в шапке, и наоборот.

// Модуль объекта документа
// Было: склад здесь — реквизит шапки, а код ищет его в строке товаров:
// «Поле объекта не обнаружено (Склад)»
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	Движения.ТоварыНаСкладах.Записывать = Истина;
	Для Каждого СтрокаТовары Из Товары Цикл
		Движение = Движения.ТоварыНаСкладах.ДобавитьПриход();
		Движение.Период = Дата;
		Движение.Склад = СтрокаТовары.Склад;
		Движение.Номенклатура = СтрокаТовары.Номенклатура;
		Движение.Количество = СтрокаТовары.Количество;
	КонецЦикла;
КонецПроцедуры

// Стало: реквизиты шапки берутся у документа, колонки — у строки
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
	Движения.ТоварыНаСкладах.Записывать = Истина;
	Для Каждого СтрокаТовары Из Товары Цикл
		Движение = Движения.ТоварыНаСкладах.ДобавитьПриход();
		Движение.Период = Дата;
		Движение.Склад = Склад;
		Движение.Номенклатура = СтрокаТовары.Номенклатура;
		Движение.Количество = СтрокаТовары.Количество;
	КонецЦикла;
КонецПроцедуры

В строке Движение.Склад = СтрокаТовары.Склад имя встречается дважды, и текст ошибки не говорит, у какого значения его нет: регистр без измерения Склад даст то же сообщение. Разнесите выражение на две строки или вычислите обе части в отладчике.

Стандартные реквизиты: Наименование есть не у всех

Универсальный код — журнал обмена, групповая обработка, логирование — часто считает, что у любой ссылки есть Код и Наименование. Набор стандартных реквизитов зависит от вида объекта:

Вид объектаСтандартные реквизитыЧего нет
СправочникКод, Наименование; Родитель и Владелец — у иерархических и подчинённыхНомер, Дата; Код при нулевой длине кода
ДокументНомер, Дата, Проведен, ПометкаУдаленияКод, Наименование, Родитель
ПеречислениеРеквизитов нет, только представлениеКод, Наименование
// Общий модуль (сервер)
// Было: функция журнала обмена считает, что у любой ссылки есть Код
// и Наименование. На документе: «Поле объекта не обнаружено (Код)»
Функция ОписаниеСсылки(Ссылка) Экспорт
	Возврат СокрЛП(Ссылка.Код) + " " + Ссылка.Наименование;
КонецФункции

// Стало: стандартные реквизиты выбираются по виду объекта метаданных
Функция ОписаниеСсылки(Ссылка) Экспорт
	МетаОбъекта = Ссылка.Метаданные();
	Если Метаданные.Документы.Содержит(МетаОбъекта) Тогда
		Возврат СтрШаблон("№ %1 от %2", Ссылка.Номер, Формат(Ссылка.Дата, "ДЛФ=D"));
	КонецЕсли;
	Если Метаданные.Справочники.Содержит(МетаОбъекта) И МетаОбъекта.ДлинаКода > 0 Тогда
		Возврат СокрЛП(Ссылка.Код) + " " + Строка(Ссылка);
	КонецЕсли;
	// Перечисления, справочники без кода и прочее — платформенное представление
	Возврат Строка(Ссылка);
КонецФункции

Метаданные.Документы.Содержит() определяет вид объекта без перебора имён, а Строка(Ссылка) даёт представление любой ссылки, включая перечисления.

Внешняя обработка или печатная форма под другую конфигурацию

Одинаковые по смыслу реквизиты в разных типовых называются по-разному: договор в документах Бухгалтерии 3.0 — ДоговорКонтрагента, в Управлении торговлей 11 — Договор. Обработка, написанная под одну конфигурацию, в другой падает на первом таком обращении.

// Модуль объекта внешней печатной формы (сервер)
// Было: написано под Бухгалтерию 3.0, в УТ 11 —
// «Поле объекта не обнаружено (ДоговорКонтрагента)»
Функция ДанныеДляПечати(ДокументСсылка) Экспорт
	Данные = Новый Структура;
	Данные.Вставить("Контрагент", ДокументСсылка.Контрагент);
	Данные.Вставить("Договор", ДокументСсылка.ДоговорКонтрагента);
	Возврат Данные;
КонецФункции

// Стало: имя реквизита выбирается по метаданным из списка вариантов
Функция ДанныеДляПечати(ДокументСсылка) Экспорт
	МетаДокумента = ДокументСсылка.Метаданные();
	ИмяДоговора = ИмяСуществующегоРеквизита(МетаДокумента, "ДоговорКонтрагента, Договор");
	Если ИмяДоговора = "" Тогда
		ВызватьИсключение СтрШаблон("Печатная форма не подходит к документу ""%1"": нет реквизита договора",
			МетаДокумента.Синоним);
	КонецЕсли;
	Данные = Новый Структура;
	Данные.Вставить("Контрагент", ДокументСсылка.Контрагент);
	Данные.Вставить("Договор", ДокументСсылка[ИмяДоговора]);
	Возврат Данные;
КонецФункции

Функция ИмяСуществующегоРеквизита(МетаОбъекта, Варианты)
	Для Каждого Вариант Из СтрРазделить(Варианты, ",", Ложь) Цикл
		Имя = СокрЛП(Вариант);
		Если МетаОбъекта.Реквизиты.Найти(Имя) <> Неопределено Тогда
			Возврат Имя;
		КонецЕсли;
	КонецЦикла;
	Возврат "";
КонецФункции

Варианты имени собраны в одном месте, проверка идёт по метаданным, а квадратные скобки ДокументСсылка[ИмяДоговора] подставляют имя из переменной. Для одной базы проще отдельная версия под её конфигурацию — универсальность окупается, когда баз несколько.

Как быстро найти место ошибки: стек и отладчик

  • Подробный текст. В окне ошибки откройте подробности или отчёт об ошибке: там модуль, номер строки и стек вызовов.
  • Остановка по ошибке. В конфигураторе включите «Отладка → Остановка по ошибке» с фрагментом «Поле объекта не обнаружено»: отладчик встанет на нужной строке, даже внутри Попытка.
  • Вычислить выражение. Shift+F9 на переменной слева от точки покажет её тип и доступные поля, окно «Стек вызовов» — откуда пришло значение.
  • Журнал регистрации хранит полный текст, если код пишет туда ошибки.

Диагностике мешает Попытка, которая глотает исключение:

// Было: исключение проглочено — модуль, строка и имя поля потеряны
&НаСервере
Процедура ЗагрузитьНаСервере(АдресФайла)
	Попытка
		ЗагрузитьЦены(АдресФайла); // ваша серверная процедура загрузки
	Исключение
		Сообщить("Не удалось загрузить цены");
	КонецПопытки;
КонецПроцедуры

// Стало: полный текст — в журнал регистрации, первопричина — пользователю
&НаСервере
Процедура ЗагрузитьНаСервере(АдресФайла)
	Попытка
		ЗагрузитьЦены(АдресФайла);
	Исключение
		Информация = ИнформацияОбОшибке();
		ЗаписьЖурналаРегистрации("ЗагрузкаЦен", УровеньЖурналаРегистрации.Ошибка, , ,
			ПодробноеПредставлениеОшибки(Информация));
		Сообщить("Не удалось загрузить цены: " + МестоОшибки(Информация));
	КонецПопытки;
КонецПроцедуры

&НаКлиентеНаСервереБезКонтекста
Функция МестоОшибки(Информация)
	Первопричина = Информация;
	Пока Первопричина.Причина <> Неопределено Цикл
		Первопричина = Первопричина.Причина;
	КонецЦикла;
	Возврат СтрШаблон("%1 [%2, строка %3: %4]", Первопричина.Описание, Первопричина.ИмяМодуля,
		Формат(Первопричина.НомерСтроки, "ЧГ=0"), СокрЛП(Первопричина.ИсходнаяСтрока));
КонецФункции

Снаружи часто видна обёртка «Ошибка при вызове метода контекста (Записать)», а исходная ошибка лежит в свойстве Причина — МестоОшибки() спускается к ней по цепочке.

Как писать код, который не падает

  • Проверяйте метаданные один раз — Реквизиты.Найти() и ТабличныеЧасти.Найти() в начале процедуры вместо Попытка вокруг каждого обращения.
  • ЕстьРеквизит-подход. В конфигурациях на БСП есть готовая ОбщегоНазначения.ЕстьРеквизитОбъекта(ИмяРеквизита, МетаданныеОбъекта).
  • Структуры извне читайте через Свойство() с умолчанием, а набор полей любого значения — через ЗаполнитьЗначенияСвойств в структуру-шаблон: отсутствующие свойства пропускаются без ошибки.
  • Падайте громко. Нет обязательного реквизита — исключение с именем объекта и реквизита, а не молчаливый пропуск.

Все способы проверки с примерами — в статье Есть свойство объекта 1С.

Если ошибка в типовой конфигурации после обновления

Порядок одинаковый для ЗУП, Розницы, Бухгалтерии и других типовых:

  1. Сохраните полный текст ошибки с модулем и номером строки и запишите, на каком действии она возникает.
  2. Модуль начинается с ВнешняяОбработка или ВнешнийОтчет — виновата подключённая обработка, отчёт или печатная форма. Отключите её в списке дополнительных отчётов и обработок и запросите у автора версию под ваш релиз.
  3. Убедитесь, что обновление завершилось: обработка данных после обновления прошла без ошибок, версия платформы не ниже указанной в описании релиза.
  4. Повторите действие на копии базы без расширений. Ошибка исчезла — пишите разработчику расширения.
  5. Конфигурация не изменялась, а ошибка повторяется на чистой копии — это ошибка релиза. Обратитесь на линию консультации через партнёра 1С по договору ИТС: текст ошибки, версии конфигурации и платформы, порядок действий.
  6. Конфигурация дорабатывалась — исправляет программист, который вёл доработки или обновление.

Типичные ошибки

Соседние сообщения платформы похожи, но причины у них другие:

Текст ошибкиЧто значитПример
Поле объекта не обнаружено (Имя)У объекта нет свойства с таким именемВыборка.Цена без поля в запросе
Метод объекта не обнаружен (Имя)Нет метода, вызванного со скобкамиДокументСсылка.Записать() — записывают объект из ПолучитьОбъект()
Значение не является значением объектного типа (Имя)Слева от точки Неопределено, Null, строка или числоТекущиеДанные.Склад без выделенной строки, Выборка.Контрагент.ИНН при Null из левого соединения
Переменная не определена (Имя)Ошибка компиляции: имя без точки нигде не объявленоНесуществующий реквизит шапки в модуле объекта
Поле не найдено "Т.Имя"Ошибка в тексте запроса: поля нет в таблице-источникеТ.Цена в таблице без такой колонки

Тип значения слева от точки проверяется через ТипЗнч() — подробнее в статье Тип значения 1С.

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

Почему ошибка появилась после обновления, если код никто не менял?

Изменились метаданные: реквизит переименовали, перенесли в табличную часть или пометили префиксом Удалить, а внешние обработки, расширения и доработки обращаются к старому имени.

1С пишет «Поле объекта не обнаружено» при формировании отчёта — где искать?

Смотрите модуль в тексте: ВнешнийОтчет — устарел подключённый отчёт. Если модуль типовой, проверьте, повторяется ли ошибка на стандартных настройках варианта. Ошибки в запросе схемы компоновки выглядят иначе — «Поле не найдено».

Можно ли обернуть обращение в Попытку и забыть?

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

Влияет ли регистр букв в имени реквизита?

Нет, регистр не учитывается ни в именах реквизитов, ни в ключах структуры, ни в колонках таблицы значений. Ошибку дают «ё» вместо «е» и латиница среди кириллицы.

Когда проще заказать

Если после обновления ошибка всплывает в нескольких обработках или внешнюю печатную форму нужно адаптировать под ваш релиз, быстрее отдать задачу программисту. Опишите её на странице разместить задачу с полным текстом ошибки — оценка бесплатная, направления работ — на странице услуг по доработке 1С.

По теме

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.


1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.