|  18.09.2009, 13:15 | #1 | 
| Сам.AX | Поиск разных значений. AX 4.0 sp2. 
			
			Доброе. Ищу способы реализации задачи: Имеем список значений (контейнер): 1. 00001 2. 00001 3. 00001 4. 00002 5. 00001 Как определить, что четвертое значение отлично от всех остальных. Или задача минимум - как определить что в контейнере (или любой массив). не все значения одинаковы. Спасибо. | 
|  | 
|  18.09.2009, 13:37 | #2 | 
| Участник | 
			
			Пробегитесь по нему. вы программист?
		 | 
|  | 
|  18.09.2009, 13:46 | #3 | 
| Administrator | 
			
			Есть еще класс Set, который не допускает хранения неуникальных значений. Можно его задействовать. А иногда и временную таблицу бывает удобнее использовать. В общем - вопрос не раскрыт 
				__________________ Возможно сделать все. Вопрос времени | 
|  | 
|  18.09.2009, 13:47 | #4 | 
| Сам.AX | 
			
			Да. Но меня посетила только одна идея - если текущее значени ене равно предидущему.  Я просто надеюсь на то, что есть калсс или процедура о которой я не знаю, которая примет котейнер или массив, проверит его по моему условию, а вернет bool-занчение. (Я понимаю, что маловероятно, но вдруг.. В 1С есть такой метод. Думаю, что а AX тоже должен быть.). | 
|  | 
|  18.09.2009, 13:50 | #5 | 
| Сам.AX | |
|  | 
|  18.09.2009, 13:50 | #6 | 
| Участник | 
			
			можно так, наверное: X++: void isConRecUnique(Args _args) { Container myCon; Set mySet = new set(Types::String); Int elementsNum; ; //... fill in container elementsNum = conlen(mycon); info(elementsNum == set::create( [ 1, any2int(mySet.typeId()), elementsNum ] + myCon ).elements() ? "Unique" : "Not unique") ; } | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2). | |
|  18.09.2009, 14:58 | #7 | 
| Сам.AX | |
|  | 
|  18.09.2009, 15:16 | #8 | 
| Участник | 
			
			если все одинаковы - в сет добавится только один элемент, т.е. X++: info(set::create( [ 1, any2int(mySet.[typeId()), elementsNum ] + myCon ).elements() > 1 ? "Плохо" : "Хорошо") | 
|  | |
| За это сообщение автора поблагодарили: Alexx7 (1). | |
|  18.09.2009, 15:34 | #9 | 
| Участник | Цитата: X++: static void CheckItems(Args _args) { itemid FirstItem; // itemid первой строки str AllItems; // список itemid всех строк int N; // record count ; // fill in FirstItem & AllItems ... info( (AllItems == strrep(FirstItem,N)) ? "Хорошо" : "Плохо"); } | 
|  | |
| За это сообщение автора поблагодарили: Alexx7 (1). | |
|  18.09.2009, 15:35 | #10 | 
| Moderator | 
			
			Может я не понял задачи, но почему бы обычный запрос к ProdBOM не использовать ? Типа X++: select prodBom where prodBom.prodId==value exists join prodBom2 where prodBOM2.prodId==prodBom.prodId && prodBom2.itemId!=prodBom.itemId ; if (prodBom) throw "Непорядок!"; X++: select itemId group by itemId from prodBOM where prodBOM.prodId==value; itemId1=prodBom.itemId; next prodBom; if (ProdBom) throw StrFmt("Непорядок - есть номенклатуры %1 и %2", itemId1,prodBom.itemId); Последний раз редактировалось fed; 18.09.2009 в 15:37. | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2), Alexx7 (1). | |
|  18.09.2009, 15:49 | #11 | 
| Developer | Цитата: Вариантов может быть несколько, например так: X++: static void TestJob(Args _args) { ProdBOM prodBOM; ProdBOM prodBOM2; ; select firstonly ItemId from ProdBOM where ...; select firstonly ItemId from prodBOM2 where ... && prodBOM2.ItemId != prodBOM.ItemId; if (prodBOM2) info(strfmt("В таблице ProdBOM встречаются как минимум два значения ItemId: '%1'; '%2'", prodBOM.ItemId, prodBOM2.ItemId)); else info(strfmt("В таблице ProdBOM встречается только одно значение ItemId: '%1'", prodBOM.ItemId)); }  З.Ы.Ы. to fed: select (без while и next) желательно использовать c firstonly Последний раз редактировалось vallys; 18.09.2009 в 15:56. | 
|  | |
| За это сообщение автора поблагодарили: mazzy (2), Alexx7 (1). | |
|  18.09.2009, 16:03 | #12 | 
| Сам.AX | 
			
			Всем спасибо. Воспользовался вариантом Господина anykey. Всё работает стабильно. | 
|  | 
|  18.09.2009, 16:36 | #13 | 
| Участник | 
			
			Только в памяти клиента или AOS'а. С генерацией трафика от SQL-сервера. Послушайте совета fed и vallys - отдайте работу на SQL. | 
|  | 
|  18.09.2009, 16:43 | #14 | 
| Участник | |
|  | 
| Теги | 
| ax4.0, container, distinct, set | 
|  | 
| 
 |