|
![]() |
#1 |
Участник
|
Используем решение, в котором поженены ActiveX Excel и сама Axapta, часть вычислений делает ActiveX Excel и потом значение считываются и записываются в Axapta, порой это не так быстро как хотелось бы и достаточно сложно в настройках.
|
|
![]() |
#2 |
Участник
|
Это решение случайно не Axcision ? (Если так, то я бы на вашем месте подумал над установкой какой-нибудь более традиционной аналитической системы...)
|
|
![]() |
#3 |
Moderator
|
|
|
![]() |
#4 |
Участник
|
нет это не Axcision, называть не буду дыба не заниматься рекламой/антирекламой
Порядок примерно такой 150 строк*30 столбцов 4500 ячеек. Десятую часть из них вычисляет сам Excel т.е. около 450, считывание занимает в среднем секунд 5-10, т.е. гораздо дольше чем сам Excel считает и если нужно ввести 900 значений *5-10 секунд то полная обработка занимает около о 1часа - до 2,5 часов |
|
![]() |
#5 |
Moderator
|
Цитата:
Сообщение от Serg
![]() Порядок примерно такой 150 строк*30 столбцов 4500 ячеек. Десятую часть из них вычисляет сам Excel т.е. около 450, считывание занимает в среднем секунд 5-10, т.е. гораздо дольше чем сам Excel считает и если нужно ввести 900 значений *5-10 секунд то полная обработка занимает около о 1часа - до 2,5 часов
что вы чуть выше называете "ActiveX Excel"? OWC Spreadsheet или всё-таки большой "Microsoft Excel"? что такое "считывание"? Аксапта читает из "Excel" или пользователь считывает с бумажки? спрашиваю про пользователя, потому что тогда становится логичным "ввести (!) 900 значений", умноженное на "время считывания (!)"... |
|
![]() |
#6 |
Участник
|
речь о OWC Spreadsheet, пользовтаель в нем вводит данные, далее OWC Spreadsheet по формулам расчитывает показатели и их нужно считать т.е. просто activeCell = xExcelSheetManager.selected(Row, Сol) и записать в таблицу. Проблема еще в том, что нет данных какая имеено ячейка пересчиталсь и приходиться их считывать все;
|
|
![]() |
#7 |
Moderator
|
Я бы воспользовался методом чтения из Excel (он подходит и для Spreadsheet), предложенным AndyD'ом здесь: Построчный импорт из Excel через COM . Скорость выполнения вас приятно удивит. Нужно будет скачать и зарегистрировать dll.
Что же касается того, как определить, что из ячеек изменилось (пересчиталось), то я бы воспользовался возможностью статического метода Set::difference, который может сравнить состав двух множеств и вернуть несовпадения (из первого множества). На псевдокоде это выглядит примерно так: Код: setРасхожденияПосле = Set::difference( setПослеОперации, setДоОперации ); Перед грядущим изменением пробегаетесь по всем ячейкам и заполняете множество setДоОперации. После изменения опять пробегаетесь по всем ячейкам и заполняете множество setПослеОперации. Наконец, вычисляете множество setРасхожденияПосле (изменившиеся ячейки), которое затем циклом перебираете и записываете в нужную таблицу Аксапты (ну, или куда там вам надо). |
|
![]() |
#8 |
Участник
|
спасибо! попробуем.
|
|
|
![]() |
||||
Тема | Ответов | |||
aEremenko: Как обнаружить какой пользователь загружает процессор AOS? | 4 | |||
Табличный Mapping - список используеиых таблиц | 6 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|