Отладчик запросов /обновление 11.04.2014/

03.04.23

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

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

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

Наименование Файл Версия Размер
Отладчик запросов (by Акулов А.С.) - сборка 1217.epf
.epf 660,15Kb
189
.epf Версия 1217 (02 сентября 2016 г.) 660,15Kb 189 Скачать
Отладчик запросов (by Акулов А.С.).epf
.epf 648,16Kb
1314
.epf 1216 648,16Kb 1314 Скачать
Отладчик запросов (by Акулов А.С.) - сборка 1082 (предыдущая версия).epf
.epf 173,56Kb
1201
.epf 173,56Kb 1201 Скачать
Отладчик запросов (by Акулов А.С.) - сборка 1072 (предыдущая версия).epf
.epf 177,72Kb
173
.epf 177,72Kb 173 Скачать

Спасибо за помощь пользователю StepByStep (МА!)

 

Обновление от 11.04.2014 (Подробнее...)

 

Соединение двух проектов - "Выполнение и отладка запроса" и "Визуальная структура запроса" в новый проект - отладчик запросов.
Функционал простого парсера текста запросов (реализованного на языке 1С без внешних компонент), позволил создать новые функции для построения текста запроса и отладки его результатов:

1. Средства анализа и преобразования исходного текста запроса:

Встроенная "Визуальная структура запроса" (Подробнее...)
Список запросов пакетного запроса, с возможностью перехода к началу текста нужного запроса из списка. (Подробнее...) 
 Функция "Вложить в запрос" (Подробнее...) 
Функция "Извлечь подзапрос из запроса" (Подробнее...)
(new) Функция "Разложить вложенный запрос в пакетный" (Подробнее...)
(new) Функция "Собрать пакетный запрос во вложенный" (Подробнее...)
Функция "Код запроса" (Подробнее...)
  Автоматический анализ наличия ошибок с выделением слова, на котором произошла ошибка (Подробнее...)

 

2. Средства отладки

  Информационная панель (Подробнее...)
Просмотр временных таблиц (Подробнее...)
Опция "Не удалять временные таблицы" (Подробнее...)
Режим "Пошаговое выполнение пакетного запроса" (Подробнее...)
Просмотр данных источников для составного запроса  одробнее...)

 

3. Прочие функции

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

... "Открыть из отладчика" (Подробнее...)
"Обработка результата" (Подробнее...) 

 

теперь подробнее: 

 

Встроенная "Визуальная структура запроса"

внешний вид переработан, функционал доработан - пользователем  StepByStep (МА!). Кнопка, для вызова:  

пример:

 

Визуальная структура запроса (демо) 

 

Список запросов пакетного запроса

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

пример:

 

Функция "Вложить в запрос"

Кнопка, для вызова: :

делает из текущего запроса - вложенный посредством помещения его в конструкцию 

ВЫБРАТЬ

  *

ИЗ () КАК ИсточникДанных

 

Функция "Извлечь из запроса"

Кнопка, для вызова:  

извлекает вложенный запрос наружу (делает обратную операцию команде "вложить запрос") при этом все внешние вычисления будут утеряны. 

 

Функция "Разложить вложенный запрос в пакетный" (ноухау)

Кнопка, для вызова:  

Это довольно интересная функция - нигде такого не встречал.
Например запрос:

 

Преобразуется в пакетный запрос:

 

 

Функция "Собрать пакетный запрос во вложенный" (ноухау)

 

Кнопка, для вызова:  

 

Это довольно интересная функция - нигде такого не встречал.
Например запрос:

 

 

 

Преобразуется в запрос:

 

 

Функция "Код запроса"

Кнопка, для вызова:  

Вызывает диалог "Код запроса" с готовыми шаблонами кода запроса для создания отчетов:

