powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN: Как получить описание известной страницы?
4 сообщений из 4, страница 1 из 1
ZEN: Как получить описание известной страницы?
    #37220911
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для того, чтобы получить доступ к описанию текущей страницы, я могу выполнить что-то вроде
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
	s cols = %page.%GetComponentById("myTable").columns
	s key = ""
	f  {
		s col  = cols.GetNext(.key)
		q:key=""
		&js<alert('#(col.header_" "_col.colName)#')>
	}
И почему-то я был уверен, что я смогу получить подобный же доступ к свойствам нужной мне страницы, вызвав из любой программы или класса такой примерно код:
Код: plaintext
1.
2.
	s myPage = $zobjclassmethod("myPage","%New")
	w myPage.%GetComponentById("myTable")...
Ан нет - в myPage действительно наблюдаю объект нужного класса, но, похоже, без структуры... %GetComponentById возвращает пусто...
...
Рейтинг: 0 / 0
ZEN: Как получить описание известной страницы?
    #37221740
logist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет

Перед использованием компонентов нужно "построить" страничку:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
GALAH:SAMPLES>s a=##class(ZENDemo.Dashboard).%New()
 
GALAH:SAMPLES>s b=a.%CreatePage()
 
GALAH:SAMPLES>w
 
%application=<OBJECT REFERENCE>[2@ZENDemo.Application]
%page=<OBJECT REFERENCE>[3@ZENDemo.Dashboard]
a=<OBJECT REFERENCE>[1@ZENDemo.Dashboard]
b=<OBJECT REFERENCE>[3@ZENDemo.Dashboard]

GALAH:SAMPLES>w b.%GetComponentById("locator")
6@%ZEN.Component.locatorBar


Cоответственно, если вызовы идут в другой zen странице, надо экранировать %page и %application через new

%CreatePage помечен как Internal, что как бы намекает, что пользоваться им не рекомендуется - но другого варианта нет.

С приветом,
Сергей Шутов (logist)
InterSystems pty ltd, Sydney
...
Рейтинг: 0 / 0
ZEN: Как получить описание известной страницы?
    #37221743
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
logist,

Спасибо. А я - дурак, %New() и %CreatePage() использовал... по-отдельности ;)
А их, оказывается, последовательно надо вызывать.
Я ведь уже начал пробовать через добывание xml-я описания контента страниц.
...
Рейтинг: 0 / 0
ZEN: Как получить описание известной страницы?
    #37223717
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так я пытался... вдруг пригодится еще:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
	s ZenPageDef = ##class(%Dictionary.ClassDefinition).%OpenId(GUIName)
	s painId = ZenPageDef.XDatas.FindObjectId(GUIName_"||"_"Contents")
	s PainStream = ZenPageDef.XDatas.GetAt(painId).Data
	s sc = ##class(%XML.TextReader).ParseStream(PainStream, .PainXML) 
	while PainXML.Read() {
		w PainXML.NodeType_" "_PainXML.Name
	}
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN: Как получить описание известной страницы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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