powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ArrayOfDataTypes как Property
18 сообщений из 18, страница 1 из 1
ArrayOfDataTypes как Property
    #36175088
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть некий класс, унаследованный от %ZEN.Component.composite

в нём объявлено свойство - массив
Код: plaintext
1.
Property GraphChartData1 As %Library.ArrayOfDataTypes;

есть кнопка, вызывающая метод
Код: plaintext
1.
2.
3.
4.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<button onclick="return zenThis.composite.Obtain();" caption="Проверка" />
}

При создании экземпляра класса массив заполняется 3-мя элементами. Алерт показывает 3. Всё ок.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Method %OnAfterCreateComposite() As %Status
{
	set ..GraphChartData1 = ##class(%Library.ArrayOfDataTypes).%New()
	do ..GraphChartData1.SetAt( 1 , 1 )
	do ..GraphChartData1.SetAt( 2 , 2 )
	do ..GraphChartData1.SetAt( 3 , 3 )
	&js<alert("#(..GraphChartData1.Count())#");>
	Quit $$$OK
}

При нажатии на кнопку должна показаться текущая размерность массива.
Код: plaintext
1.
2.
3.
4.
5.
Method ObtainPieLabel() As %ZEN.Datatype.string [ ZenMethod ]
{	
	&js<alert("#(..GraphChartData1.Count())#");>
	q ""
}

Однако, показывается 0. На каком этапе массив херится - понять не могу.
Как быть? Как добится сохранности массива?
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36175133
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutni , экземпляр сохранен и закрыт?
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36175139
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniКак добится сохранности массива?

Насколько я понимаю - сохранение возможно только в каком либо классе типа "Персистент"...
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36175152
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa sutni , экземпляр сохранен и закрыт?

Зачем мне сохранять этот экземпляр?
Это просто некий компонент на странице, который делает некую работу. Промежуточные результаты работы хочется сохранять в массиве. Но только на время пока страница открыта. Ничего сохранять в базе мне не нужно.
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36175175
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutni , если данные не сохранены и объект не закрыт вы можете в любой момент "потерять" эти данные... Что вероятно и получается. ;)
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36175191
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну если например на странице объявить свойство типа String. Затем заполнить это свойство неким значением, например "ААА". И когда бы я не обратился к этому свойству на чтение, то всегда получу строку "ААА". Почему с массивом не так?
Несмотря на то, что область существования любого свойства глобальная в рамках класса, значения из массива теряются сразу после выхода из функции, где были заполнены.
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36175662
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniПочему с массивом не так?

Таки хранять может подругому... От того и особенность такая...
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36176165
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Элементарный пример:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
Class QuaSyCoreApp.QuaSyCore.Tools.TestClass Extends %ZEN.Component.page
{
	
Parameter NAMESPACE = "http://www.intersystems.com/QuaSyCore";

Property ArrayData As %Library.ArrayOfDataTypes;


/// This XML block defines the contents of this page.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen">
<pane>
<button onclick="return zenPage.Build();" caption="Build Array" />
<button onclick="return zenPage.ShowSize();" caption="Verify Size" />
</pane>
</page>
}

Method Build() As %ZEN.Datatype.integer [ ZenMethod ]
{
	set ..ArrayData = ##class(%Library.ArrayOfDataTypes).%New()
	do ..ArrayData.SetAt( 1 , 1 )
	do ..ArrayData.SetAt( 2 , 2 )
	do ..ArrayData.SetAt( 3 , 3 )
	do ..ShowSize()
	q ..ArrayData.Count()
}

Method ShowSize() As %ZEN.Datatype.integer [ ZenMethod ]
{
	&js<alert("#(..ArrayData.Count())#");>
	q ..ArrayData.Count()
}

}

Нажимаю кнопку "Build Array". Alert - 3.
Следом нажимаю "Verify Size". Alert - 0.
Куда подевались элементы ArrayData ?
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36176184
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniКуда подевались элементы ArrayData ?

Предположу следующее...
- Зен-метод выполняется на сервере
- попав "туда" ты создал в памяти массив
- ушел оттуда
- снова пришел, массива там уже нет, т.к. никто его на сервере и не сохранял...
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36176199
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsasutniКуда подевались элементы ArrayData ?

Предположу следующее...
- Зен-метод выполняется на сервере
- попав "туда" ты создал в памяти массив
- ушел оттуда
- снова пришел, массива там уже нет, т.к. никто его на сервере и не сохранял...

Я думаю примерно также. Тогда не совсем ясно почему примитивные типы сохраняют свои значения в аналогичных ситуациях.
И каким образом можно добиться сохранения массивов? Есть ли нормальные пути для этого кроме сериализации?
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36176212
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думается мне что с тем же успехом можно создать класс (обычный) с свойсттвом типа массив... Открыть его в терминале... Натыкать туда значений... Потом (не сохраняя и закрывая) закрыть терминал... Потом снова его открыть и обнаружить что массива-то и нету.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36176216
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniТогда не совсем ясно почему примитивные типы сохраняют свои значения в аналогичных ситуациях.

Они может в "реквестах" хранятся... Т.е. принцип хранения другой...
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36176226
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniИ каким образом можно добиться сохранения массивов?

Зачем они тебе нужны? И зачем вообще использовать какие-то свойства на зеновской странице ели это не "принимающие" параметры из УРЛа?
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36178030
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutni,

Property ArrayData As %Library.ArrayOfDataTypes; - вроде бы неверно...

Рискну предположить, что нельзя сохранить потому, что в пакете %ZEN.Datatype нет никаких массивов - там только лист есть - мож его и пользовать?

Property ArrayData As %ZEN.Datatype.list

Или унаследовать свой тип от %ZEN.Datatype.datatype, и с ним работать
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36178663
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ответили, что вместо
Код: plaintext
1.
Property ArrayData As %Library.ArrayOfDataTypes;
нужно использовать что-то вроде
Код: plaintext
1.
Property ArrayData as array of %String;
Я проверил. Так оно работает.
Но а если элементами массива являются более сложные объекты (например матрицы), то та-же беда.
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36178920
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutni , че ты там хранишь?
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36179388
sutni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa sutni , че ты там хранишь?

Данные. :)
Информация для построения графиков.
...
Рейтинг: 0 / 0
ArrayOfDataTypes как Property
    #36180543
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sutniДанные. :)

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


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