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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 24.02.2009, 15:40   #9  
tourist is offline
tourist
Участник
 
21 / 14 (1) ++
Регистрация: 03.05.2006
Цитата:
Сообщение от 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;
}
pack() наследника RunBase приобретает вид
X++:
public container pack()
{
    return [#list];
}
unpack() наследника RunBase приобретает вид
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()]
}
, в этом случае version все равно придется менять, если были изменения в запросе.
Теги
pack, runbase, unpack

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
следуюший затык pack/unpack Varmen DAX: Программирование 20 27.02.2009 14:58
Как работают 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
Русская локализация Axapta 3 ? SlavaK DAX: Администрирование 59 01.07.2003 22:38

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

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

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