|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Вопрос на засыпку. Как вызвать метод класса из другой области в Cache 2008? В Cache 2013 это возможно путем смены области с помощью @ZNAMESPACE (если не напутал что по памяти). Но в справке к 2008 написано, что менять область в коде крайне не рекомендуется, да и метод для 2013 в чистом виде не работает. Но очень нужно вызвать из кода в своей области метод класса из %SYS, причем именно в 2008-й версии. Как жить? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2013, 21:30 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
поправка $ZNAMESPACE ... |
|||
:
Нравится:
Не нравится:
|
|||
06.10.2013, 21:32 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Hisbreht VictorКак вызвать метод класса из другой области в Cache 2008? Только перейти в ту область... Hisbreht Victorпоправка $ZNAMESPACE Еще одна поправка... Код: javascript 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 09:50 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Hisbreht VictorНо в справке к 2008 написано, что менять область в коде крайне не рекомендуется Опа ганга стайл. И в чем там криминал? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 09:51 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Криминал в том, что если вы поменяется область, а у вас останутся объекты, открытые в другой области, то работать они не будут (даже переменную удалить нельзя будет). Может еще в чем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 10:34 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Hisbreht Victor, может вам просто этот пакет отобразить на вашу область? http://docs.intersystems.com/cache20082/csp/docbook/DocBook.UI.Page.cls?KEY=GOBJ_packages#GOBJ_packages_mapping Какой именно системный метод вы вызвать хотите? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 10:50 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Блок А.Н.Криминал в том, что если вы поменяется область, а у вас останутся объекты, открытые в другой области На то ответ простой - не делайте так. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 10:53 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Hisbreht VictorВ Cache 2013 это возможно путем смены области с помощью @ZNAMESPACE (если не напутал что по памяти).В Cache 2013 используются те же команды , дополнение лишь - $NAMESPACE , появившаяся в 2010.1 .Hisbreht Victorда и метод для 2013 в чистом виде не работает.Какой метод не работает? Что значит "в чистом виде"?Hisbreht VictorНо очень нужно вызвать из кода в своей области метод класса из %SYS, причем именно в 2008-й версии.В документации приведён пример кода . Он у Вас не работает? Можно вообще обойтись изменением текущей области, использовав отображение пакетов .krvsaHisbreht VictorНо в справке к 2008 написано, что менять область в коде крайне не рекомендуетсяОпа ганга стайл. И в чем там криминал?Also, changing namespaces demands a relatively high amount of computing power compared to other commands; if possible, application code should avoid it. источник Ещё, наверное, в скорости переключения. Но уже с версии 2009.1 появилось соответствующее улучшение: Faster Namespace Activation . ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 11:02 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
servitЕщё, наверное, в скорости переключения. Ясно... servitНо уже с версии 2009.1 появилось соответствующее улучшение: Faster Namespace Activation . Значит нам тот "криминал" не страшен. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 11:13 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Я, как оно часто бывает, естественно немного напутал. Про фокус из 2013 я имел ввиду следующее When you wish to temporarily change the current namespace, perform some operation, then revert to the prior namespace, use SET $NAMESPACE. Because $NAMESPACE permits you to NEW $NAMESPACE, it reverts to the original namespace when either the subroutine completes or an unexpected error occurs. See $NAMESPACE special variable for details. Если я правильно понял, то это позволяет культурно временно поменять область и вернуться обратно в "родную" при выходе из функции. Если не прав, поправьте. В 2008 это не срабатывает. Для нее в справке вообще прописано Object and SQL code assumes that it is running in a single namespace; hence, changing namespaces with open object instances or SQL cursors can lead to code running incorrectly. Typically, there is no need to explicitly change namespaces, as the various Object, SQL, and CSP servers automatically ensure that application code is run in the correct namespace. Also, changing namespaces demands a relatively high amount of computing power compared to other commands; if possible, application code should avoid it. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 20:59 |
|
Вызов метода класса из другой области в cache 2008
|
|||
---|---|---|---|
#18+
Hisbreht Victor$NAMESPACE ... позволяет культурно временно поменять область и вернуться обратно в "родную" при выходе из функции Судя по примерам в документации - да. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.10.2013, 21:18 |
|
|
start [/forum/topic.php?fid=39&tid=1557052]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 125ms |
0 / 0 |