Консоль запросов + ТЗ как параметры

14.05.19

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

Стандартная консоль запросов, с добавленной возможностью использования описания/заполнения/использования таблиц значений как параметров. Совместима с настройками базовой консоли. Упрощает отладку запросов, использующих временные таблицы.

Скачать файлы

Наименование Файл Версия Размер
Консоль для 8.3
.epf 106,32Kb
478
.epf 070213 106,32Kb 478 Скачать

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

___________

14.05.2019

Добавлена возможность импорта файла, сохраненного при серверном выполнении.

Добавлена закладка "Промежуточные результаты". Позволяет выполнить запрос через функцию  Запрос.ВыполнитьПакетСПромежуточнымиДанными() и вывести данные сложного запроса в виде массива результатов.

 

result_array

 

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

 

 

Функция АСТ_Сохранить(ТЗ, ИмяФайла = "", Опция = Неопределено) Экспорт
    // создана для удобства переноса таблиц или запросов в консоль запросов - скидывает тз во внешний файл, который можно вычитать консолью запросов
    ЗаписьXML = Новый ЗаписьXML;
    Если ПустаяСтрока(ИмяФайла) Тогда
        ИмяФайла = КаталогВременныхФайлов() + ?(ТипЗнч(ТЗ) = Тип("ТаблицаЗначений"), "copytz.xml", "copyreq.xml") ;
    КонецЕсли;
    Если ТипЗнч(ТЗ) = Тип("Запрос") Тогда
        
        Зн = Новый Структура("Текст, Параметры", ТЗ.Текст, ТЗ.Параметры);
        МассивТаблиц = Новый Массив;

        Если ТипЗнч(Опция) = Тип("Строка") Тогда
            ////////// если опция - строка - значит считаем что передается точный перечень таблиц   
            // прямой перечень таблиц уже не нужен - но оставим если вдруг нежелательно все содержимое менеджера тащить 
            Вр = СокрЛП(Опция);
            Пока СтрНайти(Вр, ",") > 0 Цикл
                Имя = СокрЛП(Лев(Вр,СтрНайти(Вр, ",") - 1));
                Если СтрДлина(Имя) > 0 Тогда
                    МассивТаблиц.Добавить(Имя);
                КонецЕсли;
                Вр = СокрЛП(Сред(Вр, СтрНайти(Вр, ",") + 1));
            КонецЦикла;
            Если СтрДлина(Вр) > 0 Тогда
                МассивТаблиц.Добавить(Вр);
            КонецЕсли;
        ИначеЕсли ТЗ.МенеджерВременныхТаблиц <> Неопределено Тогда //Если Опция = Истина Тогда
            Для каждого Вр из ТЗ.МенеджерВременныхТаблиц.Таблицы Цикл
                МассивТаблиц.Добавить(Вр.ПолноеИмя);
            КонецЦикла;
            // любое другое значение позволяет просто вытащить запрос без временных таблиц 
        КонецЕсли;
        
        // пробуем вытащить значения в параметры
        Для каждого Тб из  МассивТаблиц Цикл
            ТЗВрем = ТЗ.МенеджерВременныхТаблиц.Таблицы.Найти(Тб);
            Если ТЗВрем <> Неопределено Тогда
                Зн.Параметры.Вставить(Тб, ТЗВрем.ПолучитьДанные().Выгрузить());
                Т = "// '" + Тб  + "' таблица вытащена из менеджера временных таблиц и помещена как параметр"  + Символы.ПС;;
                Т = Т + "ВЫБРАТЬ " ;
                Для каждого Кол из Зн.Параметры[Тб].Колонки Цикл
                    Т = Т + Символы.ПС + Символы.Таб + Тб + "." + Кол.Имя + " КАК " + Кол.Имя + "," ;
                КОнецЦикла;
                Т  = Лев(Т, СтрДлина(Т) - 1);
                Т = Т + Символы.ПС + "ПОМЕСТИТЬ " + Тб ;
                Т = Т + Символы.ПС + "ИЗ" + Символы.ПС + Символы.Таб + "&" + Тб + " КАК " + Тб + Символы.ПС + ";" + Символы.ПС + "//////////////////////////////////////////////////////////" + Символы.ПС+ Символы.ПС;
                
                Зн.Текст = Т + Зн.Текст; 
                
            КонецЕсли;
        КонецЦикла;
        
        
    ИначеЕсли ТипЗнч(ТЗ) = Тип("МакетКомпоновкиДанных") Тогда
        Запрос = Новый Запрос;
        Для каждого Параметр из ТЗ.ЗначенияПараметров Цикл
            ЗначПарам = Неопределено;
            Если ТипЗнч(Параметр.Значение) = Тип("СписокЗначений") Тогда
                ЗначПарам = Новый СписокЗначений;
                ЗначПарам.ЗагрузитьЗначения(Параметр.Значение.ВыгрузитьЗначения());
            Иначе
                ЗначПарам = Параметр.Значение;
            КонецЕсли;
            Запрос.УстановитьПараметр(Параметр.Имя,ЗначПарам);
        КонецЦикла;
        
        // определимся с набором
        Если ТипЗнч(Опция) <> Тип("НаборДанныхЗапросМакетаКомпоновкиДанных") Тогда
            // набор явно не указан - пробуем подобрать первый попавшийся набор запрос
            Для каждого Нб из ТЗ.НаборыДанных Цикл
                Если ТипЗнч(Нб) = Тип("НаборДанныхЗапросМакетаКомпоновкиДанных") Тогда
                    Опция = Нб;
                    Прервать;
                КонецЕсли;
            КонецЦикла;
        КонецЕсли;
        
        Если ТипЗнч(Опция) = Тип("НаборДанныхЗапросМакетаКомпоновкиДанных") Тогда
            Запрос.Текст = Опция.Запрос;
            Для каждого Параметр из Опция.ЗначенияПараметров Цикл
                ЗначПарам = Неопределено;
                Если ТипЗнч(Параметр.Значение) = Тип("СписокЗначений") Тогда
                    ЗначПарам = Новый СписокЗначений;
                    ЗначПарам.ЗагрузитьЗначения(Параметр.Значение.ВыгрузитьЗначения());
                Иначе
                    ЗначПарам = Параметр.Значение;
                КонецЕсли;
                Запрос.УстановитьПараметр(Параметр.Имя,ЗначПарам);
            КонецЦикла;
        КонецЕсли;
        Зн = Новый Структура("Текст, Параметры", Запрос.Текст, Запрос.Параметры);
    Иначе
        Зн = ТЗ;    
    КонецЕсли;
    ЗаписьXML.ОткрытьФайл(ИмяФайла, "UTF-8");
    
    #Если Не ТонкийКлиент И НЕ ВебКлиент Тогда
        СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Новый ХранилищеЗначения(Зн ,Новый СжатиеДанных(9)));
    #КонецЕсли
    
    ЗаписьXML.Закрыть();
    Возврат Истина;
КонецФункции

 


03.09.2015

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

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

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

 

Получение запроса со временными таблицыми под отладчиком

15.11.2013

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

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

15.11.10/2 Можно использовать результаты выполнения запроса как основание для создания структуры ТЗ и заполнения данными.


23.11.11/1 Добавлена возможность выгружать таблицы в файл / из файла.

10.04.11/1 Добавлена возможность выгружать запросы с параметрами (в т.ч. таблицы значений) в файл / из файла


Для выгрузки таблиц/запросов из конфигуратора в режиме отладки добавьте и используйте функцию

Функция EWG_Сохранить(ТЗ, ИмяФайла = "") Экспорт
    ЗаписьXML = Новый ЗаписьXML;
    Если ПустаяСтрока(ИмяФайла) Тогда
        ИмяФайла = КаталогВременныхФайлов() + ?(ТипЗнч(ТЗ) = Тип("Запрос"), "copyreq.xml", "copytz.xml") ;
    КонецЕсли;
    Зн = ?(ТипЗнч(ТЗ) = Тип("Запрос"), Новый Структура("Текст, Параметры", ТЗ.Текст, ТЗ.Параметры), ТЗ);
    ЗаписьXML.ОткрытьФайл(ИмяФайла, "UTF-8");
    СериализаторXDTO.ЗаписатьXML(ЗаписьXML, Новый ХранилищеЗначения(Зн ,Новый СжатиеДанных(9)));
    ЗаписьXML.Закрыть();
    Возврат Истина;
КонецФункции


 

Примеры обращения под отладчиком  :

EWG_Сохранить(НекийЗапрос.Выполнить().Выгрузить()); // будет выгружена таблица результатов запроса

EWG_Сохранить(НекийЗапрос); // будет выгружен текст запроса с параметрами и всеми используемыми временными таблицами

EWG_Сохранить(НекийЗапрос,, "ВТКонтрагенты, ВТДокументы"); // будет выгружен текст запроса с параметрами плюс времененные таблицы, соответствующие указанным.

 

 

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

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

 

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

 

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    121610    670    389    

711

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7262    21    6    

39

SALE! 20%

Infostart УДиФ: Управление данными и формами

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

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

10000 8000 руб.

10.11.2023    3507    11    1    

33

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177727    1073    0    

849

Многопоточность. Универсальный «Менеджер потоков» 2.1

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

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

5000 руб.

07.02.2018    99338    239    97    

296

[ЕХТ] Фреймворк для Расширений 1С

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

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

3000 руб.

27.08.2019    18102    6    8    

39

1С HTML Шаблоны / HTML Templates

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

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28096    3    10    

15

Выполнение произвольного кода или запроса с параметрами через Web-сервис (замена COM-подключений)

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

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

2400 руб.

24.09.2019    23596    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. FIERYLIONS 222 05.02.11 09:30 Сейчас в теме
а как её запустить если в самом конфигураторе то просто код показывает если в предприятии то пустое окошечко
2. vec435 15 11.04.12 10:15 Сейчас в теме
при отладке из конфигуратора тз выгружается как отдельный файл или добавляется в параметры?
3. Kashemir 352 11.04.12 11:54 Сейчас в теме
Выгружается в отдельный файл, который можно загрузить в консоли как значение параметра
8. Bukaska 140 15.11.13 14:24 Сейчас в теме
(3) Это консоль для обычного приложения?(ТолстыйКлиент) или для управляемого приложения?(Тонкий клиент)
А то для обычного приложения я как то скачивала консоль: только загрузил запрос - консоль уже создала параметры, остается только ввести значения.
Вот бы для тонкого клиента что-нить такое.. А то другой раз запросы как простыня, чекнешься параметры искать)
9. Kashemir 352 15.11.13 14:34 Сейчас в теме
(8) Bukaska, для толстого клиента.
4. pvlunegov 157 20.04.12 11:28 Сейчас в теме
Спасибо автору за замечательную возможность работы с Таблицами Значений в качестве параметра запроса.
Единственная обработка (консоль запросов) на данном сайте, в которой ПОЛНОСТЬЮ реализована данная функция.

Есть даже сохранение ТЗ в файл запросов. Это просто замечательно!

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

