При разработке расширений конфигурации в среде 1С:Предприятие 8.3 разработчики часто сталкиваются с ситуацией, когда при попытке составить запрос к заимствованному справочнику через штатный конструктор запросов в списке полей отсутствуют стандартные реквизиты, например, ЭтоГруппа или Родитель, хотя в основной конфигурации справочник является иерархическим и эти поля доступны. Разберем по шагам, почему так происходит, как устроена работа конструктора запросов в расширениях и какими способами можно решить эту задачу.
Проанализируем контекст разработки и выполнения программного кода в 1С. Важно понимать ключевое различие между работой конструктора запросов в конфигураторе и выполнением сформированного текста запроса в режиме 1С:Предприятие:
Если нам необходимо полноценно использовать конструктор запросов прямо в модулях расширения, разберем порядок действий для настройки свойств заимствованного справочника:
ЭтоГруппа и Родитель автоматически станут доступны конструктору.Стандартные реквизиты заимствованного справочника в расширении, найдем нужный реквизит (например, ЭтоГруппа) и через контекстное меню добавим его в расширение.Посмотрим на пример текста запроса, который становится доступен для редактирования в конструкторе:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Наименование КАК Наименование,
| Номенклатура.ЭтоГруппа КАК ЭтоГруппа
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| НЕ Номенклатура.ЭтоГруппа";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Обработка элементов справочника
КонецЦикла;
Рассмотрим альтернативный подход, который часто применяется на практике, когда заимствовать большое количество метаданных в расширение нецелесообразно. Если запрос сложный и обращается к десяткам регистров, табличных частей и справочников, заимствование каждого объекта исключительно ради открытия конструктора сильно перегружает расширение и усложняет его дальнейшую поддержку.
Разберем эффективные варианты обхода этого ограничения:
ЭтоГруппа, дописываем текст запроса вручную прямо в коде модуля без вызова конструктора.При работе с расширениями важно следить за согласованностью параметров совместимости. Разберем ключевые правила настройки свойства РежимСовместимости:
Версия 8.3.6, то и в свойствах расширения обязан быть выставлен режим Версия 8.3.6.ПередЗавершениемРаботы, ПриЗавершенииРаботы). Отключать режим совместимости у типовых конфигураций следует только при их полном обновлении до версий БСП, адаптированных к работе без совместимости.