Разработка и отладка запросов в среде тонкого клиента долгое время была сопряжена с определенными трудностями. В отличие от толстого клиента, где конструктор запросов доступен «из коробки», тонкий клиент на ранних этапах развития платформы 1С:Предприятие 8.3 требовал либо специализированных внешних инструментов, либо переключения режима запуска. В данной статье мы подробно разберем, как эффективно работать с запросами в тонком клиенте, какие внешние обработки для этого подходят и какие нюансы платформы следует учитывать.
Рассмотрим сначала стандартные возможности системы. Начиная с версии платформы 8.3.5, разработчики фирмы «1С» добавили возможность вызова конструктора запросов непосредственно в тонком клиенте. Однако стоит понимать техническую подоплеку этого процесса. Проанализируем, как это реализовано: конструктор в тонком клиенте работает через контекст сервера. Платформа упаковывает необходимые метаданные и передает их для визуализации интерфейса конструктора.
Если мы используем современные версии платформы (например, 8.3.15 и выше), работа конструктора стала значительно стабильнее. Тем не менее, как отмечают специалисты, даже на версии 8.3.12 могли возникать ошибки вида «поле не найдено», что зачастую связано с кэшированием метаданных или ограничениями прав доступа в конкретном сеансе. При возникновении подобных проблем рекомендуется очистить кэш или проверить доступность объектов метаданных для текущего пользователя.
Разберем наиболее популярные решения, которые выручают разработчиков, когда стандартных средств недостаточно. Одним из проверенных вариантов является консоль запросов от автора Сертакова В. С.. Эта обработка специально адаптирована под управляемые формы и успешно запускается в тонком клиенте, предоставляя привычный интерфейс конструктора.
Еще одним мощным инструментом являются «Инструменты разработчика» (ИР). Проанализируем их преимущества перед стандартными решениями:
Query Plan прямо в интерфейсе консоли.Пример типичного кода, который генерируют подобные консоли для использования в модулях:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка,
| Номенклатура.Код КАК Код
|ИЗ
| Справочник.Номенклатура КАК Номенклатура";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
// Обработка результата
КонецЦикла;
Важный нюанс, который мы должны рассмотреть — это использование фигурных скобок {}, предназначенных для Системы Компоновки Данных (СКД). Обычный конструктор запроса в тонком клиенте часто выдает ошибку при попытке редактирования текста с такими расширениями. Это происходит потому, что контекст вызова конструктора ограничен простым текстовым запросом.
Чтобы обойти это ограничение, современные консоли используют программную инициализацию объекта СхемаКомпоновкиДанных. Когда конструктор вызывается внутри контекста схемы, он начинает корректно распознавать и позволять редактировать параметры и условия, заключенные в фигурные скобки. Если вам часто приходится работать с отчетами, выбирайте консоли, построенные на базе СКД.
Посмотрим на ситуацию с другой стороны. Если вам срочно нужен полноценный конструктор со всеми возможностями, а внешней консоли под рукой нет, можно переключить режим запуска приложения. Даже если конфигурация работает в режиме «Такси» на управляемых формах, она все равно может быть запущена в режиме Толстого клиента (управляемое приложение).
Для этого в настройках информационной базы в списке баз или в параметрах отладки конфигуратора необходимо изменить режим запуска с «Авто» или «Тонкий клиент» на «Толстый клиент». Рассмотрим преимущества этого метода:
Важно: Для этого способа на компьютере пользователя должен быть установлен полноценный дистрибутив платформы, а не только тонкий клиент.
Проанализируем риски выполнения тяжелых запросов в тонком клиенте. Поскольку данные должны передаваться с сервера на клиент, получение результата в 100 000 строк может привести к зависанию интерфейса. Продвинутые консоли решают эту проблему через «ленивую загрузку» или постраничный вывод. При написании собственных инструментов отладки следует использовать объект ДанныеФормыКоллекция и ограничивать количество выводимых строк для обеспечения отзывчивости системы.
В современных реалиях 1С (версии 8.3.10+) наиболее удобным способом подключения консоли является использование расширений (.cfe). Подключив консоль как расширение, а не как внешнюю обработку, мы получаем ряд преимуществ:
.epf.Подводя итог, можно сказать, что для комфортной работы в тонком клиенте лучше всего иметь в арсенале проверенную внешнюю консоль (например, Сертакова или ИР) и помнить о возможности временного переключения в толстый клиент для решения особо сложных задач по проектированию запросов.