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

<METHOD DOES NOT EXIST>%0AmBr7^CacheSql9 *IsConfirmNeededGet

Эта ошибка произошла в связи с тем, что у потомка не был переопределен наш метод расчета свойства....

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

Саппорту спасибо еще раз - пока готовил пример для них, сам нашел ошибку...

Вот так вроде должно работать:

Код: 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.
Class test.c0 Extends %Persistent
{

Property Computed As %String [ Calculated, SqlComputeCode = {
		s classname = $s({x__classname}'="":$p({x__classname},"~",$l({x__classname},"~")- 1 ), 1 :{%%CLASSNAMEQ})
		s {Computed}=$zobjclassmethod(classname,"ComputedGet",{ID},classname)
	}, SqlComputed ];

ClassMethod ComputedGet(objId,classname As %String) As %String
{
	q "c0: "_classname 
}

Property p As %String;

}


Class test.c1 Extends test.c0
{

Property p2 As %String;

}


Class test.c2 Extends test.c1
{

ClassMethod ComputedGet(objId,classname As %String) As %String
{
	q "c2: "_classname 
}

}
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #36481955
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov,
Что-то я так и не понял. Итого у Вас есть (надежным или ненадежным способом) правильное (с учетом иерархии наследования) имя класса и ID объекта. Кто мешает Вам делать $zobjclassmethod(classname,"methodname",ID) где угодно?

Причем делать это "однажды и только однажды" и избегать многочиcленных if (classname="childclassA") { ... } else if (...) {...}, которые вы будете править каждый раз, когда будет появляться очередной потомок, рискуя занести туда ошибку (с Вашим-то объемом данных и сложной бизнес-логикой).

P.S. Если это не получается именно у Вас, не говорите, что это "проблема неразрешима в рамках текущей модели скл-доступа."
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #36481959
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока возмущался, вы уже все нашли. Вот бы теперь, такие же объемные и эмоциональные извинения в адрес Каше... :) Рассказали бы как она помогает Вам в работе, позволяет экономить время, зарабатывать на достойную жизнь... :)
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #36482529
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintПока возмущался, вы уже все нашли. Вот бы теперь, такие же объемные и эмоциональные извинения в адрес Каше... :) Рассказали бы как она помогает Вам в работе, позволяет экономить время, зарабатывать на достойную жизнь... :)

Прошу прощения, но делать этого я не буду. Хорошего я все равно ничего не скажу, а высказав свои сомнения о Каше, навлеку на себя праведный гнев его апологетов.

Но пару шпилек вставлю, так и быть:

1. Каше - для тех, кто может быть "первым парнем" только "на деревне" (город - оракл, сравните количество постов здесь и в соседнем форуме ;). Я нескольких таких людей знаю лично. Теплое болото для профанов. Не умаляя, конечно, заслуг людей, которых действительно можно назвать классными программистами, профессионалами в лучшем смысле слова и просто энтузиастами Каше.

2. Каше - для скупцов. В 21 веке настолько прятать знания друг от друга могут только "особенные" люди и компании. На том же ВРЦ нет возможности указать, что и проблему, и ее решение могут видеть все желающие. В этом смысле "ВРЦ" - фикция. Нужно было ее обозвать "Ю энд Онли Ю РЦ". Не говоря уже о наличии хоть какого-то живого стека готовых механизмов и решений. Посмотрите на "самплсы" ИС с этой точки зрения - по моему, весьма показательно.

3. Каше по-принципу обременена проблемой оттока кадров. Более того, по двум приведенным выше причинам, селекция кадров приводит, на мой взгляд к тому, что с Каше остаются или энтузиасты (1 из 20) или "специалисты", попадающие под пп.1,2 или "прочие" (взрослые, связанные с Каше десятилетиями; девчонки, которым "в декрет"; ценящие "место работы" выше профессионального роста и т.п.).

Остановлюсь, пожалуй... на хорошую взбучку со стороны сообщества я уже и так наговорил ;)

Еще раз повторюсь - если бы мне завтра пришли и сказали, что дадут деньги на все, что я захочу "по работе", второе, что я бы сделал - выбрал бы не Каше в качестве платформы разработки. Про первое - не спрашивайте (все равно не скажу ;).

Это сугубо личное, субъективное мнение. Заранее приношу извинения всем людям и компаниям, которые сочтут мои слова оскорбительными. Исключения, в конце концов, подтверждают правила.
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #36482675
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако, злой Вы kolesov, злой. Как надо, так и "в 100 000" раз быстрее, как настроение испортилось, так "неразрешима в рамках текущей модели". Огромное количество постов в соседнем топике ведь может означать и огромное количество проблем, не так ли? Ваши же посты не про успехи?
Скучаете по бизнес-логике на TSQL с "прозрачными" джойнами?
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #36482766
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefintОднако, злой Вы kolesov, злой. Как надо, так и "в 100 000" раз быстрее, как настроение испортилось, так "неразрешима в рамках текущей модели". Огромное количество постов в соседнем топике ведь может означать и огромное количество проблем, не так ли? Ваши же посты не про успехи?
Скучаете по бизнес-логике на TSQL с "прозрачными" джойнами?

Связавшись 2 года назад с Каше серьезно (раньше работал с ним за з/п и бил шару... как понимаете, совсем не на Каше), могу отметить одно - сильно скучаю по той ситуации, когда за полчаса в сети можно было найти десяток готовых, обкатанных решений своей проблемы, которые обходят все неприятности платформы и используется тысячами людей.

С Каше каждый из нас дует в свою дуду... И менеджеры ИС этого то-ли не понимают, то-ли культивируют. Ведь платформа, окажись она чуть более открыта, на самом-то деле довольно интересна. И, как это ни странно, даже в режиме волков-одиночек, дает людям и компаниям довольно эффективные инструменты.

Но... куда деваться... будем работать ;)
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #36482801
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesov,
Вот все из Вас выпытывать надо. Итого: "интересная", "и даже в 100 000 раз быстрее", и, " как это ни странно , даже в режиме волков-одиночек, дает людям и компаниям довольно эффективные инструменты". Сразу так написать нельзя было? :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Имя класса в расчетном свойстве при наследовании
    #37637656
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжу темку...

Собрался так же поэксперементировать с расчётными свойствами... Создал абстрактный класс

/// fio
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Class soi.sys.cls.soiszn.fio [ Abstract ]
{

/// fam
Property fam As %String [ 
	Calculated, 
	SqlComputeCode = {
		s {fam}=##class({%%CLASSNAME}).%OpenId({ID}).famGet()
	}, 
	SqlComputed
];

/// famGet
Method famGet() As %String
{
	q $$Fld^ASYS("FAM",,..urn,"KU")
}

}



А данные хранятся в хранимом классе + наследование от этого.
При компиляции получаю
автор 5524 Invalid {Field} reference in %2: '%1'
И не совсем понимаю что именно я неправильно указал?
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #37638238
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет поля ID в просто классе.

Есть несколько вариантов решения:
1) сделать класс наследником от %RegisteredObject;
2) вместо {ID} использовать {%%ID}
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #37638295
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitНет поля ID в просто классе.
Вона чего... Это потому что он абстрактный?
Т.е. ход мысли у меня правильный был для хранимого класса?
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #37638562
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaВона чего... Это потому что он абстрактный?Это потому что он сам по себе, то есть ни от кого не наследуется. В терминах Caché - незарегистрированный .
Когда Вы создаёте в .NET/Java пустой класс, Вы же не надеетесь там найти уже готовое свойство ID, или Surname, или Age. Здесь аналогично.
krvsaТ.е. ход мысли у меня правильный был для хранимого класса?Не знаю.
Посмотрите сгенерированный INT-код в классах наследниках от Вашего абстрактного класса: то ли это, что Вы хотите получить.

PS: если у Вас значение вычисляемого поля одинаковое для объектного/реляционного доступа, то достаточно кода в SQLCOMPUTECODE :
Methods Supporting SQLCOMPUTECODE
...
Рейтинг: 0 / 0
Имя класса в расчетном свойстве при наследовании
    #37638955
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
servitесли у Вас значение вычисляемого поля одинаковое для объектного/реляционного доступа, то достаточно кода в SQLCOMPUTECODE
Ясно, оно одинаковое.
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Имя класса в расчетном свойстве при наследовании
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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