powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / переопределение Set свойства-объекной ссылки
13 сообщений из 13, страница 1 из 1
переопределение Set свойства-объекной ссылки
    #34475967
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть два свойства
Property State As User.JobState;
Property OldState As User.JobState;

задача: перед записью в State нового значения старое значение State сохранить в свойстве OldState.
видимо самое правильное будет переопределить Set свойства State, но как - я не знаю.
подойдёт вариант записи значения State в OldState и при открытии объекта, но %Load похоже пропускается если объект уже есть в памяти, а других событий похожего плана найти не могу.

всем заранее спасибо.
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476034
Alexandr Minzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Class Test.Bbb Extends %Persistent [ ClassType = persistent, ProcedureBlock ]
{

Property Prop As %String;

Property PropOld As %String;

Method PropSet(Arg As %String) As %Status
{
	Set i%PropOld=i%Prop
	Set i%Prop=Arg
	Quit $$$OK
}

}
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476082
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr Minzer , ваш вариант не будет работать при привязке формы к экземпляру в csp...
Есть специальный перехват события "Запись данных" экземпляра. Т.е. он выполняется при команде
Код: plaintext
d o.%Save()
Но я не помню как это делается... :(
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT[src][/SRC]
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476104
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не понял, причём тут форма, причём тут CSP?
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476139
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прошу прощения! :) Метод с именем <Имя_свойства>Set() это как раз и делает :)
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476142
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u78не понял, причём тут форма, причём тут CSP?
Это уже другое дело...

Главное что пример приведен правильно. :)
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476197
Alexandr Minzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsa Alexandr Minzer , ваш вариант не будет работать при привязке формы к экземпляру в csp...
Почему? Мне кажется, будет. Другое дело у меня свойства в примере типа %String, а как быть с свойствами ссылающимися на объекты другого класса?
krvsa
Есть специальный перехват события "Запись данных" экземпляра. Т.е. он выполняется при команде
Код: plaintext
d o.%Save()
Но я не помню как это делается... :(
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT[src][/SRC]
Это, как вариант. В методе %OnBeforeSave встроенным SQL прочитать старое значение свойства State и присвоить это значение свойству StateOld. Мне кажется это менее удобный способ...
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476320
Alexandr Minzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проверил, если свойство является ссылкой на хранимый объект, такой вариант тоже подойдет.
Код: plaintext
1.
2.
3.
4.
5.
Method StateSet(Arg As JobState) As %Status
{
	Set i%StateOld=i%State
	Set i%State=Arg
	Quit $$$OK
}
Сомнение вначале вкралось из-за того, что интерфейс Cache Studio в случае со ссылкой на хранимый объект, не дает переопределить методы Set и Get для свойства.
Интересно, с чем это связано?
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476333
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexandr MinzerПочему? Мне кажется, будет.
Будет, будет. Я же уже извинился... :)
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476356
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не канает
за время "жизни" объекта свойство State поменяют тыщу раз, а мне важно записать в OldState какое оно было в исходном состоянии, т.е. до изменения.
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476526
Alexandr Minzer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
u78не канает
за время "жизни" объекта свойство State поменяют тыщу раз, а мне важно записать в OldState какое оно было в исходном состоянии, т.е. до изменения.
В таком случае, попробуйте в Callback методе %OnOpen() свойству OldState присвоить свойство State
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34476649
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u78 , что-то я не понял про какую ситуацию вы пишите... Можно примеры и что вы хотите получить?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
переопределение Set свойства-объекной ссылки
    #34477117
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо вам.
Подошёл %OnOpen. В нём %this.OldStateSetObjectId(%this.State.%Id())

а
StateSet(value){
i%State ....
.. и так далее
}
срабатывает только при присваивании объекта, а при StateSetObjectId() не срабатывает

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


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