Консоль запросов для УФ с возможностью передачи готовой ТЗ в качестве параметра

Публикация № 535520

Разработка - Инструментарий разработчика - Консоль запросов

Консоль запросов Загрузить ТЗ в консоль запросов

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

Приветствую всех! 

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

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

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

Наверно, каждый когда- либо писал такого рода запрос 

Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ*
| ПОМЕСТИТЬ ВнешняяТЗ
| ИЗ &ТЗ КАК ТЗ";
....
Запрос.УстановитьПараметр ("ТЗ",ТЗ);

Вопрос - а как же отладить запросы с помощью консоли запросов, которые строятся на основании данных этого запроса ?

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

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

А мы - программисты, народ ленивый и руками работать не любим. Поговорка  "Лень - двигатель прогресса" это как раз про нас, поэтому необходимо найти способ облегчить себе труд. И, как оказалось, решение лежит на поверхности - передать готовую и заполненную таблицу через ВременноеХранилище. И делается это все в несколько строчек кода. 

Сразу уточню, что все дальнешие действия будут происходить с Консоль запросов (из папки RequestConsoleManaged) с диска ИТС.

Открываем данную консоль в конфигураторе и добавляем новый реквизит "АдресВременногоХранилища" (в принципе, данный реквизит можно и не добавлять, а добавить реквизит формы) .

Далее открываем форму "ТаблицаЗначений" на форму выносим добавленный реквизит и добавляем команду с вызовом сервера. Вот сам код команды:

&НаКлиенте 
Процедура ПолучитьТЗИзВременногоХранилища(Команда) 
   ПолучитьТЗИзВременногоХранилищаНаСервере(); 
КонецПроцедуры 

&НаСервере 
Процедура ПолучитьТЗИзВременногоХранилищаНаСервере() 

  Если ЭтоАдресВременногоХранилища(Объект.АдресВременногоХранилища)Тогда 

       ТЗ = ПолучитьИзВременногоХранилища(Объект.АдресВременногоХранилища); 

          Если ТипЗнч(ТЗ) <> Тип("ТаблицаЗначений") тогда 
               Возврат; 
          КонецЕсли; 

       ТЗНастройки = НастройкиТаблицыЗначений.Выгрузить(); 

       Для каждого Колонка ИЗ ТЗ.Колонки Цикл 
            НовСтрока = ТЗНастройки.Добавить(); 
            НовСтрока.НаименованиеКолонки = Колонка.Имя; 
            НовСтрока.ТипКолонки = Колонка.ТипЗначения; 

            СообщениеСистемы = ""; 
            ИнициализацияКолонкиВТЗСервер("",Колонка.Имя,Колонка.ТипЗначения,СообщениеСистемы); 
      КонецЦикла; 
  
      НастройкиТаблицыЗначений.Загрузить(ТЗНастройки); 
      ТаблицаЗначенийПараметр.Загрузить(ТЗ);
 
  КонецЕсли; 

КонецПроцедуры 

Как видите, код простой и в комментариях не нуждается.  Процедура "ИнициализироватьКолонкиВТЗСервер" уже определена в модуле формы , поэтому описывать ее здесь не имеет смысла. 

Вот в принципе и все. Осталось поместить нужную ТаблицуЗначений во ВременнойХранилище  и получив адрес, загрузить ее в качестве параметра в Консоль Запросов. 

Так же стоит отметить недостатки данного подхода. 

1) Медленная работа Консоли Запросов  при работе с ТЗ в качестве параметра

2) Неоходимость дописания обработок для помещения нужных таблиц во временное хранилище. 

 

Вот пример, как это работает. 

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

В данной обработке я добавил страницу "Отладка" , где указываю нужную таблицу и загружаю ее во временное хранилище 

Далее в консоли добавляю параметр с типом ТаблицаЗначений , перехожу в редактирование таблицы и в поле адрес временного хранилища вставлю полученный ранее адрес и нажимаю кнопку "получить ТЗ из временного хранилища" 

