Вход | Регистрация



Произвольный запрос во время отладки

Произвольный запрос во время отладки
Я
   Nyarlathotep
 
04.05.18 - 17:21
Всем привет!

Существует ли возможность во время отладки выполнить произвольный запрос? То есть прямо во время отладки я где-то пишу текст запроса, выполняю его и получаю результат. Пробовал делать функцию в общ. модуле и передавать туда текст запроса параметром через табло, но в табло банально места не хватает на весь текст запроса.
 
 
   aleks_default
 
1 - 04.05.18 - 17:34
Главное зачем?
   Nyarlathotep
 
2 - 04.05.18 - 17:35
(1) Главное как.
   vde69
 
3 - 04.05.18 - 17:39
в отдельно открытой базе - запускаешь консоль запроса и хоть обвыполняйся
   D_E_S_131
 
4 - 04.05.18 - 17:40
Главное, что мешает открыть новый сеанс и там запустить консоль запросов?
   Nyarlathotep
 
5 - 04.05.18 - 17:41
(3) Ну этож надо новый сеанс запускать... Неужели серьезно нет в отладчике такой функции?
   aleks_default
 
6 - 04.05.18 - 17:43
На этапе отладки у тебя уже все запросы должны быть сформированы
   EugeniaK
 
7 - 04.05.18 - 17:50
(0) Существует. В виде произвольного кода https://kb.mista.ru/article.php?id=105
   EugeniaK
 
8 - 04.05.18 - 17:52
Можно запрос собирать частяи с помощью этих функций
На совсем крайний случай прописать свой текст запроса в отдельной функции внешей обработки и аналогично через отладку запустить.
   Nyarlathotep
 
9 - 04.05.18 - 17:58
(7) (8) Ага, спасибо.
   mistеr
 
10 - 04.05.18 - 20:36
(0) Есть вариации консоли запросов с этой функцией.
 
 Рекламное место пустует
   МимохожийОднако
 
11 - 04.05.18 - 22:15
(1) +100500
   Nyarlathotep
 
12 - 07.05.18 - 11:28
В итоге сделал так, если кому будет интересно:

Сделал внеш. обработку с экспортной функцией ВыполнитьЗапрос() в модуле объекта, в которой текст моего запроса и возвращающая результат этого запроса. У пользователя отключил галку "Защита от опасных действий" в конфигураторе, чтобы при открытии обработки через отладчик система не задавала вопросов и не зависала. Потом в отладчике в окне shift+f9 в любой момент пишу следующее:

ВнешниеОбработки.Создать("C:\temp\temp.epf").ВыполнитьЗапрос()

Все работает.
   Timon1405
 
13 - 07.05.18 - 11:30
(0) откройте для себя http://devtool1c.ucoz.ru/
   Nyarlathotep
 
14 - 07.05.18 - 11:46
(13) Тимон, ты че, сидишь в теме и ждешь, когда к тебе заказы на твое расширение к конфигуратору посыпятся?))
   novichok79
 
15 - 07.05.18 - 11:50
берете готовую консоль запросов с данной функцией, например эту http://catalog.mista.ru/public/73694/
либо пишете свою консоль с возможностью открытия формы в обычном режиме в толстом клиенте.
   Timon1405
 
16 - 07.05.18 - 11:55
(14) во-первых оно не мое. во-вторых оно бесплатное. в третьих, я с вами на брудершафт не пил.
   Nyarlathotep
 
17 - 07.05.18 - 11:57
(15) Это где там данная функция? Я, в отладчике, прохожу 3 строчки, мне нужно понять, как изменились данные регистров по по пути от первой строчки до 3-й(смотрю их на 1-й и 3-й строке). И каким образом данная машинерия мне в данном случае поможет? Или вы, мьсе, изобрели консоль запросов, которую можно вызвать в любой момент из отладчика с произвольным тестом запроса? Ну тогда вы просто инженерный гений какой-то)))
   Nyarlathotep
 
18 - 07.05.18 - 12:03
(16) Тимон, ты че такой серьезный, Пумба всех твоих жучков слопал?)))
   novichok79
 
19 - 07.05.18 - 12:05
(17) а слабо описание прочитать?

