|
Есть ли метод определения имени процедуры/функции в которой выполняется код ? | ☑ | ||
---|---|---|---|---|
0
smaharbA
21.10.13
✎
12:43
|
Как то возможно определить имя процедуры, а не только выполняемой строки (можно определить вызвав исключение) ?
|
|||
1
1dvd
21.10.13
✎
12:44
|
Этот человек опять чего-то задумал. Инфа 146%
|
|||
2
ДенисЧ
21.10.13
✎
12:44
|
Да тут уже не 146...
Тут порядка 1000.... |
|||
3
hhhh
21.10.13
✎
12:51
|
(0) отладку включить, не?
|
|||
4
Serginio1
21.10.13
✎
13:01
|
Не добавила 1С в ОписаниеОшибки StackTrace
|
|||
5
Vitamax3
21.10.13
✎
13:07
|
запоминать вначале каждой процедуры
|
|||
6
Vitamax3
21.10.13
✎
13:08
|
а нет, хрень ))
|
|||
7
Vitamax3
21.10.13
✎
13:11
|
хотя ...смотря как запоминать..
|
|||
8
Maxus43
21.10.13
✎
13:11
|
в 8.3 добавили контекст выполнения (ЭтотМодуль) или нет?
|
|||
9
Сисой
21.10.13
✎
13:12
|
Выгрузить заранее модули в тексты и найти в них строку. Думаю, текст строки и её номер дадут достаточно уникальный ключ. :-)
|
|||
10
Maxus43
21.10.13
✎
13:13
|
что-то не могу придумать для чего это может быть полезно... Даже если ошибка - разбираться надо всё равно в конфигураторе, а там номера строки достаточно
|
|||
11
xReason
21.10.13
✎
13:15
|
Отражение(рефликсия) в 1С да это вообще круто, это в 8.3.99 ?
|
|||
12
Поросенок Петр
21.10.13
✎
13:23
|
Процедура Сделать()
Сообщить("Эта процедура называется ""Сделать()"", инфа 146%"); |
|||
13
MKZM
21.10.13
✎
13:25
|
(12) Надо в сообщение добавить полный текст процедуры\функции
|
|||
14
Лефмихалыч
21.10.13
✎
13:25
|
(0) для каких таких целЕй?
|
|||
15
Serginio1
21.10.13
✎
13:33
|
(14) Цель видимо одна, найти откуда вызывался данный метод.
В Net активно используют StackTrace, что можно сделать и в 1С http://msdn.microsoft.com/ru-ru/library/system.exception.stacktrace.aspx |
|||
16
Maxus43
21.10.13
✎
13:38
|
Стэк вызовов есть для этого в 1с
|
|||
17
xReason
21.10.13
✎
13:50
|
(16) он в режиме отладка
|
|||
18
Maxus43
21.10.13
✎
13:51
|
(17) этого достаточно программисту, а пользователю этого знать не надо вобще
|
|||
19
Maxus43
21.10.13
✎
13:53
|
Нету и нету, зачем щас разоряться?
Было много срача даже про хранилище конфигурации, на что 1с ответило - на нём сделали УПП, значит его достаточно для всего. Тут также |
|||
20
xReason
21.10.13
✎
13:54
|
(18) А если ему надо это узнать, во время работы программы
|
|||
21
User_Agronom
21.10.13
✎
13:54
|
Где ТС?
|
|||
22
NcSteel
21.10.13
✎
13:56
|
(20) Интересно в каких ситуациях.
|
|||
23
Defender aka LINN
21.10.13
✎
13:59
|
(19) Они хитрые, у них много хранилище юзается.
|
|||
24
smaharbA
21.10.13
✎
14:17
|
(14) При программном добавлении кнопок действий (не знаю причины) действия срабатывают не те, проверено кодом типа
Процедура ДействияФормыОформитьДокументы(Кнопка) Сообщить(Кнопка.Действие); Срабатывает на кнопку "ПроводкиДтКт" Выводит при этом "ДействияФормыПроводкиДтКтНУ" Зависит от расстановки процедур в модуле формы (зависимость пока не вкурил), причина может быть и кэширование там какое, пока не интересно, вышел из положения добавив подобный код во все процедуры действий Процедура ДействияФормыОформитьДокументы(Кнопка) ИмяПроцедуры="ДействияФормыОформитьДокументы"; Если Не ""+Кнопка.Действие=ИмяПроцедуры Тогда Выполнить(""+Кнопка.Действие+"(Кнопка)"); Возврат; КонецЕсли; ... Что за бред, пока не знаю. |
|||
25
User_Agronom
21.10.13
✎
14:20
|
>> При программном добавлении кнопок действий...
Я может что-то недопонимаю, но что Вы пишите? Если нужно видеть/невидеть кнопки - можно использовать свойство Видимость. Наплодить сразу кнопки и в зависимости от ситуации делать их видимыми или невидимыми. |
|||
26
Лефмихалыч
21.10.13
✎
14:20
|
(24) демонически не надо было обновляться. Это кэш конфигурации
|
|||
27
smaharbA
21.10.13
✎
14:21
|
(25) как бы кнопки на форму могут программно добавляться, не ?
|
|||
28
smaharbA
21.10.13
✎
14:21
|
(26) обработка абсолютно внешняя
|
|||
29
smaharbA
21.10.13
✎
14:22
|
+ хотя конечно, может и из-за обновлений, обновлять приходит мальчик, чего и как он обновляет не имею представления.
|
|||
30
hhhh
21.10.13
✎
14:24
|
(29) вы просто не задумались над своим вопросом. Где-то перепутали пару кнопок и теперь для решения этой проблемы вы готовы потратить 3 года для разработки новой платформы 1с?
|
|||
31
smaharbA
21.10.13
✎
14:25
|
(30) нет не перепутал, читайте внимательно (24) первый абзац и первый код
|
|||
32
Defender aka LINN
21.10.13
✎
14:27
|
(28) И? Продуй кэш, говорят. Хуже все равно не станет, а в 99,9% случаев подобного колдунства - поможет.
|
|||
33
smaharbA
21.10.13
✎
14:28
|
(30) кнопки добавляются копированием исходных со всеми свойствами, таким способом крайне затруднительно перепутать, + исходных форм для копирования порядка 30 штук, какие кнопки копировать абсолютно безразлично + специально пробовалось для пары определенных кнопок задавать действие насильно.
|
|||
34
smaharbA
21.10.13
✎
14:29
|
(32) спасибо, так и сделаю, но таковое поведение не устраивает, вот от того и сабж + код в (24)
|
|||
35
hhhh
21.10.13
✎
14:30
|
(33) ну вы в (0) задали вопрос, где взять 8 миллиардов, чтобы переписать программу 1с. Как этот вопрос связан с (24)?
|
|||
36
smaharbA
21.10.13
✎
14:31
|
(35) в (24) все разжевано
|
|||
37
Vitamax3
21.10.13
✎
14:34
|
а чем может помочь знание процедуры вызова?
|
|||
38
Vitamax3
21.10.13
✎
14:44
|
+ т.е. из (24) .2 процедуру Вы знаете, но проблема то осталась.
|
|||
39
DailyLookingOnA Sunse
21.10.13
✎
14:56
|
Действия кнопкам устанавливаются, применяя при этом индекс кнопки в панели?
Ай-яй-яй. |
|||
40
smaharbA
21.10.13
✎
15:02
|
(38) внимательно прочтите код (второй) в (24) - он решает в любом случае, если еще знать процедуру в которой он выполняется, тогда не нужно присваивать явно ИмяПроцедуры=...
|
|||
41
smaharbA
21.10.13
✎
15:07
|
(39) Зачем ?
все создается рекурсивным копированием, а когда обнаружилась байда с действиями, действия принудительно на пару кнопок были повешены, но результат тот же, да и в (24) в первой половине сказано какой эффект На кнопке "ПроводкиДтКт" повешено действие так ПроводкиДтКт=ЭтаФорма.ЭлементыФормы.ДействияФормы.Кнопки.Найти("ПроводкиДтКт"); Сообщить(ПроводкиДтКт.Имя); ПроводкиДтКт.Действие=Новый Действие("ДействияФормыПроводкиДтКтНУ"); Но срабатывает процедура ниже Процедура ДействияФормыОформитьДокументы(Кнопка) Сообщить(Кнопка.Действие); При этом в сообщить выводит - "ДействияФормыПроводкиДтКтНУ" |
|||
42
smaharbA
21.10.13
✎
15:08
|
Конечно не "ДействияФормыПроводкиДтКтНУ", а "ДействияФормыПроводкиДтКт"
Но то не ссуть. |
|||
43
Vitamax3
21.10.13
✎
15:11
|
(40) Вы в (24) 2 уже определили, что кнопка отработала не то, и Возврат,
Далее задача найти нужную "правильную" процедуру, чтоб отработать,а это не то что в сабже. |
|||
44
Rebelx
21.10.13
✎
15:13
|
(0) задай вопрос в софт-поинт, они же вроде как это сделали
|
|||
45
smaharbA
21.10.13
✎
15:15
|
(43) Это именно то, что в сабже, для универсальности нужен код, подобный такому.
Процедура ДействияФормыОформитьДокументы(Кнопка) Если Не ""+Кнопка.Действие=ИмяЭтойПроцедуры() Тогда Выполнить(""+Кнопка.Действие+"(Кнопка)"); Возврат; КонецЕсли; |
|||
46
smaharbA
21.10.13
✎
15:15
|
(44) спасибо, спрошу, думалось может ИнформацияОбОшибке может выдать, но там походу только имя модуля и строка
|
|||
47
Vitamax3
21.10.13
✎
15:55
|
Копать дальше
ПодключитьОбработчикОжидания("ПроцедураОбработкиКнопки", 0.1, ИСТИНА); |
|||
48
Serg_1960
21.10.13
✎
16:09
|
smaharbA , на всякий случай, проверь алгоритм процедуры ДействияФормыПроводкиДтКтНУ. Может там, так хитро закручено, что вызов программный ДействияФормыОформитьДокументы. А кнопка - по первоисточнику...
|
|||
49
smaharbA
21.10.13
✎
17:09
|
(48) там всего 4 строки, а вылезло сие, когда стало выдавать ошибки на некоторые кнопки, приглядевшись понял, что выполняются не те процедуры
|
|||
50
smaharbA
21.10.13
✎
17:10
|
(47), чего копать и где - в своем модуле или на Марсе ?
|
|||
51
DailyLookingOnA Sunse
21.10.13
✎
17:13
|
Конфигуратор ТС недоступен что-ли?
|
|||
52
smaharbA
21.10.13
✎
17:26
|
(51) Вы внимательно прочитали сабж и (24) ?
|
|||
53
smaharbA
21.10.13
✎
18:06
|
||||
54
МихаилМ
21.10.13
✎
18:09
|
замер произодительности
|
|||
55
smaharbA
21.10.13
✎
18:10
|
(54) а он тут при чем ?
Никогда не пользовался. |
|||
56
Salimbek
21.10.13
✎
18:22
|
(55) Может одну универсальную процедуру написать, типа той же, что и у тебя, только во всех кнопках вызывается исключительно она, а что именно выполнить передается, например, в поле "Описание".
А по сути, ощущение что стек вызовов у 1С-ки "уплыл". Так что барабашкино поведение лечится только антибарабашкиным кодом :-) |
|||
57
mrDSide
21.10.13
✎
18:23
|
Технологический журнал
|
|||
58
smaharbA
21.10.13
✎
18:26
|
(56) хорошо бы так, но кнопки копируются динамически и рекурсивно с других (штатных) форм со всеми свойствами, т.е. конечно не со всех враз, а при одних условиях с одной, при других с другой на новую пустую форму.
|
|||
59
МихаилМ
21.10.13
✎
18:34
|
(55)
открываете форму запускаете замер нажимаете кнопку. анализируете список сток кода |
|||
60
smaharbA
21.10.13
✎
18:38
|
(59) и что оно даст ?
Про кэширование уже говорили, дак то оно немного понятно, но не стану же все время следить за кэшированием. А так конечно позырю. |
|||
61
Vitamax3
22.10.13
✎
08:21
|
(50) Вам надо было реализовать как-то:
Выполнить(""+Кнопка.Действие+"(Кнопка)"); Можно используя (47) только в процедуре "действия кнопки" надо выполнить процедуру "ПроцедураОбработкиКнопки" |
|||
62
smaharbA
22.10.13
✎
08:26
|
(61) ничего не понял, зачем мне обработчик ожидания, нафига мне через 0.1 секунду отправлять вызов, в (24) все реализовано, оставалось, что бы не писать вручную имя процедуры для сравнения определять ее, но и без оного все ок.
|
|||
63
Vitamax3
22.10.13
✎
08:37
|
сори. не знал что конструкция
Выполнить(""+Кнопка.Действие+"(Кнопка)"); рабочая (( |
|||
64
Сисой
22.10.13
✎
10:34
|
(0) Твоя проблема решена на Инфостарте.
http://infostart.ru/public/203843/ |
|||
65
DailyLookingOnA Sunse
22.10.13
✎
12:13
|
(64)
Чем ему это поможет? У него уже есть косяк и стек вызовов не поможет, т.к. вызов процедуры производится из события. Код создания кнопок ТС не предоставил, конфигуратором пользоваться не умеет. |
|||
66
Salimbek
22.10.13
✎
13:42
|
(65) ТС, я думаю, может и не только конфигуратором пользоваться. А в некоторых вопросах и многих, тут присутствующих, (например, меня) еще научить.
|
|||
67
DailyLookingOnA Sunse
22.10.13
✎
13:58
|
(66)
Текущий вопрос оказался не из некоторых? |
|||
68
Salimbek
22.10.13
✎
15:14
|
(67) Посмотри скрин в (53) и скажи, как оно так получилось.
|
|||
69
DailyLookingOnA Sunse
22.10.13
✎
15:21
|
(68)
"Код создания кнопок ТС не предоставил" Так вот оно и получилось, неизвестным кривым кодом. |
|||
70
Salimbek
22.10.13
✎
15:32
|
(69) Кратко по этой теме мы прошлись в (56) и (58). Больше мне добавить нечего, автор умный, если смогет - сам разберется, а если нет, то телепатически все равно не помочь. По фотографии из (58) вылечить не представляется возможным.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |