Конструктор запросов доступен только в толстом клиенте

Обновлено: 13.05.2024

Консоль запросов/отчетов, СКД, ADODB. Ввывод в таблицу значений, дерево или табличный документ(только для СКД)), обработка результата, произвольные обработчики расшифровки и прочие плюшки. Написана с нуля для платформы 8.3.х. На платформе 8.3.5 доступен Конструктор запросов в тонком клиенте.

(1) bayce, там вверху об этом немного есть… А если конкретно — приведите пример "остальных" — ткну пальцем "чем отличаются" :)

(3) Nebiros777, Спасибо! Буду признателен за соображения по поводу "что в нее добавить". Тот функционал, который есть сейчас был реализован исходя их моих частых потребностей (то есть без чего я лично просто не могу жить и к чему привык в аналогах под другие платформы), но понимая, что в тех навороченных аналогах возможно есть функционал, который я никогда не использовал, но он нужен другим. Если есть пожелания — пишите. Пока я в стадии поиска работы — могу уделить ей время 😉

эта ошибка появляется если без запроса нажим кнопку "ОБРАБОТКА"

: Преобразование значения к типу Булево не может быть выполнено
ТаблицаРезультата = РеквизитФормыВЗначение("РезультатТаблица", Тип(?(ТипРезультата,"ДеревоЗначений","ТаблицаЗначений")));


Может тогда файл должен распространяться бесплатно. А так получается, что "Тестер" ещё и приплачивает работодателю. (Чииииз)

  • Если после открытия сразу ввести текст запроса и выполнить, то выдаст ошибку. Нужно обязательно создать запрос в дереве.
  • Не меняется ширина дерева и текста запроса
  • Если в результате запроса нет строк, то таблица вообще не отображается
  • Если в результате запроса есть колонка с типом ТипЗначения, то выдается ошибка:

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

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

А должна? Если критичн добавлю, если хотябы какая-то таблица есть на выходе пакета — она отобразится "как есть" и реквизит формы и элемент убиваются и пересоздаются постоянно… Если на выходе результата ничего нет в пакете — то из ничего ТаблицуЗначений выдумать сложно ;-)

Как Вы знаете, надеюсь, чтобы элемент формы коллекции значений связать с реквизитом — типы должны соответсвовать (ОписанияТипов если быть точнее) именнно поэтому реквизит и элемент текущего результата рубится и создается заново… Это же еще и экономит ресурсы…

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

Я попробую некоторые методы оптимизировать через &НаСервереБезКонтекста, но многие из них требуют контекст ;-) посему "таскать барахло" считаю неразумным (тормоза интерфейса становяться визуальными)…

!! У меня есть идея одна поиграться с хитрым задействованием динамического списка для вывода, но надо поиграться еще с этим вариантом… Тогда результат вывода будет летать и творить с ним сами понимаете что можно будет ;-) /о результатах отпишу скоро или выложу апдейт, ждите/

За эту багу — реально огромное спасибо! Хотя пока не сильно понимаю(уже отсюда не попробовав) как ее победить, дело в том, что не все можно "катать между клиентом и сервером", как вы понимаете… Возможно то, что я хочу предпринять и описано выше — решит эту проблему …



Консоль запросов/отчетов, СКД, ADODB. Ввывод в таблицу значений, дерево или табличный документ(только для СКД)), обработка результата, произвольные обработчики расшифровки и прочие плюшки. Написана с нуля для платформы 8.3.х. На платформе 8.3.5 доступен Конструктор запросов в тонком клиенте.

Что она умеет сейчас стандартного привычного и не совсем:

  1. Запросы к внешним источникам, через ADODB провайдеры. Возможность простой и гибкой настройки выполнения и передачи хранимых неименованных параметров.
  2. Конструктор запроса в Тонком клиенте (ТОЛЬКО для платформы 8.3.5.х)
  3. Конструктор "Схемы компоновки данных", вывод в таблицу, дерево, табличный документ.
  4. Возможность создавать произвольные, настраиваемые обработчики расшифровки (см. скриншоты).
  5. Создавать динамические элементы интерфейса для вывода результата
  6. Возможность вывода отдельных элементов результата пакета и временных таблиц
  7. Вывод данных замеров времени выполнения пакета и вывода результата (мс, с, мин)
  8. Возможность в параметры подгружать внешние таблицы значений.
  9. Возможность сохранять результат в таблицы значений.
  10. Возможность обработки результата по произвольному алгоритму.
  11. Копировать оформленный под использование в тексте модуля текст запроса в буфер обмена
  12. Регистрироваться в справочник "ДополнительныеОбработкиИОтчеты" конфигураций основанных на БСП и в самой БСП.
  13. Прочие обычные для стандартной консоли запросов мелочи.

Приветствуются все замечания, конструктивная критика, пожелания и т. д.

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

П ользуйтесь наздоровье.

Changelog:

Ver 3.3

-- В механизм запросов через ADODB добавлена возможность работы с Excel

-- В механизм работы с СКД добавлена возможность подгружать сериализованные таблицы значений в качестве объектов в наборы данных

-- Прочие мелкие багфиксы и улучшения

Changelog:

Ver 3.1


-- Реализован механизм з апросов к внешним источникам, через ADODB провайдеры. Пока тестировалось только с MS SQL.

Ver 3.0


-- Реализована полноценная работа с СКД (можно использовать как консоль отчетов), только в толстом клиенте.

-- Добавлен тип результата "Табличный документ"

-- Реализован механизм "произвольных", хранимых в настройке запроса/отчета отбрработчиков расшифровки, в которые передаются значения полей расшифровки в виде готовой структуры значений полей (см. скриншот)

-- Оптимизирован и переделан интерфейс формы

-- В поле текста алгоритма обработчика добавлена возможность вставки шаблонов кода (см. скриншот). Шаблоны настраиваются в макете обработки.

-- Убраны баги связанные с применением обработки НЕ на БСП-основанных конфигурациях

-- Убраны баги связанные с использованием в тонком клиенте (в тонком клиенте работает только как консоль запросов)

-- Прочие багфиксы и мелкие улучшения

Ver 2.3

-- Добавлен тип настройки "Система компоновки" с возможностью настроки компоновки данных

и вывода результата в таблицу и дерево.

Ver 2.0

-- Убраны все модальные вызовы.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Готовые переносы данных

Алкогольная декларация

54-ФЗ

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

Маркетплейсы и 1С

Траектория обучения 1С-разработчика

Управление проектом на Инфостарте

(1) bayce, там вверху об этом немного есть… А если конкретно — приведите пример "остальных" — ткну пальцем "чем отличаются" :)

(3) Nebiros777, Спасибо! Буду признателен за соображения по поводу "что в нее добавить". Тот функционал, который есть сейчас был реализован исходя их моих частых потребностей (то есть без чего я лично просто не могу жить и к чему привык в аналогах под другие платформы), но понимая, что в тех навороченных аналогах возможно есть функционал, который я никогда не использовал, но он нужен другим. Если есть пожелания — пишите. Пока я в стадии поиска работы — могу уделить ей время 😉

эта ошибка появляется если без запроса нажим кнопку "ОБРАБОТКА"

: Преобразование значения к типу Булево не может быть выполнено
ТаблицаРезультата = РеквизитФормыВЗначение("РезультатТаблица", Тип(?(ТипРезультата,"ДеревоЗначений","ТаблицаЗначений")));


Может тогда файл должен распространяться бесплатно. А так получается, что "Тестер" ещё и приплачивает работодателю. (Чииииз)

  • Если после открытия сразу ввести текст запроса и выполнить, то выдаст ошибку. Нужно обязательно создать запрос в дереве.
  • Не меняется ширина дерева и текста запроса
  • Если в результате запроса нет строк, то таблица вообще не отображается
  • Если в результате запроса есть колонка с типом ТипЗначения, то выдается ошибка:

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

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

А должна? Если критичн добавлю, если хотябы какая-то таблица есть на выходе пакета — она отобразится "как есть" и реквизит формы и элемент убиваются и пересоздаются постоянно… Если на выходе результата ничего нет в пакете — то из ничего ТаблицуЗначений выдумать сложно ;-)

Как Вы знаете, надеюсь, чтобы элемент формы коллекции значений связать с реквизитом — типы должны соответсвовать (ОписанияТипов если быть точнее) именнно поэтому реквизит и элемент текущего результата рубится и создается заново… Это же еще и экономит ресурсы…

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

Я попробую некоторые методы оптимизировать через &НаСервереБезКонтекста, но многие из них требуют контекст ;-) посему "таскать барахло" считаю неразумным (тормоза интерфейса становяться визуальными)…

!! У меня есть идея одна поиграться с хитрым задействованием динамического списка для вывода, но надо поиграться еще с этим вариантом… Тогда результат вывода будет летать и творить с ним сами понимаете что можно будет ;-) /о результатах отпишу скоро или выложу апдейт, ждите/

За эту багу — реально огромное спасибо! Хотя пока не сильно понимаю(уже отсюда не попробовав) как ее победить, дело в том, что не все можно "катать между клиентом и сервером", как вы понимаете… Возможно то, что я хочу предпринять и описано выше — решит эту проблему …

Конструкторы в 1С – наше все :) Они “ведут нас за руку” в процессе разработки. Но не забывайте, что это все лишь навсего помощники. Не стоит теряться, если конструктор что-то не умеет. Все, что не умеет конструктор, можно реализовать самостоятельно вручную.

Вопрос

Добрый день, помогите разобраться! Почему в консоли запросов я не могу вызвать конструктор в месте, которое я указал на снимке экрана?

Реализация услуг и прочих активов

(нажмите, чтобы увеличить картинку)

Ответ

Добрый день! Судя по скриншоту, Вы используете новый, управляемый конструктор запроса. В нем нет возможности в редакторе произвольного выражения обратиться к вложенному конструктору запроса.

Что можно сделать для обхода:

  • Написать фрагмент запроса в редакторе произвольного выражения вручную. Например, вот так:
  • Открыть конструктор запроса в конфигураторе, там обычный конструктор запроса, эта возможность будет доступна.
  • Воспользоваться консолью запросов, которая использует обычный, классический конструктор запросов. Правда работать такой вариант будет только в толстом клиенте.

Это пример разобранного вопроса из Мастер-группы курса Разработка и оптимизация запросов в 1С:Предприятие 8.3 .

Понимать, как работают запросы и уметь их строить - обязательный навык для всех, кто дорабатывает и внедряет 1С.

После курса Вы сможете:

  • Строить сложные запросы с несколькими источниками данных
  • Уверенно задействовать вложенные запросы и временные таблицы
  • Использовать встроенный язык для обработки результатов запроса
  • Учитывать особенности соединений и объединений нескольких таблиц.
  • Разрабатывать запросы на уровне задач Аттестации 1С:Специалист по платформе.

Программа, стоимость, условия и регистрация в группу: «Запросы в 1С 8.3, Базовый курс 2022 (с нуля до уровня Специалист по платформе)» (2022) Для всех, кто внедряет и дорабатывает 1С.

Комментарии / обсуждение (2):

В самой свежей версии консоли с ИТС добавили эту команду, но работает она только при полностью пустом поле.

Добрый день!
Уточню. Здесь дело не только в самой консоли запросов с сайте ИТС, но и в используемой платформе.
Потому что, например, если консоль открыть в базе под платформой 8.3.13, то команда для открытия конструктора запроса будет просто недоступна в окне редактирования произвольного выражения:

8.3.13

Если же открыть эту же консоль, но в базе под более свежей платформой (для примера – 8.3.16), то эта команда появится в контекстном меню:

8.3.16

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

Не получится вот в такой ситуации открыть вложенный конструктор запроса:

Выражение

Ошибка

Возникнет ошибка:

Обработка консольных запросов для управляемого приложения 1с 8.2 имеет интерфейс и функционал, аналогичный обработки для приложения 1С 8.1. Также существует возможность получать результаты временных таблиц и пакетных запросов. Необходимое содержимое результата выполнения устанавливается в поле Получать результаты из 3-х возможных вариантов: Только временных таблиц, Только запросов, Запросов и временных таблиц.

Консоль запросов для управляемого приложения 1С 8.2 (Версия 6)

Запросы могут выполняться как на тонком, так и на толстом клиенте, т.к. для их исполнения производится обращение к серверу.

Файл запросов

Файл запросов формата .sel для Консоли запросов 1С 8.2 сходен с соответствующим файлом для Консоли запросов 8.1; могут быть открыты существующие файлы запросов, созданные в 1С 8.1. Кроме того, файлы, разработанные в Консоли управляемого режима, могут быть открыты в Консоли 8.1.

Конструктор запроса

Конструктор запроса запускается с помощью контекстного меню поля текста запроса. Он не доступен в тонком клиенте (пункт меню запуска Конструктора неактивно), но доступен в толстом клиенте.

Консоль запросов для управляемого приложения 1С 8.2 (Версия 6)

Цветовое оформление

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

Параметры запроса

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

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

Тип МоментВремени и Граница

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

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

Завершить настройку параметров необходимо нажатием кнопки Завершить.

Поле результата запроса

Результат запроса отображается в поле табличного документа. Так как выровнять ширину таблицы результата автоматически достаточно сложно, используется визуальное выравнивание вручную с помощью слайдера Ширина колонок: при передвижении его ползунка по горизонтали изменяется ширина всех колонок таблицы одновременно, что позволяет выровнять правую границу таблицы с правым краем формы. Значение ширины колонок каждого запроса записывается в файл запросов (.sel).

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

Вложение таблиц

Вложенные таблицы (поле результата запроса с типом РезультатЗапроса) подсвечиваются надписью зеленого цвета в ячейке поля результата. Вложенная таблица отображается в виде табличного документа и запускается двойным щелчком.

Пакетные запросы

Пронумерованный список результатов пакетных запросов отображается в поле результата списком один под другим. Ширина колонок и способ выгрузки одни и те же для всех запросов пакета.

Временные таблицы

Выполнение выделенного текста

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

Переподчинение в дереве запросов

Вывод для ссылок значений ГУИД вместо строковых представлений

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



Обработка Консоль запросов 8.2 - 8.3 реализует большую часть функционала стандартной Консоли запросов с диска ИТС. Варианты для платформы 8.3.5 и 8.3.6 выполнены для интерфейса Такси и включают возможность вызова Конструктора запроса в тонком клиенте.
Вариант для 8.3.5 может работать в безмодальном режиме.
Вариант для 8.3.6 вообще не использует "нерекомендуемые синхронные вызовы" (полностью асинхронный режим).

Обработка Консоль запросов для управляемого приложения повторяет привычный интерфейс и большинство функционала обработки Консоль запросов для 1С 8.1. Она также позволяет получать результаты пакетных запросов и временных таблиц. Нужный состав результата выполнения выбирается в поле выбора Получать результаты из трех вариантов: Только запросов, Запросов и временных таблиц, Только временных таблиц.

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

Файл запросов

Файл запросов (.sel) для Консоли запросов управляемого режима аналогичен файлу для Консоли запросов платформы 8.1; можно открывать имеющиеся файлы запросов, разработанные в 8.1. Аналогично, файлы, созданные в Консоли управляемого режима, можно открывать в Консоли 8.1.

Конструктор запроса

Конструктор запроса вызывается через контекстное меню поля текста запроса. Конструктор запроса в тонком клиенте недоступен - пункт меню открытия Конструктора блокируется. В толстом клиенте управляемого приложения Конструктор запроса доступен.

Конструктор запроса для тонкого клиента открывается как в тонком, так и в толстом клиенте нажатием на специальную кнопку на панели команд.

Параметры запроса

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

Можно задавать параметр типа Тип. Для этого нужно назначить тип параметра ОписаниеТипов и задать требуемый тип. Если будет задан составной тип, то будет использоваться только первое значение из состава типов.

Параметры запроса типа Граница и МоментВремени

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

Редактирование параметра завершается нажатием кнопки Завершить.

Поле результата запроса

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

Вложенные таблицы

Вложенные таблицы (когда поле результата запроса само имеет тип РезультатЗапроса) отображаются зеленой надписью в ячейке поля результата. Вложенная таблица открывается двойным щелчком в виде табличного документа.

Пакетные запросы

Поименованные результаты пакетных запросов выводятся в поле результата один под другим. Способ выгрузки и ширина колонок одинаковы для результатов всех запросов пакета.

Временные таблицы

Выполнение выделенного текста

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

Переподчинение запроса в дереве запросов

Для переноса запроса в другую ветвь дерева нужно выполнить перетаскивание мышью этого запроса на новую родительскую ветвь. Производится контроль возможности зацикливания подчинения, в этом случае выдается предупреждение и переподчинение не выполняется.

Читайте также: