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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.09.2008, 09:58   #261  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Решил поделиться одной нужной кнопочкой.
У себя я её прикрутил к Tabax-у.
Если нужно потрэйсить где ошибка, то приходиться открывать репозитарий, искать класс Info и ставить на методе Add точку останова.
Хоть и занимает пару секунд, но с какой-нибудь нужной мысли может сбить.
А так не надо касаться клавиатуры и времени меньше занимает.
X++:
void clicked()
{
    container    bpCon;
    container    newBpCon;
    str          path = "\\Classes\\Info\\add";
    int          i;
    boolean      isDelete;
;
    bpCon = infolog.breakpoint();
    newBpCon += conpeek(bpCon,1);
    for(i=1; i<conlen(bpCon); i+=3)
    {
        if(conpeek(bpCon,i+1) != path)
        {
            newBpCon += [conpeek(bpCon,i+1)];
            newBpCon += [conpeek(bpCon,i+2)];
            newBpCon += [conpeek(bpCon,i+3)];
        }
        else
            isDelete = true;
    }
    if(isDelete)
    {
        infolog.breakpoint(newBpCon);
        info("Снята точка останова с Info\Add");
    }
    else
    {
        newBpCon += [path];
        newBpCon += [11];
        newBpCon += [true];
        info("Установлена точка останова на Info\Add");
        infolog.breakpoint(newBpCon);
    }
}
На Ax 4.0 не проверял.

Последний раз редактировалось miklenew; 21.09.2008 в 10:06.
За это сообщение автора поблагодарили: mazzy (2), belugin (5), vc (1), Link (1), alex55 (1).
Старый 22.09.2008, 15:34   #262  
_scorp_ is offline
_scorp_
Участник
Аватар для _scorp_
MCBMSS
 
488 / 369 (13) ++++++
Регистрация: 25.07.2007
Адрес: Москва
Цитата:
приходиться открывать репозитарий, искать класс Info и ставить на методе Add точку останова
Можно проще - Shift + F9 там можно просто включать или отключать галочкой нужную точку. У меня там всегда болтается точка в info->add.
За это сообщение автора поблагодарили: mazzy (10), coolibin (1).
Старый 22.09.2008, 16:26   #263  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от _scorp_ Посмотреть сообщение
Можно проще - Shift + F9 там можно просто включать или отключать галочкой нужную точку. У меня там всегда болтается точка в info->add.
Не проще, поэтому и сделал такую штуку.
Старый 23.09.2008, 12:10   #264  
DocSerzh is offline
DocSerzh
Участник
 
51 / 22 (0) +++
Регистрация: 28.06.2004
Цитата:
Сообщение от miklenew Посмотреть сообщение
Решил поделиться одной нужной кнопочкой.
У себя я её прикрутил к Tabax-у.
Если нужно потрэйсить где ошибка, то приходиться открывать репозитарий, искать класс Info и ставить на методе Add точку останова.
Хоть и занимает пару секунд, но с какой-нибудь нужной мысли может сбить.
А так не надо касаться клавиатуры и времени меньше занимает.
Рекомендую http://www.axaptapedia.com/Infolog_stack_trace...
Очень удобно...

PS на 4.0 не проверял.
Старый 23.09.2008, 16:38   #265  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,305 / 3538 (124) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от DocSerzh Посмотреть сообщение
Рекомендую http://www.axaptapedia.com/Infolog_stack_trace...
Очень удобно...

PS на 4.0 не проверял.
Этот подход имеет один существенный недостаток - он не дает самому использовать классы SysInfoAction для собственных нужд. А пользователям очень нравится переходить в инфологе сразу к записи.

В 4.0 поступили по-другому. Там сделали кнопку Правка, которая ведет к месту, откуда была вызвана функция info/error/warning. При этом эта кнопка работает, если не используется механизм SysInfoAction. Т.о. разрекламированный переход к коду - на самом деле используется не везде.

Со своей стороны, мне непонятно - почему нельзя было в 4.0 сделать ОТДЕЛЬНУЮ кнопку Стек вызовов и добавить в табличку SysInfolog поле - контейнер со стеком вызвов. Тогда стек вызовов работал бы независимо от механизма SysInfoAction. Правда - в этом случае пришлось бы подправить большее количество методов в классе Info (+форма инфолога+табличка инфолога). Зато фишка была бы качественнее
__________________
Возможно сделать все. Вопрос времени
Старый 23.09.2008, 16:46   #266  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
он не дает самому использовать классы SysInfoAction
Дает. В последней версии он даже работает при существущих других Info actions. В таких случаях окошко трейса появляется если удерживать Ctrl.


If the record has an action already, you can see stacktrace by holding Ctrl button while clicking on the action button.
Старый 24.09.2008, 16:57   #267  
Stainless is offline
Stainless
Участник
MCBMSS
Columbus IT
 
