| 
			
			 | 
		#21 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Если Вы считаете, что я сижу и выдумываю себе задания, то Вы несколько ошибаетесь. 
		
		
		
		
		
		
		
	Задача ставилась вывести отчет сгруппированный по нескольким признакам, где в качестве столбца идут коды аналитики в алфавитном порядке. Пользователи особо настаивали именно на алфавитном порядке следования столбцов. Т.е. исходный запрос имеет примерно такой вид: SELECT ... GROUP BY Field1,Field2,Dimension[1],Dimension[2] При этом Dimension[2] должны выводится как столбцы отчета (требование пользователей!) Вот в связи с обязательным требованием вывода Dimension[2] в алфавитном порядке и возникла задача перестановки столбцов. PS: То, что это нельзя назвать массивом в том смысле, в котором этот термин употребляется в Axapta я прекрасно понимаю. Да хоть горшком назови! Главное что он делает именно то, что мне нужно. PPS: Есть еще ряд аналогичных отчетов, где в качестве столбцов выступают уже не коды аналитики, а другие критерии. Но с тем же требованием алфавитного порядка следования. Отсюда желание сделать это через отдельный класс.  | 
| 
	
 | 
| 
			
			 | 
		#22 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			теперь я вообще ничего не понимаю 
		
		
		
		
		
		
		
	Цитата: 
	
		
			Изначально опубликовано Владимир Максимов  
SELECT ... GROUP BY Field1,Field2,Dimension[1],Dimension[2] Вот в связи с обязательным требованием вывода Dimension[2] в алфавитном порядке и возникла задача перестановки столбцов. Или вы хотите получить алфавитный порядок в целом для того, чтобы столбцы сделать? Если да, то нафига делаете все одним запросом? Ваша задача вообще НЕ ТАК РЕШАЕТСЯ! Она решается двумя запросами и вообще БЕЗ перестановок! Подобный алгоритм еще у Кнута был описан. Я, пожалуй, выключусь из обсуждения. За проект огромное спасибо.  | 
| 
	
 | 
| 
			
			 | 
		#23 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано mazzy  
(с хитрым прищуром) Чем в момент передачи двумерный массив отличается от одномерного?   Сергей, если функция ожидает на входе определенный объект (двумерный вариантный массив), то как ей можно подсунуть одномерный? Весь смысл - передать одним большим куском даные в Excel, а не заниматься перебором. По-моему здесь нет предмета для спора ...  | 
| 
	
 | 
| 
			
			 | 
		#24 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Пример результата запроса: 
		
		
		
		
		
		
		
	1 , 1 1 , 3 2 , 2 Для выводя результата запроса в отчет я сканирую этот результат: для значение 1 вывел два столбца 1 и 3, следующая строка требует ввести столбец 2, которого просто не было в первой строке. Сделать предварительный запрос для получения количества и порядка следования столбцов я не могу (почему - это отдельная тема, которая вызовет еще более глобальное обсуждение). Впрочем, действительно, пора заканчивать. Если кому-нибудь понадобиться этот класс, может пользоваться. Я его сделал поскольку не видел другого пути решения проблемы. Данное обсуждение не дало ничего нового в этом смысле. Все предложенные варианты я рассматривал прежде чем написать то, что написал.  | 
| 
	
 | 
| 
			
			 | 
		#25 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Изначально опубликовано Владимир Максимов  
Главное что он делает именно то, что мне нужно.  | 
| 
	
 | 
| 
			
			 | 
		#26 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			Чем в момент передачи двумерный массив отличается от одномерного?
		
	 
![]() Если брать самый обыкновенный массив, как набор значений одного типа непрерывно расположенных в памяти, - то ничем. Цитата: 
	
		
			если функция ожидает на входе определенный объект (двумерный вариантный массив), то как ей можно подсунуть одномерный?
		
	 
Другое дело, если это не просто массив, а какая-то хитрая обертка над ним..... но если так рассуждать, то в Дельфях и строка - это уже не просто последовательность байт в памяти.....  | 
| 
	
 | 
| 
			
			 | 
		#27 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Привет, Андрей! 
		
		
		
		
		
		
		
	Вообще, изначально я писал про двумерный вариантный массив который можно было бы подсунуть в качестве значения range в Excel. (Разницу между вариантным массивом и массивом вариант напоминать наверное не стоит. Думаю в Delphi с этим сталкиваться приходилось.) Такой массив я планировал когда-то получить из обычного через функцию PHP код: 
	
			
	Удачи, Дмитрий.  | 
| 
	
 | 
| 
			
			 | 
		#28 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Не, по моему ты несколько не понял мою мысль. Я писал про то, что хранение данных и упаковка из в SAFEARRAY довольно независимые друг от друга вещи.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#29 | 
| 
			
			 Moderator 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
		
			 ....про двумерный вариантный массив который можно было бы подсунуть в качестве значения range в Excel
		
	 
![]() Если сформировать xml и открыть его в Excel - то формирование происходит значительно быстрее и на мой взгляд гораздо проще.  | 
| 
	
 | 
| 
			
			 | 
		#30 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Про Excel я вспомнил к слову. Просто когда-то давно из Delphi я передавал данные в Excel через вариантный массив, а в Axapta с этим вышел небольшой облом.  Вариант с xml вполне нормальный, мы с Юрой его даже пробовали. По скорости примерно также как и через буфер. Так что, кому что нравится... 
		
		
		
		
		
		
		
	p.s. Насчет массивов я с тобой и не спорил. То что передается указатель понятно. Вопрос как функции ComVariant::createFromArray() подсунуть одномерный массив, а она при этом приняла его за двумерный.  
		 | 
| 
	
 |