Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
знает ли кно-нибудь: 1. можно ли как-нибудь программно добавить в Кашовый объект поле, кроме как через переписывание существующего класса? 2. можно ли запихать в Кашовый объект дерево неизвестной глубины целиком, например посредством "merge"? или придётся писать на каждый уровень вложенности новый подчинённый класс? Т.е. не реализован ли тип данных типа (извините за товтологию) %Tree? 3. возможна ли в Каше реализация разного рода java-понтов типа падающих меню и, если да, то как именно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2008, 17:04 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
Может я чего то не понял, но 1.Ээ? 2.Незачем пихать сразу дерево неизвестной глубины. Можно сделать поле класса, причем того же самого типа или другого, при желании можно его сделать хранимым внутри класса, но великого смысла пока тоже не вижу. 3.В каше возможно многое, в том числе и генерация javascript, (если вы его конечно знаете). Это ничем не отличается от генерации HTML. По третьему пункту вам наверняка еще добавят знатоки ZEN. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2008, 05:38 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
> 1. можно ли как-нибудь программно добавить в Кашовый объект поле, кроме > как через переписывание существующего класса? Тут уже было обсуждение на эту тему. Делается через классы %Dictionary.*, однако так поступать не рекомендуется по многим причинам, их тоже называли - поищите по форуму. > 2. можно ли запихать в Кашовый объект дерево неизвестной глубины > целиком, например посредством "merge"? или придётся писать на каждый > уровень вложенности новый подчинённый класс? Т.е. не реализован ли тип > данных типа (извините за товтологию) %Tree? Любому полю можно сделать модификатор [MultiDimensional]. Однако следует учесть, что такие поля не попадают в SQL, и хранение для них придется писать отдельно. > 3. возможна ли в Каше реализация разного рода java-понтов типа падающих > меню и, если да, то как именно? Можно написать клиента на Java. Любви. logist (Сергей Шутов) ООО Димас, Хабаровск Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2008, 09:06 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
logist Тут уже было обсуждение на эту тему. Делается через классы %Dictionary.*, однако так поступать не рекомендуется по многим причинам, их тоже называли - поищите по форуму. что-то не нашел, не будет сцылочки, извините за наглость? logist Любому полю можно сделать модификатор [MultiDimensional]. Однако следует учесть, что такие поля не попадают в SQL, и хранение для них придется писать отдельно. огромное спасибо logist > 3. возможна ли в Каше реализация разного рода java-понтов типа падающих > меню и, если да, то как именно? Можно написать клиента на Java. видимо, некорректно задал вопрос. Нужен не клиент на Java, а примерно следующее: есть интернет страничка, в ней кнопочка-сцылочка, наводишь на нее мышку, падает менюшка с другими сцылочками. Куда и как в CSP прописать код, формирующий ету менюшку и сами строчки-ссылки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2008, 14:18 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshkaКуда и как в CSP прописать код, формирующий ету менюшку и сами строчки-ссылки? Не знаю как в ZEN, может там есть готовые "компоненты", но для CSP все сведется к "коду" html и javaskript... Но писать его можно на COS. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2008, 15:22 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
krvsa Не знаю как в ZEN, может там есть готовые "компоненты", но для CSP все сведется к "коду" html и javaskript... Но писать его можно на COS. А где в самой страничке это должно располагаться и как должно выглядеть? Это как метод должно быть оформлено? Если на COS, то будет выглядеть как обращение к функции внутри метода? Что она должна формировать и в каком виде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2008, 15:37 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshkaесть интернет страничка, в ней кнопочка-сцылочка, наводишь на нее мышку, падает менюшка с другими сцылочками. Куда и как в CSP прописать код, формирующий ету менюшку и сами строчки-ссылки? Все описанное не относится к серверному программированию, так что Cache' здесь не причем. 1. Кнопка-ссылка, при наведении мыши на которую, Вы собираетесь отображать меню - это любой объект HTML, например, специально оформленный стилями div. Тогда у него будет атрибут onmouseover="showMenu()", вызывающий обработчик на javascript для указанного события. 2. Меню - скорее всего тоже div, который изначально не отображается (style="display: none"), но обработчик showMenu делает его видимым, изменяя стиль, например, mybutton.style.display="" Содержимое этого div с необходимыми ссылками может быть отдано в контенте csp-страницы. JavaScript в CSP оформляется как обычно в HTML в тегах <script language="Javascript" type="text/javascript"></script> Скорее всего лучше применить готовые решения, например, изучив ZEN или, если Вы уже знакомы с CSP, обратите внимание на интеграцию с JavaScript-движком Dojo . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 01:41 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshka , Сашок уже все объяснил... Единственное, что могу добавить - это использование Код: plaintext Код: plaintext ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2008, 08:59 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
вроде бы понятно. В таком случае актуальными остаются вопросы: 1. Как программно добавить поле в Кашовый объект немного модифицированный вопрос 2 - как сохранить в базу объект, в который смёржилось дерево? Или лучше мёржить не в объект, а сразу в базу класса? типа m @( "^" _ $p( class , "@" , 2 ) _ "D" )@( class.%Id() , field ) = tree ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2008, 13:45 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshka1. Как программно добавить поле в Кашовый объект Мы испоьзуем %Dictionary.PropertyDefinition ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2008, 14:32 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
krvsa Мы испоьзуем %Dictionary.PropertyDefinition ... А можно поподробней, там всё, что-то похожее на добавление поля типа [ Private ]? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.01.2008, 18:52 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
> 2 - как сохранить в базу объект, в > который смёржилось дерево? Или лучше мёржить не в объект, а сразу в базу > класса? > типа > m @( "^" _ $p( class , "@" , 2 ) _ "D" )@( class.%Id() , field ) = tree Если дерево предполагается достаточно большое, лучше его вообще не мержить в локальную память, а работать напрямую с глобалью, а в классе хранить ссылку на глобаль и использовать через косвянку, например @..At@(idx1,idx2) Недостаток такого метода - необходимо сохранять объект перед использованием свойства с деревом (т.к. в большинстве случаев одним из узлов глобали будет Id объекта) Если дерево небольшое, можно его использовать в свойстве [MultiDimensional], соответственно в класс добавить методы %OnOpen, %OnAfterSave и %OnAfterDelete, которые соответственно будут загружать, сохранять и удалять дерево, желательно в отдельную глобаль (не в object.NameD, а например object.NameG) =logist (Сергей Шутов) ООО Димас, Хабаровск Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 04:52 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshkaА можно поподробней? Так вроде уже некуда... - Создаеш новый экземпляр класса - Заполняеш нужные свойства, нужными значениями - Делаеш ссылку на класс Вот вроде и все... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 08:49 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
всё равно туго понимаю krvsa - Создаеш новый экземпляр класса класса %Dictionary.PropertyDefinition надеюсь? т.е. s newclass=##class(%Dictionary.PropertyDefinition).%New("MyApp.MyClass||NEWPROPERTY") ? krvsa - Заполняеш нужные свойства, нужными значениями только то, что нужно, только это? s newclass.Type="%String" а далее d newclass.%Save() и всё? krvsa - Делаеш ссылку на класс это не понятно как... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 17:21 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
понял ошибку, Insert не произведен был servit Class Definition Classes у них кроме самой каши еще и мануал кривой? круто! насколько понимаю, там должно быть if ##class(%SYSTEM.Status).IsError(cdef)? всё равно после создания нового экземпляра при попытке присвоить только что созданному полю значение пишет <PROPERTY DOES NOT EXIST> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 18:33 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
Эта ошибка в документации исправлена в новых версиях. Высылаю новую ссылку: Class Definition Classes У меня пример из документации отработал правильно. Если Ваш пример все равно выдает ошибку, тогда надо смотреть Ваш код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2008, 18:58 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
Привет. > всё равно после создания нового экземпляра при попытке присвоить только > что созданному полю значение пишет <PROPERTY DOES NOT EXIST> Нужно перекомпилировать класс и переоткрыть уже открытые объекты =logist (Сергей Шутов) ООО Димас, Хабаровск Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 05:25 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshka , вот пример нашего кода Код: 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. Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 09:28 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
krvsa , при таком коде пишется <METHOD DOES NOT EXIST>zparentSet+4^%ooDictionary.PropertyDefinition.1 на строке i pr.%Close() , видимо, родитель ему мешается, а как без него? Вот сам класс, ничего необычного: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. отвлеченный вопрос: переменная err зачем? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 12:31 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshka krvsa , при таком коде пишется <METHOD DOES NOT EXIST>zparentSet+4^%ooDictionary.PropertyDefinition.1 на строке i pr.%Close() , видимо, родитель ему мешается, а как без него? Вот сам класс, ничего необычного: Код: plaintext 1. 2. 3. 4. 5. 6. Код: plaintext 1. 2. 3. 4. 5. 6. отвлеченный вопрос: переменная err зачем? Вы меняете метаописание класса и его отображения в SQL - соотвественно появится поле в во всех сохраненые объекты, и открытыл ПОСЛЕ изменения структуры класса объекты .... В приведоном коде смысла как то не наблюдается .... открыл объект добавил поле в ОПИСАНИЕ и что дальше то ? IMXO легче задачу решить через строковый Массив Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 13:41 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
Ptn , т.е. в чём прикол тогда передавать в данную процедуру экземпляр? и почему <METHOD DOES NOT EXIST>? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 14:27 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshka krvsa , при таком коде пишется <METHOD DOES NOT EXIST>zparentSet+4^%ooDictionary.PropertyDefinition.1 на строке i pr.%Close() Вот поэтому-то я и не хотел сначала этот код выкладывать Поскольку внашем варианте и создание класса выполняет некая функция... Но таки выложил в качестве иллюстрации. Суть там такая: - Создается новый класс - Потом сосздаются новые свойства и ссылаются на этот класс - Все это сохраняется Класс с новыми свойствами готов! Все остальное подробно описал Ptn ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 16:12 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
Кодировка у нас правда DOSовская... Код: 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. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. Мопэд не мой... Я просто разместил объяву. (с) ---------- Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 16:18 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
Господи Иисусе, krvsa , работает!!! Честно скажу, слабо верилось. Тогда вопрос на засыпку: а через что-нить типа кашового Код: plaintext 1. 2. 3. 4. 5. Типа s $zobjval(,/*имя нового поля*/количество полей и отношений+1,0,3,количество полей и отношений+1)="" что-нибудь бывает без лишних заморочек? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2008, 17:15 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
Не совсем понял, что Вы пытаетесь добиться. Если присвоить значение произвольному полю объекта, используйте функцию $zobjproperty. $zobjval даже сама Интерсистемс не использует. set propName="MyProperty" set Obj=##class(pkg.Class).%New() set $zobjproperty(Obj,propName)="value" ; equivalent to set Obj.MyProperty="value" =logist (Сергей Шутов) ООО Димас, Хабаровск Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2008, 06:02 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
ceshkaработает!!! Честно скажу, слабо верилось. Так этому коду уже несколько лет! Чего бы ему не работать-то ceshkaТогда вопрос на засыпку: а через что-нить типа кашового Код: plaintext 1. 2. 3. 4. Типа s $zobjval(,/*имя нового поля*/количество полей и отношений+1,0,3,количество полей и отношений+1)="" что-нибудь бывает без лишних заморочек? А тут я вообще не понял что нужно делать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2008, 09:10 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
logist $zobjval даже сама Интерсистемс не использует. давно? на Каше 5.0.21 при компиляции класса генерится рутина MyApp.MyClass.1.int в ней есть метка %Construct, при создании нового экземпляра она исполняется следующим образом: Set $zobjval(,1,0,3,1)=$zu(115,10), а далее последовательно по количеству полей в новом объекте: $zobjval(,номер следующего поля,0,3,номер следующего поля)=$s(если определено значение по умолчанию, то оно, а иначе ""), на Каше 2007.1 то же самое только с небольшим отличием: $zobjval(,/*имя поля или отношения*/номер следующего поля,0,3,номер следующего поля)=$s(если определено значение по умолчанию, то оно, а иначе ""), Т.е. если объект уже инициализирован, Кашовый %Construct уже пройден, делаем s $zobjval(,/*имя нового поля*/количество полей и отношений+1,0,3,количество полей и отношений+1)="" и в объекте новое поле... Это возможно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.01.2008, 11:09 |
|
||
|
ряд вопросов по Каше
|
|||
|---|---|---|---|
|
#18+
*.int код для Ваших классов пишет не Интерсистемс, а компилятор классов. Это - неоправданно низкий (в смысле абстракции) уровень программирования, навроде использования ассемблера в коде на C++ > на Каше 2007.1 то же самое только с небольшим отличием: А на Каше 4? А на Каше 2008? > Т.е. если объект уже инициализирован, Кашовый %Construct уже пройден, > делаем > s $zobjval(,/*имя нового поля*/количество полей и > отношений+1,0,3,количество полей и отношений+1)="" > и в объекте новое поле... Это возможно? А хрен его знает. Будет ли работать в новых версиях - тем более неизвестно. При сохранении такого объекта почти наверняка вылетит ошибка <CLASS RECOMPILED> Вообще говоря, Каше почти никаких ограничений на программиста не накладывает; хочется - делайте. Если нужно часто и помногу добавлять поля, лучше делайте массив или отношение многие-ко-многим. Любви. logist (Сергей Шутов) ООО Димас, ХАбаровск Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.01.2008, 06:05 |
|
||
|
|

start [/forum/topic.php?all=1&fid=39&tid=1559046]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
62ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 447ms |

| 0 / 0 |
