Помощник для написания запроса в тонком клиенте
Краткое описание работы
При работе на территории заказчика может возникнуть необходимость срочно написать запрос на рабочем месте пользователя, где установлен только "Тонкий клиент" - например, посмотреть и оценить данные в базе. Программист может пользоваться для этого Консолью запросов, при этом главная трудность состоит в том, что Конструктор запроса в тонком клиенте недоступен, и запрос приходится писать вручную. Могут возникнуть затруднения не столько в знании синтаксиса и конструкций языка запросов, сколько от того, что нужно помнить наизусть имена таблиц и полей базы данных - ведь в тонком клиенте нельзя открыть Конфигуратор, чтобы посмотреть имена таблиц и полей.
Предлагаемый инструмент призван оказать помощь при ручном составлении запроса. Ему, конечно, очень далеко до Конструктора запроса 1С. По принципу действия он похож на Конструктор произвольного выражения (вспомогательный инструмент Конструктора запроса), а также на инструмент "шаблонов": текст запроса пишется путем "перетаскивания" мышью элементов из заранее полученных списков полей таблиц базы и Словаря конструкций языка запросов в поле текста запроса.
Таким образом, этот инструмент можно охарактеризовать лишь как Помощник (Mate) при ручном написании запроса.
Помощник представляет собой подчиненную экранную форму Консоли запросов, которая открывается из контекстного меню поля текста запроса Консоли (пункт меню Открыть "Пишем запрос в тонком клиенте").
С работой Консоли запросов можно ознакомиться здесь.
После открытия формы нужно получить список доступных таблиц языка запросов для данной базы - для этого нужно нажать кнопку Создать список доступных таблиц над полем Доступные на закладке Таблицы. Список доступных таблиц, на создание которого уходит несколько секунд, появляется в поле Доступные на закладке Таблицы.
В полученном списке нужно отметить флажками те таблицы, которые могут потребоваться в составляемом запросе, после чего надо нажать кнопку Получить описания помеченных таблиц. В результате для отмеченных флажком таблиц на основании метаданных конфигурации будут получены структуры описания их полей (у таблиц появятся дочерние элементы, как в списке таблиц Конструктора запроса), а флажки станут недоступны.
Важно отметить, что создаются описания не только отмеченных таблиц, но и всех ссылочных таблиц, участвующих в иерархии их данных на всех уровнях.
Таблицы, для которых получены описания полей, могут быть помещены в список Выбранные (двойным щелчком или по кнопке Выбрать). Им можно назначить псевдонимы (по кнопке Назначить псевдоним, расположенной над списком Выбранные, открывается форма Задать псевдоним) - и поля таблиц будут "перетаскиваться" в поле текста запроса с этими псевдонимами.
Когда таблицы для запроса выбраны, можно начать составлять текст запроса. Конструкции языка запросов можно "перетаскивать" мышью из списка конструкций на закладке Конструкции, в котором можно установить отбор по начальной букве. Обращения к таблицам и полям перетаскиваются из списка Выбранные на закладке Таблицы; при этом доступно разыменование ссылочных полей по всем уровням, как в Конструкторе запроса.
(Понятно, что любые элементы текста запроса можно также вводить и редактировать вручную с клавиатуры).
Имеющиеся описания могут быть уничтожены повторным нажатием кнопки Создать список доступных таблиц, при этом выводится предупреждающее сообщение.
По окончании написания запроса надо нажать кнопку OK - форма Помощника закроется, и запрос будет передан в Консоль запросов.
Контроль синтаксической правильности текста запроса полностью лежит на программисте.
Быстродействие
Работа с метаданными конфигурации является довольно накладной и ресурсоемкой, поэтому получение описаний помеченных таблиц может занимать значительное время.
Для УТ это время вполне приемлемо - например, получение описаний нескольких помеченных таблиц регистров накопления (в файловом режиме) происходит за 5-10 секунд.
Для БП и ЗУП это время может составлять уже 15-30 секунд.
Для УПП использовать Помощник нецелесообразно - составление описания даже одной виртуальной таблицы может занимать несколько минут в клиент-серверном режиме; в файловом режиме это время может доходить до нескольких десятков минут (вспомним, что при этом составляются также описания всех ссылочных таблиц по всем уровням).
Но все полученные описания сохраняются до закрытия основной формы Консоли запросов - т.е. в одном сеансе работы с Консолью форму Помощника можно открывать и закрывать неограниченное число раз без потери полученных описаний.
Пример работы
Пример работы с Помощником приводится в прилагаемом видеоролике - см. файл Video_Query_Mate.rar.
Ограничения
- Помощник работает только при варианте встроенного языка конфигурации Русский.
- Нет возможности получать описания временных таблиц пакетного запроса, все обращения к таким таблицам надо писать вручную.
- В текущей версии не поддерживается получение описаний таблиц изменения данных, таблиц бухрегистра без корреспонденции и таблиц перерасчетов.