|
Произвольный запрос во время отладки | ☑ | ||
---|---|---|---|---|
0
Nyarlathotep
04.05.18
✎
17:21
|
Всем привет!
Существует ли возможность во время отладки выполнить произвольный запрос? То есть прямо во время отладки я где-то пишу текст запроса, выполняю его и получаю результат. Пробовал делать функцию в общ. модуле и передавать туда текст запроса параметром через табло, но в табло банально места не хватает на весь текст запроса. |
|||
1
aleks_default
04.05.18
✎
17:34
|
Главное зачем?
|
|||
2
Nyarlathotep
04.05.18
✎
17:35
|
(1) Главное как.
|
|||
3
vde69
04.05.18
✎
17:39
|
в отдельно открытой базе - запускаешь консоль запроса и хоть обвыполняйся
|
|||
4
D_E_S_131
04.05.18
✎
17:40
|
Главное, что мешает открыть новый сеанс и там запустить консоль запросов?
|
|||
5
Nyarlathotep
04.05.18
✎
17:41
|
(3) Ну этож надо новый сеанс запускать... Неужели серьезно нет в отладчике такой функции?
|
|||
6
aleks_default
04.05.18
✎
17:43
|
На этапе отладки у тебя уже все запросы должны быть сформированы
|
|||
7
EugeniaK
04.05.18
✎
17:50
|
(0) Существует. В виде произвольного кода https://kb.mista.ru/article.php?id=105
|
|||
8
EugeniaK
04.05.18
✎
17:52
|
Можно запрос собирать частяи с помощью этих функций
На совсем крайний случай прописать свой текст запроса в отдельной функции внешей обработки и аналогично через отладку запустить. |
|||
9
Nyarlathotep
04.05.18
✎
17:58
|
(7) (8) Ага, спасибо.
|
|||
10
mistеr
04.05.18
✎
20:36
|
(0) Есть вариации консоли запросов с этой функцией.
|
|||
11
Мимохожий Однако
04.05.18
✎
22:15
|
(1) +100500
|
|||
12
Nyarlathotep
07.05.18
✎
11:28
|
В итоге сделал так, если кому будет интересно:
Сделал внеш. обработку с экспортной функцией ВыполнитьЗапрос() в модуле объекта, в которой текст моего запроса и возвращающая результат этого запроса. У пользователя отключил галку "Защита от опасных действий" в конфигураторе, чтобы при открытии обработки через отладчик система не задавала вопросов и не зависала. Потом в отладчике в окне shift+f9 в любой момент пишу следующее: ВнешниеОбработки.Создать("C:\temp\temp.epf").ВыполнитьЗапрос() Все работает. |
|||
13
Timon1405
07.05.18
✎
11:30
|
(0) откройте для себя http://devtool1c.ucoz.ru/
|
|||
14
Nyarlathotep
07.05.18
✎
11:46
|
(13) Тимон, ты че, сидишь в теме и ждешь, когда к тебе заказы на твое расширение к конфигуратору посыпятся?))
|
|||
15
novichok79
07.05.18
✎
11:50
|
берете готовую консоль запросов с данной функцией, например эту http://catalog.mista.ru/public/73694/
либо пишете свою консоль с возможностью открытия формы в обычном режиме в толстом клиенте. |
|||
16
Timon1405
07.05.18
✎
11:55
|
(14) во-первых оно не мое. во-вторых оно бесплатное. в третьих, я с вами на брудершафт не пил.
|
|||
17
Nyarlathotep
07.05.18
✎
11:57
|
(15) Это где там данная функция? Я, в отладчике, прохожу 3 строчки, мне нужно понять, как изменились данные регистров по по пути от первой строчки до 3-й(смотрю их на 1-й и 3-й строке). И каким образом данная машинерия мне в данном случае поможет? Или вы, мьсе, изобрели консоль запросов, которую можно вызвать в любой момент из отладчика с произвольным тестом запроса? Ну тогда вы просто инженерный гений какой-то)))
|
|||
18
Nyarlathotep
07.05.18
✎
12:03
|
(16) Тимон, ты че такой серьезный, Пумба всех твоих жучков слопал?)))
|
|||
19
novichok79
07.05.18
✎
12:05
|
(17) а слабо описание прочитать?
Чтобы скопировать запрос - в отладчике - Shift+F9 - там пишем ВнешниеОбработки.Создать(<ПутьДоКонсоли>).ОткрытьДляОтладки(Запрос, Истина, Истина) первый параметр - Запрос или ПостроительЗапроса второй параметр - если поставить Истина - то запрос принудительно сохранится в файл, если поставить Ложь, то в том случае если запрос содержит выборку, то консолька с запросом откроется в режиме предприятия... третий параметр - если Истина - затереть историю сохраненных запросов (массив, который лежит в отдельном файле), если Ложь, то нет (в том случае если копируется пакетный запрос) |
|||
20
assasu
07.05.18
✎
12:08
|
(12)для твоих целей подойдет (3)
а вот если хочешь посмотреть временные таблицы тогда поделка годная... |
|||
21
Nyarlathotep
07.05.18
✎
12:09
|
(19) WOOOOOOOOOWWWWWW!!!!! IT IS REALLY MOST FUCKING AMAZING THING IN THIS FUCKING WORLD!!!
|
|||
22
assasu
07.05.18
✎
12:10
|
что это
|
|||
23
novichok79
07.05.18
✎
12:11
|
(21) ахахах, как мало надо для счастья оказывается.
|
|||
24
Nyarlathotep
07.05.18
✎
12:12
|
(20) Временные таблицы можно посмотреть вот так Запрос.ВыполнитьПакетСПромежуточнымиДанными()
или вот так Функция ПроверитьВремТаб(МенеджерВремТаб,ИмяВремтаб ="",Порядок = "") Экспорт Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = МенеджерВремТаб; Запрос.Текст = "ВЫБРАТЬ | * |ИЗ | ВремТаб КАК ВремТаб | |УПОРЯДОЧИТЬ ПО Порядок"; Запрос.Текст = СтрЗаменить(Запрос.Текст,"ВремТаб",ИмяВремтаб); Если Порядок = "" тогда Запрос.Текст = СтрЗаменить(Запрос.Текст,"УПОРЯДОЧИТЬ ПО Порядок",""); Иначе Запрос.Текст = СтрЗаменить(Запрос.Текст,"Порядок",Порядок); КонецЕсли; ТЗ = Запрос.Выполнить().Выгрузить(); Возврат ТЗ; КонецФункции Из общего модуля, в зависимости от ситуации. |
|||
25
Nyarlathotep
07.05.18
✎
12:12
|
(22) "Я уже говорил тебе, что такое безумие?" (c)
|
|||
26
novichok79
07.05.18
✎
12:12
|
(24) в 8.3 это реализовано в менеджере временных таблиц.
|
|||
27
novichok79
07.05.18
✎
12:14
|
(25) you got hooked on one-ass like it's good crack
|
|||
28
Nyarlathotep
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...
|
|||
29
Nyarlathotep
07.05.18
✎
12:23
|
(27) no no no, it's not so bad...
|
|||
30
Nyarlathotep
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
|
|||
31
novichok79
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(); |
|||
32
novichok79
07.05.18
✎
14:00
|
(31) * can be unloaded. sorryan 4 da mistakes.
|
|||
33
aleks_default
07.05.18
✎
16:38
|
(7)Поржал. Где Вы откопали это старье?
"Известно, что код на сервере не отлаживается. Поэтому варианты отладки: 1. Трассировка (вставка диагностических сообщений). 2. Выгрузить базу в файловую копию и там отлаживать. 3. Поставить галочку "Клиент" на интересующем вас модуле и отлаживать. Потом вернуть галочку обратно" :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |