При разработке и отладке алгоритмов в 1С:Предприятие разработчики часто сталкиваются с необходимостью визуально конструировать сложные запросы. В обычных формах встроенный платформенный конструктор запросов вызывается штатно из любой консоли. Однако при переходе на управляемый интерфейс и тонкий клиент многие пользователи замечают, что пункт «Конструктор запросов» в меню консоли становится недоступен или просто отсутствует. Рассмотрим причину возникновения этого ограничения и разберем проверенные варианты его решения.
Выясним, почему штатный конструктор запросов не выносится в интерактивный диалог тонкого или веб-клиента. Классический визуальный диалог платформенного конструктора запросов реализован на уровне бинарных модулей Конфигуратора и толстого клиента. В тонком клиенте исполнительный код формы исполняется в ограниченном окружении, где платформенное модальное окно конструктора недоступно.
Начиная с версии платформы 8.3.5, разработчики 1С добавили специальный объект СхемаЗапроса, позволяющий программно разбирать и формировать структуру текста запроса. Однако классический платформенный диалог через контекстное меню информационной базы напрямую в тонком клиенте не вызывается без применения специальных режимов запуска или сторонних консолей.
Разберем самый простой и быстрый способ, позволяющий использовать привычную консоль с ИТС и штатный платформенный конструктор запросов. Для этого достаточно изменить режим запуска информационной базы:
/RunModeFThickClient.При запуске в режиме толстого клиента управляемого приложения весь интерфейс конфигурации остается управляемым, однако платформа активирует доступ к внутренним бинарным диалогам. В результате в консоли запросов при вызове контекстного меню на поле ввода текста запроса снова появляется пункт Конструктор запросов, и визуальное составление структуры метаданных работает в полном объеме.
Проанализируем вариант работы в чистом тонком клиенте без переключения режима запуска приложения. Для этой цели используются специализированные внешние обработки консолей запросов, визуальный интерфейс которых построен на элементах управляемой формы (деревья метаданных, таблицы полей и условий).
Такие обработки взаимодействуют с объектом СхемаЗапроса программно. Они позволяют выбирать таблицы и поля конфигурации непосредственно в тонком клиенте. Пример создания структуры запроса через объект СхемаЗапроса в коде выглядит следующим образом:
Схема = Новый СхемаЗапроса;
Пакет = Схема.ПакетЗапросов[0];
Оператор = Пакет.Операторы[0];
// Добавление таблицы метаданных в схему
ТаблицаСправочник = Оператор.Источники.Добавить("Справочник.Номенклатура", "Номенклатура");
Оператор.ВыбираемыеПоля.Добавить("Номенклатура.Ссылка");
Оператор.ВыбираемыеПоля.Добавить("Номенклатура.Код");
ТекстЗапроса = Схема.ПолучитьТекстЗапроса();
Стоит учитывать, что при автоматическом формировании текста запроса из объекта СхемаЗапроса платформа может удалять произвольные пользовательские комментарии в тексте или сбрасывать форматирование, поэтому данный инструмент удобен именно для визуальной сборки структуры.
Посмотрим на альтернативные варианты визуализации конструктора, когда требуется работать в веб-клиенте или тонком клиенте без модификации параметров запуска:
Для быстрой работы с классическим платформенным конструктором запросов в управляемом приложении наиболее эффективным решением является запуск сеанса в режиме толстого клиента управляемого приложения. Если же требованием является строго тонкий клиент, следует применить внешние консоли запросов, использующие объект СхемаЗапроса или встроенные графические редакторы на базе HTML-полей.