Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
31.07.2008, 16:16
|
|||
|---|---|---|---|
|
|||
точечный синтаксис. помогите советом |
|||
|
#18+
Имеется два одинаковых класса Class test.CLS1 Extends %Persistent { Property A As %String; Property B As%String; Property C As %String; Property D As%String; } Class test.CLS2 Extends %Persistent { Property A As %String; Property B As%String; Property C As %String; Property D As%String; } Задача: обновить поля класса test.CLS1 полями класса test.CLS2 (поля по списку: A,C,D) пытаюсь сделать так: /// ID1 - ID класса test.CLS1 /// ID2 - ID классаtest.CLS2 /// ListFields - список полей для обновления (поля по списку: A,C,D) ClassMethod UpdateTour(ID1 As %Integer,ID2 As %Integer, ByRef ListFields As %String) As %Status { s status = $$$OK s objBT = ##class(test.CLS1).OpenId(ID1) s objNT = ##class(test.CLS2).%OpenId(ID2) if (objBT="")||(objNT="") q 0 if $l(ListFields,",")>1 { f i=1:1:$l(ListFields,",") { s command = "s objBT."_$p(ListFields,",",i)_" = objNT."_$p(ListFields,",",i) w !,command x command } s status = objBT.%Save() q:$$$ISERR(status) status } q $$$OK } Выдает ошибку: s objBT.A = objNT.A ^ <UNDEFINED>zUpdateTour+16^test.CLS1 *objBT Вопрос: как сделать чтоб такой синтаксис работал? возможно ли вообще это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2008, 16:48
|
|||
|---|---|---|---|
точечный синтаксис. помогите советом |
|||
|
#18+
У Вас рабочий пример? Код: plaintext 1. 2. 3. Советую обратить внимание на: Using the Cache $ZOBJxxx Intrinsic Functions zobj команды и $zobj функции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
31.07.2008, 17:19
|
|||
|---|---|---|---|
|
|||
точечный синтаксис. помогите советом |
|||
|
#18+
В вашем примере что бы срабатывал XECUTE нужно сделать objBT и objNT public переменными - в описании класса добавить [ PublicList = (objBT, objNT) ] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2008, 08:42
|
|||
|---|---|---|---|
точечный синтаксис. помогите советом |
|||
|
#18+
Или убрать процедуреблок. Никак не привыкну к этому... ---------- Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2008, 09:28
|
|||
|---|---|---|---|
точечный синтаксис. помогите советом |
|||
|
#18+
Процедуреблок - это хорошо. А вот то, что на execute создается новый контекст переменных, где старые не видны, это не ошибка каше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2008, 09:38
|
|||
|---|---|---|---|
точечный синтаксис. помогите советом |
|||
|
#18+
в каше 2008 странно эту проблему решили, там execute работает, но переменные, задействованные в нем становятся видны глобально Код: plaintext 1. 2. 3. 4. получается вот что Код: plaintext 1. 2. PS. ну а делать я бы стал как посоветовал servit :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
01.08.2008, 10:00
|
|||
|---|---|---|---|
точечный синтаксис. помогите советом |
|||
|
#18+
Блок А.Н.Процедуреблок - это хорошо. Не по МСМовски это как-то. От того и путаница как у автора получается... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=39&mobile=1&tid=1558805]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 262ms |
| total: | 421ms |

| 0 / 0 |
