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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.06.2011, 16:36   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
На самом деле, UtilElements можно использовать и для проверки сопоставления полей

При выполнении на клиенте, у меня получалось сопоставимое время с MappingExists_RU (процентов на 10 быстрее, правда, память никуда не течет, вот досада). А вот при выполнении на сервере - разница уже в 5-6 раз не в пользу MappingExists_RU (и раза в два быстрее, чем на клиенте).

Ну и кэширование - тут без вопросов

Пара методов в класс Global - по использованию и результатам полностью аналогичны MappingExists_RU.
Отличие между методами: mappingExists_UE использует кэширование (класс MappingsInfoCache), а mappingExists_UENC - напрямую создает классы MappingsInfo_UE
X++:
static public boolean mappingExists_UE(tableId _mapId,
                                tableId _tableId,
                                fieldId _mapField   = 0,
                                fieldId _tableField = 0)
{
    boolean          ok = false;
    MappingsInfoCache  mappingsInfoCache = MappingsInfoCache::Construct();
    ;
    if (mappingsInfoCache && mappingsInfoCache.MappingTableExists(_mapId, _tableId))
    {
        if (_mapField || _tableField)
        {
            ok = mappingsInfoCache.MappingFieldExists(_mapId, _tableId, _mapField, _tableField);
        }
        else
            ok = true;
    }
    return ok;
}

static public boolean mappingExists_UENC(tableId _mapId,
                                tableId _tableId,
                                fieldId _mapField   = 0,
                                fieldId _tableField = 0)
{
    boolean          ok = false;
    MappingsInfo_UE  mappingsInfo = new MappingsInfo_UE(_mapId, _tableId);
    ;
    if (mappingsInfo && mappingsInfo.MappingTableExists())
    {
        if (_mapField || _tableField)
        {
            ok = mappingsInfo.MappingFieldExists(_mapField, _tableField);
        }
        else
            ok = true;
    }
    return ok;
}
Оба класса работаю как в DAX3.0 kr2 (сохранить приложенный xpo в кодировке ANSI), так и в DAX2009 SP5.
Думаю, в четверке тоже должно запускаться.
Вложения
Тип файла: zip Class_MappingsInfo_UE.zip (1.8 Кб, 212 просмотров)
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Zabr (2), raz (5), Daiver (1).
Теги
bug, map, treenode, баг, локализация, накладная, налоги, ошибка, счет-фактура

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как автоматически отключать связи в файле Excel при пакетной обработке? decoder DAX: Программирование 7 03.06.2009 19:19
Исправление накладных и счетов-фактур Constantine DAX: Функционал 89 26.02.2006 13:13
При обработке накладной пропадают налоги Filip DAX: Функционал 21 21.03.2005 11:19
Еще 1 простой вопрос по пакетной обработке Smith DAX: Функционал 1 26.10.2004 17:55
Распределение накладных расходов при отрицательных строках закупки wb DAX: Программирование 1 30.06.2004 13:03

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

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

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