34 / 114 (4) +++++
Регистрация: 26.01.2007
Кнопка Включения/Выключения Breakpoint в классе Info
Надеюсь miklenew не будешь против что я выложил твой код в виде plugin для tabax.

Приложенную папку и изображение необходимо разместить в папке tabax\plugs
Вложения
Тип файла: rar DEV_ToggleInfoBreakpoint.rar (5.5 Кб, 128 просмотров)
За это сообщение автора поблагодарили: belugin (5), Link (1).
Старый 24.09.2008, 19:50   #268  
miklenew is offline
miklenew
Участник
Аватар для miklenew
MCBMSS
1C
Лучший по профессии 2009
 
1,688 / 433 (18) +++++++
Регистрация: 10.07.2006
Адрес: г. Ликино-Дулёво
Цитата:
Сообщение от Stainless Посмотреть сообщение
Надеюсь miklenew не будешь против что я выложил твой код в виде plugin для tabax.
Не против. Я ж не жлоб.
Старый 09.10.2008, 16:09   #269  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Как альернативу кнопке в Табаксе, могу предложить кнопку на самой форме с аналогичной функциональностью.

Так же добавленна возможность открывать точки останова клавишей BackSpace.
Или по двойному щелчку левой кнопки мышки.

Модификация для Ax 4, думаю перенести на другую версию труда не составит
Вложения
Тип файла: xpo Form_SysBreakpoints.xpo (18.9 Кб, 435 просмотров)
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
Старый 16.10.2008, 00:53   #270  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Если кто-то использует Tabax + AxPath для AX 2009 - см. приложение.
В нем обновленная dll, которая будет работать в новой версии системы.
Вложения
Тип файла: rar axpath.rar (21.8 Кб, 139 просмотров)
Старый 01.11.2008, 17:29   #271  
Stainless is offline
Stainless
Участник
MCBMSS
Columbus IT
 
34 / 114 (4) +++++
Регистрация: 26.01.2007
Никак не могу заставить работать AxPath на DAX 4.0.
Файл регистрации никаких действий не производит
А при попытке перехода по ссылке выдается сообщение:
Невозможно отобразить страницу
Эта страница сейчас недоступна. Возможно, это вызвано техническими проблемами на веб-узле, или требуется изменение параметров обозревателя.
Старый 01.11.2008, 17:35   #272  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А то, что Иван добавил не работает?
Старый 03.11.2008, 08:42   #273  
Stainless is offline
Stainless
Участник
MCBMSS
Columbus IT
 
34 / 114 (4) +++++
Регистрация: 26.01.2007
В том то и дело, что мне нужна версия dll для 4.0, везде искал, есть только для 3-шки и 2009.
Старый 03.11.2008, 09:13   #274  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Сообщение от Stainless Посмотреть сообщение
В том то и дело, что мне нужна версия dll для 4.0, везде искал, есть только для 3-шки и 2009.
А они вроде по одинаковому должны работать...

Кстати, Вань, ты там что менял и где исходники?
Старый 03.11.2008, 11:31   #275  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Неправильно прописаны пути в реестре к текущей конфигурации.
Это, насколько я помню, все, что я поменял.

Для 4ки, думаю, они отличаются от 5ки и 3ки.
Исходники в архиве, который AndyD изначально выкладывал - я поищу, если не найдешь сам. Но вроде где-то в инете они точно
За это сообщение автора поблагодарили: belugin (4), Stainless (1).
Старый 26.11.2008, 14:58   #276  
Максимка is offline
Максимка
Участник
 
19 / 23 (1) +++
Регистрация: 28.06.2006
В DAX 4.0 cтолкнулся с ситуацией, когда в Windows для "non-Unicode programs" выбран не русский язык. В этом случае, русский языковой файл от tabax показывает кракозябры. Чтобы работало правильно, я перекодировал файл ru.txt в Unicode и в процедуре "LoadLanguageFile" заменил AsciiIO на TextIO.
За это сообщение автора поблагодарили: belugin (5).
Старый 18.12.2008, 16:56   #277  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Отключил вызов метода autoHeight из applyChanges, уменьшил высоту панели "руками". С включенным autoHeight были видны 2 избыточных горизонтальных полосы под вкладками Tabax'a.
Старый 16.04.2009, 15:21   #278  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,305 / 3538 (124) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Подсчет количества записей
Решил поделиться небольшой кнопкой подсчета количества записей в активном датасорсе (т.е. в том датасорсе, к которому привязано текущее выбранное поле)
Умеет считать количество записей во временной таблице и в таблице, в которой записи отфильтрованы по диналинкам. При подсчете код ориентируется на SysQuery::countTotal