Чтобы скопировать запрос - в отладчике - Shift+F9 - там пишем
ВнешниеОбработки.Создать(<ПутьДоКонсоли>).ОткрытьДляОтладки(Запрос, Истина, Истина)

первый параметр - Запрос или ПостроительЗапроса

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

третий параметр - если Истина - затереть историю сохраненных запросов (массив, который лежит в отдельном файле), если Ложь, то нет (в том случае если копируется пакетный запрос)
   assasu
 
20 - 07.05.18 - 12:08
(12)для твоих целей подойдет (3)
а вот если хочешь посмотреть временные таблицы тогда поделка годная...
   Nyarlathotep
 
21 - 07.05.18 - 12:09
(19) WOOOOOOOOOWWWWWW!!!!! IT IS REALLY MOST FUCKING AMAZING THING IN THIS FUCKING WORLD!!!
   assasu
 
22 - 07.05.18 - 12:10
что это
   novichok79
 
23 - 07.05.18 - 12:11
(21) ахахах, как мало надо для счастья оказывается.
   Nyarlathotep
 
24 - 07.05.18 - 12:12
(20) Временные таблицы можно посмотреть вот так Запрос.ВыполнитьПакетСПромежуточнымиДанными()
или вот так

Функция ПроверитьВремТаб(МенеджерВремТаб,ИмяВремтаб ="",Порядок = "") Экспорт

    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВремТаб;
    Запрос.Текст =
    "ВЫБРАТЬ
    | *
    |ИЗ
    | ВремТаб КАК ВремТаб
    |
    |УПОРЯДОЧИТЬ ПО Порядок";

    Запрос.Текст = СтрЗаменить(Запрос.Текст,"ВремТаб",ИмяВремтаб); 
    Если Порядок = "" тогда 
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"УПОРЯДОЧИТЬ ПО Порядок","");
    Иначе 
        Запрос.Текст = СтрЗаменить(Запрос.Текст,"Порядок",Порядок);
    КонецЕсли; 

    ТЗ = Запрос.Выполнить().Выгрузить(); 

    Возврат ТЗ; 

КонецФункции

Из общего модуля, в зависимости от ситуации.
   Nyarlathotep
 
25 - 07.05.18 - 12:12
(22) "Я уже говорил тебе, что такое безумие?" (c)
   novichok79
 
26 - 07.05.18 - 12:12
(24) в 8.3 это реализовано в менеджере временных таблиц.
   novichok79
 
27 - 07.05.18 - 12:14
(25) you got hooked on one-ass like it's good crack
   Nyarlathotep
 
28 - 07.05.18 - 12:22
(26) You can see tables in debugger, yes, but you can't see it's content, even now in current releases...
   Nyarlathotep
 
29 - 07.05.18 - 12:23
(27) no no no, it's not so bad...
   Nyarlathotep
 
30 - 07.05.18 - 12:30
(28) ExecuteBatchWithIntermediateData() clean solve this problem, but in some situations you can't use this metod, becouse second execution of querry with definite TempTablesManager may give you error... So, in taht situation you can use procedure from commom module after querry execution and see content of temp tables
   novichok79
 
31 - 07.05.18 - 13:51
(28) the main mistake of Russians when they begin to speak in Western European languages is the lack of articles. no, you can see the data through the GetData() method, you gonna get the result of the query, which can be unload via the Unload() method. You just did not try it.

try this:
    
query = new query;
tm = new temptablesmanager;

query.TempTablesManager = tm;
query.text =
"SELECT
|    1 AS Shit
|INTO ShitHole";

query.execute();
result = tm.tables.get(0).getdata();
shithole = result.unload();
   novichok79
 
32 - 07.05.18 - 14:00
(31) * can be unloaded. sorryan 4 da mistakes.
   aleks_default
 
33 - 07.05.18 - 16:38
(7)Поржал. Где Вы откопали это старье?

"Известно, что код на сервере не отлаживается.
Поэтому варианты отладки:
1. Трассировка (вставка диагностических сообщений).
2. Выгрузить базу в файловую копию и там отлаживать.
3. Поставить галочку "Клиент" на интересующем вас модуле и отлаживать. Потом вернуть галочку обратно" :)
 
 


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует