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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.07.2011, 12:08   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Просмотр [временных] таблиц в отладчике.
Пишу, скорее "на память" чтобы в следующий раз не пересоздавать код.
В продолжение этого совета ax2009 метод toString() в отладчике

Суть проблемы:
отладчик показывает только текущую запись во [временной] таблице.
что приводит к сложностям при отладке.

Чтобы было легче отлаживать код с [временными] таблицами, таблицы можно запихать записи в контейнер. А уж контейнеры отладчик показывает превосходно.

для преобразования таблицы в контейнер в классе Global можно создать следующий метод:
X++:
// преобразует таблицу в контейнер (контейнеры удобно просматривать в отладчике)
// если maxRecords = 0 то в контейнер попадут все записи из таблицы
static server container table2con(Common common, int64 maxRecords = 10)
{
    int64       i;
    Common      _common = new DictTable(common.TableId).makeRecord();
    container   ret = connull();
;
    // копируем записи, чтобы не сдвинуть курсор и ничего не изменить в исходной выборке
    if( common.isTmp() )
    {
        _common.setTmp();
        _common.setTmpData(common);
    }
    else
    {
        _common.data(common);
    }

    // перебираем записи
    while select _common
    {
        ++i;
        if( maxRecords > 0 && i > maxRecords )
        {
            ret += ['...']; // в конец добавляем признак того, что в таблице есть и другие записи.
            break;          // прерываем обработку, если нашли больше записей, чем запрошено в maxRecords
        }
        else
        {
            ret += [_common];
        }
    }

    return ret;
}
в коде можно вызвать этот метод с таблицей, на записи которой хотите посмотреть.
можно поставить точку останова на return ret или сохранить результат выполнения где-нибудь для дальнейшего просмотра.

будьте осторожны с модификатором server. метод должен выполняться там, где "живет" просматриваемая таблица.

UPD: такой же подход можно применить для просмотра queryRun.
__________________
полезное на axForum, github, vk, coub.

Последний раз редактировалось mazzy; 29.07.2011 в 12:10. Причина: добавил про QueryRun
За это сообщение автора поблагодарили: pitersky (2).
Теги
debugger, отладка, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Передача нескольких временных таблиц в отчет Pegiy DAX: Программирование 5 03.06.2004 17:44
Использование временных таблиц Dubinski Serguei DAX: Программирование 23 13.12.2003 10:13
Кто нибудь делал просмотр/редактирование внешних DBF таблиц? edd DAX: Программирование 13 06.02.2003 17:43
Дополнительные возможности временных таблиц: метод setTmpData vitk DAX: База знаний и проекты 1 19.06.2002 17:53
Использование временных таблиц в отчетах Alexey DAX: База знаний и проекты 1 28.05.2002 11:15

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

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

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