В результате у нас сформировалась описание таблицы и загрузилась сама таблица. Осталось только выполнить сам запрос

 

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

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 6055 11.07.16 23:53 Сейчас в теме
Интересно, в обычных формах такое возможно?
2. vadim1011985 82 12.07.16 00:14 Сейчас в теме
Не знаю , но думаю что в принципе возможно , надо только иметь возможность указать тип параметра Таблица значений. В стандартно консоли он не доступен , но думаю что никто не мешает его добавить . Вроде я даже видел тут консоль на обычных формах с расширенным типом значений параметров. Можно посмотреть как реализовано на УФ и попробовать перенести данный механизм на обычные формы
3. tormozit 6055 12.07.16 07:26 Сейчас в теме
Дай ссылку на такую консоль. Очень интересно.
4. vadim1011985 82 12.07.16 09:13 Сейчас в теме
5. tormozit 6055 12.07.16 09:27 Сейчас в теме
Почему же ты тогда пишешь
В консоли запросов (на обычных формах) нельзя было пердавать параметр с типом ТаблицаЗначений
? Получается, что можно все таки.
6. vadim1011985 82 12.07.16 10:30 Сейчас в теме
(5) tormozit, Согласен , добавить в обычную консоль тип Таблица Значений можно. Просто в написании я подразумевал стандартную консоль запросов где тип Таблица Значений не доступен по умолчанию . Сегодня поправлю этот момент в статье
Оставьте свое сообщение

См. также

Подсистема "COMExchange": консоль запросов в режиме «Консоль кода». Промо

Консоль запросов v8 1cv8.cf Россия Бесплатно (free)

Описана возможность использования обработки «Консоль запросов 1С+ADO» в качестве «консоли кода». При этом имеется возможность помещения результатов вычислений в «табло формул». Кроме результатов вычислений в это «табло» можно также вывести время выполнения и описание обработанных ошибок времени исполнения.

03.04.2014    26120    yuraos    2    

Отладка в Infostart Toolkit

Консоль запросов Прочие инструменты разработчика v8 1cv8.cf Бесплатно (free)

Отладка запросов, схем компоновки данных, просмотр содержимого менеджера временных таблиц.

05.11.2020    2643    Evg-Lylyk    16    

Улучшенный конструктор запроса тонкого клиента (Infostart Toolkit)

Инструментарий разработчика Консоль запросов v8 1cv8.cf Бесплатно (free)

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

07.09.2020    3226    Evg-Lylyk    13    

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

Консоль запросов v8::Запросы Бесплатно (free)

Пять вариантов обработки кодом в консоли запросов 9000: простое выполнение, построчно без индикации, построчно с индикацией, простое в фоне, построчно в фоне с индикацией.

01.06.2020    1585    kuza2000    7    

Подсистема "COMExchange", "Консоль запросов 1C + ADO" - сервис обработки выборки запроса: грузим курс «бакса» ЦБРФ из файла *.dbf или *.xlsx. Промо

Консоль запросов v8 КА1 УТ10 УПП1 Россия Бесплатно (free)

На примере загрузки курса валюты продемонстрированы возможности консоли запросов в составе подсистемы "COMExchange" для обработки данных из внешних файлов и их синхронизации с данными информационной базы 1С.

10.03.2013    33325    yuraos    3    

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

Прочие инструменты разработчика Консоль запросов v8::УФ v8::Запросы v8::СКД Бесплатно (free)

Консоль запросов и СКД – один из наиболее часто используемых программистом инструментов. Как с его помощью можно упростить разработку, в своем докладе на конференции Infostart Event 2019 Inception рассказал Евгений Люлюк, ведущий программист компании GLT.

06.04.2020    7874    Evg-Lylyk    0    

[8.3] Анализ планов запросов (Управляемая консоль отчетов)

Консоль запросов v8 1cv8.cf Бесплатно (free)

Новый инструмент! Позволяет удобно работать с планами запросов, анализ планов в файловой базе.

19.11.2018    19727    Evg-Lylyk    6    

Консоль запросов. Очередная гайка.

Консоль запросов v8 1cv8.cf Бесплатно (free)

Небольшое дополнение к консоли запросов. Позволяет создавать функцию вместе с текстом запроса.

23.07.2014    8253    mdmdvd    3    

Подсистема "COMExchange", консоль запросов, сервис обработки выборки запроса: корректируем регистры или «Берём банк, кассу, экспроприируем экспроприаторов». Промо

Консоль запросов v8 1cv8.cf Россия Бесплатно (free)

На примере шуточного примера продемонстрированы не шуточные возможности консоли запросов в составе подсистемы "COMExchange" для работы с регистрами, подчинёнными регистратору («обнуление» регистров, ввод начальных итогов (сведений), корректировка итогов).

31.03.2013    22585    yuraos    7