powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вызов метода из другой области
11 сообщений из 11, страница 1 из 1
Вызов метода из другой области
    #37034069
wertyBSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть допустим две области? OB1 и OB2
в первой области есть программка, что то на подобее такого:
Код: plaintext
1.
2.
3.
4.
s r=""
//хочу вызвать метод из области  2 
s ret=##Class(OB2.Class1).Metod1()
q r

как брать данные из глобальки в другой области я знаю:
например я вычисляю еденицу измерения из другой глобалки:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
ClassMethod GetIzm(NIzm)
{	
	i NIzm'=""
	{ s Izm=$LG(^["OB2"]OB2.SEDID(NIzm), 2 )}
	else
	{ s Izm="" }
	q Izm
}

Метод таким образом ведь не получится вызвать
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37034231
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно переключиться в другую область, выполнить там код, и вернутся обратно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 s oldzn=$zu( 5 )  // запомним текущую область
 zn "OB2"          // перейдем в другую область

 // выполним код в другой области
 s ret=##Class(OB2.Class1).Metod1()

 zn oldzn          // вернемся обратно 

главное, не работать с открытыми объектами одной области из другой, особенно если кода там нету, будут ошибки
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37034234
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
wertyBSD,

Если версия 2008 и выше и имена пакетов не пересекаются, то можно сделать отображение пакетов.
Пакет Db2 в области SAMPLES:
USER>write ##class(Db2.Class1).Method1()
Привет
USER>
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37034666
wertyBSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMor,
спасибо, в понедельник попробую с переходом, отпишусь. я вроде когда то пробовал с переходами работать, были проблемы. хотя я тогда хотел перейти в другую область и сделать SQL запрос
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37034667
wertyBSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ser_shu,
у меня cache-5.0.19.6202.3-win не знаю какого года)))
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37036587
wertyBSD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно работает, а можно сделать так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 s oldzn=$zu( 5 )  // запомним текущую область
 zn "OB2"          // перейдем в другую область
 s id= 1 
 // выполним запрос
 &sql(SELECT Nnt Into :SQLNnt
	FROM OB2.Table1
	where ID=:id) 

 zn oldzn          // вернемся обратно 
q SQLNnt
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37036595
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для таких задач я немного подправляю структуру хранения, и таблица с данными в другой области начинает видеться в этой.
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37036601
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соотвественно, у вас будут видеться и объекты, хранящиеся в другой области.
Только один ньюанс есть - тогда должны быть прописанными все связанные классы.
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37036856
Turk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.Для таких задач я немного подправляю структуру хранения, и таблица с данными в другой области начинает видеться в этой.
Блок А.Н.Соотвественно, у вас будут видеться и объекты, хранящиеся в другой области.
Только один ньюанс есть - тогда должны быть прописанными все связанные классы.
И нужно будет каждый раз при изменении кода в одной области обновлять и в другой...
Лучше уж написать ClassMethod с &sql в той области, где хранится объект, и вызывать этот метод из своего кода (ествественно, с временным переходом в область данных).
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37038294
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wertyBSDа можно сделать так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 s oldzn=$zu( 5 )  // запомним текущую область
 zn "OB2"          // перейдем в другую область
 s id= 1 
 // выполним запрос
 &sql(SELECT Nnt Into :SQLNnt
	FROM OB2.Table1
	where ID=:id) 

 zn oldzn          // вернемся обратно 
q SQLNnt

Для компиляции программки требуется наличие этих классов в области компилляции программки...
...
Рейтинг: 0 / 0
Вызов метода из другой области
    #37041882
CEH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно использовать макросы:
#SQLCompile Mode=value

где value:
• Embedded — по умолчию валидация во время компиляции
• Deferred — компилировать runtime

И ещё можно преключать по всей системе:
Do SetCompileModeDeferred^%apiSQL
Do SetCompileModeInstall^%apiSQL
Do SetCompileModeImmediate^%apiSQL

см. Class %SYSTEM.SQL

[всё написаное для пятака]
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вызов метода из другой области
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]