Обратите внимание на четвертую вкладку "Универсальный отчет (модуль)". На вкладке содержится заготовка модуля универсального отчета (//infostart.ru/public/84642/)

При переходе на эту вкладку - справа вверху появляется кнопка , при нажатии на которую появится диалог, в котором можно настроить основные параметры для универсального отчета

 

Автоматический анализ наличия ошибок с выделением слова, на котором произошла ошибка

  

Информационная панель

Находится на странице результата запроса сверху:

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

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

 

Просмотр временных таблиц

Кнопка, для вызова:  

 

Опция "Не удалять временные таблицы"

Кнопка, для вызова:  

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

 

Режим "Пошаговое выполнение пакетного запроса"

Кнопка, для вызова:  

 

Просмотр данных источников для составного запроса

Кнопка, для вызова:  

 

 

Функция  "Открыть из отладчика"

Кнопка, для вызова:  

 

Функция "Обработка результата"

Кнопка, для вызова:   (на странице результата)

Обрабатывать возможно только таблицу значений. Если запрос выгружен в дерево значений - то обработка будет запрещена (кнопка будет неактивна)

 

А что еще?

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

 

А что дальше?

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

 

Чем пользовался? 

Для снятия скриншотов (для данной статьи) - использовал бесплатную и удобную утилиту "PicPick".

Использованы наработки по следующим разработкам:

  1. Коллекция полезных кнопок и процедур для отчетов и обработок v2.03

  2. Универсальный отчет (4.2.0.1)

  3. Подсистема "Инструменты разработчика" v2.82

и наверняка что-то еще... кого упустил - пишите... добавлю!..

  

Хотите помочь?

Высказывайте ваши предложения и пожелания в комментариях.
Если кто-то хочет принять участие в разработке - буду рад!

 

Обновление от 11.04.2014

1. Совместимо с подсистемой "Инструменты разработчика"

2. Встраивание класса "Контекстная подсказка"

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

Пункт меню

3. Режим выполнения без проверки на ошибки

4. Режим выполнения запроса по выделенной части запроса

5. Пошаговое выполнение пакета запросов -> Возможность повторить шаг (вернуться на шаг назад)

6. Пошаговое выполнение пакета запросов -> Возможность перезаполнять параметры запроса на каждом шаге

7. Вкладка "Параметры" значительно переработана:

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

+  Задание своего кода установки параметров (кнопка Код установки) - в некоторых случаях будет удобно; 
 

8. Для кода обработки результата добавлена возможность задавать параметры.

9. Добавлен "Конструктор правила для экспресс-проверки ведения учета" (вызывается кнопкой на странице "Результат").

 

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    121546    670    389    

709

SALE! 25%

Infostart PrintWizard

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

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

18000 15300 руб.

06.10.2023    7252    21    6    

39

SALE! 20%

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

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

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

10000 8000 руб.

10.11.2023    3490    11    1    

33

SALE! 30%

PowerTools

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

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

3600 2520 руб.

14.01.2013    177716    1073    0    

849

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

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

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

5000 руб.

07.02.2018    99330    239    97    

296

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

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

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

3000 руб.

27.08.2019    18095    6    8    

39

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

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

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

2040 руб.

27.12.2017    28081    3    10    

14

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

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

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

2400 руб.

24.09.2019    23591    15    15    

32
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
102. DrAku1a 1679 02.11.13 03:49 Сейчас в теме
(99) Снять флажок "Файл -> Автосохранение"
179. DrAku1a 1679 15.12.20 09:45 Сейчас в теме
(99) Можно. В обработке выбрать "Файл" - "Автосохранение".
100. chev 03.10.13 11:09 Сейчас в теме
101. irreal 32 01.11.13 21:36 Сейчас в теме
:) Любому sql-щику не сидится на штатных средствах. Я тоже занимался отладкой во время исполнения, http://infostart.ru/public/88028/. Но до парсинга не дошел, теории игр и компиляторов не знаю, а писать итуитивно, как напишется, т.е. без системы - не хотел.
Вообще меня бесят несколько моментов в 1С. Например, что из-за функции Выполнить() нельзя сделать метод Выполнить() у обработки, что позволило бы полноценно "подкладывать" обработку вместо запроса. Или тот же конструктор запросов - ведь на самом деле полноценный парсер. Почему скрыто его API? Жалко им видно, так что и свои разработчики сидят и косячат в типовых, не имея нормальных средств.
110. kote 536 28.01.14 22:29 Сейчас в теме
(101) Очень хорошо.. но, блин, когда до 1С и Нургалиева дойдет, что хотя бы API к конфигуратору нужно открыть.. терять бы ничего не потеряли, а приобрели очень многое - забесплатно.. да одно увеличение продуктивности 1С специалистов на несколько % за счет сторонних инструментов - повысило бы капитализацию бренда 1С.
103. Andreynikus 1361 26.12.13 16:17 Сейчас в теме
Еще бы возможность просмотра плана запросов сюда включить, цены бы этой обработки не было!

Автору спасибо, обработка отличная!
104. tormozit 7136 27.12.13 08:24 Сейчас в теме
105. Andreynikus 1361 27.12.13 10:02 Сейчас в теме
(104) tormozit, да, только лучше бы получать план не через ТЖ, а через трассироку например.
Включать ТЖ на полный сбор запросов в большой системе не есть хорошо.
106. tormozit 7136 27.12.13 17:16 Сейчас в теме
(105) В ролике видно, что по умолчанию включается трассировка запросов в текущей базе по текущему пользователю.
107. Andreynikus 1361 27.12.13 19:17 Сейчас в теме
(106) tormozit,
Тогда да, то что нужно!
108. mr.Kot 30.12.13 10:06 Сейчас в теме
Интересная обработка. Помимо стандартной консоли пользовался запросником82, он был со своими, оказавшимися нужными, фичами. А данная обработка с более богатым функционалом.
109. bayce 45 24.01.14 20:16 Сейчас в теме
111. pavel_pss 289 10.02.14 10:04 Сейчас в теме
интересная разработка. пригодится. спасибо.
112. Odinsov 11 02.04.14 13:20 Сейчас в теме
113. rasswet 82 22.04.14 14:31 Сейчас в теме
под управляемые формы нет варианта?
114. DrAku1a 1679 22.04.14 15:13 Сейчас в теме
(113) такого же мощного нет. но на ИС полно других...
115. yuraskas 176 03.06.14 11:46 Сейчас в теме
Супер обработка. Порадовала работа с пакетными запросами. Пока что одно небольшое пожелание: при выводе кода запроса для "копирования к себе", параметры выводились бы кот. были использованы, как в стандартных консолях сделано. Т.е. дать выбор, выводить так: Запрос.УстановитьПараметр("ВидСубконтоОС", ВидСубконтоОС); или так: Запрос.УстановитьПараметр("ВидСубконтоОС", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.ОсновныеСредства);
116. yuraskas 176 20.06.14 14:11 Сейчас в теме
+ Колонка "СЗ" (флажок) - при установке данного флажка - параметр будет представлять из себя список значений, а тип в колонке "Тип значения" будет использован в редакторе списка значений - как тип по-умолчанию; - не работает. Хотел добавить несколько элементов групп справочника, после подбора нажимаю ОК - СЗ пустой!.
127. cry 16 13.01.15 12:19 Сейчас в теме
очень хорошая обработка давно пользуюсь спасибо
в текущей версии не работает галка на СЗ

