Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

ERR_AGGREGATE_FIELD_NOT_FOUND 1С:Предприятие и СУБД

1С Ошибка: Поле агрегатного объекта не обнаружено — Причины и решение

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка выполнения: {ОбщийМодуль.Имя.Модуль(Строка)}: Поле агрегатного объекта не обнаружено (ИмяПоля).
  • Сбой возникает при обращении к несуществующему ключу Структуры, колонке ТаблицыЗначений, реквизиту Шапки или строки ТабличнойЧасти.
  • Ошибка проявляется при изменении формата ответа стороннего REST/JSON API или обновлении метаданных.

1. Безопасное чтение свойств структуры с помощью метода Свойство()

Вместо прямого обращения через точку Параметры.МоеПоле используйте метод Свойство():

// НЕВЕРНО (вызовет ошибку, если ключа нет):
// Значение = ДанныеКлиента.Телефон;

// ВЕРНО:
ЗначениеТелефона = "";
Если ДанныеКлиента.Свойство("Телефон", ЗначениеТелефона) Тогда
    // Поле существует, значение помещено в переменную ЗначениеТелефона
    Сообщить("Телефон: " + ЗначениеТелефона);
Иначе
    // Поле отсутствует в структуре
    ЗаписьЖурналаРегистрации("Внимание", УровеньЖурналаРегистрации.Предупреждение,,, "Поле Телефон не найдено в структуре!");
КонецЕсли;

2. Проверка наличия колонок в Таблице Значений

Перед обращением к строке таблицы проверьте наличие нужной колонки:

Если ТаблицаТоваров.Колонки.Найти("СуммаСкидки") <> Неопределено Тогда
    Для Каждого Стр Из ТаблицаТоваров Цикл
        Стр.СуммаСкидки = 0;
    КонецЦикла;
КонецЕсли;

3. Проверка типов перед обращением через точку

Если переменная содержит Неопределено или примитивный тип вместо агрегатного объекта (Структуры / Выборки / Строки):

// Защитная проверка
Если ТипЗнч(СтрокаДерева) = Тип("СтрокаДереваЗначений") Тогда
    СтрокаДерева.Количество = 10;
КонецЕсли;

4. Проверка регистра и опечаток в именах реквизитов

Проверьте точное соответствие имени реквизита в дереве метаданных Конфигуратора (опечатки, смешение латинских и русских букв 'C', 'O', 'A', 'P').

💡 Практика специалистов: При парсинге внешних API (JSON, XML) никогда не обращайтесь к полям десериализованных структур через точку. Всегда проверяйте входящие ключи через метод Структура.Свойство("Имя", ПеременнаяПолучатель).

Частые вопросы (FAQ)

Что такое 'Агрегатный объект' в терминологии 1С?

Агрегатный объект — это составной тип данных, содержащий коллекцию именованных элементов или свойств: Структура, Соответствие, ТаблицаЗначений, СтрокаТабличнойЧасти, ВыборкаИзРезультатаЗапроса, COMSafeArray.

В чем разница между Структурой и Соответствием при обращении к несуществующему ключу?

Обращение к несуществующему ключу Структуры через точку (Структура.Поле) вызывает фатальную ошибку 'Поле агрегатного объекта не обнаружено'. Соответствие при обращении по индексу (Соответствие[Ключ]) возвращает значение 'Неопределено' без ошибки.

Как создать структуру, которая не падает при обращении к отсутствующим полям?

Используйте объект ФиксированнаяСтруктура или используйте объект Соответствие вместо Структуры.

Почему ошибка возникает в отчете на СКД?

Если в выражении поля СКД указан путь к реквизиту, который был удален из метаданных или переименован при обновлении конфигурации.

Полезные материалы
Рекомендуем