Разработка и отладка запросов — это ежедневная задача любого программиста 1С. Однако при переходе на управляемые формы и работу в режиме тонкого клиента многие сталкиваются с неприятным ограничением: стандартная «Консоль запросов» с диска ИТС зачастую не позволяет запустить визуальный конструктор. В этой статье мы подробно разберем, почему так происходит, как обойти это ограничение и какие современные инструменты сделают вашу работу эффективнее.
Разберем ситуацию: почему в толстом клиенте конструктор работает, а в тонком — нет? Исторически объект КонструкторЗапроса был доступен только в контексте, имеющем доступ к библиотекам конфигуратора и толстого клиента. В старых версиях платформы 1С:Предприятие 8.3 попытка вызвать конструктор в тонком клиенте приводила к ошибке или простому отсутствию кнопки в интерфейсе.
Проанализируем техническую сторону вопроса. Начиная с версии платформы 8.3.5, разработчики 1С расширили возможности тонкого клиента, позволив вызывать нативный диалог конструктора непосредственно из управляемого интерфейса. Но для того чтобы это заработало в консоли запросов, код самой обработки должен быть написан с использованием соответствующих методов.
Если вы столкнулись с тем, что стандартная консоль с ИТС «молчит» при нажатии на кнопку конструктора, значит, она предназначена для работы в режиме толстого клиента. Рассмотрим основные пути решения:
QueryConsoleThinClient_8.3.5.epf. В этих обработках вызов конструктора реализован через программное создание объекта КонструкторЗапроса, что стало возможным в новых версиях платформы.Для понимания того, как современные консоли обходят ограничения, посмотрим на пример программного вызова конструктора запроса в управляемой форме. Рассмотрим фрагмент кода, который может использоваться в кнопке «Конструктор»:
&НаКлиенте
Процедура КомандаКонструктор(Команда)
Конструктор = Новый КонструкторЗапроса;
// Устанавливаем текущий текст из поля ввода в конструктор
Конструктор.Текст = Объект.ТекстЗапроса;
// Вызываем диалоговое окно конструктора
ОписаниеОповещения = Новый ОписаниеОповещения("ЗавершитьРаботуСКонструктором", ЭтотОбъект);
Конструктор.Показать(ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ЗавершитьРаботуСКонструктором(Результат, ДополнительныеПараметры) Экспорт
Если Результат <> Неопределено Тогда
// Возвращаем измененный текст обратно в консоль
Объект.ТекстЗапроса = Результат.Текст;
КонецЕсли;
КонецПроцедуры
В данном примере мы используем асинхронный метод Показать(), который корректно работает в тонком клиенте и не блокирует интерфейс, что является современным стандартом разработки на платформе 1С.
Рассмотрим более мощные инструменты, которые рекомендует сообщество для профессиональной разработки. Проанализируем их преимущества:
1. Инструменты разработчика (автор Tormozit)
Это целая экосистема для программиста. Консоль запросов в этом пакете умеет:
2. Консоли в интерфейсе «Такси» (с портала Infostart)
Многие авторы (например, Чистов или Гилев) выпустили свои версии консолей, оптимизированные под интерфейс «Такси». Их главные отличия:
3. Встроенные механизмы EDT (Enterprise Development Tools)
Если вы используете современную среду разработки EDT, вам доступна встроенная консоль запросов. Она работает независимо от типа клиента, так как интегрирована напрямую в среду разработки. Здесь реализована полноценная подсветка синтаксиса, автодополнение имен метаданных и моментальная проверка синтаксиса без обращения к серверу 1С.
Выясним причину, по которой многие старые консоли не справляются с пакетами запросов. При работе с МенеджерВременныхТаблиц в тонком клиенте важно, чтобы контекст выполнения запроса (серверный вызов) сохранял состояние менеджера. Рассмотрим, как это реализовано в продвинутых консолях:
Обычно используется специальный серверный модуль, который кэширует созданные временные таблицы в рамках сеанса. Это позволяет нам выполнить первую часть пакета, посмотреть результат, а затем вторым запросом обратиться к уже созданной временной таблице #ВТ_Данные.
Важно помнить, что даже самая продвинутая консоль может столкнуться с ограничениями в веб-клиенте (через браузер). Нативный конструктор платформы 1С — это исполняемый код, который не всегда может быть запущен внутри браузерной песочницы. В таких ситуациях мы рекомендуем:
Для эффективной работы в тонком клиенте 1С недостаточно просто взять первую попавшуюся консоль. Проанализировав ситуацию, мы рекомендуем использовать либо специализированную модифицированную обработку QueryConsoleThinClient, либо профессиональные пакеты типа «Инструментов разработчика». Это не только вернет вам привычный КонструкторЗапроса, но и даст инструменты для глубокого анализа производительности ваших алгоритмов.