+ Колонка "СЗ" (флажок) - при установке данного флажка - параметр будет представлять из себя список значений, а тип в колонке "Тип значения" будет использован в редакторе списка значений - как тип по-умолчанию; - не работает. Хотел добавить несколько элементов групп справочника, после подбора нажимаю ОК - СЗ пустой!.(116) yuraskas,
151. Дмитрий74Чел 234 31.12.15 06:53 Сейчас в теме
Я так и не понял как работать с галкой "СЗ" в параметрах. У меня всё еще как (116)
117. eruil 05.07.14 17:45 Сейчас в теме
Вопрос по Функции "Открыть из отладчика".
Выполнил выражение ВнешниеОбработки.Создать("...\Отладчик запросов (by Акулов А.С.).epf").ОткрытьДляОтладки(Запрос)
Получил значение "Запрос открыт для отладки"
Что дальше? Просто продолжить выполнение основной программы после останова и Отладчик запросов запустится автоматически уже с нужными параметрами?
118. DrAku1a 1679 06.07.14 01:55 Сейчас в теме
(117) Да. Просто продолжить и запрос для отладки открывается именно в режиме "Предприятие".
Полагаю, Вы уже увидели ответ когда продолжили выполнение.
jobkostya1c_ERP; eruil; +2 Ответить
121. jobkostya1c_ERP 100 12.11.14 18:42 Сейчас в теме
(118) очень хорошая консоль. Даже в конфигуратор заглянул для просмотра возможностей. Очень понравилась возможность "парсить" вложенные запросы. Современные запросы уже "десятиэтажны".
А насчет основных возможностей для консолей запросов обычно очень надо бывает две вещи:
1. просмотр временных таблиц:
2. разложить вложенный запрос;
3. отладка из кода в процессе выполнения.
4. иногда даже dbf приходится подгружать.
В общем: для толстого клиента для проверок на лету и экстренного поиска ошибок и для серьезной долгой разработки с отладкой.
Одно плохо :( ОЧЕНЬ НАДЕЯЛСЯ что запустится в режиме "тонкий клиент". Какие-то процедуры с комментарием в коде "для тонкого" имеются.
Думал, уже конфигурацию подкрутить. Флажок то разрешающий использование обычных форм в управляемом приложении установлен, но, консоль уже вижу по отзывам не для тонкого клиента. Опять чем попало приходится пользоваться.
Пишите, что даже автосохранение не нужно устанавливать. Есть такая во всех консолях плохая вещь, от которого, надеюсь данная избавлена. В запарке если вызвать диалог "автосохранение" с кол. секунд "0" то ошибка периода исполнения
Еще интересное предупреждение "не рекомендуется собирать пакетный в составной". Для наглядности и отладки - да, согласен. Но вот для оптимизации выполнения не согласен. Во всяком случае так доказывают специалисты-оптимизаторы запросов, что вложенный быстрее чем во временных таблицах (SQL сервер файл TempDB на жестком диске).
Прикрепленные файлы:
122. DrAku1a 1679 13.11.14 02:19 Сейчас в теме
(121)
В запарке если вызвать диалог "автосохранение" с кол. секунд "0" то ошибка периода исполнения
здесь немного иной смысл - автосохранение делается только перед выполнением текста запроса.
Думал, уже конфигурацию подкрутить. Флажок то разрешающий использование обычных форм в управляемом приложении установлен, но
Понимаю неудобство, сам сталкивался, но пока что нет версии под УФ (руки не доходят)... Сам же выкручивался так: сделал отдельного пользователя, у которого указал режим запуска - обычное приложение. Под ним захожу и разрабатываю с запрос в отладчике. Но при этом, нет возможности открыть запрос в отладчике "на лету".
не рекомендуется собирать пакетный в составной
в первых комментариях к публикации - народ высказывался по этому поводу.
Как я понимаю, когда делается соединение двух источников данных, оптимальнее, чтобы источники данных - были во временных таблицах (их даже можно проиндексировать - что ускорит соединение), а когда делается просто выборка из выборки - лучше использовать вложенные запросы. Но, полагаю, во втором случае - прирост производительности большим не будет.
Общие рекомендации по ускорению запросов
Здесь дается некоторое объяснение
Тут тоже, см. пункт 8
Обсуждение "Вложенный запрос или временная таблица?"
Что быстрее выполняется: вложенные запросы или временные таблицы в запросах?
jobkostya1c_ERP; +1 Ответить
123. jobkostya1c_ERP 100 13.11.14 10:16 Сейчас в теме
(122) насчет соединения из 2-х источников это Вы верно заметили. А вот создание того же для тонкого клиента посмотрел требует больших усилий.
119. artly2000 14.07.14 04:17 Сейчас в теме
Спасибо за обработку! (Совершенству нет предела)
120. BCA 23.07.14 14:54 Сейчас в теме
Спасибо!
"Разложить вложенный запрос в пакетный" - думал, вручную придется запрос перелопатить).
124. jobkostya1c_ERP 100 05.12.14 08:45 Сейчас в теме
К сожалению нашел два существенных недостатка данной консоли:
1. Значения NULL в результатах запроса отображаются как <Не заполнено> что однажды сбило с толку. Обычно, в запросах заранее заменяют на что-то подобное
ЕстьNULL(таб1.Поле1, 0)
, но все-таки согласитесь неудобно.
2. Не нашел как запустить данную консоль из кода приложения для отладки "многоэтажного" запроса, текст которого "склеивается" динамически, причем содержатся именно вложенные запросы, просмотреть которые проблематично. По коду не нашел ни реквизитов, ни экспортных переменных в модуле объекта и модуле формы.
125. jobkostya1c_ERP 100 05.12.14 08:55 Сейчас в теме
По 2-му вопросу запуска консоли из кода 1С 8 я ошибся. Экспортная функция данной консоли запросов ОткрытьДляОтладки(знач Запрос) Экспорт
// Для открытия из конфигуратора (вычислить выражение, CTRL+F9), например
// ВнешниеОтчеты.Создать("f:\Выполнение запроса\нкВыполнениеЗапроса.epf").ОткрытьДляОтладки(Запрос)
Функция ОткрытьДляОтладки(знач Запрос) Экспорт
	Если ТипЗнч(Запрос)<>Тип("Запрос") и ТипЗнч(Запрос)<>Тип("ПостроительОтчета") Тогда
		Возврат "Ошибка:  Переданный объект не является запросом или построителем отчета!";
	КонецЕсли;
	Форма = ПолучитьФорму("ОсновнаяФорма");
	Форма.ТекстЗапроса = Запрос.Текст;
	глозЗаполнитьПараметрыИзЗапроса(Запрос, Форма.ПараметрыЗапроса, Форма.НачПериода, Форма.КонПериода);
	Форма.мНеЗагружатьНастройки = Истина;
	Форма.ЭлементыФормы.ДействияФормы.Кнопки.Файл.Кнопки.Автосохранение.Пометка = Ложь;
	Форма.Открыть();
	Возврат "Запрос открыт для отладки";
