gifts2017

Консоль запросов с временными таблицами

Опубликовал Олег Маслов (Mleg) в раздел Программирование - Инструментарий

Предназначена для отладки запросов с временными таблицами.
На базе обработки с ИТС (обычное приложение).
Похожа на разработку http://infostart.ru/public/19577/, но предлагает более простой сценарий использования.

Позволяет "отловить" запрос с параметрами и временными таблицами во время отладки и перенести в консоль.

Платформа 8.3.5 и старше, обычное приложение.

Использование:

  1. Разместить обработку в каталоге, доступном при исполнении кода.
    Для клиент-серверного варианта, каталог должен быть доступен по сети пользователю, под которым работает служба сервера 1с (либо разместить прямо на сервере).  
  2. Остановиться в отладчике перед выполнением запроса. 
  3. Вычислить выражение:
    ВнешниеОбработки.Создать("\\ПутьКОбработке\КонсольЗапросов.epf").СериализоватьЗапрос(Запрос)
  4. Скопировать результат вычисления (строку XML) в буфер обмена. 
  5. В режиме Предприятие вставить скопированный запрос по кнопке "Загрузить сериализованный" в контекстном меню дерева запросов. 
  6. Всё, можно выполнять запрос. 

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

Более никакими "фичами" консоль не обладает.

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

ВнешниеОбработки.Создать("\\Комп\Шара\КонсольЗапросов.epf").СериализоватьЗапрос(Запрос, "Вт1, Вт2, Вт3")

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

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

Наименование Файл Версия Размер Кол. Скачив.
КонсольЗапросов.epf
.epf 46,92Kb
01.10.15
5
.epf 46,92Kb 5 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Роман Ложкин (webester) 03.10.15 20:24
Я просто оставлю это здесь. Поиск как известно не для простых смертных.
2. Олег Маслов (Mleg) 08.10.15 12:24
(1) webester, вы бы показали конкретно инструмент, который делает то же самое.
А так вы просто умничаете.
Я вот не нашел.

Везде либо назначение другое (не перехват запроса с ВТ в отладчике), либо нужно модифицировать конфигурацию, либо процесс применения существенно сложней.
3. DenisCh Гейтс (DenisCh) 08.10.15 12:26
А что, инструменты разработчика (в том числе портативные) перестали решать эту задачу?
4. Игорь Кащеев (IgorXml) 08.10.15 12:44
(3) DenisCh, Не совсем по теме, но есть способ вытащить №-запрос или вирт.таблицу из запроса без всяких инструментов:
РезультатЗапроса = Запрос.ВыполнитьПакет();
N_Запрос =   РезультатЗапроса[Номер].Выгрузить();
5. Роман Ложкин (webester) 09.10.15 10:06
(2) я сделал немного больше, я сразу дал ссылку на огромный выбор таких инструментов и способов решения описанной в статье проблемы, но если вам сложно по ней пройти то вот к примеру:
http://infostart.ru/public/175229/

(4)Автор в (2) говорит, что читать\писать код это сложно. Функции там писать или что то еще, ну его... проще создавать внешние обработки.
То есть вот это вставить в "вычислить выражение" сложно(я сам не пробовал, я работаю только с измененными конфигурациями, но нет причин по которым не будет работать)
ВнешниеОбработки.Создать("\\ПутьКОбработке\ОбработкаПросмотраВТ.epf").ПосмотретьВТ(Запрос, "НужнаяТаблица")

А то что предлагает автор нет. Кхм.. ну может быть. Сама фишка в том, что он сериализует в текст данные ВТ как я понял.
6. Олег Маслов (Mleg) 23.10.15 12:35
(3) DenisCh, Решает. Но не всегда, потому что по-другому.
Там запрос переносится только в консоль запросов, запущенную в отлаживаемом сеансе.
Т.е., не встраивая подсистему, не разрешая использовать обычные формы в управляемом приложении, ничего не получится, т.к. консоль запросов в ИР - обычная форма.
У меня же можно остановиться в сеансе управляемого приложения, засериализовать запрос, а отлаживать в другом сеансе, запустив обычное приложение.

Кроме того, если вы не используете ИР, требуется гораздо большее время на "холодный" старт.
Я же предлагаю такую же "фичу" во всем привычной и многими любимой простой Консоли запросов с ИТС,
7. Олег Маслов (Mleg) 23.10.15 12:45
(5) webester, "Чукча не читатель, чукча писатель".
Моя обработка решают другую задачу:
Перенос запроса с параметрами и временными таблицами в "типовую" консоль запросов, и немедленное выполнение запроса в консоли.

Просмотр содержимого одной временной таблицы - это вопрос слишком простой и тривиальный, чтобы целую разработку публиковать. Кроме того, в современных типовых (УТ 11) уже есть для этого функция "ПоказатьВременнуюТаблицу" (в модуле СкладыСервер что ли).
8. Сергей Старых (tormozit) 26.10.15 15:16
(6) "не встраивая подсистему, не разрешая использовать обычные формы в управляемом приложении, ничего не получится, т.к. консоль запросов в ИР - обычная форма"
Не совсем так. В ИР (включая портативный) есть и режим отложенной отладки, когда отладка выполняется в другом сеансе асинхронно. Портативный - http://www.youtube.com/watch?v=hiw_aYVOvFc, подсистема - https://www.youtube.com/watch?v=54WwCC4j03U . Поэтому не обязательно строго в управляемом приложении открывать консоль запросов.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа