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

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

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

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

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С споткнулся о неизвестный идентификатор.

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