18.07.2002, 18:36 | #1 |
Участник
|
методы pack и unpack - как задействовать
назначение понятно, а как задействовать не понял
хотел сохранить выбранные пользователем каталог для след. запуска в форме раскопал что есть такие замечательные методы как упаковка и распаковка, но не смог победить |
|
19.07.2002, 11:07 | #2 |
Moderator
|
О сохранении последних значений
__________________
Андрей. |
|
19.07.2002, 13:59 | #3 |
Участник
|
Насколько я понимаю, pack/unpack
по соглашению используются самим ядром для сериализации состояния объекта. Т.е. pack должен перечислить все внутренние переменные объекта, важные для сохранения состояния, а unpack восстановить состояние объекта. Насколько я понимаю, pack/unpack изначально используются ядром для передачи состояния объекта в трехуровневой системе (с клиента на сервер и наоборот). В том числе они же используются и в saveLast/getLast. Подробного описания этих методов и их предназначения не видел (не помню, чтобы видел ) Какие-то намеки содержатся в презентациях, которые идут в каталоге DBD2000 |
|
19.07.2002, 14:47 | #4 |
Участник
|
вот что я нашел
в AxaptaDevelopmentBestPractices\Application Desine\Desine Pattern\Pack-unpack pattern These methods could form the basis for an interface called "Packable", in a later version. и я так понял, что это будет реализовано в будущем ??? |
|
19.07.2002, 15:02 | #5 |
Участник
|
Нет. pack/unpack уже работают.
просто в будущем функциональность которая сейчас навешана на этим методы будет представлена в интерфейсе. |
|
28.10.2002, 11:31 | #6 |
Administrator
|
Цитата:
Изначально опубликовано mazzy
Насколько я понимаю, pack/unpack изначально используются ядром для передачи состояния объекта в трехуровневой системе (с клиента на сервер и наоборот). Цитата:
Изначально опубликовано mazzy
Подробного описания этих методов и их предназначения не видел (не помню, чтобы видел ) Какие-то намеки содержатся в презентациях, которые идут в каталоге DBD2000
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
28.10.2002, 20:41 | #7 |
Участник
|
В classDeclaration класса можно описать список атрибутов класса, значение которых должно сохраняться в базе (в таблице SysUtilElements) до следующего использования класса.
Их список описывается с помощью макроса ParmList. Для того, чтобы описание этого макроса было корректно обработано при компиляции и заработал механизм сохранения атрибутов надо в потомке перекрыть методы pack() и unPack() и скопировав в них код запаковки / распаковки. Иногда в этих методах производится дополнительная обработка добытых из базы параметров(SalesFormLetter_Quotation.unPack()). Добыча и сохранение атрибутов класса потомка RunBase в базе производится методами getLast(), SaveLast(). у других классов приходиться непосредственно вызывать класс xSysLastValue. Это нормально работает с любой конфигурацией и 2-х и 3-х уровневой. |
|
29.10.2002, 11:20 | #8 |
Administrator
|
AlGol, можно поподробнее про ParmList?
Такого макроса в AOT я не нашел. Если это макрос, который вы описываете сами в classDeclaration, то почему он должен называться именно ParmList? Есть классы, которые к нему обращаются по этому имени? Таблицы SysUtilElements в приложении, кажется, нет. Есть форма с таким названиям, но она выводит данные таблицы UtilElements. В таблице UtilElements нет поля для сохранения произвольных данных (по крайней мере, я не нашел). xSysLastValue и RunBase, который использует xSysLastValue, сохраняют данные в таблице SysLastValue.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
29.10.2002, 11:52 | #9 |
Участник
|
Глубоко извиняюсь за дезинформацию, что-то я вчера перегрелся...
Макрос называется CurrentList, а не ParmList. Я попробовал обозвать по-другому (исправив название в методах pack() и unpack()) - вроде все работает, но зачем надо путать и себя и других упражняясь в придумывании названий? параметры храняться, конечно же, в SysLastValue. |
|
29.10.2002, 13:26 | #10 |
Administrator
|
Да нет, не в путанице дело. Просто макрос - это лишь аккуратный способ сделать то, о чем я уже как-то писал (Класс xSysLastValue. А про название я просто хотел уточнить. В Аксапте часто бывает, что для каких-нибудь функций объекты должны иметь методы с предопределенными именами. За примером далеко ходить не надо: для xSysLastValue класс, состояние которого сохраняется (кстати, это может быть и не класс, а форма или таблица, что дела по сути не меняет), должен иметь методы pack, unpack и еще штук пять других. Я предполагал, что тут схожая ситуация: по каким-то причинам макрос должен называться ParmList и никак иначе, но мы все-таки разобрались, что это не так, с чем вас и себя поздравляю.
__________________
Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me |
|
|
Похожие темы | ||||
Тема | Ответов | |||
следуюший затык pack/unpack | 20 | |||
Ошибка в методах unpack pack | 13 | |||
Как работают Pack и UnPack ? | 4 | |||
Как удалить сохраненные данные методов pack()/unpack() ? | 23 | |||
pack\unpack | 2 |
|