X++:
void clicked()
{
    FormRun              formRun = element.currentFormRun();
    FormObjectSet        formObjectSet;
    FormDataSource       formDS;
    Counter              cnt;
    Common               copyCursor;
    Query                copyQuery;
    int                  i;
    QueryBuildDataSource qbds;
    ;
    if (!formRun)
    {
        return;
    }
    formObjectSet = formRun.objectSet();
    if (!formObjectSet)
    {
        return;
    }
    formDS = formObjectSet.cursor().dataSource();
    if (formRun.objectSet().cursor().isTmp())
    {
        copyCursor = new DictTable(formRun.objectSet().cursor().TableId).makeRecord();
        copyCursor.setTmp();
        copyCursor.setTmpData(formRun.objectSet().cursor());
        select firstonly firstfast recId from copyCursor;
        if (copyCursor)
        {
            cnt = SysQuery::countTotal(formDS.queryRun(), copyCursor);
        }
    }
    else
    {
        copyQuery = new Query(formDS.queryRun().query().pack(false));
        for (i = 1; i <= formDS.queryRun().query().dataSourceCount(); i++)
        {
            qbds = formDS.queryRun().query().dataSourceNo(i);
            if (qbds.dynalinkCount())
            {
                SysQuery::queryAddDynaCursorAsRangeAndValue(copyQuery, formDS.queryRun().query(), i);
            }
        }
        cnt = SysQuery::countTotal(new QueryRun(copyQuery));
    }
    info(strfmt("%1 записей", cnt));
}
Здесь мне пришлось немного поправить стандартный код, но его при желании можно откопировать в форму табакса:
Класс SysQuery:
X++:
private server static container countPrim(container _queryPack, Common _tmpBuffer = null) // Корректный подсчет кол-ва записей во временной таблице
{
    Query                   countQuery;
    QueryRun                countQueryRun;
    QueryBuildDataSource    qbds;
    QueryBuildFieldList     qbfl;
    Common                  common;
    Integer                 counter;
    Integer                 loops;
    ;
    countQueryRun   = new QueryRun(_queryPack);
    countQuery      = countQueryRun.query();
    qbds            = countQuery.dataSourceNo(1);
    qbds.update(false);
    qbds.sortClear();
    qbfl = qbds.fields();
    qbfl.dynamic(false);
    qbfl.clearFieldList();
    if (countQuery.dataSourceCount() == 1)
        qbds.addSelectionField(fieldnum(Common,RecId),SelectionField::Count);

    countQueryRun   = new QueryRun(countQuery);
    // Корректный подсчет кол-ва записей во временной таблице -->
    if (_tmpBuffer)
    {
        countQueryRun.setCursor(_tmpBuffer);
    }
    // Корректный подсчет кол-ва записей во временной таблице <--

    while (countQueryRun.next())
    {
        common  = countQueryRun.get(countQuery.dataSourceNo(1).table());
        counter += common.RecId;
        loops++;
    }

    return [counter,loops];
}
и

X++:
public client server static Integer countTotal(QueryRun _queryRun, Common _tmpBuffer = null)// Корректный подсчет кол-ва записей во временной таблице

{
    container c = SysQuery::countPrim(_queryRun.pack(false), _tmpBuffer);

    return conpeek(c,1);
}
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 16.04.2009 в 15:24.
За это сообщение автора поблагодарили: belugin (5), alex55 (1).
Старый 16.04.2009, 15:28   #279  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1238 (44) ++++++++
Регистрация: 11.04.2008
Так если есть объект датасорса, потенциально известно, сколько записей он содержит:
Или я не заметил тонкости?

X++:
for ( localInventTable = inventTable_ds.getFirst() ? inventTable_ds.getFirst() : inventTable_ds.cursor();
          localInventTable ;
          localInventTable = inventTable_ds.getNext())
    {
        info (strFmt("%1", localInventTable.ItemId));
        recordCount ++; // <--------
    }
Т.е. я к тому, что не обязательно связываться с кверёй, и делать поправку на временную таблицу.
Старый 16.04.2009, 16:16   #280  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
DSPIC, так будет долго и нарушится позиционирование

sukhanchik, лучше такое плагином
Теги
tabax, taskbar, toolbar, инструменты, панель задач, панель инструментов, полезное, табакс, тулбар, управление окнами

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
[ANN] Sidax 0.3.6 - многоцелевая боковая панель для Axapta belugin DAX: База знаний и проекты 104 30.06.2008 11:32
axaptafreak: Tabax: tabbed Axapta interface !!!! Blog bot DAX Blogs 0 10.11.2006 01:14
Панель задач в Аксапте wb DAX: Программирование 14 18.04.2006 17:13
Говорят вышел SP2 для Axapta 3. Кто нибуть что знает на эту тему? soin DAX: Прочие вопросы 10 13.10.2003 10:43
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 00:43.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.