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

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

...   _mapBuff ...

it = new MapIterator(_mapBuff);

...    it
Старый 19.05.2008, 11:19   #10  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Цитата:
Сообщение от V777 Посмотреть сообщение
а насчет воторого случая я не понял о чем ты..,
Например: мап создается и заполняется на сервере, а используется на клиенте. В этом случае нужно передавать не мап, а контейнер. Скажем, в метод, который использует мап делаем не так:
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())
     {
     ...
     }
}
За это сообщение автора поблагодарили: V777 (1).
Старый 19.05.2008, 11:36   #11  
V777 is offline
V777
совсем зелен
 
249 / 10 (1) +
Регистрация: 15.04.2008
Eldar9x
_mapBuff заполняется в классе...а в отчете
X++:
    _mapBuff = rCustVendTurnoverHolder.getMapBuff();

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


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

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

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