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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

 

15

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

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

См. также

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

Статья Программист Нет файла v8 1cv8.cf Бесплатно (free) Консоль запросов

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

19.11.2018    13972    Evg-Lylyk    6       

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

Статья Программист Нет файла v8 1cv8.cf Windows Бесплатно (free) Консоль запросов

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

23.07.2014    6428    mdmdvd    3       

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

Статья Системный администратор Программист Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Консоль запросов

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

03.04.2014    23372    yuraos    2       

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

Статья Системный администратор Программист Нет файла v8 1cv8.cf Россия Windows Бесплатно (free) Консоль запросов

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

31.03.2013    20194    yuraos    7       

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

Статья Системный администратор Программист Нет файла v8 КА1 УТ10 УПП1 Россия Windows Бесплатно (free) Консоль запросов

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

10.03.2013    30657    yuraos    3       

Полезные вкусняшки: Консоль запросов от GROOVY 84

Инструменты и обработки Системный администратор Программист Внешняя обработка (ert,epf) v8 1cv8.cf Россия Бесплатно (free) Консоль запросов

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

19.09.2007    25794    1591    GROOVY    17