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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.02.2006, 10:32   #1  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Свертка строк при выводе из Аксапты в Excel
Коллеги, подскажите, как при выводе из Аксапты в Excel какой-либо иерархически организованной информации запрограммировать "свертку" строк по группам, так как показано на рисунке во вложении?
Изображения
 
Старый 20.02.2006, 10:38   #2  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
открываем эксель, включаем запись макроса, групируем, отключаем запись макроса, получаем
PHP код:
Rows("1:3").Select
Selection
.Rows.Group 
осталось вызвать через ком тоже самое

Последний раз редактировалось mit; 20.02.2006 в 10:40.
Старый 20.02.2006, 11:00   #3  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Как вариант.

В конце каждой строки в отдельную колонку, добавляем некую служебную информацию (пусть это будет 1, 2, 3 и т.д.). Т.е. для строк родительской группы значение 1, для подгруппы значение два и т.д. Далее в шаблоне Excel пишем макрос желательно с параметром на входе (номер колонки для служебной информации) который группирует строки по заданному алгоритму. Далее этим же макросом удаляем служебную информацию. Вот и все. У этого варианта есть одно преимущество, один раз написанный макрос можно использовать в других шаблонах.
Старый 20.02.2006, 11:35   #4  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
зачем так сложно?
в системе все равно строится прототип екселя, а потом экспортируется через ком. удобнее всю обработку делать в одном месте.
у меня например все итоги расчитываются по формулам (в эксель свтавляется не значение а именно формула) тоже саое, запомнить как сделать группировку не просто, а очень просто
Старый 20.02.2006, 11:46   #5  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
На счет сложно, не думаю. Макрос сам по себе не очень сложный. А запустить его вообще одна строка.
На счет формул, а если отчет с подитогами и нужно получить потом итоговую строку и именно формулой в ёскеле, а подитоговых строк ну к примеру 100 тогда как? Я к тому что у меня была проблема с передачей в Excel по-моему 256 символов.
Старый 20.02.2006, 11:57   #6  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Ну и на счет прототипа пожалуй...
Допустим 3-х уровневое вложение групп. С третьим уровнем все просто, а вот со вторым и первым, получается для выделения строк, нужно запоминать строки начала вышестоящих групп?
Старый 20.02.2006, 12:04   #7  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
Возможно Вы правы, с подобной проблемой не сталкивался. 100 подитогов наверное много, но не критично. думаю можно будет обойти. наличие шаблонов усложняет администрирование системы. предпочитаю обходиться без них. у каждого свои предпочтения.
группы, подгруппы тоже решается, контейнеры никто не отменял.
думаю дальнейший спор чей алгоритм лучше бессмысленнен цель предложить решение, чем больше решений, тем лучше автор вопроса сам выберет

Последний раз редактировалось mit; 20.02.2006 в 12:12.
Старый 20.02.2006, 12:13   #8  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Цитата:
Сообщение от mit
100 подитогов наверное много, но не критично. думаю можно будет обойти.
Один отчетик месяцев 8 работал, а потом БАЦ! На самом деле там меньше подитогов было.

Цитата:
Сообщение от mit
у каждого свои предпочтения
Согласен, стандартов нет.
Старый 21.02.2006, 10:12   #9  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от mit
зачем так сложно?
в системе все равно строится прототип екселя, а потом экспортируется через ком. удобнее всю обработку делать в одном месте....
Это если все делать через COM Excell а если использовать буфер обмена, то предложение KMV будет предпочтительнее.
У группировки есть один недостаток, насколько я помню уровней вложенности может быть только 8. Я например ваял отчет используя вкладки и ссылки на вкладки как элементы вложенности...
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 21.02.2006, 11:47   #10  
Hans is offline
Hans
Участник
Аватар для Hans
 
