X++:
static void JobUpdateMapTest(Args _args)
{
Map Map = new Map(Types::Integer, Types::Container);
MapEnumerator m;
str str31_34 = "1234567890" + "1234567890" + "1234567890" + "1234"; // 31 <= length <= 34
int key = 1;
;
Map.insert(key, ["1"]);
m = Map.getEnumerator();
m.moveNext(); // получаем энумератор
// меняем содержимое мапа
Map.remove(key);
Map.insert(key, [str31_34]);
// пытаемся двигаться дальше
m.moveNext(); // crash
}
Собственно, а что ещё можно было ожидать, скажете вы. Но дело в том что на всех остальных типах данных такой фокус срабатывает. Да что там других типах, при другой длинне строки тоже всё работает.

До поры до времени возможно, но работает.
Вопрос к общественности:
1) Правомерно ли, заранее полученный MapEnumerator, использовать после изменения самого мапа? Только если производилось удаление элементов? Только если производилось добавление? Всегда правомерно/не правомерно?
2) А как вы реализуете массовое обновление значений, хранящихся в мапе?
P.S.: Забыл указать. Ошибка у меня воспроизводится в версии AX4.0. В Ax2009 ошибки нет. Значит ли это, что такой код писать можно?