03.01.2007, 08:25 | #1 |
Axapta Retail User
|
Как узнать есть ли привязка поля в map?
Есть некий Map. Одно поле map-а для одной таблицы привязано через mapping к ее реальному полю, а для другой таблицы нет (просто нет такого реального поля). В коде идет обращение к полю Map-а и, соответсвенно, хочется как то проверить а есть ли у этого поля Map-а привязка... Как это лучше сделать?
P.S. С Новым годом! |
|
03.01.2007, 11:08 | #2 |
Участник
|
Может посмотрите, как это реализовано для русского формата адреса.
(там используется класс \Classes\MapToAddressField_RU для построения Map (уже класса, а не карты соответствия) с перечнем полей, для которых есть mapping. |
|
03.01.2007, 11:41 | #3 |
Участник
|
В классе Global есть метод mappingExists_RU. В российском DIS слое
__________________
Axapta v.3.0 sp5 kr2 |
|
|
За это сообщение автора поблагодарили: Sergey Petrov (1), plumbum (1). |
03.01.2007, 12:00 | #4 |
Участник
|
Тоже верно
И намного проще |
|
03.01.2007, 12:33 | #5 |
Axapta Retail User
|
Спасиба!
|
|
24.10.2007, 20:44 | #6 |
Участник
|
|
|
24.10.2007, 20:47 | #7 |
Участник
|
Можно
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 |
Участник
|
Спасибо за мгновенный ответ.
Мне почему-то представлялось, что существует гораздо более красивый и простой способ проверки наличия привязки поля map к таблице... |
|