Помощник для написания запроса в тонком клиенте

01.04.11

Разработка - Инструментарий разработчика

Обработка дает возможность писать в тонком клиенте текст запроса не вручную, а перетаскивая имена таблиц, полей и конструкции языка запроса мышью.

Скачать файлы

Наименование Файл Версия Размер
Обработка Консоль запросов с Помощником
.epf 72,94Kb
269
.epf 72,94Kb 269 Скачать бесплатно
Видеоролик с примером работы
.rar 1,73Mb
67
.rar 1,73Mb 67 Скачать бесплатно

Помощник для написания запроса в тонком клиенте

 

Краткое описание работы

При работе на территории заказчика может возникнуть необходимость срочно написать запрос на рабочем месте пользователя, где установлен только "Тонкий клиент" - например, посмотреть и оценить данные в базе. Программист может пользоваться для этого Консолью запросов, при этом главная трудность состоит в том, что Конструктор запроса в тонком клиенте недоступен, и запрос приходится писать вручную. Могут возникнуть затруднения не столько в знании синтаксиса и конструкций языка запросов, сколько от того, что нужно помнить наизусть имена таблиц и полей базы данных - ведь в тонком клиенте нельзя открыть Конфигуратор, чтобы посмотреть имена таблиц и полей.

Предлагаемый инструмент призван оказать помощь при ручном составлении запроса. Ему, конечно, очень далеко до Конструктора запроса 1С. По принципу действия он похож на Конструктор произвольного выражения (вспомогательный инструмент Конструктора запроса), а также на инструмент "шаблонов": текст запроса пишется путем "перетаскивания" мышью элементов из заранее полученных списков полей таблиц базы и Словаря конструкций языка запросов в поле текста запроса.

Таким образом, этот инструмент можно охарактеризовать лишь как Помощник (Mate)  при ручном написании запроса.

Помощник представляет собой подчиненную экранную форму Консоли запросов, которая открывается из контекстного меню поля текста запроса Консоли (пункт меню Открыть "Пишем запрос в тонком клиенте").

С работой Консоли запросов можно ознакомиться здесь.

После открытия формы нужно получить список доступных таблиц языка запросов для данной базы - для этого нужно нажать кнопку Создать список доступных таблиц над полем Доступные на закладке Таблицы. Список доступных таблиц, на создание которого уходит несколько секунд, появляется в поле Доступные на закладке Таблицы.

В полученном списке нужно отметить флажками те таблицы, которые могут потребоваться в составляемом запросе, после чего надо нажать кнопку Получить описания помеченных таблиц. В результате для отмеченных флажком таблиц на основании метаданных конфигурации будут получены структуры описания их полей (у таблиц появятся дочерние элементы, как в списке таблиц Конструктора запроса),  а флажки станут недоступны.

Важно отметить, что создаются описания не только отмеченных таблиц, но и всех ссылочных таблиц, участвующих в иерархии их данных на всех уровнях.

Таблицы, для которых получены описания полей, могут быть помещены в список Выбранные (двойным щелчком или по кнопке Выбрать). Им можно назначить псевдонимы (по кнопке Назначить псевдоним, расположенной над списком Выбранные, открывается форма Задать псевдоним) - и поля таблиц будут "перетаскиваться" в поле текста запроса с  этими псевдонимами.

Когда таблицы для запроса выбраны, можно начать составлять текст запроса. Конструкции языка запросов можно "перетаскивать" мышью из списка конструкций на закладке Конструкции, в котором можно установить отбор по начальной букве. Обращения к таблицам и полям перетаскиваются из списка Выбранные на закладке Таблицы; при этом доступно разыменование ссылочных полей по всем уровням, как в Конструкторе запроса.

(Понятно, что любые элементы текста запроса можно также вводить и редактировать вручную с клавиатуры).

Имеющиеся описания могут быть уничтожены повторным нажатием кнопки Создать список доступных таблиц, при этом выводится предупреждающее сообщение.

По окончании написания запроса надо нажать кнопку OK - форма Помощника закроется, и запрос будет передан в Консоль запросов.

Контроль синтаксической правильности текста запроса полностью лежит на программисте.

 

Быстродействие

Работа с метаданными конфигурации является довольно накладной и ресурсоемкой, поэтому получение описаний помеченных таблиц может занимать значительное время.

Для УТ это время вполне приемлемо - например, получение описаний нескольких помеченных таблиц регистров накопления (в файловом режиме) происходит за 5-10 секунд.

