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

03.02.25

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

Консоль запросов общего назначения для работы с запросами на платформе 1С8 (управляемые формы). Поставляется как расширение (которое необходимо для сохранения запросов из отладки), но может использоваться как внешняя обработка.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Расширение bm_Запросы, версия 1.2.6:
.cfe 235,21Kb ver:1.2.6.3
4
4 Скачать (1 SM) Купить за 1 850 руб.

Моё почтение, господа.
На досуге решил сочинить свою личную консоль запросов — простую обработку общего назначения с основными возможностями.
Работа над обработкой была начата летом 2021 г. после прочтения книги "Язык запросов 1С" — поначалу в учебных целях. Написана с нуля. В дальнейшем стала основным рабочим инструментом при работе с запросами.
В рамках работы над продуктом был разработан собственный экспериментальный конструктор запроса, и последовали иные дополнения.
При разработке акцент был сделан в первую очередь на эргономичность. Поэтому не было цели утяжелять обработку решениями, могущими повлиять на её отзывчивость. Связанным требованием является использование штатных возможностей платформы в своей естественной среде обитания.
В настоящее время расширение состоит из следующих объектов:
— Обработка Консоль запросов
— Обработка Структура хранения базы данных
— Обработка Движения документа
— Документ Корректировка регистров 
Все обработки могут быть выгружены в файл и использоваться как внешние.

Обработка Консоль запросов

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

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



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

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

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

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

Реализовано 2 способа сохранения запроса из отладчика.

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

 

—Преобразование запроса в строку.

Может быть, возможен и такой способ получения запроса в строку (если файл обработки расположен на сервере):

ВнешниеОбработки.Создать("<Каталог>\bm_КонсольЗапросов.epf", Истина, ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()).ЗапросВСтроку(Запрос)

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

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

В текущей версии обработки реализована возможность помещения из таблиц значений с колонками типа значения Тип и МоментВремени за счёт использования промежуточных таблиц.

Если открыть такие таблицы в конструкторе ТЗ, то Тип будет преобразован в строку, МоментВремени — в ссылку на документ. Обратное преобразование также выполняется, хотя особого смысла в этом нет: если мы отлаживаем запрос из конфигурации, то у нас нет цели изменять временную таблицу, а если мы добавляем таблицу значений, то у нас наверно нет цели назначить колонке таблицы типы Тип или МоментВремени (такую таблицу нельзя поместить, но технически можно добавить новую таблицу значений как временную таблицу). Тем не менее, обратное преобразование реализовано.

Заметим, что строковое представление типа формируется так как это указывается в выражении запроса. "Помещение" таблицы значений с колонкой типа значения Тип формируется именно так.

Обработка временной таблицы, где встречаются колонки с обоими типами значений Тип и МоментВремени (одна колонка типа значения Тип, другая — МоментВремени) отсутствует.

Отладка отражения в учете в ERP

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

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

Окно настроек обработки:

Было реализовано чтение логов техножурнала по текущему запросу / инструкции.
Каталог текущих логов автоматически не заполняется — папка указывается вручную (при выборе каталога исходным каталогом является каталог логов техножурнала). Чтение логов протестировано на windows для файлового режима работы, mssql и postgresql.

Для работы с техножурналом надо только заполнить каталог текущих логов и установить флаг "Тег запроса". В отличие от консоли запросов ИТС обработка не генерирует конфигурацию техножурнала (она уже должна быть настроена), определение идентификатора процесса 1С также отсутствует — поэтому каталог текущих логов выбирается вручную.
Путь к файлу конфигурации журнала формируется справочно (если найден; если он есть, то может быть и не найден).
В безопасном режиме флаг работы с ТЖ недоступен. 

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

 

Обработка Консоль запросов. Схема запроса

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

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

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

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

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

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

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

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

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

 

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

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

 

 

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

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

 

Обработка Движения документа

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

 

Документ Корректировка регистров

Необходимо добавить в расширение и движения документа необходимые типы документов.
Искусственный / гипотетический пример:

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

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

11.24:

— Реализована возможность исполнения запросов с временными таблицами с колонками типа Тип, МоментВремени.
— Добавлена функция ЗапросВСтроку.

01.25:
В том числе:
— Возможность задания фиксированной ширины колонок при выводе результата в табличный документ (может быть удобно для выгрузки в файл)
— Сохранение результатов запроса при переключении между запросами
— Выполнение запросов в фоновом задании (требуется программный интерфейс БСП и наличие данного расширения)
— Чтение логов техножурнала

02.25 (обновлена текущая версия): Добавлена возможность выполнения предварительных запросов для формирования временных таблиц.

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

Протестировано на платформе 8.3.22.1603 (ранее), настоящий релиз платформы — 8.3.24.1624.

P.S. При установке расширения на используемую конфигурацию, возможно, необходимо будет пофиксить пару контролируемых свойств. Мы делаем следующим образом.
 

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.17.172

См. также

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

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

15500 руб.

02.09.2020    175055    973    403    

931

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

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    16634    113    52    

115

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

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

22200 руб.

06.10.2023    18062    49    18    

81

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

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

9360 руб.

17.05.2024    28235    97    48    

141

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

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

15000 руб.

10.11.2023    12389    49    33    

70

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18371    7    32    

43

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

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1474    2    0    

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