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

14.05.19

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Консоль для 8.3
.epf 106,32Kb ver:070213
484
484 Скачать (2 SM) Купить за 2 150 руб.

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

___________

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! 15%

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

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

10000 руб.

02.09.2020    159397    872    399    

861

SALE! 15%

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

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

8400 7140 руб.

20.08.2024    7765    55    22    

66

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

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

9360 руб.

17.05.2024    23430    68    45    

117

SALE! 15%

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

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

10000 8500 руб.

10.11.2023    10412    36    20    

61

SALE! 15%

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

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

22200 19980 руб.

06.10.2023    15395    35    7    

70

SALE! 35%

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

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

4800 3120 руб.

14.01.2013    187971    1138    0    

912

SALE! 15%

Инструментарий разработчика Программист 8.3.14 1С:Конвертация данных Россия Платные (руб)

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

15000 12750 руб.

07.10.2021    17301    6    32    

42

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

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

1800 руб.

21.02.2023    7694    8    35    

23
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. FIERYLIONS 223 05.02.11 09:30 Сейчас в теме
а как её запустить если в самом конфигураторе то просто код показывает если в предприятии то пустое окошечко
2. vec435 17 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 158 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 64 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 1579 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 826 11.09.18 19:06 Сейчас в теме
Допилил консольку так: сделал кнопку "Загрузить таблицу из excel". При загрузке из excel автоматом задаются типы колонок.

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