Для БП и ЗУП это время может составлять уже 15-30 секунд.

Для УПП использовать Помощник нецелесообразно - составление описания даже одной виртуальной таблицы может занимать несколько минут в клиент-серверном режиме; в файловом режиме это время может доходить до нескольких десятков минут (вспомним, что при этом составляются также описания всех ссылочных таблиц по всем уровням).

Но все полученные описания сохраняются до закрытия основной формы Консоли запросов - т.е. в одном сеансе работы с Консолью форму Помощника можно открывать и закрывать неограниченное число раз без потери полученных описаний.

 

Пример работы

Пример работы с Помощником приводится в прилагаемом видеоролике - см. файл Video_Query_Mate.rar.

 

Ограничения

  1. Помощник работает только при варианте встроенного языка конфигурации Русский.
  2. Нет возможности получать описания временных таблиц пакетного запроса, все обращения к таким таблицам надо писать вручную.
  3. В текущей версии не поддерживается получение описаний таблиц изменения данных, таблиц бухрегистра без корреспонденции и таблиц перерасчетов.

 

 

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    122290    673    389    

716

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 15300 руб.

06.10.2023    7326    22    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 8000 руб.

10.11.2023    3583    11    1    

34

SALE! 30%

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2520 руб.

14.01.2013    177773    1074    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99365    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18130    6    8    

40

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28115    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

Инструментарий разработчика Обмен между базами 1C Платформа 1С v8.3 Платные (руб)

В процессе работы в 1С часто возникает потребность получить данные из другой базы.  Обычно это делается через COM-соединение, и время выполнения запроса при этом оставляет желать лучшего. В данной публикации представлено универсальное решение, позволяющее практически моментально выполнить произвольный код или запрос с параметрами в другой информационной базе через Web-сервис.

2400 руб.

24.09.2019    23605    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
0. boln 1040 01.04.11 16:39 Сейчас в теме
Обработка дает возможность писать в тонком клиенте текст запроса не вручную, а перетаскивая имена таблиц, полей и конструкции языка запроса мышью.

Перейти к публикации

1. Поручик 4670 01.04.11 16:39 Сейчас в теме
(0)
Описания метаданных можно сохранять и считывать в ХранилищеОбщихНастроек.Сохранить(Объект, Настройка, Значение);
2. Поручик 4670 01.04.11 16:42 Сейчас в теме
Настройки формы тоже можно сохранять. А так полезная фича.
3. boln 1040 01.04.11 19:45 Сейчас в теме
(2) Спасибо, насчет Хранилища - надо попробовать.

Я пытался на стороне сервера (в файловом режиме) при помощи ЗначениеВФайл() сохранять дерево в файл. Для УПП процесс сохранения-восстановления - десятки минут (все таблицы), файл серилизации получался чуть не 10 Мб. Так что всего можно и здесь ожидать...

Вся беда, ИМХО - в исключительно объектной модели работы с метаданными. Если бы их можно было запросом получать, то скорость была бы выше - в запросе можно сразу для всех объектов зацепить со всеми полями через точку. А так чуть ли не каждая точка неизвестно какую лавину неявных запросов вызывает.
6. Evg-Lylyk 4580 08.04.11 08:30 Сейчас в теме
(3) Метаданные можно получать динамически. Вообще считаю нерациональным когда такой объем данных обрабатывается, а пользователю нужна лишь часть. ИМХО их нужно получать по мере раскрытия веток...
Идея замена конструктора запросов 1С мне очень нравится... готов поучаствовать в подобном проекте
7. boln 1040 08.04.11 09:23 Сейчас в теме
(6)
1. Именно такой подход и реализован: получается лишь часть метаданных, потому что составляются описания лишь отмеченных пользователем таблиц.
2. Если выполнять получение по "мере раскрытия веток", то каждая ветка может открываться от секунды и больше, особенно при плохом канале (ведь при этом каждый раз будет происходить обращение к серверу, а сейчас все формируется за одно обращение к серверу, а все полученные структуры таблиц хранятся на клиенте). Вряд ли такая работа инструмента кому-нибудь понравится - по сложившемуся стереотипу ветка должна раскрываться мгновенно.
3. Встает вопрос: ссылочные типы тоже каждый раз получать при открытии ветки, или запоминать? Если каждый раз получать, то снова тормоза и нерационально. Если запоминать, то накладные расходы будут не меньше, чем в существующем варианте - и при этом ничуть не уменьшится число обращений к серверу.
4. Лично я был бы вполне доволен, если бы разработчики 1С распространили работу Конструктора запроса на тонкий клиент. Тогда все заботы были бы сняты.
8. Evg-Lylyk 4580 08.04.11 09:59 Сейчас в теме
(7) 1-3
Видимо мы говорим о разных вещах
Я увидел это
"файл серилизации получался чуть не 10 Мб"

