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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.01.2007, 08:25   #1  
ViV is offline
ViV
Axapta Retail User
Самостоятельные клиенты AX
Axapta Retail User
 
200 / 79 (3) ++++
Регистрация: 14.09.2005
? Как узнать есть ли привязка поля в map?
Есть некий Map. Одно поле map-а для одной таблицы привязано через mapping к ее реальному полю, а для другой таблицы нет (просто нет такого реального поля). В коде идет обращение к полю Map-а и, соответсвенно, хочется как то проверить а есть ли у этого поля Map-а привязка... Как это лучше сделать?

P.S. С Новым годом!
Старый 03.01.2007, 11:08   #2  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Может посмотрите, как это реализовано для русского формата адреса.
(там используется класс \Classes\MapToAddressField_RU для построения Map (уже класса, а не карты соответствия) с перечнем полей, для которых есть mapping.
Старый 03.01.2007, 11:41   #3  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
В классе Global есть метод mappingExists_RU. В российском DIS слое
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Sergey Petrov (1), plumbum (1).
Старый 03.01.2007, 12:00   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от AndyD Посмотреть сообщение
В классе Global есть метод mappingExists_RU. В российском DIS слое
Тоже верно
И намного проще
Старый 03.01.2007, 12:33   #5  
ViV is offline
ViV
Axapta Retail User
Самостоятельные клиенты AX
Axapta Retail User
 
200 / 79 (3) ++++
Регистрация: 14.09.2005
Спасиба!
Старый 24.10.2007, 20:44   #6  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Цитата:
Сообщение от AndyD Посмотреть сообщение
В классе Global есть метод mappingExists_RU. В российском DIS слое
Если не сложно, можно примерчик для тех, у кого нет \Classes\Global\mappingExists_RU ?
Старый 24.10.2007, 20:47   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Можно
X++:
// If '_mapField' and '_tableField' are empty:     true if the '_mapId' map have a mapping for table '_tableId'
// If '_mapField' is not empty:                    true if the '_mapId' map have a mapping for it's field '_mapField' for table '_tableId'
// If '_tableField' is not empty:                  true if the '_mapId' map have a mapping for table's field '_tableField' for table '_tableId'
// If '_mapField' and '_tableField' are not empty: true if '_mapField' is a mapping for '_tableField' on map '_mapId' for table '_tableId'
static public boolean mappingExists_RU(tableId _mapId,
                                tableId _tableId,
                                fieldId _mapField   = 0,
                                fieldId _tableField = 0)
{
    boolean          ok;
    Map              map = MappingsInfo_RU::createMapWithFieldId( _tableId, _mapId);
    identifiername   fieldName;

    ;

    if (! map.empty())
    {
        if (_mapField || _tableField)
        {
            if (_mapField && _tableField)
            {
                fieldName = fieldid2name(_mapId, _mapField);

                if (map.exists(fieldName) && (map.lookup(fieldName) == _tableField))
                {
                    ok = true;
                }
            }
            else if (_mapField)
            {
                if (map.keySet().in(fieldid2name(_mapId, _mapField)))
                {
                    ok = true;
                }
            }
            else if (_tableField)
            {
                if (map.valueSet().in(_tableField))
                {
                    ok = true;
                }
            }
        }
        else
        {
            ok = true;
        }
    }

    return ok;
}
За это сообщение автора поблагодарили: Hyper (1).
Старый 24.10.2007, 21:15   #8  
Hyper is offline
Hyper
Участник
Соотечественники
 
163 / 29 (1) +++
Регистрация: 09.10.2003
Спасибо за мгновенный ответ.

Мне почему-то представлялось, что существует гораздо более красивый и простой способ проверки наличия привязки поля map к таблице...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Types::Record в качестве ключа для класса Map Gad DAX: Программирование 12 11.07.2007 10:54
Есть ли hotkey для открытия списка lookup-поля? ATimTim DAX: Функционал 4 06.10.2004 12:59
Есть ли возможность вызывать код с вышележащих слоев ? FishLog DAX: Программирование 5 07.09.2004 17:24
Есть ли возможность вызывать код с вышележащих слоев ? FishLog DAX: Программирование 0 07.09.2004 13:39
Можно ли узнать ширину колонки в Grid? Maxim Gorbunov DAX: Программирование 1 05.07.2002 18:52

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 20:29.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.