![]() |
#9 |
Участник
|
Цитата:
Сообщение от TasmanianDevil
![]() Быть может уже кто-нибудь сделал подобное, но рискну выложить ...
В RunBase добавляем метод X++: boolean checkContainmentTypes(container a, container b) { int i; if(conlen(a) != conlen(b)) return false; for(i = 1;i<=conlen(a);i++) { if(typeof(conpeek(a,i)) != typeof(conpeek(b,i))) return false; } return true; } X++: public container pack() { return [#list]; } X++: public boolean unpack(container packedClass) { if(this.checkContainmentTypes([#list], packedClass)) [#list] = packedClass; else info(@'Сохраненный набор параметров для данного объекта не совпал по структуре с требуемым - значения восстановлены по умолчанию.'); this.init(); return true; } Не болит голова о мусоре в SysLastValue - его просто не будет, ибо перезатрется . Не болит голова о необходимости чистить SysLastValue - ибо просто не от чего его чистить. P.S. И никакого хакерства и нелепых телодвижений по чистке всякого от всякого P.P.S. И эцилоп не будет бить по ночам ... никогда ... Небольшой нюанс: такая проверка не спасет, если пакуется query: X++: public container pack() { return [#currentVersion, #currentList, this.queryRun.pack()] } |
|
Теги |
pack, runbase, unpack |
|
![]() |
||||
Тема | Ответов | |||
следуюший затык pack/unpack | 20 | |||
Как работают Pack и UnPack ? | 4 | |||
Как удалить сохраненные данные методов pack()/unpack() ? | 23 | |||
pack\unpack | 2 | |||
Русская локализация Axapta 3 ? | 59 |
|