Почему в консоли запросов 1С не видны все поля и как это исправить

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

В практике разработчика 1С нередко возникает ситуация, когда при работе в режиме 1С:Предприятие стандартная Консоль запросов или встроенный Конструктор запросов ведут себя странно: список доступных полей объекта (справочника, документа или таблицы) в конструкторе оказывается неполным. При этом в Конфигураторе все реквизиты на месте, а сам запрос, если написать его вручную, может успешно выполняться. Рассмотрим подробно, почему возникает этот технический "косяк" и как восстановить видимость метаданных.

Шаг 1. Первичная диагностика: проверка выполнения запроса

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

Если мы знаем, что у справочника Номенклатура есть реквизит Артикул, который не отображается в дереве полей слева, попробуем выполнить следующий код:


ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.Артикул КАК Артикул
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Артикул <> ""

Если запрос выполняется и выдает результат, значит, на уровне базы данных и прав доступа проблем нет. Проблема кроется именно в механизме построения дерева метаданных в Конструкторе запросов.

Шаг 2. Влияние функциональных опций

Выясним одну из самых неочевидных причин: использование механизма Функциональных опций. В современных типовых конфигурациях (и даже в доработанных УПП) многие реквизиты привязаны к определенным опциям. Если в константах или настройках программы конкретная опция выключена, платформа 1С автоматически скрывает связанные с ней поля из интерфейса, включая Конструктор запросов в пользовательском режиме.

Проанализируем это в Конфигураторе:

  1. Найдем интересующий нас реквизит в дереве объектов.
  2. Перейдем на закладку Использование.
  3. Посмотрим в раздел Функциональные опции. Если там выбрана какая-либо опция, проверим ее значение в режиме 1С:Предприятие.

Решение: Если поле скрыто функциональной опцией, оно не появится в конструкторе, пока опция не будет включена. Однако вы всегда можете прописать его в тексте запроса вручную.

Шаг 3. Расширения конфигурации и "скрытые" патчи

Разберем ситуацию, связанную с расширениями. Если вы работаете в контексте расширения, Конструктор запросов будет видеть только те объекты и поля, которые добавлены в это конкретное расширение. Но даже если вы не создавали расширение сами, система может содержать автоматические патчи от 1С, которые влияют на схему метаданных.

Рассмотрим рекомендации по работе в таких условиях:

Шаг 4. Права доступа и механизм RLS

Часто разработчики полагают, что наличие роли ПолныеПрава снимает все ограничения. Однако это не всегда так. В типовых решениях (УПП, ERP, КА) могут быть настроены сложные ограничения на уровне записей (RLS). Если шаблоны RLS ограничивают доступ к полям по каким-то условиям (например, по организации или подразделению), Конструктор запросов может отфильтровывать эти поля.

Проанализируем права более детально:

Даже при наличии прав на "Чтение" объекта, у пользователя могут отсутствовать права на "Просмотр" конкретных реквизитов. В 1С это разные права. Если право Просмотр снято, поле исчезнет из всех визуальных списков, включая конструкторы запросов и отчеты.

Шаг 5. Проблема динамического обновления и кэширования

Выясним техническую причину, которую часто называют "демоническим обновлением". Если конфигурация обновлялась в динамическом режиме, пока пользователи работали в базе, возникает рассинхронизация кэша метаданных. Платформа начинает использовать устаревшее описание таблиц.

Для решения этой проблемы выполним следующие действия:

  1. Завершим все активные сеансы пользователей.
  2. Очистим локальный кэш на компьютере (папки в %AppData%\1C\1Cv8).
  3. В случае клиент-серверного варианта — перезапустим службу Агента сервера 1С:Предприятия.
  4. Если проблема сохраняется, выполним Тестирование и исправление базы данных с флагами "Реиндексация таблиц" и "Проверка логической целостности".

Шаг 6. Версия консоли и платформенные баги

Разберем ситуацию с программным кодом самой консоли. Разные версии консолей используют разные методы получения состава полей. Старые консоли на обычных формах часто обращаются к метаданным через объект Метаданные, который может возвращать неполную информацию в новых версиях платформы или при наличии режима совместимости.

Попробуем использовать альтернативные инструменты:

Резюме

Проанализировав проблему "исчезающих" полей, мы пришли к выводу, что чаще всего это связано либо с настройками Функциональных опций, либо с особенностями прав доступа View (Просмотр). Если же ручной запрос отрабатывает, а поля в списке нет — используйте ручной ввод имен полей (алиасов), так как это самый быстрый способ обойти визуальные ограничения конструктора.

← На главную