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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.06.2006, 13:43   #1  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Протестировал, но правда на другом запросе))
Сам запрос:
PHP код:
static void Job70(Args _args)
{
    
InventTrans             it;
    
InventTable             goods;
    
int                     t TimeNow(),i;
    
AsciiIo                 dataFile = new AsciiIo('c:\\_1.xls'"w");
    ;

    
it.selectLocked(0);
    
goods.selectLocked(0);
    
0;
    
dataFile.outFieldDelimiter("\t");
    while 
select It
        join itemname from goods where goods
.itemid == it.itemid
    
{
        
i++;
        if (
== 50000) break;
        
dataFile.write([
        
strfmt('%1',it.DateStatus), it.ItemIdgoods.ItemNameit.InventDimIDstrfmt('%1',it.Qty),
        
strfmt('=ОКРУГЛ(%1;2)',it.CostAmountPosted it.CostAmountAdjustment), it.TransType]);

    }
    
WinAPI::shellExecute('c:\\_1.xls');
    
info(strfmt("????????? ?????? %1 ???"TimeNow() - t)); 
Общее время 21 секунда
Из них время запроса без выгрузки: 17-18 секунд
т.е. время непосредственно выгрузки 3-4 секунды. Excel 2002
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/

Последний раз редактировалось Recoilme; 08.06.2006 в 14:05.
За это сообщение автора поблагодарили: konopello (1), Gustav (2).
Старый 08.06.2006, 15:47   #2  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
2 Recoilme
пока не совсем зачот... скорость большая, да, у меня даже еще быстрее получилось - за 13-14 сек Ваш Job70 отрабатывает (на серверной тачке с процессором AMD , 2500, 4 Гб)
НО! Текстовое поле ItemId становится числовым с откусыванием ведущих нулей ("00333" -> 333). Можно исправить ситуацию, например, каким-нибудь тегом?
Старый 08.06.2006, 16:16   #3  
Recoilme is offline
Recoilme
злыдень
Аватар для Recoilme
Злыдни
 
895 / 192 (8) ++++++
Регистрация: 18.06.2003
Цитата:
Сообщение от Gustav
2 Recoilme
пока не совсем зачот... скорость большая, да, у меня даже еще быстрее получилось - за 13-14 сек Ваш Job70 отрабатывает (на серверной тачке с процессором AMD , 2500, 4 Гб)
НО! Текстовое поле ItemId становится числовым с откусыванием ведущих нулей ("00333" -> 333). Можно исправить ситуацию, например, каким-нибудь тегом?
Попробуйте так:
PHP код:
        strfmt('%1%2',"'"it.ItemId
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/
Старый 08.06.2006, 19:13   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от Recoilme
Попробуйте так:
PHP код:
strfmt('%1%2',"'"it.ItemId
Да, вспоминаю, что такой способ ввода текста в ячейку Excel с ведущим апострофом действительно есть...
Рассмотрим, однако, что происходит при таком подходе.

Допустим у нас есть код номенклатуры ItemId = "000333" (строка - 6 символов). При выгрузке в файл запишется 7 символов: '000333

Для упрощения анализа создадим вручную текстовый файл с единственной строкой: '000333 (7 символов), cохраним его под именем test000333.xls и откроем его Excel-ем:

1. В открывшемся Excel в ячейке А1 так и отображается '000333 т.е. с ведущим апострофом.
2. Введем в соседнюю ячейку B1 формулу: =ДЛСТР(А1) . Результат = 7 (символов)
3. Введем далее в ячейку C1 формулу: =А1 & A1 . Результат = '000333'000333

4. Еще раз посмотрим, что мы имеем к этому времени:
- в ячейке А1 отображается: '000333
- в ячейке B1 отображается: 7
- в ячейке C1 отображается: '000333'000333

5. Войдём в режим редактирования ячейки А1, нажав на ней клавишу F2. И сразу выйдем, нажав Enter.

6. Посмотрим что получилось теперь:
- в ячейке А1 отображается: 000333
- в ячейке B1 отображается: 6
- в ячейке C1 отображается: 000333000333

(т.е. мы наконец достигли в ячейке А1 такой ситуации, которая складывается, когда пользователь вводит последовательность символов '000333 в самом Excel, а не грузит ее из текстового файла с расширением xls)

Выгрузка из Аксапты у Job70, конечно, очень быстрая...
Но вы думаете, пользователь будет счастлив от такого, пусть даже очень быстро полученного, результата?
Старый 09.06.2006, 10:04   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Gustav
НО! Текстовое поле ItemId становится числовым с откусыванием ведущих нулей ("00333" -> 333). Можно исправить ситуацию, например, каким-нибудь тегом?
1. поменяйте формат ячейки на текстовый
2. выгрузите в XML и сравните

Будет что-то типа:
Код:
<Style ss:ID="s21">
 <NumberFormat ss:Format="@"/>
</Style>
...
<Cell ss:StyleID="s21"><Data ss:Type="String">00001</Data></Cell>
PS. Еще раз: надо сделать искейпинг спецсимволов XML чтобы

test&data выгрудалось как test&amp;data а то XL может не понять
Старый 09.06.2006, 10:26   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от belugin
1. поменяйте формат ячейки на текстовый
Максим, я сам - всецело ЗА! Но я говорю сейчас о способе выгрузки, предложенном Recoilme. Т.е. немножко критикую этот момент, связанный с цифровым текстом с ведущими нулями.
Теги
benchmark, download, excel, faq, xml, законченный пример, производительность, экспорт/импорт

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axapta программирует Excel на VBA Gustav DAX: База знаний и проекты 10 13.03.2006 11:42
Использование OWC.Spreadsheet для ускорения экспорта/импорта в/из Excel. storer DAX: Программирование 24 28.03.2005 19:10
Передача данных из 1С в Axapta 3.0 через COM Connector isbist DAX: Программирование 10 03.12.2004 10:58
Особенности экспорта данных в Excel Roman-sp DAX: Функционал 18 01.03.2004 12:07
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:50.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.