|
v7: Как проверить, есть функция или нет или как безопасно вызвать функцию | ☑ | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0
DJ Anthon
31.10.11
✎
15:35
|
Была такая древняя тема...
Как проверить, есть функция или нет или как безопасно вызвать функцию. так, чтобы обмануть синтаксический контроль. Ответа не нашли. А я нашел. Прежде чем скажу, у кого какие будут идеи? |
|||||||||||||
1
PuhUfa
31.10.11
✎
15:39
|
А зачем?
|
|||||||||||||
2
Хряк
31.10.11
✎
15:39
|
рассказывай
|
|||||||||||||
3
palpetrovich
31.10.11
✎
15:44
|
вынести в ВК и через попытку :)
давай колись? |
|||||||||||||
4
filh
31.10.11
✎
15:44
|
(1) наверно, чтобы не спотыкаться на ошибках.
|
|||||||||||||
5
1Сергей
31.10.11
✎
15:45
|
нужно только синт.контроль обмануть или всё-таки узнать, есть ли функция или нет?
|
|||||||||||||
6
palpetrovich
31.10.11
✎
15:46
|
забыл
Говори уже, давай! |
|||||||||||||
7
aka AMIGO
31.10.11
✎
15:48
|
функция конкретная, или любая?
|
|||||||||||||
8
skunk
31.10.11
✎
15:48
|
шаблон
|
|||||||||||||
9
skunk
31.10.11
✎
15:49
|
попытка
шаблон("ЕстьтакаяФункция()") сообщить("есть"); исключение сообщить("неа"); конецпопытки |
|||||||||||||
10
Wobland
31.10.11
✎
15:50
|
Выполнить() в семёрке есть?
|
|||||||||||||
11
aka AMIGO
31.10.11
✎
15:51
|
(9) зачем тут шаблон? просто обращайся в попытке - вот и сообщит, ага или неа :)
|
|||||||||||||
12
1Сергей
31.10.11
✎
15:52
|
о, кажись придумал. щас
|
|||||||||||||
13
skunk
31.10.11
✎
15:53
|
(11)синтакс контроль не даст
|
|||||||||||||
14
aka AMIGO
31.10.11
✎
15:54
|
(13) а, да!
|
|||||||||||||
15
DJ Anthon
31.10.11
✎
15:54
|
(9) выдаст сообщение. как избежать сообщения?
|
|||||||||||||
16
Ненавижу 1С
гуру
31.10.11
✎
15:54
|
7.7 именно?
|
|||||||||||||
17
DJ Anthon
31.10.11
✎
15:55
|
(16) ага..
|
|||||||||||||
18
Ненавижу 1С
гуру
31.10.11
✎
15:55
|
1С++ ?
|
|||||||||||||
19
victuan1
31.10.11
✎
15:56
|
(17) Уже взялся за свою нетленку? ;)
|
|||||||||||||
20
victuan1
31.10.11
✎
15:57
|
собсно
Забаньте этого идиота |
|||||||||||||
21
skunk
31.10.11
✎
15:57
|
(15)какое сообщение
|
|||||||||||||
22
DJ Anthon
31.10.11
✎
15:59
|
(19) готова. парсинг переделываю на автоматический, а не ручной.
|
|||||||||||||
23
victuan1
31.10.11
✎
15:59
|
(21) Вот это наверное:
сообщить("есть"); |
|||||||||||||
24
victuan1
31.10.11
✎
15:59
|
(22) ВычисляемыйМодуль 1с++ используй.
|
|||||||||||||
25
skunk
31.10.11
✎
16:00
|
(23)ну так оно сделано для особо понятливых ... а там есстественно ставь переменные и смотри за цветом месячных своей подруги
|
|||||||||||||
26
victuan1
31.10.11
✎
16:04
|
(25) А если серьезно у тебя ошибка - [] пропущены:
попытка шаблон("[ЕстьтакаяФункция()]") // сообщить("есть"); исключение сообщить("неа"); конецпопытки И соот-но, сообщение: Функция не обнаружена (ЕстьтакаяФункция) |
|||||||||||||
27
1Сергей
31.10.11
✎
16:05
|
Хотел попробовать через обработку ожидания, но не фурычит
|
|||||||||||||
28
filh
31.10.11
✎
16:05
|
сломать окно сообщений?
|
|||||||||||||
29
Ёпрст
31.10.11
✎
16:07
|
(26) шаблон не даст исключения никогда
|
|||||||||||||
30
Ёпрст
31.10.11
✎
16:07
|
(0) тебе штатно надо или с ВК ?
|
|||||||||||||
31
Ёпрст
31.10.11
✎
16:08
|
а вообще, баян..
|
|||||||||||||
32
DJ Anthon
31.10.11
✎
16:10
|
(30) штатно.. и очень порванный баян... но я так и не нашел ответа...
|
|||||||||||||
33
Starhan
31.10.11
✎
16:11
|
(0)Ответа не нашли. А я нашел...
(32) штатно.. и очень порванный баян... но я так и не нашел ответа... несрастухи какие то |
|||||||||||||
34
DJ Anthon
31.10.11
✎
16:11
|
не нашел в инете, пришлось самому искать. и у меня маленький побочный эффект есть неприятный. думал, может все-таки есть нормальные способы..
|
|||||||||||||
35
filh
31.10.11
✎
16:12
|
ну тогда
Говори уже, давай! |
|||||||||||||
36
1Сергей
31.10.11
✎
16:15
|
с процедурами работает:
Функция ЕстьЛиПроцедура(ИмяФункции) Форма.ОбработкаОжидания(ИмяФункции,1); Если Форма.ОбработкаОжидания(,0)=ИмяФункции Тогда Возврат 1; Иначе Возврат 0; КонецЕсли; КонецФункции // ЕстьЛиФункция |
|||||||||||||
37
1Сергей
31.10.11
✎
16:19
|
поправочка:
Функция ЕстьЛиПроцедура(ИмяФункции) // сначала проверяем локальные Форма.ОбработкаОжидания(ИмяФункции,1); Если Форма.ОбработкаОжидания(,0)=ИмяФункции Тогда Возврат 1; Иначе // затем глобальные ОбработкаОжидания(ИмяФункции,1); Если ОбработкаОжидания(,0)=ИмяФункции Тогда Возврат 1; Иначе Возврат 0; КонецЕсли; КонецЕсли; КонецФункции // ЕстьЛиФункция |
|||||||||||||
38
1Сергей
31.10.11
✎
16:19
|
а вот функции не ловит :(
|
|||||||||||||
39
Лефмихалыч
31.10.11
✎
16:23
|
а нахрена это?
|
|||||||||||||
40
Ёпрст
31.10.11
✎
16:24
|
(0)
Рез=Шаблон("[Вася()]") Если Рез="[Вася()]" Тогда Сообщить("Нету функции Вася"); КонецЕсли; |
|||||||||||||
41
Byasha
31.10.11
✎
16:24
|
Круто, и эти люди хотят "от статышь"
Забаньте этого идиота |
|||||||||||||
42
Ёпрст
31.10.11
✎
16:28
|
ну, или так:
Информатор = СоздатьОбъект("Информатор"); Сообщить(Информатор.ЯвляетсяФункцией(Контекст,"ИмяМоейФункции")); |
|||||||||||||
43
1Сергей
31.10.11
✎
16:29
|
(40) а так, чтобы не выполнять функцию?
|
|||||||||||||
44
1Сергей
31.10.11
✎
16:31
|
(40) кстати, эта шняга ошибку-то всё-равно выдаёт
|
|||||||||||||
45
Ёпрст
31.10.11
✎
16:31
|
(39) это погоня за универсальностью и не желание использовать ВК для этого.
|
|||||||||||||
46
Ёпрст
31.10.11
✎
16:32
|
(44) очиститьОкноСообщений и привет, код-то при этом не прерывается
|
|||||||||||||
47
1Сергей
31.10.11
✎
16:33
|
(46) ога, и ЗакрытьОкноСообщений()
|
|||||||||||||
48
DJ Anthon
31.10.11
✎
17:16
|
ладно, можете смеяться надо мной. решение получилось непрактичное, поэтому я не стал его использовать. по ОЛЕ подключаюсь к этой же базе, предварительно переименовав юзердеф, чтобы пароль не вводить, затем открываю обработку фунцкцией
Рез = База.ExecuteBatch("ОткрытьФорму(""Отчет"", , """ + ПутьКОбработке + "Проверка.ert"")"); с таким текстом (кидаю приблизительно, потому что уже затер): Процедура ПриОткрытии() Если 1 = 0 Тогда МояФункция(1); СтатусВозврата(0); Возврат; КонецЕсли; СохранитьЗначение("УдалосьОткрыть", 1); СтатусВозврата(0); КонецЕсли; текст можно загружать из файла. затем читаем по оле это значение, закрываем соединение и возвращаем на место юзердеф. не проканывает с монопольным режимом, отсутствием доступа к юзердеф и требует пары секунд... от сообщений не избавиться, но они при этом улетают в окно ОЛЕ, а оно невидимое ;) дело в том, что другой способ который у меня почти получился, не проканал, я там вообще перемудрил. проще окно сообщений очищать. так что уже Не интересно |
|||||||||||||
49
Ёпрст
31.10.11
✎
18:43
|
(48) месье знает толк в извращениях
:) |
|||||||||||||
50
ЧеловекДуши
31.10.11
✎
19:01
|
Зачем вообще это?
Забаньте этого идиота |
|||||||||||||
51
Ёпрст
31.10.11
✎
19:27
|
(50) см. (45)
|
|||||||||||||
52
DJ Anthon
31.10.11
✎
19:45
|
(49) да согласен, просто у меня была еще одна идейка, но она не взлетела, а ведь было рядом... жаль, конечно
|
|||||||||||||
53
Читатель
31.10.11
✎
19:47
|
!
Не интересно |
|||||||||||||
54
ЧеловекДуши
31.10.11
✎
19:49
|
(51)Это твой ответ, забавней было бы услышать от автора :D
|
|||||||||||||
55
Ёпрст
31.10.11
✎
19:49
|
(52) как в (40) чем не катит ?
разве что окошко сообщений чистить. Лучше конечно, в (42) |
|||||||||||||
56
Sk0rp
31.10.11
✎
19:51
|
(48) Интересно посмотреть как это в монопольном режиме сработает.
ИМХО обернуть как-то (37) и (40) в одну функцию круче будет. |
|||||||||||||
57
Sk0rp
31.10.11
✎
19:56
|
+(56) Сории, про монопольный режим автор уже сам сказал.
Тогда добавлю к (48), что еще очень клёво будет упасть после убийства юзердеф, что бы он не вернулся обратно - пользователи будут рады. |
|||||||||||||
58
DJ Anthon
31.10.11
✎
19:59
|
(57) ну это ж я просто в качестве икспиримента )) на деле я не дурак так делать.
вот только что доделал обработку мд из самой 1Ски ))) ща тестю, вроде работает. оставил пользователю одно задание - запустить 1Ску заново. так как не знаю, каким ехешником запущена 1Ска изначально. да и пофиг на него... |
|||||||||||||
59
DJ Anthon
31.10.11
✎
21:16
|
(49) а вот и она... https://1cers.ru/topic.php?upd&id=577708
|
|||||||||||||
60
vde69
31.10.11
✎
21:54
|
вообще вот такая конструкция имеет право на жизнь
если не ЗначениеЗаполнено(ИмяОбщегоМодуля.ИмяФункцииИлиПроцедуры) тогда сообщить("ошибка"); иначе ИмяОбщегоМодуля.ИмяФункцииИлиПроцедуры(параметр1) конецЕсли обращаю внимание что в первом случае используется без скобок |
|||||||||||||
61
Ёпрст
31.10.11
✎
22:04
|
(60) в сабже речь про клюшки, ежели чего..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |