Переход с обычного интерфейса на управляемый (УФ) часто вызывает у разработчиков 1С дискомфорт, связанный с поиском привычных инструментов. Одной из самых острых проблем является отсутствие мощной встроенной консоли запросов, которая позволяла бы не только получать данные, но и выполнять над ними произвольные алгоритмы, анализировать временные таблицы и работать в условиях отказа от модальности. Разберем наиболее эффективные решения этой задачи, проанализируем их возможности и научимся использовать продвинутые функции для отладки сложных запросов.
Начнем с самого доступного варианта — консоли запросов, входящей в состав Библиотеки стандартных подсистем (БСП). Это базовый инструмент, который есть практически в любой современной конфигурации. Рассмотрим его основные характеристики:
Однако, как отмечают опытные разработчики, функциональность типовой консоли сильно ограничена. Проанализируем ситуацию: если вам нужно не просто посмотреть результат, а программно обработать его (например, создать документы на основе выборки), типовой инструмент вам не поможет. В этом случае стоит обратить внимание на расширенные версии.
Для тех, кому нужен функционал «как в обычном приложении», существует мощная альтернатива — продвинутые консоли запросов (часто упоминаемые как «Оружие победы»). Разберем по шагам, как реализовать в них выполнение произвольных алгоритмов над результатом запроса.
Многие пользователи не сразу замечают эту возможность, так как она скрыта в интерфейсе. Посмотрим, как это работает на практике:
Пример типичного алгоритма, который можно запустить прямо в такой консоли:
// Пример обработки результата запроса
Для Каждого СтрокаТЗ Из Результат1 Цикл
НовыйДокумент = Документы.ПриходныйКассовыйОрдер.СоздатьДокумент();
НовыйДокумент.Дата = ТекущаяДата();
НовыйДокумент.СуммаДокумента = СтрокаТЗ.Сумма;
НовыйДокумент.Контрагент = СтрокаТЗ.Контрагент;
// Дополнительная логика проведения
НовыйДокумент.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
Одной из сложнейших задач при отладке в управляемых формах является визуализация временных таблиц. В типовой консоли БСП для этого часто приходится делать дополнительные выборки. В продвинутых инструментах этот процесс автоматизирован. Выясним причину, почему это важно: при работе со сложными пакетами (например, в ЗУП 3 или ERP) ошибка может крыться в промежуточном звене пакета, а не в финальном результате.
Рассмотрим, как упрощается работа с ВТ в современных консолях:
ВЫБРАТЬ * ИЗ ВТ....Нельзя не упомянуть «Инструменты разработчика» (devtools). Хотя исторически они ориентированы на обычные формы, они прекрасно работают с управляемыми формами при запуске в режиме толстого клиента управляемого приложения. Проанализируем преимущества этого подхода:
Инструменты разработчика позволяют подкидывать готовую таблицу значений в параметры запроса перед его выполнением. Это уникальная функция, которая редко встречается в других консолях. Если ваш запрос должен использовать внешнюю таблицу, переданную в параметр через МенеджерВременныхТаблиц, IR станет незаменимым помощником.
Разберем дополнительные возможности, которые появились в инструментарии разработчика 1С за последнее время и которые значительно упрощают жизнь программиста:
1. Анализ плана выполнения запроса: Некоторые современные консоли позволяют получить SQL-план запроса. Это помогает понять, почему запрос тормозит, используются ли индексы или происходит полное сканирование таблицы (Full Scan). При анализе ситуации в высоконагруженных базах это первоочередная задача.
2. Фоновое выполнение: В управляемом приложении длительный запрос может привести к обрыву соединения по таймауту или «зависанию» интерфейса. Продвинутые консоли умеют запускать выполнение в фоновом задании на сервере. Рассмотрим преимущества: вы можете прервать выполнение запроса, не закрывая сам сеанс 1С.
3. Перехват запросов при отладке:
Часто возникает задача — вытащить запрос из середины сложного серверного метода со всеми установленными параметрами. Для этого существуют расширения, которые позволяют «поймать» объект Запрос и передать его в консоль. Это избавляет от ручного копирования десятков параметров типа УникальныйИдентификатор или Массив.
Пример того, как программно подготовить данные для анализа (если вы пишете свой вспомогательный инструмент):
// Получение структуры параметров запроса для отладки
Функция ПолучитьПараметрыДляКонсоли(ОбъектЗапрос) Экспорт
Результат = Новый Структура;
Для Каждого Параметр Из ОбъектЗапрос.Параметры Цикл
Результат.Вставить(Параметр.Ключ, Параметр.Значение);
КонецЦикла;
Возврат Результат;
КонецФункции
Выбор консоли зависит от сложности ваших задач. Посмотрим на итоговую матрицу решений:
Помните, что использование современных инструментов — это не просто удобство, а способ значительно сократить время на поиск ошибок и оптимизацию кода в среде «1С:Предприятие 8».