Консоль запросов для управляемых форм

25.01.23

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

Расширение с консолью запросов и сохранением запросов из отладки для платформы 8.3.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
Расширение bm_Запросы:
.cfe 179,68Kb
34
34
1 SM
Скачать Купить за 1 850 руб.

Моё почтение, господа. На досуге решил сочинить свою личную консоль запросов.
Это простая обработка общего назначения с основными (или минимальными) возможностями.
Впоследствии для сохранения запросов из отладки было создано миниатюрное расширение (запросы хранятся в регистре сведений).
Потом был разработан собственный экспериментальный конструктор запроса.
Решение написано "с нуля": за основу ничего не взято. Как всё устроено в сторонних решениях особо не изучал, поэтому мог не соблюсти какие-то "каноны".
Обработка может быть выгружена в отдельный файл и использоваться независимо от расширения.

Описание консоли запросов

Слева расположено дерево запросов, справа — данные текущего запроса.
Событие активизации строки отсутствует (чтобы не нагружать форму), поэтому выбор текущего запроса (выделяется отдельным цветом) осуществляется через DoubleClick.

 

Для запроса возможно указание параметров и временных таблиц.

 

Параметры запроса и описания врем. таблиц заполняются автоматически (по кнопке Заполнить).
Тип значения параметра запроса устанавливается автоматически при заполнении.
Колонки таблиц значений из описаний врем. таблиц создаются автоматически, тип значения указывается самостоятельно.
Значение параметра типа Дата можно преобразовать в Границу.
Значение ссылочного типа можно преобразовать в список значений.
Значение параметра можно установить программно через выражение/инструкцию.

 

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

 

Некоторые типы значений параметров запроса преобразуются при передаче между формой и запросом (туда и обратно).
Так, тип МоментВремени в форме это ссылка на документ, тип Тип это ОписаниеТипов. При передаче в запрос ссылка на документ преобразуется в МоментВремени, ОписаниеТипов в Тип. При перехвате запроса выполняется обратное преобразование.
При перехвате запроса также может быть, что описание типа колонки пустое. Может произойти, если в запросе выбирается Неопределено. В этом случае перед обратным помещением врем. таблицы описание типов формируется как "Null, Число".

Результат запроса выводится в табличный документ.

 

Настройки

Чтобы сохранить запрос в регистр из отладчика, нужно вычислить выражение вида bm_Запросы.СохранитьЗапрос(Запрос, Наименование). Наименование — необязательный параметр.


Команда Листинг получает код на встроенном языке (параметры извлекаются из текста запроса).

 

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

 

Запросы (сохранённый запрос также можно выгрузить из регистра) сериализуются как дерево значений в файлы с расширениями
bmqval — простая сериализация через ЗначениеВФайл;
bmqxml — выгрузка в xml через СериализаторXDTO; этот способ добавлен позже специально для работы в безопасном режиме без разрешений; объём файла здесь больше, и время чтения/записи тоже.

 

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

 

В разделе Инструкция можно исполнить программный код. Если обработка запущена в типовой конфигурации, будет вызван метод ОбщегоНазначения.ВыполнитьВБезопасномРежиме, иначе — в аналогичной процедуре модуля обработки.
По умолчанию доступен параметр ТекстДокумент, который можно использовать в качестве консоли вывода. Параметр Запрос по умолчанию недоступен — для использования текущего запроса нужно установить флажок.

 

Описание конструктора запроса

Исторически у этого конструктора сформировалось наименование "Схема запроса". Наверно потому, что сначала это было просто дерево, отображающее объектную схему запроса. В то же время название достаточно удобно, чтобы отличать его от встроенного тонкого конструктора запроса. На командной панели обработки они и соседствуют с названиями "Конструктор" и "Схема".

На главной странице расположено дерево схемы запроса. Его составными элементами являются запрос, оператор и источник. Рядом отображается текст текущего запроса. В дерево можно добавить запрос, оператор и источник-вложенный запрос. Удалить можно запрос или оператор. Текст текущего запроса может быть изменён — при этом будет изменено и дерево схемы.

