AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.07.2002, 18:36   #1  
mick_777 is offline
mick_777
Участник
 
30 / 10 (1) +
Регистрация: 05.06.2002
Адрес: г. Киев, Украина
? методы pack и unpack - как задействовать
назначение понятно, а как задействовать не понял

хотел сохранить выбранные пользователем каталог для след. запуска в форме
раскопал что есть такие замечательные методы как упаковка и распаковка, но не смог
победить
Старый 19.07.2002, 11:07   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
О сохранении последних значений
Класс xSysLastValue
__________________
Андрей.
Старый 19.07.2002, 13:59   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Насколько я понимаю, pack/unpack
по соглашению используются самим ядром для сериализации состояния объекта.
Т.е. pack должен перечислить все внутренние переменные объекта, важные для сохранения состояния, а unpack восстановить состояние объекта.

Насколько я понимаю, pack/unpack
изначально используются ядром для передачи состояния объекта в трехуровневой системе (с клиента на сервер и наоборот).

В том числе они же используются и в saveLast/getLast.

Подробного описания этих методов и их предназначения не видел (не помню, чтобы видел ) Какие-то намеки содержатся в презентациях, которые идут в каталоге DBD2000
Старый 19.07.2002, 14:47   #4  
mick_777 is offline
mick_777
Участник
 
30 / 10 (1) +
Регистрация: 05.06.2002
Адрес: г. Киев, Украина
вот что я нашел
в
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  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Нет. pack/unpack уже работают.
просто в будущем функциональность которая сейчас навешана на этим методы будет представлена в интерфейсе.
Старый 28.10.2002, 11:31   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Изначально опубликовано mazzy
Насколько я понимаю, pack/unpack
изначально используются ядром для передачи состояния объекта в трехуровневой системе (с клиента на сервер и наоборот).
Можно поподробнее? В каких случаях (грубо говоря, по какому событию) происходит эта "передача состояния"? Мы-то сейчас в 2-ух уровнях программируем, а вот о том, что в 3-х уровнях наши классы работать не будут, может и не знаем.

Цитата:
Изначально опубликовано mazzy
Подробного описания этих методов и их предназначения не видел (не помню, чтобы видел ) Какие-то намеки содержатся в презентациях, которые идут в каталоге DBD2000
Самый главный tutorial, который вам стоит изучить, если вы собираетесь эти методы использовать - tutorial_tetris (серьезно ). Посмотрите, я на его основе эти методы изучал.
__________________
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  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
В classDeclaration класса можно описать список атрибутов класса, значение которых должно сохраняться в базе (в таблице SysUtilElements) до следующего использования класса.
Их список описывается с помощью макроса ParmList.

Для того, чтобы описание этого макроса было корректно обработано при компиляции и заработал механизм сохранения атрибутов надо в потомке перекрыть методы pack() и unPack() и скопировав в них код запаковки / распаковки. Иногда в этих методах производится дополнительная обработка добытых из базы параметров(SalesFormLetter_Quotation.unPack()).

Добыча и сохранение атрибутов класса потомка RunBase в базе производится методами getLast(), SaveLast(). у других классов приходиться непосредственно вызывать класс xSysLastValue.

Это нормально работает с любой конфигурацией и 2-х и 3-х уровневой.
Старый 29.10.2002, 11:20   #8  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
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  
AlGol is offline
AlGol
Участник
 
277 / 93 (4) ++++
Регистрация: 24.12.2001
Адрес: Тверь.
Глубоко извиняюсь за дезинформацию, что-то я вчера перегрелся...

Макрос называется CurrentList, а не ParmList. Я попробовал обозвать по-другому (исправив название в методах pack() и unpack()) - вроде все работает, но зачем надо путать и себя и других упражняясь в придумывании названий?

параметры храняться, конечно же, в SysLastValue.
Старый 29.10.2002, 13:26   #10  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Да нет, не в путанице дело. Просто макрос - это лишь аккуратный способ сделать то, о чем я уже как-то писал (Класс 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 Varmen DAX: Программирование 20 27.02.2009 14:58
Ошибка в методах unpack pack Arahnid DAX: Программирование 13 25.02.2009 00:50
Как работают Pack и UnPack ? moid DAX: База знаний и проекты 4 05.03.2007 15:16
Как удалить сохраненные данные методов pack()/unpack() ? djoker DAX: Программирование 23 04.10.2004 17:33
pack\unpack Diman DAX: Программирование 2 30.07.2003 10:05
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:39.