КонецФункции
Показать
126. ниЗнайка 24.12.14 04:46 Сейчас в теме
попробуйте "Инструменты разработчика", там реализовано удобней
128. vec435 15 14.01.15 09:25 Сейчас в теме
у меня 2 пожелания (может быть я пропустил или не понял что уже реализовано - извиняйте)
1) если в коде есть такой участок
"Запрос.УстановитьПараметр("Счет01", ПланыСчетов.Хозрасчетный.ОсновныеСредства);
Запрос.УстановитьПараметр("Счет08", ПланыСчетов.Хозрасчетный.ВложенияВоВнеоборотныеАктивы);
Массив = Новый Массив;
Массив.Добавить(ПланыСчетов.Хозрасчетный.ОсновноеПроизводство_);
Массив.Добавить(ПланыСчетов.Хозрасчетный.ВспомогательныеПроизводства);
Массив.Добавить(ПланыСчетов.Хозрасчетный.ОбщепроизводственныеРасходы);
Массив.Добавить(ПланыСчетов.Хозрасчетный.ОбщехозяйственныеРасходы);
Массив.Добавить(ПланыСчетов.Хозрасчетный.БракВПроизводстве);
Массив.Добавить(ПланыСчетов.Хозрасчетный.ВспомогательныеПроизводства);
Массив.Добавить(ПланыСчетов.Хозрасчетный.ОбслуживающиеПроизводства);
Массив.Добавить(ПланыСчетов.Хозрасчетный.РасходыНаПродажу);

Запрос.УстановитьПараметр("СчетЗатрат", Массив);"

то хотелось бы иметь функцию по быстрому добавлению параметров в запрос из кода, например функцию "ЗапросУстановитьПараметр("Счет01", ПланыСчетов.Хозрасчетный.ОсновныеСредства) - достаточно переименовать в исходном коде

