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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.03.2013, 22:59   #21  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,292 / 3514 (124) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Обновление для AX2012 R2
Вышеприведенный вариант работает вплоть до АХ2009.
Для АХ 2012R2 уже не работает.
Прилагаю скорректированный вариант, который будет работать и для AX 2012 R2 и AX2009. Изменения выделены комментариями

Цитата:
Сообщение от Timofey_k Посмотреть сообщение
Держите самый красивый вариант :-) Года два назад нарисовал бессонной ночью.
X++:
//Open the selected element in a new AOT window
#AOT
void addIns_OpenNewWindowSelected(Editor e)
{
    TreeNode            sourceCodeNode = TreeNode::findNode(e.path());
    TreeNode            newWindowNode;
    TreeNodePath        treeNodePath;

    xRefTmpReferences   refTable;

    int                 startLine = e.selectionStartLine();
    int                 startCol  = e.selectionStartCol();
    int                 endCol    = e.selectionEndCol();

    str                 selectedText;
    xRefUpdateTmpReferences xRefUpdateTmpReferences; // VSUH, Адаптация для AX 2012 R2, 20.03.2013
    ;
    if (sourceCodeNode && e.selectionStartLine() == e.selectionEndLine() && startCol != endCol)
    {
        // VSUH, Адаптация для AX 2012 R2 20.03.2013 -->
//        infolog.updatexRefSet(sourceCodeNode, true);

//        sourceCodeNode.AOTmakeXref(1);
//        refTable = xRefCreate::makeTmp(infolog.lastxRef());

//        infolog.updatexRefSet(sourceCodeNode, false);
        
        xRefUpdateTmpReferences = new xRefUpdateTmpReferences();
        xRefUpdateTmpReferences.fillTmpxRefReferences(sourceCodeNode);
        refTable = xRefUpdateTmpReferences.allTmpxRefReferences();
        // VSUH, Адаптация для AX 2012 R2 20.03.2013 <--
        select firstonly refTable
            where refTable.line   == startLine
               && refTable.Column == startCol;

        if (refTable)
        {
            treeNodePath = refTable.Path();

            if (treeNodePath)
            {
                newWindowNode = TreeNode::findNode(treeNodePath);

                if (newWindowNode)
                {
                    newWindowNode.AOTnewWindow();

                    if (!newWindowNode.AOTchildNodeCount()) //Workaround for the AX4 "open new window" bug. Remove for AX3/2009
                    {
                        infolog.getUserSetup().setUserSetup(xUserInfo::find());
                    }
                }
            }
        }
        else
        {
            e.firstSelectedLine();
            selectedText = strLRTrim(subStr(e.getLine(), e.selectionStartCol(), endCol-startCol));

            if (selectedText)
            {
                newWindowNode = TreeNode::findNode(#MacrosPath + #AOTDelimiter + selectedText);

                if (newWindowNode)
                {
                    newWindowNode.AOTedit();
                }
            }
        }
    }
}
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 20.03.2013 в 23:03.
За это сообщение автора поблагодарили: Logger (5).
Теги
editor script, tools, перекрестные ссылки, полезное, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Открыть в новом окне объект из кода miklenew DAX: База знаний и проекты 24 31.01.2023 17:31
танцы с бубном - COM Объект не имеет метода 'worksheets' Artem Mikhailov DAX: Программирование 4 05.02.2007 14:25
Как выбрать объект для создания шаблона импорта Excel? MagisterLudi DAX: Функционал 2 15.08.2003 16:42

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

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

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