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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.02.2022, 23:26   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
List/Set/Map/Array: deep clone через pack/create в классических Аксаптах
выделил в отдельную тему отсюда
Оптимизация класса Tax

Цитата:
Сообщение от Masel Посмотреть сообщение
List здесь не подходит, потому что его нельзя быстро клонировать. pack/unpack вызывает ту же многократную вставку. Я это проверял.
ээээ. а можно поподробнее?
я обычно deep clone делаю как раз через pack/create.

Можно подробнее?
Что значит "многократную вставку"?
__________________
полезное на axForum, github, vk, coub.
Старый 09.02.2022, 11:45   #2  
Masel is offline
Masel
Участник
 
39 / 537 (18) +++++++
Регистрация: 19.09.2007
Ну вот я пробовал паковать, распаковывать исходный Map.
Нажмите на изображение для увеличения
Название: изображение_2022-02-09_114045.png
Просмотров: 26
Размер:	42.4 Кб
ID:	13313
Ну если бы там не было Set, то было бы просто куча Map::insert. То есть она бегает в цикле по контейнеру который ей передается в create и вызывает Map::insert. Кстати контейнеры тут тоже вынужденно используются при запаковке распаковке.
За это сообщение автора поблагодарили: mazzy (10).
Старый 09.02.2022, 12:08   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Masel Посмотреть сообщение
Ну вот я пробовал паковать, распаковывать исходный Map.
у меня нет сейчас под рукой 2012.
можете сюда приложить код метода unpack, который приводит к такому трейсу?
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 09.02.2022 в 12:12.
Старый 09.02.2022, 14:18   #4  
Manner is offline
Manner
Участник
 
84 / 16 (1) ++
Регистрация: 13.07.2004
Код в D365FO:
X++:
public boolean unpack(container _packedClass)
    {
        boolean success = false;
        Version version = RunBase::getVersion(_packedClass);
        container packedCollection;

        switch (version)
        {
            case #CurrentVersion:
                [version, #CurrentList, packedCollection] = _packedClass;
                oneToManyCollection = Map::create(packedCollection);
                success = true;
                break;
        }

        return success;
    }
За это сообщение автора поблагодарили: mazzy (2).
Старый 09.02.2022, 14:47   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
другими словами, системный метод Map::create отслеживается трассировщиком...
похоже, что системный map::create реализован на X++, а не на системном уровне.
спасибо!

прикольно, чё.
__________________
полезное на axForum, github, vk, coub.
Старый 09.02.2022, 17:00   #6  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от mazzy Посмотреть сообщение
похоже, что системный map::create реализован на X++, а не на системном уровне.
спасибо!
Мне кажется так получилось потому что там в мап вложены Set-ы. т.е. объекты. Поэтому он каждый элемент отдельно обрабатывает - сперва объект создает а затем вкладывает.

Если бы элементарные типы были то думаю за один вызов сработало бы. Но надо пробовать, чтобы точно быть уверенным.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
stoneridgesoftware: Creating a List Panel for a Field Lookup in Dynamics AX Blog bot DAX Blogs 0 16.05.2018 15:11
Dynamics AX Sustained Engineering: Servicing of Dynamics AX 2012 and Dynamics AX 2012 Feature Pack Blog bot DAX Blogs 0 08.05.2012 23:12
Kashperuk Ivan: List panels in Dynaics AX - a short description of SysListPanel class Blog bot DAX Blogs 1 21.10.2007 22:51
dax-dilettante: 15. System Classes \ The Collection Classes Blog bot DAX Blogs 0 26.09.2007 23:51
Объект List IvanS DAX: Программирование 1 05.03.2007 17:48

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

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

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