И хотел сказать что предв. загрузка метаданыых и их описания не нужна... В 1С есть кэширование метаданных его более чем достаточно.
Суть подхода загружать только необходимый минимум если пинг до сервера не в секундах... все будет загружатся мгновенно.
Если "каждая ветка может открываться от секунды и больше" то предвар. загрузка всех метаданных будет в десятки раз больше при старте
Ответ по 3 если ветка раскрыта то уже все загружено и загружать повторно не надо
Есть конечно смысл в том чтобы одним запросом к серверу собрать все данные и потом не обращатся, но как мне кажется не рациональный подход. Тем более что при использовании дин. метода можно легко переходить к полному получению метаданных т.е как бы гибридный метод.

4. Да зачем им (в 1С) это делать!? есть же Толстый клиент (управляемое приложение). Тем более когда ты делаешь конструктор сам как в вашем случае ты можешь наделить его доп. функционалом.
9. boln 1040 08.04.11 10:30 Сейчас в теме
(8)
Весь вопрос в том, чем определяется этот "необходимый минимум".
А как работать с кэшем метаданных - это те же методы свойства? Если те же, то выигрыш в скорости будет незаметен.

"Если ветка раскрыта..." - а если в другой ветке имеется ссылка на тот же тип, что делать? Загружать или не загружать?

Вообще это мы все теоретизируем, а надо провести эксперимент.

Толстый клиент отмирает, как выражается тов. Радченко, "толстый клиент - это атавизм". Это промежуточные возможности для полного перехода к работе только с тонким клиентом.
4. boln 1040 02.04.11 14:03 Сейчас в теме
Вообще для повышения быстродействия думаю вскоре провести рефакторинг. Сейчас вижу, что в коде формирования описаний у меня много галимо тупых ходов: например, передача параметром-структурой в процедуры списка индексов и объекта "все ссылки" - вместо того, чтобы вынести их в переменные модуля... В общем, поковырять код надо, - может, и на УПП станет быстрее работать :D
5. Поручик 4670 03.04.11 01:23 Сейчас в теме
(4) На УТ 11 время генерации дерева вообще-то терпимо, на других конфах не пробовал. Может и не стоит заморачиваться с сохранением метаданных. Это не настолько частая операция.
10. Evg-Lylyk 4580 08.04.11 11:15 Сейчас в теме
"необходимый минимум"

нужно пользователю видно выводить
А как работать с кэшем метаданных - это те же методы свойства? Если те же, то выигрыш в скорости будет незаметен.

Повторное обращение проходит быстрее
"Если ветка раскрыта..." - а если в другой ветке имеется ссылка на тот же тип, что делать? Загружать или не загружать?

Загружать = Строить ваше дерево метаданных - то да загружать естественно
Вообще это мы все теоретизируем, а надо провести эксперимент.

Какого рода эксперимент? Давайте поставим задачу конкретнее.
Толстый клиент отмирает, как выражается тов. Радченко, "толстый клиент - это атавизм". Это промежуточные возможности для полного перехода к работе только с тонким клиентом.

Да я буду только рад если они сделают
11. boln 1040 08.04.11 13:27 Сейчас в теме
(10)
Evg-Lylyk пишет:
Какого рода эксперимент? Давайте поставим задачу конкретнее.
Вообще подумал-подумал - Ваша идея теоретически хороша: если при обращении к серверной операции с метаданными перед разворачиванием узла не будет ощутимой визуальной задержки, то это позволит избежать ожидания построения дерева, которое имеет место сейчас. Если же будет задержка хотя бы порядка секунды, то это уже плохо: дерево просто обязано разворачиваться мгновенно, пользователя будет колбасить от такой работы, он будет нервничать и щелкать по "плюсику" снова и снова... Проверю на опыте.
Evg-Lylyk; +1 Ответить
12. boln 1040 16.04.11 20:48 Сейчас в теме
1. Исправлены две ошибки описания таблиц объекта Задача.
2. Добавлена работа с объектом Последовательность.
Поручик; +1 Ответить
Оставьте свое сообщение