Работа с запросами — это ежедневная рутина любого разработчика или администратора 1С. Использование консоли запросов значительно ускоряет процесс отладки и получения данных. Однако часто возникает ситуация, когда после скачивания или открытия консоли на управляемых формах кнопка конструктора оказывается неактивной или выдает сообщение об ошибке. Давайте подробно разберем, почему это происходит и как сделать так, чтобы визуальный редактор запросов стал доступен.
Для начала проанализируем ситуацию с точки зрения архитектуры 1С. В платформе «1С:Предприятие 8» существует несколько типов клиентских приложений: Тонкий клиент, Толстый клиент и Веб-клиент. Основная проблема заключается в том, что объект КонструкторЗапроса является частью программного ядра, которое физически отсутствует в дистрибутиве тонкого клиента.
Тонкий клиент предназначен для работы через интернет или в локальной сети, где основная вычислительная нагрузка ложится на сервер. В его библиотеках просто нет исполняемого кода для отрисовки сложного интерфейса конструктора. Поэтому, даже если вы используете самую современную консоль на управляемых формах, она не сможет вызвать встроенный конструктор, если сеанс запущен в режиме тонкого клиента. В этом случае система либо проигнорирует нажатие кнопки, либо выведет предупреждение: «Конструктор доступен только в толстом клиенте».
Разберем по шагам, как изменить настройки запуска базы, чтобы конструктор запросов заработал. Это не требует переустановки платформы, достаточно изменить параметры существующей информационной базы в списке запуска.
Теперь, когда сеанс запущен в режиме толстого клиента, платформа подгрузит необходимые библиотеки. Рассмотрим подробнее, как вызвать конструктор в самой консоли: часто кнопка может быть спрятана, но вы всегда можете нажать ПКМ (правой кнопкой мыши) в поле ввода текста запроса и выбрать пункт Конструктор запроса в контекстном меню.
Если вы работаете в современной типовой конфигурации (например, 1С:ERP, Управление торговлей 11 или Бухгалтерия предприятия 3.0), в них уже интегрированы средства для работы с запросами из состава Библиотеки стандартных подсистем (БСП). Проанализируем, как их найти:
Перейдите в меню Функции для технического специалиста (в старых версиях — «Все функции»). Если этот пункт не отображается, его нужно включить в настройках (Главное меню — Настройки — Параметры — Флажок «Режим технического специалиста»). В списке обработок найдите Консоль запросов. Помните, что даже встроенная консоль подчиняется тем же правилам: для работы конструктора базу все равно придется перезапустить в режиме толстого клиента.
Иногда политика безопасности или особенности настройки сервера не позволяют запускать толстый клиент. В такой ситуации мы можем использовать обходные пути. Рассмотрим ситуацию, когда нам нужно составить сложный запрос, работая в тонком клиенте:
Профессиональные разработчики часто используют двухсессионный метод. Вы запускаете один сеанс в тонком клиенте для проверки работы логики в реальных условиях пользователя, а второй сеанс той же базы — в толстом клиенте под учетной записью администратора. В толстом клиенте вы спокойно используете КонструкторЗапроса, формируете текст, а затем просто копируете его через буфер обмена в консоль, открытую в тонком клиенте. Это позволяет избежать постоянных перезапусков системы.
Также стоит упомянуть современные среды разработки, такие как 1C:Enterprise Development Tools (EDT). В них конструктор запросов встроен непосредственно в среду IDE. Это означает, что вы можете проектировать запрос в EDT независимо от того, как запущен клиентский сеанс, и даже независимо от наличия активного подключения к базе в данный конкретный момент.
Посмотрим на ограничения, которые невозможно обойти стандартными средствами. Если вы запускаете 1С через браузер (Веб-клиент) или на мобильном устройстве, штатный конструктор не будет работать никогда. Это связано с тем, что код конструктора написан на языке C++ и скомпилирован только под операционные системы Windows и Linux для десктопных приложений. В браузере исполняется JavaScript-код платформы, в котором визуальный редактор запросов не реализован.
Для таких случаев существуют редкие самописные консоли, где конструктор реализован средствами самой платформы (на управляемых формах), но их функционал значительно уступает штатному инструменту, и они редко поддерживают сложные соединения или вложенные запросы.
Если вы сами разрабатываете консоль или инструмент отладки, помните о правильном вызове конструктора в коде. Код должен проверяться на тип клиента, чтобы не вызвать падение системы:
#Если ТолстыйКлиентОбычноеПриложение Или ТолстыйКлиентУправляемоеПриложение Тогда
Конструктор = Новый КонструкторЗапроса;
Если Конструктор.ОткрытьМодально() Тогда
ТекстЗапроса = Конструктор.Текст;
КонецЕсли;
#Иначе
Предупреждение("Конструктор доступен только в толстом клиенте!");
#КонецЕсли
Использование директив компиляции #Если ТолстыйКлиент гарантирует, что ваш код не вызовет критическую ошибку при попытке обращения к несуществующему объекту в тонком клиенте.