| 
			
			 | 
		#1 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
			
			
			Set записей таблицы
			 
			
			Прошу прощения за,наверное,глупый вопрос-но я совсем еще новичок 
		
		
		
		
		
		
		
		
			Как самым эффективным способом сохранить записи таблицы в Set?Сперва загнать их в контейнеры,а потом создать сет контейнеров?Или есть способ сохранять строки таблицы напрямую?И если есть,то как потом к ним обращаться? Последний раз редактировалось OOuph; 11.02.2008 в 06:45.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Можно сохранять записи на прямую 
		
		
		
		
		
		
			X++:     set             set;
    ;
    set = new SET(Types::Record);
    set.add(custTable::find("........"));
				__________________ 
		
		
		
		
		
			Нет ничего сложного есть простое и неправильное Последний раз редактировалось jasper; 11.02.2008 в 07:42.  | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Спасибо, рекорды я и ранише пробовал добавлять-но не могу вывести значение поля.Т.е. сохраняем сет рекордов, потом по итератору обращаемся к рекорду-но как вывести его определенное поле?Например,ItemName из записи таблицы InventTable  
		
		
		
		
		
		
		
	X++: List l = new List(Types::Record); InventTable it; ListIterator li; while select it where it.ItemGroupId == "Тара"{ l.addEnd(InventTable::find(it.ItemId)); i++; } li = new ListIterator(l); while (li.more()) { /* info(li.value().ItemName()); - так не работает,естессно. Как надо? */ li.next(); }  | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Administrator 
		
			
	 | 
	
	
	
		
		
		
		 X++: List l = new List(Types::Record); InventTable it; ListIterator li; while select it where it.ItemGroupId == "Тара"{ l.addEnd(InventTable::find(it.ItemId)); i++; } li = new ListIterator(l); while (li.more()) { /* info(li.value().ItemName()); - так не работает,естессно. Как надо? */ //-----------------------------> it = li.value(); info(it.itemName); //<----------------------------- li.next(); } 
				__________________ 
		
		
		
		
	Возможно сделать все. Вопрос времени  | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
чтобы обойти это ограничение ядра, лучше использовать для перебора класс Enumerator Он работает безглючно и при его использовании меньше способов ошибиться и уйти в бесконечный цикл.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Все,тему можно закрывать 
		
		
		
		
		
		
		
	X++:     InventTable it;
    li = new ListIterator(l);
    while (li.more())
    {
        it=li.value();
        info(it.itemName());
        li.next();
    } | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Замените итератор на енумератор, как советует Logger, и закрывайте  
		
		
		
		
		
		
		
	  Итераторы - в музей, они оставлены для обратной совместимости. Подробности в книжке Microsoft Dynamics AX 4.0 на стр.494-496. Либо здесь http://dax-dilettante.blogspot.com/2...hapter155.html в раздельчике "Перебор элементов в коллекции".  | 
| 
	
 | 
| 
	
	 | 
	
		
  |