Как использовать конструктор запросов в консоли для управляемого приложения 1С?

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

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

Причина ограничения платформы в тонком клиенте

Выясним, почему штатный конструктор запросов не выносится в интерактивный диалог тонкого или веб-клиента. Классический визуальный диалог платформенного конструктора запросов реализован на уровне бинарных модулей Конфигуратора и толстого клиента. В тонком клиенте исполнительный код формы исполняется в ограниченном окружении, где платформенное модальное окно конструктора недоступно.

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

Способ 1. Запуск базы в режиме «Толстый клиент (управляемое приложение)»

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

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

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

Способ 2. Использование консолей на базе объекта СхемаЗапроса

Проанализируем вариант работы в чистом тонком клиенте без переключения режима запуска приложения. Для этой цели используются специализированные внешние обработки консолей запросов, визуальный интерфейс которых построен на элементах управляемой формы (деревья метаданных, таблицы полей и условий).

Такие обработки взаимодействуют с объектом СхемаЗапроса программно. Они позволяют выбирать таблицы и поля конфигурации непосредственно в тонком клиенте. Пример создания структуры запроса через объект СхемаЗапроса в коде выглядит следующим образом:


Схема = Новый СхемаЗапроса;
Пакет = Схема.ПакетЗапросов[0];
Оператор = Пакет.Операторы[0];

// Добавление таблицы метаданных в схему
ТаблицаСправочник = Оператор.Источники.Добавить("Справочник.Номенклатура", "Номенклатура");
Оператор.ВыбираемыеПоля.Добавить("Номенклатура.Ссылка");
Оператор.ВыбираемыеПоля.Добавить("Номенклатура.Код");

ТекстЗапроса = Схема.ПолучитьТекстЗапроса();

Стоит учитывать, что при автоматическом формировании текста запроса из объекта СхемаЗапроса платформа может удалять произвольные пользовательские комментарии в тексте или сбрасывать форматирование, поэтому данный инструмент удобен именно для визуальной сборки структуры.

Способ 3. Консоли запросов с HTML/JS-конструктором и расширения

Посмотрим на альтернативные варианты визуализации конструктора, когда требуется работать в веб-клиенте или тонком клиенте без модификации параметров запуска:

  1. Консоли с поле HTML-документа: В них визуальный конструктор запросов реализован на базе браузерного движка (JS/HTML), встроенного в управляемую форму. Это позволяет вызывать окно выбора объектов метаданных прямо внутри тонкого или веб-клиента.
  2. Использование расширений конфигурации (cfe): Подключение внешних консолей в виде расширений позволяет обходить ограничения безопасного режима обработок и дает прямой доступ к метаданным системы для формирования запросов.
  3. Подготовка запросов в средах разработки (EDT): Составление текста запроса выполняется во встроенном графическом конструкторе среды 1C:Enterprise Development Tools, после чего готовый текст вставляется в консоль запросов тонкого клиента для тестирования на реальных данных.

Итоги

Для быстрой работы с классическим платформенным конструктором запросов в управляемом приложении наиболее эффективным решением является запуск сеанса в режиме толстого клиента управляемого приложения. Если же требованием является строго тонкий клиент, следует применить внешние консоли запросов, использующие объект СхемаЗапроса или встроенные графические редакторы на базе HTML-полей.

← На главную