Оператор запроса открывается в отдельной странице. Слева расположены источники, справа — страницы с разнообразными свойствами. Там же находится дерево таблиц. Его структура не обязательно соответствует структуре доступных таблиц схемы запроса. Например, внешние источники данных было решено подчинить общей ветке, перерасчёты - продублировать рядом с регистрами расчёта, виртуальные таблицы связать с физическими.
В источники можно добавить таблицу из дерева таблиц и описание временной таблицы. Можно удалить источник, переименовать, заменить (как в привычном конструкторе).

Особенность работы с вложенным запросом такова, что добавить его возможно в дереве схемы (он будет подчинён оператору как источник, но в то же время являться и вложенным запросом), а удаление происходит из оператора.

У одного запроса может быть несколько операторов. В дереве схемы главным является первый оператор (с индексом 0). Только при открытии главного оператора доступны некоторые свойства и изменение состава/порядка колонок. Если операторы поменять местами, то главным станет другой оператор, т.е. признак завязан только на порядковый номер.
При работе с полями выборки можно включить "режим замены" (если оператор не главный, режим включен по умолчанию). В этом случае можно только устанавливать выражения полей (перетаскиванием или редактированием).

Как правило, добавление строк таблиц формы (источников, выбираемых полей, соединений, отборов и проч.) происходит через перетаскивание. Может быть так, что добавить строку можно и через перетаскивание, и через кнопку Добавить.
Для таблицы соединений реализован следующий приём добавления соединения: перетаскиваем на таблицу по порядку поле источника и поле приёмника (в обработке так называются левая и правая таблицы).

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

Параметры источников для удобства вынесены в одну общую таблицу.

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

Находясь в форме схемы запроса, можно передать и выполнить в консоли текст схемы запроса по текущий запрос. Если форма схемы будет закрыта без сохранения, то в консоли восстанавливается исходный текст запроса текущей строки.

Из нюансов внутренней реализации выделю следующее.

 

Резюмируя, некоторый условный минимум необходимых функций класса конструктора запроса в данной обработке присутствует. Что-то не реализовано: например, компоновка данных.
Настоящую версию было решено интегрировать с главной обработкой Консоль запросов. Как и ранее, обработка может быть выгружена и использоваться независимо от расширения.

 

Структура хранения базы данных



Расширение
Расширение по умолчанию включено в командный интерфейс.

 

Историй версий

09.22 — первая публикация
01.23 — добавлен конструктор запроса, обработка "Структура хранения базы данных"
08.23 — внесены некоторые изменения в таблицу параметров, добавлена работа с программным кодом

Тестирование

Протестировано на платформе 8.3.22.1603
Внимание: с некоторой версии платформы изменилось поведение списка значений на форме — данный нюанс ещё не отработан.

См. также

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

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

10000 руб.

02.09.2020    141081    774    391    

803

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

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

18000 руб.

06.10.2023    11669    31    6    

61

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

5400 руб.

17.05.2024    14212    35    29    

79

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

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

10000 руб.

10.11.2023    7347    27    4    

51

SALE! %

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

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

3600 2880 руб.

14.01.2013    182048    1104    0    

876

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

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

5000 руб.

07.02.2018    101203    243    97    

304

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

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

2400 руб.

24.09.2019    24541    17    15    

34

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

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

3000 руб.

27.08.2019    19490    7    8    

42
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 166 08.09.22 12:42 Сейчас в теме
Скачал, попробовал поставить в ЗУП - не пошло - не соответствует режим совместимости интерфейса.
Загрузил через конфигуратор, подправил, что-то еще про совместимость языка выдал, запустил - не появился
раздел консоли? Аналогично в Бухгалтерии... Вы бы проверили на типовых...
2. lone_mayson 49 08.09.22 12:52 Сейчас в теме
(1) Есть такая проблема, да. Лечится быстро. Совместимость языка вообще просто. Проблема расширений
Испробовано на УТ и на тяжелейших запросах ERP
3. leosoft 166 08.09.22 13:00 Сейчас в теме
Это я через конфигуратор подкорректировал, а как сделать, чтобы подсистема ps_Запросы появилась в интерфейсе?
4. lone_mayson 49 08.09.22 13:03 Сейчас в теме
(3) ох, ошибся я. ps_Запросы это в начале. сейчас bm_Запросы. описание ещё ранее написал. надо исправить маленько. в интерфейсе не появится. через все функции и добавить в избранное. как онo появится в интерфейсе
Оставьте свое сообщение