2) бывают часто ситуации что в результат выводятся данные из временной таблицы, источники для которой по тексту не так просто найти и держать в памяти - хотелось бы получить дерево источников для временной таблицы
130. AlexO 135 14.01.15 10:07 Сейчас в теме
(128) vec435, Вы предлагаете написать анализатор кода? Так это:
1. Очень и очень трудоемко, даже не считая уникальности каждой конфигурации и её объектов.
2. Если это получится - это будет само по себе ценно (для того же рефакторинга кода), и на порядки превысит ценность самого анализатора (отладчика запросов), куда вы предлагаете данный механизм вставить.
129. AlexO 135 14.01.15 10:03 Сейчас в теме
И тут также: не понял, в чем суть анализатора.
Вижу только единственный "плюс" - псевдовизуальное представление запроса.
Весь же остальной функционал - что он помогает оптимизировать без знания и понимания всего запроса, и как помогает исправлять ошибки - без понимания логики (чужого-не чужого, большого или маленького) запроса целиком?
131. jobkostya1c_ERP 100 14.01.15 10:20 Сейчас в теме
Минус консоли как замечал - нет "подкраски" вернее выделения "невидимых" значений типов <NULL>, <НЕОПРЕДЕЛЕНО>, <0>, <пустая строка> и <пустая ссылка тип - такой-то>, начал вот http://forum.infostart.ru/forum24/topic123101/message1282369/#message1282369 - надеюсь авторы разных консолей не против доработок.
Прикрепленные файлы:
Отладочный код для консоли Акулова и некоторых других.txt
132. DrAku1a 1679 14.01.15 10:59 Сейчас в теме
(131),(127) Принято к доработке. Блин, сам пользуюсь - а доделать руки не доходят... Сапожник без сапог...
(128), анализатор кода писать - задачка действительно тяжкая. При загрузке запросов из конфигуратора в режиме отладки - загружается текст запроса, а также все его параметры, в том числе и массивы, списки, таблицы значений и границы. Кроме того, в консоли есть возможность устанавливать параметры программно - см. скриншот.
Дерево источников для временной таблицы - можно увидеть в визуальной структуре запроса.
Прикрепленные файлы:
jobkostya1c_ERP; +1 Ответить
133. jobkostya1c_ERP 100 14.01.15 11:01 Сейчас в теме
(132) я раз уж начал допишу, а дальше Вы проверьте. Свой вклад так сказать. Все равно функционал можно отключить.
134. DrAku1a 1679 15.01.15 02:46 Сейчас в теме
(133) Хорошо. Но может имеет смысл - сделать обработчик ПриВыводеСтроки(), а ещё лучше - ПриПолученииДанных() в табличной части, заодно можно такие ячейки выделить цветом. И результат запроса переделывать не нужно будет. Как думаете?
Перем мВыделитьNULL Экспорт;
Перем мИменаКолонокРезультата;
...
//Процедура ВывестиРезультатЗапроса...
//...
	мИменаКолонокРезультата = Новый Массив;
	Если ЭлементыФормы.ДЗ.Значение<>Неопределено Тогда
		Для каждого Колонка Из ЭлементыФормы.ДЗ.Значение.Колонки Цикл
			мИменаКолонокРезультата.Добавить(Колонка.Имя);
		КонецЦикла;
	КонецЕсли;
//КонецПроцедуры

Процедура ДЗПриПолученииДанных(Элемент, ОформленияСтрок)
	Если мИменаКолонокРезультата=Неопределено или мВыделитьNULL<>Истина Тогда
		Возврат;
	КонецЕсли;
	ЦветЯчейкиСПустымЗначением = ЦветаСтиля.ЦветФонаПодсказки;
	Для каждого эл Из ОформленияСтрок Цикл
		ТекСтрока =эл.ДанныеСтроки;
		Для каждого ик Из мИменаКолонокРезультата Цикл
			ТекДанные = ТекСтрока[ик];
			ТекПредставление = "";
			Если ТекДанные=Null Тогда
				эл.Ячейки[ик].УстановитьТекст("<NULL>");
			ИначеЕсли ТекДанные=Неопределено Тогда
				эл.Ячейки[ик].УстановитьТекст("<НЕОПРЕДЕЛЕНО>");
			ИначеЕсли ТекДанные=0 Тогда
				эл.Ячейки[ик].УстановитьТекст("<0>");
			ИначеЕсли ТекДанные='00010101' Тогда
				эл.Ячейки[ик].УстановитьТекст("<Дата(1,1,1)>");
			ИначеЕсли ТекДанные="" Тогда
				эл.Ячейки[ик].УстановитьТекст("<Пустая строка>");
			Иначе
				Попытка
					Если ТекДанные.Пустая() Тогда
						эл.Ячейки[ик].УстановитьТекст("<Пустая ссылка: "+ТипЗнч(ТекДанные)+">");
						эл.Ячейки[ик].ЦветФона = ЦветЯчейкиСПустымЗначением;
					КонецЕсли;
				Исключение					
				КонецПопытки;
				Продолжить;
			КонецЕсли;
			эл.Ячейки[ик].ЦветФона = ЦветЯчейкиСПустымЗначением;
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры
Показать


И запрос для проверки:
ВЫБРАТЬ
	"Когда значение 0" КАК Поле1,
	0 КАК Поле2
