Центр Диагностики & База Системных Ошибок

Решения для Windows Server, Active Directory, 1С, СУБД, Linux, Cisco, MikroTik и IP-телефонии.

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

1С Ошибка: Поле не найдено (Field not found in query) — Причины и решение

Обновлено: 25.08.2026  ·  Официальная база знаний
  • Исключительная ситуация {(X, Y)}: Поле не найдено "ИмяПоля" при выполнении запроса или формировании отчета.
  • Ошибка при попытке обращения через точку к реквизиту составного ссылочного типа (Composite Type).
  • Сбой динамических списков на управляемых формах после обновления метаданных конфигурации.
  • Ошибка в вычисляемых полях СКД при обращении к несуществующим ресурсам.

1. Разбор типичных причин ошибки

  1. Опечатка в тексте запроса или псевдониме: поле в секции ГДЕ или СГРУППИРОВАТЬ ссылается на псевдоним из секции ВЫБРАТЬ (псевдонимы нельзя использовать в условиях ГДЕ).
  2. Разыменование составного типа: обращение через точку к реквизиту поля, которое может содержать несколько различных ссылочных типов.
  3. Удаление реквизита: обращение к реквизиту метаданных, который был удален или переименован разработчиком в конфигурации.

2. Корректная работа с составными типами через ВЫРАЗИТЬ

Если поле ДокументОснование имеет составной тип, обращение через точку вызовет ошибку. Используйте явное приведение типов:

// НЕПРАВИЛЬНО: Заказ.Контрагент (вызовет ошибку, если тип составной)
// ПРАВИЛЬНО:
ВЫБРАТЬ
    ВЫРАЗИТЬ(Реализация.Сделка КАК Документ.ЗаказКлиента).Менеджер КАК ОтветственныйМенеджер,
    ВЫРАЗИТЬ(Реализация.Сделка КАК Документ.ЗаказКлиента).Контрагент КАК Клиент
ИЗ
    Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
    Реализация.Сделка ССЫЛКА Документ.ЗаказКлиента

3. Исправление порядка использования псевдонимов

// НЕПРАВИЛЬНО: Псевдоним 'СуммаДокумента' используется в секции ГДЕ
ВЫБРАТЬ
    Товары.Количество * Товары.Цена КАК СуммаДокумента
ИЗ
    Документ.РеализацияТоваровУслуг.Товары КАК Товары
ГДЕ
    СуммаДокумента > 1000 // ОШИБКА: Поле не найдено!

// ПРАВИЛЬНО: Использование исходного выражения в условии
ГДЕ
    (Товары.Количество * Товары.Цена) > 1000
Практический опыт инженера: Всегда проверяйте запросы во встроенной консоли запросов перед вставкой в код BSL. При разыменовании полей всегда проверяйте признак 'Использовать в итогах' в СКД.

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

Почему в условиях ГДЕ нельзя использовать псевдонимы полей из ВЫБРАТЬ?

Согласно стандартам языка SQL и платформы 1С, секция ГДЕ (WHERE) логически вычисляется СУБД ДО формирования проекции выходных колонок ВЫБРАТЬ (SELECT), поэтому на этапе фильтрации псевдонимы еще не существуют.

Почему ошибка 'Поле не найдено' возникает в Динамическом Списке формы?

Пользователь мог настроить пользовательскую группировку или отбор по полю, которое разработчик удалил из запроса динамического списка в обновлении. Сбросьте настройки формы: Еще -> Установить стандартные настройки.

Что означает конструкция ВЫРАЗИТЬ(... КАК ...) в запросе?

Она сообщает транслятору 1С точный тип данных объекта, позволяя платформе сформировать корректный INNER/LEFT JOIN в SQL к конкретной таблице вместо неэффективного сканирования всех возможных таблиц составного типа.

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

Координаты {(X, Y)} в тексте ошибки указывают точный номер строки (X) и номер символа в строке (Y), где парсер 1С споткнулся о неизвестный идентификатор.