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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.07.2018, 14:41   #1  
ena_ax is offline
ena_ax
Участник
 
254 / 46 (2) +++
Регистрация: 06.12.2006
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));
                        }
Гугл пишет про timeout.
Подскажите, какие настройки и где нужно сделать, чтобы исправить ошибку.
Старый 23.07.2018, 17:21   #2  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Сталкивался с подобным: в классе 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  
ena_ax is offline
ena_ax
Участник
 
254 / 46 (2) +++
Регистрация: 06.12.2006
Это не помогло. Но направление по-моему в нужную сторону задали.

При длительных расчетах значений ячейки в методе 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  
dech is offline
dech
Участник
Аватар для dech
Самостоятельные клиенты AX
 
647 / 350 (13) ++++++
Регистрация: 25.06.2009
Адрес: Омск
Записей в блоге: 3
Этот пост смотрели?
Генератор финансовых отчётов
__________________
// no comments
Старый 24.07.2018, 16:26   #5  
ena_ax is offline
ena_ax
Участник
 
254 / 46 (2) +++
Регистрация: 06.12.2006
Цитата:
Сообщение от dech Посмотреть сообщение
Этот пост смотрели?
Генератор финансовых отчётов
Спасибо. Прочитал. До конца не понятно.
Если не сложно тыкните в нужное место.
Старый 24.07.2018, 16:33   #6  
ena_ax is offline
ena_ax
Участник
 
254 / 46 (2) +++
Регистрация: 06.12.2006
Цитата:
Сообщение от ena_ax Посмотреть сообщение
Спасибо. Прочитал. До конца не понятно.
Если не сложно тыкните в нужное место.
Не знаю на сколько приницпиально, но версии разные, у меня 2009,а в описании проблемы 4.0
Старый 24.07.2018, 18:25   #7  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Аналогичные проблемы обсуждались, есть разные варианты, посмотрите вот эти темы Макросы StartSafeCall_RU и Ошибка времени выполнения в ComExcelDocument_RU.findRange()
__________________
Sergey Nefedov
Старый 24.07.2018, 19:49   #8  
ena_ax is offline
ena_ax
Участник
 
254 / 46 (2) +++
Регистрация: 06.12.2006
Закат солнца вручную.

На сколько я понял, то
1. Можно изменить макрос, например увеличить кол-во попыток и время таймаута
2. Обертка с ComVariant для всех методов ComExcelDocument_RU

однако...
Старый 25.07.2018, 10:32   #9  
ena_ax is offline
ena_ax
Участник
 
254 / 46 (2) +++
Регистрация: 06.12.2006
Вот тут решение, которое помогло.
Спасибо
Как правильно обернуть в ComVariant метод getWorkSheets() класса ComExcelDocument_RU
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Генератор скриптов конвертации базы Axapta 3.0 в базу AX 2009 gl00mie DAX: Программирование 1 14.08.2011 20:05
mbsturk: Ax 2009 Rollup 4 Version Checker Blog bot DAX Blogs 0 29.04.2010 17:05
emeadaxsupport: Starting Dynamics AX 2009 is launching Windows Installer for Microsoft Axapta 3.0 Blog bot DAX Blogs 0 27.01.2010 13:05
Kashperuk Ivan: AxPaint / AxAssist for Axapta 3.0, AX 4.0 and AX 2009 Blog bot DAX Blogs 0 13.05.2008 19:05
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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