Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. могу ли я как то вернуть результат выполнения того что я делал. сам то код отлично выполняется, но я хотел бы результат получить назад. как я понимаю команду х - это как вывод строки в консоль, она туда уходит и мы не можем работать с тем что там происходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 13:41 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
wertyBSD , Вывод результата на консоль - это команда write . xecute далает несколько другое. Ваш пример можно переделать так: ClassMethod Calculated(p As %String, f As %String, id As %String) As %Status { set table=##Class(PR.Table1).%OpenId(id) set $property(table,p)=f quit table.%Save() } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 14:41 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Код: plaintext я немного не понимаю что делает property но смысл в том что я посылаю параметров поле вычисления, второй параметр формула, а 3 айдишник. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 14:50 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
нашёл выход - написать программу, а не метод класса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. тогда работает, а в методе класса "а" не определено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 15:08 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
пример вызова программы w $$Calc^Calculated("pole1", "(table.pole2+table.pole3)*0.34', 1) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 15:20 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
wertyBSD Код: plaintext я немного не понимаю что делает property Пожалуйста, указывайте в начале темы Вашу версию СУБД (значение $zv). По-умолчанию я ориентируюсь на самую последнюю версию Caché. Попробуйте $PROPERTY заменить на $ZOBJPROPERTY . wertyBSDнашёл выход - написать программу, а не метод класса Почему в программе это работает, а в методе класса нет и как это решить обсуждалось здесь . wertyBSDпример вызова программы w $$Calc^Calculated("pole1", "(table.pole2+table.pole3)*0.34', 1) Почему бы не сделать вычисляемое поле ? Оно может быть и хранимым. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 15:35 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
servit, нельзя вычисляемое, формулы могут меняться даволно часто, на это и рассчитан такой метод ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 15:59 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Cache for Windows NT (Intel) 5.0.19 (Build 6202_3) Wed Aug 31 2005 18:46:39 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 16:00 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
wertyBSD Код: plaintext 1. Это масло масляное... wertyBSDв методе класса "а" не определено. Наверняка виной всему процедуреблок равный 1... При таком раскладе все что внутри процедуры/экзекюта ньюшится и пропадает после выхода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 16:14 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
В версии 5.0 есть функция $ZOBJPROPERTY . Лучше её использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2011, 16:17 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Почему в методе не выполняется, а в программе выполняется. Это причуды IS я им об этом говорил. Команда Х выполняется по разному внутри вызова процедуры и внутри вызова подпрограммы. Когда Х вызывается внутри подпрограммы она ведет себя корректно в соответствии со стандартом и тут никаких проблемм нет, а в процедуре она ведет себя по особенному. Х выполняется как внешняя процедура и все переменные внутри команды Х локализованы и за пределами команды Х переменной а нет. Если хочешь получить результат в этом случае то возвращай результат в процентной переменно например в %а. Когда я представителям IS указал на странное поведение команды Х они сказали что так и задумано и показали место в документации где это написано. Я конечно с такой трактовкой не согласен но что поделаешь? Хозяин барин. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2011, 18:00 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
misha_shar, Вы про [ProcedureBlock=0] не забыли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2011, 18:20 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Я не знаю что такое [ProcedureBlock=0]. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2011, 19:05 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
misha_shar , одна из опций класса, как раз влияет на такое поведение экзекюта в методах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2011, 19:12 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Да но это справедливо не только для методов класса, а для любой процедуры. У меня классов вообще нет , а проблемма то возникала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2011, 19:17 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
misha_sharДа но это справедливо не только для методов класса, а для любой процедуры. У меня классов вообще нет , а проблемма то возникала.Давайте разбираться: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Код: 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. подпрограмма1функция1процедура10процедура21метод10метод21метод31 PS: ProcedureBlock ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2011, 20:55 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Кстати, все-таки странно, что для команды EXECUTE параметр PROCEDUREBLOCK наследуется из текущей функции. Было бы логичнее для уровня стека EXECUTE ставить его = 0. Хотя, потестил и понял, что вообще ничего не понимаю: при процедуреблок=1 переменная изолируется с обоих сторон стека, но при при этом программы процедуреблок=0 видят переменные через уровень с процедуреблок=1 Код: 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. Я, кстати, до этого думал, что Procedureblock должна изолировать только от предыдущего уровня стека, а все вызываемые программы с процедуреблок=0 должны работать с тем контекстом переменных, откуда они вызваны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2011, 09:44 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Блок А.Н.Хотя, потестил и понял, что вообще ничего не понимаю: при процедуреблок=1 переменная изолируется с обоих сторон стека, но при при этом программы процедуреблок=0 видят переменные через уровень с процедуреблок=1 Стоит ли удивляться? Вот процедурный аналог того, что Вы написали: do T0() q T0() s x=1 w !,"T0,x=",x d T1() w !,"T0,x=",x q T1() { s x=2 w !,"T1,x=",x d X("s x=3") w !,"T1,x=",x } X(code) w !,"X,x=",x x code w !,"X,x=",x q В этом легко убедиться просмотрев другой код, предварительно скомпилировав перед этим класс с флагом "k". PS: не следует забывать в методах "ньючить" нужные переменные, когда это необходимо (в том числе и в случае с "ProcedureBlock=1"). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2011, 11:00 |
|
||
|
возвращение значения после выполнения команды "х"
|
|||
|---|---|---|---|
|
#18+
Это все понятно, что методы классов в итоге скомпилируются в МАС. Но, честно говоря, я почему-то думал, что PROCEDUREBLOCK - это такая замена команды NEW, но похоже, что механика у него совершенно другая. И уже тем более, видимость переменной через уровни стека и невидимость на промежуточных уровнях - это фича. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2011, 12:56 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=37044954&tid=1557856]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 347ms |

| 0 / 0 |
