23.07.2018, 14:41 | #1 |
Участник
|
Axapta 2009. str2IntOk
Коллеги, столкнулся со следующей проблемой при запуске отчета из модуля "Генератор российских отчетов".
При выводе данных в Эксель система выводит сообщение "Неправильное имя листа". Опытным путем установили, что ошибка проявляется, при длительном расчете значения ячейки. По коду ошибка в классе LedgerRRGRunReport_RU, метод outputValue, при проверки уловия if (str2IntOk(worksheet)) X++: if (str2IntOk(worksheet)) { worksheetNum = str2int(worksheet); if (worksheetNum <= excelDocument.getWorkSheetsCount()) { excelDocument.insertValue2CellsLine(cellStr, _value, worksheetNum); } else { warning(strfmt("@GEE33476", worksheet)); } } else { warning(strfmt("@GEE33476", worksheet)); } Подскажите, какие настройки и где нужно сделать, чтобы исправить ошибку. |
|
23.07.2018, 17:21 | #2 |
Участник
|
Сталкивался с подобным: в классе ComExcelDocument_RU в методе getWorkSheets() пришлось поставить задержку 100 мс перед получением списка листов файла, эта задержка помогает в некоторых случаях избежать системной ошибки Excel при выборе листа:
X++: private COM getWorkSheets() { if (!comWorkSheets && m_comDocument) { try { sleep(100); // ЗАДЕРЖКА 100 МС comWorkSheets = m_comDocument.worksheets(); } catch (Exception::Error) { throw error("@GLS101577"); } } return comWorkSheets; } |
|
24.07.2018, 14:29 | #3 |
Участник
|
Это не помогло. Но направление по-моему в нужную сторону задали.
При длительных расчетах значений ячейки в методе getWorkSheets срабатывает исключение. При чем можно сделать отчет, в котором одна строка = Константа. Отчет выполняется без ошибок. Но если начинаешь дебажить, то этот же отчет уже ловит исключение. Т.е. зависимость от времени выполнения. Какие идеи? X++: private COM getWorkSheets() { if (!comWorkSheets && m_comDocument) { try { // sleep(100); // ena 24.07.2018, sleep 100 МС comWorkSheets = m_comDocument.worksheets(); } catch (Exception::Error) { throw error("@GEE6043"); // тут ловлю исключение } } return comWorkSheets; } |
|
24.07.2018, 15:32 | #4 |
Участник
|
Этот пост смотрели?
Генератор финансовых отчётов
__________________
// no comments |
|
24.07.2018, 16:26 | #5 |
Участник
|
Цитата:
Сообщение от dech
Этот пост смотрели?
Генератор финансовых отчётов Если не сложно тыкните в нужное место. |
|
24.07.2018, 16:33 | #6 |
Участник
|
|
|
24.07.2018, 18:25 | #7 |
Участник
|
Аналогичные проблемы обсуждались, есть разные варианты, посмотрите вот эти темы Макросы StartSafeCall_RU и Ошибка времени выполнения в ComExcelDocument_RU.findRange()
__________________
Sergey Nefedov |
|
24.07.2018, 19:49 | #8 |
Участник
|
Закат солнца вручную.
На сколько я понял, то 1. Можно изменить макрос, например увеличить кол-во попыток и время таймаута 2. Обертка с ComVariant для всех методов ComExcelDocument_RU однако... |
|
25.07.2018, 10:32 | #9 |
Участник
|
Вот тут решение, которое помогло.
Спасибо Как правильно обернуть в ComVariant метод getWorkSheets() класса ComExcelDocument_RU |
|
|
|