powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN - Сохранение объектного свойства
3 сообщений из 3, страница 1 из 1
ZEN - Сохранение объектного свойства
    #35477800
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересный эффект:

У объекта есть свойство (prop) - ссылка на объект (класса subclass). Это свойство должно быть всегда - т.е. при создании экземпляра должна сразу появляться возможность заполнять свойства, относящиеся к экземпляру subclass.

subclass - не встроенный


Код: plaintext
1.
2.
3.
4.
5.
Method %OnNew(initvalue As %CacheString) As %Status [ Private, ProcedureBlock =  1 , ServerOnly =  1  ]
{
 s prop= ##class(subclass).%New()
 s r%Prop = prop
 Quit $$$OK
}

В терминале отрабатывает замечательно:

Код: plaintext
1.
2.
ZN>s a = ##class(topclass).%New()
ZN>w a.%Save()
 1 
Сохранились оба объекта

В ZEN-е при выполнении save() на контроллере сохраняется только экземпляр topclass

Добавил в %OnBeforeSave строку:

Код: plaintext
if (insert) d ..prop.%Save()

В терминале опять все ок, а в ZENе ругается на то, что prop INVALID OREF

Коллеги, не сталкивались с подобным поведением? Может есть способ решить проблему?
...
Рейтинг: 0 / 0
ZEN - Сохранение объектного свойства
    #35478923
Socratdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем так усложнять заполнение свойств в %OnNew:
Код: plaintext
1.
2.
3.
4.
5.
Method %OnNew(initvalue As %CacheString) As %Status [ Private, ProcedureBlock =  1 , ServerOnly =  1  ]
{
 s prop= ##class(subclass).%New()
 s r%Prop = prop
 Quit $$$OK
}
Не правильней ли так сделать?
Код: plaintext
1.
2.
3.
4.
Method %OnNew(initvalue As %CacheString) As %Status [ Private, ProcedureBlock =  1 , ServerOnly =  1  ]
{
 d ..propNewObject()
 Quit $$$OK
}
Или хотя бы так:
Код: plaintext
1.
2.
3.
4.
Method %OnNew(initvalue As %CacheString) As %Status [ Private, ProcedureBlock =  1 , ServerOnly =  1  ]
{
 s ..prop= ##class(subclass).%New()
 Quit $$$OK
}
...
Рейтинг: 0 / 0
ZEN - Сохранение объектного свойства
    #35479589
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SocratdvА зачем так усложнять

В чем усложнение-то? Я привел последний испробованный вариант - проблема видимо в том, что ZEN при выполнении controller.save() по какой-то причине не хочет сохранять экземпляр subclass, на который ссылается prop.

И кстати, d ..propNewObject() - имхо, некрасиво как-то... из серии когда вместо
s ..a = "Вася"
рисуют
d ..aSet("Вася")
При чтении такого кода нет его нативного понимания ;)
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN - Сохранение объектного свойства
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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