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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.07.2015, 09:29   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,984 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Да.
Перекрыли метод в классе SysReportRun

Ядро сгенерило такой код
X++:
public boolean send(Common _cursor, int _level=1, boolean _triggerOffBody=TRUE, boolean _newPageBeforeBody=FALSE)
{
    boolean ret;

    ret = super(_cursor, _level, _triggerOffBody, _newPageBeforeBody);

    return ret;
}
И именно он в случае вышеупомянутых отчетов - не работает. Работа отчета молча прерывается без каких-либо сообщений об ошибках.

P.S.
Странно, вроде подробно все расписал еще в первом сообщении темы.
Почему еще вопросы возникают.
Неужели сложно взять, проверить и убедиться.
Старый 28.07.2015, 12:09   #2  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Есть еще такой вариант (проверил, работает):

X++:
// SysReportRun
public boolean send(Common _cursor, int _level=1, boolean _triggerOffBody=TRUE, boolean _newPageBeforeBody=FALSE)
{
    if (prmisdefault(_newPageBeforeBody)) 
    {
        return super(_cursor, _level, _triggerOffBody);
    }
    
    return super(_cursor, _level, _triggerOffBody, _newPageBeforeBody);
}
Ну и можно по аналогии проверять "дефолтность" третьего и второго параметров для вызова укороченных super(). Кстати, не анализировали, есть такие send() в стандарте, в которых меньше 3 параметров?

Еще интересный момент. Если попытаться запустить отчет из списка Logger-а сразу после модификации SysReportRun, то ядро выводит-таки ошибку:
Цитата:
Трассировка стека: Метод был вызван с недопустимым числом параметров.



(C)\Reports\BOMConsistOf\Methods\send
(C)\Classes\SysReportRun\send - line 5
(C)\Classes\ReportRun\fetch
(C)\Classes\SysReportRun\fetch - line 6
(C)\Classes\ReportRun\run
(C)\Reports\BOMConsistOf\Methods\run - line 26
(C)\Classes\SysReportRun\run - line 35
Но стоит просто откомпилировать отчет исправлено: вывести что-то в инфолог, как начинает проявляться описанный эффект - молчаливое завершение.
__________________

Последний раз редактировалось Ruff; 28.07.2015 в 13:52.
Старый 28.07.2015, 12:25   #3  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,984 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Ruff Посмотреть сообщение
Еще интересный момент. Если попытаться запустить отчет из списка Logger-а сразу после модификации SysReportRun, то ядро выводит-таки ошибку:

Но стоит просто откомпилировать отчет, как начинает проявляться описанный эффект - молчаливое завершение.
Погодите, по идее если сделать модификацию как я описал то должна сработать ветка кода
X++:
    case  3 :
            ret = super( _cursor, _level, _triggerOffBody );
            break;
и не должно быть ошибки времени выполнения, так как число параметров будет одинаковым в вызове метода и в его объявлении в отчете.

может под отладчиком пройтись - мало ли что сглючило и неверно отработал
SysReportRun::GRD_getMethodParamsCount

У меня все работало нормально.
Проверял на отчетах с 4 и 3 параметрами.
Старый 28.07.2015, 12:30   #4  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Я имел в виду запуск без модификации. То есть просто перекрыть send, оставив сгенерированный ядром код, и запустить отчет.
Старый 28.07.2015, 12:33   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,984 / 3273 (117) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Ruff Посмотреть сообщение
Я имел в виду запуск без модификации. То есть просто перекрыть send, оставив сгенерированный ядром код, и запустить отчет.
А !
А вот это очень странно. Интересно было бы докопаться.
Барабашки нет !
Старый 28.07.2015, 13:50   #6  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от Logger Посмотреть сообщение
Барабашки нет !
Действительно) Я был не прав насчет компиляции (не влияет она, это просто было совпадение). Правда понять изначальную причину пропадания сообщения так и не удалось. Заметил только, что текст ошибки НЕ выводится, если что-то вывести в инфолог перед некорректным вызовом супер. Могу лишь предположить, что ядро как-то нестандартно работает с инфологом в таких случаях.
Теги
ax2009, reportrun, sysformrun, sysreportrun, баг

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
SysReportRun и tmpTable Pat4kord DAX: Программирование 12 15.03.2013 16:44
Query sort field autoSum ist DAX in English 4 27.03.2008 16:48
Засада с позиционированием при переходе к основной таблице. В чем дело? AK9 DAX: Программирование 17 30.11.2007 14:42
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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