Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
Помогите плз... Очень важно! Необходимо прописать хранение экземпляров класса типа SerialObject в дочерних узлах, а не в виде списка в узле глобала, где хранится объект, полем которого является экземпляр данного класса. Это, как я понял, можно задать через способе хранения класса. В документации (Class Definition Reference) нашел, что есть ключевое слово Structure внутри элемента StorageData, которое может принимать значение node, subnode, <пустая строка>: - (empty string)—data is stored as a multiple values within a node. - node—data is stored as a single value within a node. - subnode—data is stored within repeating subnodes. По умолчанию - listnode. Только про то, как и где прописывать - ниче не написано... Может кто разбирался с этим Storage, подскажите, плз... Заранее огромное спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2010, 17:40 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
В каше есть, редактор хранения, в этом редакторе полагаю можно сделать то что ты хочешь добратся до него можно, в инспекторе выбрав, Storage, в свойствах Storage по умолчанию, выбери Data Nodes, по кнопке с троеточием откроется мастер хранения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2010, 18:00 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
DAiMor, Да, с помощью этого мастера хранения можно добавить к определению способа хранения внутри тега Data тег Structure: <Structure>subnode</Structure> Однако при компиляции класса возникает ошибка... Пишет "Неправильная структура схемы хранения" Да и в мастере уже видно, что что-то не так. Если до изменения было: Имя узла Глобальная ссылка AddressState (ID)=$LB(Street,Number) То после изменения: Имя узла Глобальная ссылка AddressState (ID)= ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2010, 19:09 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
Еще можно в студии сделать "показывать структуру хранения" Правда когда руками правишь - там не все очевидно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2010, 21:52 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
Блок А.Н., Пробовал в студии. Куда только не вставлял... Та же ошибка. Поэтому и написал сюда, может кто это использовал или знает, где можно узнать (кроме Class Definition Reference). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2010, 23:16 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
X_Shooter, может поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 00:00 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
Приложите, пожалуйста, попробую глянуть. А то так не очень понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 08:58 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
X_ShooterНеобходимо прописать хранение экземпляров класса типа SerialObject в дочерних узлах, а не в виде списка в узле глобала Что-то типа такого? Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 09:15 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
X_ShooterНеобходимо прописать хранение экземпляров класса типа SerialObject в дочерних узлах Хранение типа стораж можно указать только для хранимых классов типа персистент. Т.к. в описании явно нужно указывать именя глобалов. Так же при описании предлагается выбирать только свойства данного класса. Выбрать какие-то "дальние" свойства которые есть у свойства типа "другой класс" построитель не даёт. Т.ч. если у тебя есть класс А сериалобжект со свойствами а1 и а2, класс Б со свойством б1 типа класс А - ты не сможешь расписать б1.ф1 и б1.а2 по узлам глобала в котором хранится класс Б. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 09:28 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
krvsaб1.ф1 и б1.а2 Читать как "б1.а1 и б1.а2"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 09:30 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
вот еще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 11:27 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
krvsaX_ShooterНеобходимо прописать хранение экземпляров класса типа SerialObject в дочерних узлах, а не в виде списка в узле глобала Что-то типа такого? Код: 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. Да, кажется это то, что нужно. Огромное спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 13:43 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
krvsaX_ShooterНеобходимо прописать хранение экземпляров класса типа SerialObject в дочерних узлах Хранение типа стораж можно указать только для хранимых классов типа персистент. Т.к. в описании явно нужно указывать именя глобалов. Так же при описании предлагается выбирать только свойства данного класса. Выбрать какие-то "дальние" свойства которые есть у свойства типа "другой класс" построитель не даёт. Т.ч. если у тебя есть класс А сериалобжект со свойствами а1 и а2, класс Б со свойством б1 типа класс А - ты не сможешь расписать б1.ф1 и б1.а2 по узлам глобала в котором хранится класс Б. Да, пока разбирался с этим уже столкнулся. Жаль, конечно. Вообще бы красота получилась... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 13:48 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
X_Shooter , я бы вообще не очень-то уповал на этот сторадж... Думается мне он был разработан в рамках "акции" - "мы можем описать как класс любое ваше хранение, переходите быстрей с МСМ на Каше". Нам так это вообще никак не помогло. Из-за дюже извращенного способа хранения данных... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.08.2010, 15:10 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
krvsa, Для класса типа сериалобжект, судя по всему, нельзя прописать структуру хранения, подобную той, которая описана в вашем примере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 20:45 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
X_Shooter , хранение прописывается только у хранимых классов. Там ведь сразу глобал нужно указывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 21:37 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
krvsa, Т.е. получается, как ни крути, а такие объекты могут храниться в глобале, соответствующего к/л персистентному классу, только в виде списка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 22:16 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
X_Shooter , я не совсем понял вопрос... Хранение можно указать только хранимому классу. Т.е. персистент... Причем в описании хранения будут присутствовать только свойства описваемого класса. Их "сложный" тип вообще не учитывается при описании. Для удобства помощи со стораджом лучше приводить пример класса и потом на глобалах показать какхочется "завернуть" хранение. Т.о. можно получить некий вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 23:33 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
krvsa, Пример. Класс 1: Class Temp.Person Extends %Persistent [ StorageStrategy = NewStorage1 ] { Property Name As %String; Property Phone As %String; Property Adr As Address; } Класс 2: Class Temp.Address Extends %SerialObject [ StorageStrategy = NewStorage1 ] { Property City As %String; Property Street As %String; } Можно ли сделать в глобале вот так: ^Temp.PersonD(1,"Name")="John Smith" ^Temp.PersonD(1,"Phone")="235-05-45" //до сих пор все понятно //но адрес хочу хранить так: ^Temp.PersonD(1,"Adr","City")="NewYork" ^Temp.PersonD(1,"Adr,"Street")="Park Avenue" /* Т.е. не просто ^Temp.PersonD(1,"Adr")=$lb("NewYork","Park Avenue"), а прям поддеревом */ В способе хранения сериалобжектов есть тег State, который отвечает за содержимое и соответствует одному тегу Data. Т.е. поля класса Address нельзя разносить в разные теги Data и описывать для каждого Subscript и Structure. **Создавать новый способ хранения через мастер и модифицировать его через инспектор не получается, так как у классов сериалобжект способ хранения имеет тип %Library.CacheSerialState, а не Storage вовсе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 23:54 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
Хранение по умолчанию для Address: <Storage name="Default"> <Data name="AddressState"> <Value name="1"> <Value>State</Value> </Value> <Value name="2"> <Value>City</Value> </Value> <Value name="3"> <Value>Street</Value> </Value> <Value name="4"> <Value>Zip</Value> </Value> </Data> <State>AddressState</State> <StreamLocation>^Temp.AddressS</StreamLocation> <Type>%Library.CacheSerialState</Type> </Storage> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.08.2010, 23:55 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
X_Shooter Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Значит я правильно понял... И сразу писал - нет в диалоге стораджа вариантов со свойствами типа "другой класс". Выбирать и манипульровать можно только свойствами описываемого класса. Сам сторадж изначально (личное мнение) делался не для "ломания классов"... А наоборот. Делания классов из произвольного хранения данных в неких глобалах. На переходный период с МСМ на Каше. Смысла переделывать хранение стандартного класса нет никакого. Это всегда объясняли специалисты ИС. В твоём случае я бы сделал класс "Адрес" хранимым, а его экземпляры ссылались бы на Персон... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2010, 08:36 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
X_Shooter, Если Вам это действительно очень надо, то это возможно. Правда, как справедливо заметил krvsa , непонятно зачем: Код: 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. PS: такой вариант задания схемы возможен только в "ручном" режиме. Стандартная схема хранения встраиваемого класса в любом случае останется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2010, 09:13 |
|
||
|
Способ хранения для класса
|
|||
|---|---|---|---|
|
#18+
servitтакой вариант задания схемы возможен только в "ручном" режиме Спасибо, буду знать! Пока только с "интерфейсом" имел дело... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2010, 09:25 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=36778654&tid=1557666]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
174ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
84ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 559ms |

| 0 / 0 |