ПОМЕСТИТЬ ВТ

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	"Когда значение NULL",
	NULL

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	"Когда значение """"",
	""

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	"Когда значение НЕОПРЕДЕЛЕНО",
	НЕОПРЕДЕЛЕНО

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	"Когда значение - пустая дата",
	ДАТАВРЕМЯ(1, 1, 1)

ОБЪЕДИНИТЬ

ВЫБРАТЬ
	"Когда значение - пустая ссылка",
	ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	Банки.Наименование КАК Наименование,
	ВТ.Поле2 КАК Поле2,
	ВТ1.Поле2 КАК Поле21,
	ВТ2.Поле2 КАК Поле22
ИЗ
	ВТ КАК ВТ,
	Справочник.Банки КАК Банки,
	ВТ КАК ВТ1,
	ВТ КАК ВТ2

УПОРЯДОЧИТЬ ПО
	Наименование,
	Поле2
Показать


У меня в проверочном запросе почти 4 000 000 строк - тормозов нет. ПриПолученииДанных() - обрабатывается порциями (при PgDn/PgUp/Home/End) - только для прорисовываемых строк.
jobkostya1c_ERP; +1 Ответить
135. AlexO 135 15.01.15 10:26 Сейчас в теме
(134)
сделать обработчик ПриВыводеСтроки(), а ещё лучше - ПриПолученииДанных()
В УФ их уже не существует, так что тут двойственный эффект от полезности такого обработчика.
136. AlexO 135 15.01.15 10:27 Сейчас в теме
(134)
У меня в проверочном запросе почти 4 000 000 строк
Запрос 4 млн строк? Это что - написана ОС в виде запроса 1С?
137. DrAku1a 1679 15.01.15 10:32 Сейчас в теме
(136) Ой... Имеется в виду 4 000 000 строк в результате выполнения запроса.
139. AlexO 135 15.01.15 10:39 Сейчас в теме
(137)
Имеется в виду 4 000 000 строк
Честно - даже не представляю, как окно-вывод с таблицей строк 1С, тормозящая где только можно, отображает 4 млн строк ))
142. DrAku1a 1679 15.01.15 15:46 Сейчас в теме
(139) AlexO, вообще без проблем показывает. Тормозит? Не, не замечал такого.
143. AlexO 135 15.01.15 15:54 Сейчас в теме
(142) А как вы опеределили количество записей в списке?
144. DrAku1a 1679 15.01.15 16:00 Сейчас в теме
146. AlexO 135 15.01.15 16:45 Сейчас в теме
(144)
ТЗ.Количество()
А где тут количество записей в списке? Или вы назвали списком - вывод ТЗ в ТЧ на форме?
147. DrAku1a 1679 15.01.15 16:51 Сейчас в теме
(146)Да. В запросе там используется вывод в ТЗ. Поскольку это не УФ - тормозов нет. Как будет на УФ - ещё не знаю.
(141)Анатомия платформы. Как устроен динамический список.
Для порционного чтения запросом - как-то так:
ВЫБРАТЬ ПЕРВЫЕ 100
  Ссылка 
из <Источник>
где
  Ссылка>&НачальныйЭлемент
Упорядочить ПО
  Ссылка
Автоупорядочивание
Показать

&НачальныйЭлемент - изначально пустая ссылка, потом - последний элемент в порции.
jobkostya1c_ERP; +1 Ответить
149. jobkostya1c_ERP 100 17.01.15 10:30 Сейчас в теме
(147) так уже модификация запроса на лету нужна. Это уже в сам механизм "парсинга" нужно лезть.
150. DrAku1a 1679 18.01.15 11:35 Сейчас в теме
138. DrAku1a 1679 15.01.15 10:33 Сейчас в теме
(136) Ну да, в УФ надо будет всё-равно переделывать.
140. jobkostya1c_ERP 100 15.01.15 14:38 Сейчас в теме
(134) насчет "раскраски" цветом как в других консолях тоже думал. Вот что значит профессиональное программирование! Споткнулся на типах и переделывал раза 4. Хотя бы для толстых форм нужно доделать. Там больше хотелось с типами поработать и с таблицами для практики.
С запросами сразу не хотелось связываться, ведь если отбор на равенство и примитивный скорость встроенных методов языка и запроса одинакова?
Вот насчет управляемых форм (да еще чтоб порциями в пределах видимости экрана) тоже хорошая задача. По-моему динамический список сам что-то читает и передает на клиент что он "в пределах видимости". Но начнем с малого.
141. AlexO 135 15.01.15 15:08 Сейчас в теме
(140) kostyaomsk,
По-моему динамический список сам что-то читает и передает на клиент что он "в пределах видимости".
ДС читает все, а вот выводит только то, что на экране помещается, т.е. блоками.
Вы как себе представляете - крутанул список вниз, и пошел запрос обрабатываться к базе?
145. jobkostya1c_ERP 100 15.01.15 16:10 Сейчас в теме
(141) AlexO, вопрос по данному механизму чтения и вывода больших данных в клиент-сервере:
1. Если в ОЗУ на сервере есть большая таблица значений в несколько миллионов строк и ее нужно отображать.
2. Тоже если есть запрос в динамическом списке. Он то по мере необходимости запрашивает на сервере.
Как тут поступать? Как раз для задач где делаем запрос в консоли и хотим это все отображать частями и чтоб не тормозило. Просто что-то нужно найти и прочитать в работающей базе (заодно чтоб тип в глаза бросился).
148. AlX0id 16.01.15 12:41 Сейчас в теме
О, вот обновление заполнения параметров есть гуд ) Поставил бы еще один плюсик, да уже есть один )
152. uri1978 137 01.09.16 17:51 Сейчас в теме
Здравствуйте. Проект еще жив? Версия: 1216
1. Отжимаем кнопку "Не удалять временные таблицы запроса", выделяем часть запроса и нажимаем "Выполнить по выделенной части запроса". На закладке "Результат" не работает кнопка "Вывести таблицу".
{Форма.ОсновнаяФорма.Форма(1856)}: Ошибка при вызове метода контекста (Вывести)
Построитель.Вывести();
по причине:
Не установлен менеджер временных таблиц

2. В параметрах так и не смог установить список значений (План счетов бухгалтерского учета), постоянно очищает параметр. Сперва установил значение параметра, потом нажал на флажок в колонке "СЗ", открыл список, отредактировал, закрыл - пусто. При установке/снятии флажка "СЗ" в таблице параметров, выдает ошибку. Параметр типа "План счетов бухгалтерского учета" (мне нужно ввести список значений, предыдущая ошибка):
{Форма.ОсновнаяФорма.Форма(2315)}: Поле объекта не обнаружено (ТипЗначения)
ТД.Значение = ?(ТипЗнч(ТД.ТипЗначения)=Тип("ОписаниеТипов"), ТД.ТипЗначения.ПривестиЗначение(), Неопределено);

3. Можно ли отключить предупреждение - "Не заполнены ВСЕ параметры запроса." Они и не должны быть всегда заполнены.
4. Не понял как работает пошаговое выполнение запроса. Как не игрался настройками не смог запустить.
5. После функции "Сделать вложенным запросом" не работает Ctrl+Z. Как вернуть если передумал? После собирания/разбирания пакетного запроса, тоже нельзя отменить.
6. Можно ли функцию "Просмотр ВТ", на закладке "Результат" сделать выпадающим списком, чтобы можно было открывать несколько временных таблиц (каждая в своем окне) и анализировать.
7. Собирание пакетного запроса во вложенный не работает. Удаляйте "Разрешенные" и "Индексировать" из каждого пакетного запроса при собирании. Если в запросе используется наложение условий на виртуальную таблицу остатков из временной таблицы, тоже не может собрать. В общем, не работает.

Дальше не тестировал.
153. DrAku1a 1679 02.09.16 02:39 Сейчас в теме
(152) Проект жив, но времени уделяю мало, хотя сам - пользуюсь )
1. Отжимаем кнопку "Не удалять временные таблицы запроса", выделяем часть запроса и нажимаем "Выполнить по выделенной части запроса". На закладке "Результат" не работает кнопка "Вывести таблицу".
Принято.
2. В параметрах так и не смог установить список значений (План счетов бухгалтерского учета), постоянно очищает параметр.
Список значений не работает - это баг, в будущей версии - поправлю.
3. Можно ли отключить предупреждение - "Не заполнены ВСЕ параметры запроса." Они и не должны быть всегда заполнены.
Для незаполненных параметров - можно выбрать любой тип значения, кроме "Неопределено" - тогда это сообщение не будет появляться. Ранее, в прошлых версиях - в таблице параметров был флажок "Оставлять незаполненным", но я его убрал. Могу вернуть.
В любом случае, считаю сообщение - полезным напомнимнием. И там не предупреждение, а вопрос "Продолжить?" (Да/Нет).
4. Не понял как работает пошаговое выполнение запроса. Как не игрался настройками не смог запустить.
1. В текстовом поле должен быть пакетный запрос
2. Нажать кнопку "Пошаговое выполнение пакета запросов" - появится окошко (прикреплено справа)
3. Нажать "Выполнить" - в окошке будет заполнен список запросов из пакета
4. Выбрать запросы, не которых нужно делать точку останова (в окошке справа, по умолчанию - все выбраны, двойной клик по строке - переключает выбрано/не выбрано)
5. Нажать выполнить - при этом будет выполнен один шаг, изучить результат, повторить шаг 5 до конца пакета запросов.
6. Когда все запросы будут выполнены - при нажатии "Выполнить" - будет выдано сообщение "Выполнение пакета запросов завершено".
Примечание: на шагах 3-5 поле с текстом запросов - блокируется от изменений. Для того, чтобы прекратить выполнение - нажмите "Стоп" в панели со списком запросов (справа). А ещё, на этой панели - есть кнопки "Вернуться на шаг назад" и "Показать".
5. После функции "Сделать вложенным запросом" не работает Ctrl+Z. Как вернуть если передумал? После собирания/разбирания пакетного запроса, тоже нельзя отменить.
Как взаимодействовать с CTRL+Z - я не знаю, поэтому сделал кнопку "Отменить изменения" - вторая справа, становится доступной - после выполнения операции "Сделать вложенным запросом", "Извлечь подзапрос из вложенного", "Разложить запрос" или "Собрать запрос", но действует только на одну операцию.
6. Можно ли функцию "Просмотр ВТ", на закладке "Результат" сделать выпадающим списком, чтобы можно было открывать несколько временных таблиц (каждая в своем окне) и анализировать.
Можно. Сделаю в будущем.
7. Собирание пакетного запроса во вложенный не работает. Удаляйте "Разрешенные" и "Индексировать" из каждого пакетного запроса при собирании. Если в запросе используется наложение условий на виртуальную таблицу остатков из временной таблицы, тоже не может собрать. В общем, не работает.
Принято.
154. DrAku1a 1679 02.09.16 06:15 Сейчас в теме
Обновил публикацию (добавлена новая версия с исправлениями и наработками). Описание - обновлю чуть позднее.
Блиин... Обновил публикацию (добавил версию) - и система сама поставила цену на все файлы в 1$m :-(
180. AlexO 135 17.02.21 23:16 Сейчас в теме
(154) Выложи в комментах, и будет забесплатно раздаваться)
155. MonteCriZto 112 04.04.17 02:37 Сейчас в теме
{ВнешняяОбработка.ОтладчикЗапросов.МодульОбъекта(429)}: Ошибка при вызове конструктора (COMОбъект): -2147221164(0x80040154): Класс не зарегистрирован
отладчик запросов для х64 платформы
Функция глозПолучитьТекущееВремяВМиллисекундах() Экспорт
	
	Попытка
		Scr = Новый COMОбъект("MSScriptControl.ScriptControl");
	Исключение
		Сообщить(ОписаниеОшибки(), СтатусСообщения.Внимание);
		Возврат 0;
	КонецПопытки;
	Scr.Language = "javascript";
	Время = Scr.Eval("new Date().getTime()");
	Возврат Время;
	
КонецФункции              
Показать

комобъект MSScriptControl.ScriptControl на х64 отсутсвует..
платформа 8.3.9.2170 (х64)
156. корум 287 05.05.17 11:07 Сейчас в теме
(0) Каким образом запустить на управляемых формах?
157. DrAku1a 1679 07.05.17 13:12 Сейчас в теме
(156) На управляемых формах - никак. Только обычные.
158. 28z 15.06.17 14:35 Сейчас в теме
А так только на обычных и останется? Не будет в дальнейшем перехода на управляемые?
Vida; el_nov; gubanoff; +3 Ответить
161. juricher 5 15.11.18 10:49 Сейчас в теме
(158) Поддерживаю. Скачал сегодня, а обработка для обычных форм. Будет ли для УФ? Или может есть?
159. salazar 1 27.01.18 09:33 Сейчас в теме
Подскажите, пожалуйста
Как при открытии из конфигуратора попасть в открывшийся отладчик?

Пока стоишь на точке останова попасть туда невозможно.
Если завершить отладку по F5, то теряются параметры запроса.
160. Tailor_Made 13.06.18 16:32 Сейчас в теме
Крутая штука, большое спасибО!
162. пользователь 20.03.19 05:36
Сообщение было скрыто модератором.
...
163. yuraskas 176 02.10.19 15:05 Сейчас в теме
Жаль что ошибка СЗ в параметрах в последней версии так и не исправлена
164. vik2006 137 21.08.20 04:29 Сейчас в теме
Доброго времени суток, уважаемый автор. А дальше развитие было этой обработки? Для управляемых конфигураций есть такое?
165. DrAku1a 1679 21.08.20 14:48 Сейчас в теме
(164) Здравствуйте! Спасибо за интерес.
Разработка аналога на управляемых формах ведется с большими перерывами, связанными главным образом с нехваткой времени, мотивации и решений некоторых технических вопросов.

В настоящее время в управляемых формах сам пользуюсь "Консоль запросов для УФ универсальная 8.3.7.3", переделав интерфейс под подобие отладчика запросов. Не во всём удобная, но умеет много и для большей части потребностей её хватает (скриншот прилагаю).

Также, рекомендую ознакомиться с "Консоль запросов 9000"
Прикрепленные файлы:
166. DrAku1a 1679 21.08.20 15:03 Сейчас в теме
(164) Ну и пару скриншотов разработки - для интереса:
Прикрепленные файлы:
167. vik2006 137 27.08.20 00:59 Сейчас в теме
(166)спасибо, бум ждать продолжения банкета.
169. DrAku1a 1679 28.09.20 02:47 Сейчас в теме
170. zels 171 05.11.20 10:57 Сейчас в теме
То, что нет раскраски запроса - сильно неудобно
171. zels 171 05.11.20 14:19 Сейчас в теме
(170) После танцев с бубном раскраска появилась.
172. DrAku1a 1679 05.11.20 14:54 Сейчас в теме
(171) Про танцы с бубном - можно поподробнее?)
173. zels 171 06.11.20 07:36 Сейчас в теме
Ставлю флажок "раскрашивать", убираю флажок". Закрываю/открываю обработку. Выхожу из программы, снова захожу. Делаю копию обработки. И на копии раскраска пошла правильно. А потом и на исходной обработке.

Но вылезла другая проблема - запрос то отрабатывает то нет. Просто делаю копию запроса и она не работает.
Все запросы пакетные и капризничают. Жму выполнить - есть результат. Косметически редактирую (чтоб выглядел покомпактнее), выполняю, и активным становится закладка параметры, а в результате нет записей. Никаких сообщение об ошибках .
174. zels 171 06.11.20 07:39 Сейчас в теме
Таблицы в менеджере перед выполненим запроса удаляются? Если запрос подряд выполнить несколько раз. что будет с временными таблицами?
177. DrAku1a 1679 09.11.20 16:47 Сейчас в теме
(174) Перед каждым выполнением выполнением запроса создаётся новый менеджер временных таблиц. Старый - удаляется сборщиком мусора. При выполнении пакетного запроса пошагово - МВТ создаётся перед началом и не уничтожается после завершения.
175. zels 171 09.11.20 07:35 Сейчас в теме
Вот такой странный возврат срабатывает и запрос не выполняется. Я его закомментировал.
Прикрепленные файлы:
176. DrAku1a 1679 09.11.20 16:45 Сейчас в теме
(175) Проверяется заполненность всех параметров (пустая ссылка, пустая строка = ошибка), если нужно передать именно пустую ссылку как параметр - нужно установить флажок в самом первом столбце ("Х").
178. zels 171 10.11.20 06:52 Сейчас в теме
Да заполнены все параметры...

Нашел в чем дело.

В запросе есть параметры НачДата, КонДата, оба с автозаполнением и датой 05.11.2020 23:59:59
После косметического изменения запроса, проверка возвращала ложь и запрос не выполнялся.
Убрал галку автозаполнение с НачДата и запрос выполнился.

....
Просто выглядело это странно - в других консолях запрос выполнялся без проблем.
И в этой выполнялся, но только до косметического изменения типа:
Выбрать Поле1, => Выбрать Поле1, Поле2
Поле 2

По сути ничего не менялось, а переставал работать...
Оставьте свое сообщение