Всем, кому надо работать с ТЗ и сохранять запросы в файл - рекомендую!
5. MakcTLT63 5 15.11.13 08:51 Сейчас в теме
Глянул скрины. У меня эта обработка хранится под именем EWG_Консользапросов.
Автор позаимствовал идею?
6. Kashemir 352 15.11.13 12:21 Сейчас в теме
(5) MakcTLT63, EWG это аббревиатура мой текущей фирмы. Идея и реализация собственная.
7. MakcTLT63 5 15.11.13 14:20 Сейчас в теме
(6)
Упс.. Прошу прощения за необоснованные подозрения.
Обработка лучшая.
Когда надо поработать с ТЗ она просто незаменима.
10. Kashemir 352 15.11.13 14:41 Сейчас в теме
(7) MakcTLT63, Приятно, что кому-то пригодилась :)
11. desarz 63 05.12.13 15:33 Сейчас в теме
12. sick_russian 05.02.14 06:25 Сейчас в теме
на скрине видно что колонке присваивается тип "СправочникСсылка.Номенклатура", а я такой тип выбрать не могу( почему?
13. Kashemir 352 10.02.14 19:37 Сейчас в теме
Подозреваю что в используемой конфигурации нет справочника "Номенклатура" :)
14. Nebiros777 5 25.02.14 13:31 Сейчас в теме
Удобная штука, постоянно подобной пользуюсь.
15. CaptainMorgan 14.03.14 12:58 Сейчас в теме
А вариант с управляемой формой возможен?
16. oyeah 14.01.15 02:35 Сейчас в теме
(15) CaptainMorgan, Вариант для УФ на диске ИТС RequestConsoleManaged\ИнструментыРазработчикаКонсольЗапросов­83.epf
17. premierex 204 08.04.15 14:25 Сейчас в теме
Не работает с параметром типа "Список значений", выдаёт ошибку "{(1,1)}: Переменная не определена (Прочее)
<<?>>Прочее", где "Прочее" - элемент справочника, заданного в параметре типа "Список значений". Да и сам подбор в список очень уж неудобно организован: тип выбирается из длинного выпадающего меню. Пока до самого низа его прокрутишь, чтобы необходимый тип выбрать, уже и желание пропадает этой консолью пользоваться.
18. unichkin 1559 03.09.15 21:33 Сейчас в теме
19. Kashemir 352 04.09.15 10:53 Сейчас в теме
(18) unichkin, Безусловно - но не всегда космический корабль удобнее автомобиля.
20. user645364_roman_sh 10.06.18 18:05 Сейчас в теме
Вот здесь выполняется запрос ОтладочныйЗапрос, для которого нет никаких параметров кроме параметров типа таблица значений.
Попытка
ОтладочныйЗапрос.Выполнить();
Исключение
ТекстОшибки = ОписаниеОшибки();
Продолжить;
КонецПопытки;

Почему не копируются параметры сразу? Например после строк

ОтладочныйЗапрос.Текст = ТЗ.Текст;
//по идее должны следовать строки
Для Каждого ЭлементСтруктуры Из Зн.Параметры Цикл
ОтладочныйЗапрос.Параметры.Вставить(ЭлементСтруктуры.Ключ, ЭлементСтруктуры.Значение);
КонецЦикла;
22. Kashemir 352 21.06.18 03:55 Сейчас в теме
(20) Параметры так и копируются. Через попытку вытягиваются обращения ко временным таблицам. Альтернативой может служит только полноценный синтаксический анализатор, но даже он не сможет типизировать данные временные таблицы.
По мере получения ошибок при обращениях к данным временным таблицам появляется возможность изнать их имена, после чего можно через * выгрузить их из менеджера со всеми типизациями определенными для них в термах 1С.
21. user645364_roman_sh 10.06.18 18:28 Сейчас в теме
Второе замечание касается случаев когда МенеджерВременныхТаблиц запроса ТЗ содержит временные таблицы со значениями полей Неопределено или Null. Тогда начинает ругаться что при выполнении запроса ОтладочныйЗапрос эти его поля нетипизированные. Здесь может помочь вариант их к-л массово типизировать. Я в этом случае таким полям до использования функции EWG_Сохранить присвоил пустые ссылки в запросе используя Значение(справочник. и т.д...Понимаю некорректно, но по-другому не придумал.
23. Kashemir 352 21.06.18 04:00 Сейчас в теме
24. RailMen 823 11.09.18 19:06 Сейчас в теме
Допилил консольку так: сделал кнопку "Загрузить таблицу из excel". При загрузке из excel автоматом задаются типы колонок.

Прикрепленные файлы:
EWG_Консользапросов (Консоль запросов + ТЗ как параметры 8.2) 2.epf
user608739_serg999h; Adilgeriy; luchyk; +3 Ответить
Оставьте свое сообщение