AXForum  
Go Back   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 19.05.2008, 09:36   #1  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
MapIterator не инициализируется
опять я со своими глупыми вопросами...в отчете объявил переменную с типом MapIterator присваиваю значение
X++:
it = new MapIterator(_mapBuff);
при исполнении кода выкидывает в дебагер и ругается что мапитератор не инициализирован...
до этого точно так же делал в одном отчете все работало..._mapBuff имеет одинаковые значения и в том отчете и в этом...что я делаю не так и куда копать подскажите...
Old 19.05.2008, 09:45   #2  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Такое бывает, как правило, в двух случаях (случай когда инициирован один итератор, а используется другой не рассматриваем):
1) в мапе нет элементов;
2) мап получен через границу клиента и сервера;
Первый случай можно проверять при помощи метода map.elements, а во втором передавайте между процессами не сам мап, а на одной стороне упаковывайте, на другой создавайте из контейнера.
PS: на самом деле итератор оставлен для совместимости, лучше пользовать Enumerator.
Old 19.05.2008, 09:51   #3  
miklenew is offline
miklenew
Участник
miklenew's Avatar
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 438 (18) +++++++
Join Date: 10.07.2006
Location: г. Ликино-Дулёво
Я когда вываливаются странные ошибки сразу создаю job. Чтоб исключить вариации. Рекомендую.
Не знаю мож как вариант: А сепаратор(точка с запятой) между объявлением и реализацией есть.
Old 19.05.2008, 09:53   #4  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
в мапе элементы есть...это факт смотрел через дебагер все там путем...
а насчет воторого случая я не понял о чем ты..,
Old 19.05.2008, 09:55   #5  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
есть точка с запятой...говорю в точно таком же отчете все равботает...мне нужно впринципи такой же отчет тока с небольшой модификацией сделать...я продублировал отчет но пока модификаций не делал...
Old 19.05.2008, 10:52   #6  
Eldar9x is offline
Eldar9x
MCTS
Eldar9x's Avatar
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Join Date: 29.09.2006
Location: Казань
попробуйте создавать его (
X++:
it = new MapIterator(_mapBuff);
) уже после того, как мап будет заполнен, а не в блоке объявления переменных.
Old 19.05.2008, 10:58   #7  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
сделал отдельный метод передал в него мар и там создавал мап итератор который и возвращал...
результат тот же самый... блин я вообще не врубаюсь что не так...
Old 19.05.2008, 11:04   #8  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
я в мапитератор должен передать объект типа мап заполненный...я его передаю...он заполнен...и тип соответствует...что не так...???
Old 19.05.2008, 11:11   #9  
Eldar9x is offline
Eldar9x
MCTS
Eldar9x's Avatar
Oracle
MCBMSS
 
1,064 / 166 (8) ++++++
Join Date: 29.09.2006
Location: Казань
я имел ввиду:
X++:
MapIterator it; // вместо  MapIterator it = new MapIterator(_mapBuff);
;

...   _mapBuff ...

it = new MapIterator(_mapBuff);

...    it
Old 19.05.2008, 11:19   #10  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Quote:
Originally Posted by V777 View Post
а насчет воторого случая я не понял о чем ты..,
Например: мап создается и заполняется на сервере, а используется на клиенте. В этом случае нужно передавать не мап, а контейнер. Скажем, в метод, который использует мап делаем не так:
X++:
void myMetod(Map _mapItems)
{
     MapIterator miItems;
     ;
     miItems = new MapIterator(mapItems);
     while (miItems.more())
     {
         ...
         miItems.next()
     }
     ...
}
вызов: myClass.myMetod(mapItems);
а так:
X++:
void myMetod(container _contems)
{
     MapIterator miItems;
     ;
     miItems = new MapIterator(Map::Create(contems));
     ...
}
вызов: myClass.myMetod(mapItems.pack());
А вообще лучше:
X++:
void myMetod(Map _mapItems)
{
     MapEnumerator meItems;
     ;

     meItems =  mapItems.getEnumerator();

     while (meItems.moveNext())
     {
     ...
     }
}
This post has been rated by: V777 (1).
Old 19.05.2008, 11:36   #11  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
Eldar9x
_mapBuff заполняется в классе...а в отчете
X++:
    _mapBuff = rCustVendTurnoverHolder.getMapBuff();

    it = new MapIterator(_mapBuff);
Old 19.05.2008, 11:37   #12  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
Raven Melancholic
ща осмыслю что ты написал и попробую..,
Old 19.05.2008, 11:42   #13  
Raven Melancholic is offline
Raven Melancholic
Участник
Raven Melancholic's Avatar
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Join Date: 21.03.2005
Location: Москва-Петушки
Quote:
Originally Posted by V777 View Post
Raven Melancholic
ща осмыслю что ты написал и попробую..,
Ну, для твоего случая:
в getMapBuff объявляешь:
container getMapBuff(...)
возврат делаешь:
map.pack();
а в отчете:
_mapBuff = Map::create(rCustVendTurnoverHolder.getMapBuff());
Old 19.05.2008, 11:49   #14  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Join Date: 15.04.2008
Raven Melancholic
сработало!!! спасиба огромное..,
 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 15:39.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.