24.04.2015, 15:14 | #1 |
Участник
|
Макросы StartSafeCall_RU
Здравствуйте! AX 4.0
Столкнувшись с проблемой работы класса ComExcelDocument_RU на терминале решил проблему как советуют здесь: Ошибка времени выполнения в ComExcelDocument_RU.findRange() Ошибка Terminal + ComExcelDocument_RU Это частично помогло теперь не валятся ошибки связанные с findrange и "неверное число параметров" Заключил все какие можно com методы в эти макросы. Но теперь все равно ругается(пишет неверное число паметров) на Вот на этот метод класса, хотя макрос стоит: COM getWorkSheet(anytype _workSheetID) { COM comRet; if (m_comDocument) { try { this.getWorkSheets(); //-->> #StartSafeCall_RU comRet = comWorkSheets.item(_workSheetID); //РУГАЕТСЯ ЗДЕСЬ! #EndSafeCall_RU //<<-- } catch (Exception::Error) { throw error("@GEE6043"); } } return comRet; } |
|
24.04.2015, 15:18 | #2 |
Участник
|
На форуме тема обсуждалась уже. Поищите.
Такие ошибки часто проявляются для терминальных серверов. Один из способов решения - обертывать параметр вызова в ComVariant класс-обертку и передавать уже его. |
|
24.04.2015, 15:33 | #3 |
Banned
|
Еще важно убрать все start / endLengthyOperation() , т.е. "песочные часы", из программы.
|
|
24.04.2015, 16:55 | #4 |
Участник
|
Вы бы по приведенным Вами ссылкам дочитали бы темы до конца Там же неоднократно повторялось, что эти макросы практически бесполезны. Объяснялось почему и были приведены решения снимающие проблему полностью
Локальное решение - thread (отдельные потоки) для каждого класса, использующего выгрузку в Excel. Т.е. добавить пару методов к существующим классам. Глобальное решение - обертка с ComVariant для всех методов ComExcelDocument_RU. Т.е. полностью переписать класс ComExcelDocument_RU
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
За это сообщение автора поблагодарили: at5454 (1). |
|
|