108 / 22 (1) +++
Регистрация: 20.10.2005
? Вопрос
Цитата:
Сообщение от mit
зачем так сложно?
в системе все равно строится прототип екселя, а потом экспортируется через ком. удобнее всю обработку делать в одном месте.
у меня например все итоги расчитываются по формулам (в эксель свтавляется не значение а именно формула) тоже саое, запомнить как сделать группировку не просто, а очень просто
Как экспортировать формулу в Ексель из Аксапты? Допустим у меня с B1 по W1 имеются значения, а как в А1 поставить формулу?
Старый 21.02.2006, 11:59   #11  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от Hans
Как экспортировать формулу в Ексель из Аксапты? Допустим у меня с B1 по W1 имеются значения, а как в А1 поставить формулу?
Текстом - "=СУММ(...)"
Старый 21.02.2006, 12:02   #12  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Цитата:
Сообщение от raz
Текстом - "=СУММ(...)"
или "=SUM(...)"

Иногда в одной компании работают на русской и английской версии

Последний раз редактировалось KMV; 21.02.2006 в 12:04.
Старый 21.02.2006, 12:03   #13  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
Код:
	ComExcelDocument_Ru _excel
	Com				 range;
	;
	
	range = _excel.findRange(ComExcelDocument_RU::numToNameCell(_i,_j));
	_excel.insertValueInRange(range, _txt);
_txt - формула
range - ячейка
Старый 21.02.2006, 12:17   #14  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от KMV
Иногда в одной компании работают на русской и английской версии
Вообще, макрорекордер Excel в любой версии, слава Богу, пишет по-английски...
Не знаю, правда, как поступает в этом случае конкретно Аксапта - т.е. старается ли она подражать пользовательскому вводу или ей можно подставлять записанный материал рекордера...
Старый 21.02.2006, 12:17   #15  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Для группировки надо что то вроде этого сделать.

comRange = comWorkSheet.Range("A1:E1");
comRange.select();

comRows = comRange.rows();
comRows.group();
Старый 21.02.2006, 12:21   #16  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
PHP код:
protected str getSumStr(str _cell1str _cell2)
{
    
str sumStr;
    ;
    if(
this.getLanguage() == "ru")
        
sumStr strFmt("=СУММ(%1:%2)",_cell1_cell2);
    else
        
sumStr strFmt("=SUM(%1:%2)",_cell1_cell2);
    return 
sumStr;

Старый 21.02.2006, 12:57   #17  
Yegor is offline
Yegor
Участник
 
40 / 37 (2) +++
Регистрация: 12.09.2003
Получить такую группировку можно при помощи сводной таблицы, заодно итоги и подитоги настроить и фильтры удобные получить.

На первый лист выгрузить данные на втором построить сводную таблицу. Есть правда ограничение по количеству строк данных (65536), но для маленьких отчетов этот вариант очень удобен.
Старый 21.02.2006, 14:18   #18  
KMV is offline
KMV
Участник
 
201 / 25 (1) +++
Регистрация: 11.10.2002
Адрес: Москва
Цитата:
Сообщение от Gustav
Вообще, макрорекордер Excel в любой версии, слава Богу, пишет по-английски...
Об том и речь (выше я писал про макросы).
А вот если писать так:
PHP код:
excel.insertValueInRange(range'=СУММ(A1:A10)'); 
то можно нарваться на пользователя с английской версией ёкселя. Если делать так, как писал выше mit, то для большинства хватит. Хотя свою точку зрения я уже высказал.
Старый 21.02.2006, 14:53   #19  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
?
А подскажите, пожалуйста, по ходу, раз уж говорим об этом.

Свойство Formula эксельного объекта Range доступно при использовании класса ComExcelDocument_RU ?
Или надо идти путем: COM c = new COM("Excel.Application") ?

Заранее спасибо.
Старый 21.02.2006, 15:00   #20  
mit is offline
mit
Участник
Аватар для mit
 
386 / 36 (2) +++
Регистрация: 15.01.2003
Адрес: Moscow
формула это лишь текст, который вставляется ка и любое другое значение в ячейку
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Удаление группы строк из Excel? Hidden DAX: Программирование 15 12.07.2010 18:03
Вставка строк в таблицы Аксапты сторонними средствами Андре DAX: База знаний и проекты 1 07.05.2009 16:49
Автовысота строк при экспорте в excel andy239 DAX: Программирование 17 08.11.2005 16:51
Как вставить значение из Аксапты в Excel Андре DAX: Программирование 17 09.02.2005 18:13
Подвисание Excel при выводе из Axapta Ser DAX: Функционал 4 24.07.2003 13:59

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

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

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