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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.07.2014, 05:44   #1  
yuriy_64 is offline
yuriy_64
Участник
 
88 / 10 (1) +
Регистрация: 21.03.2014
? Вытащить FormRefчерез Common
Пробегаю по таблицам, ищу RecId и если совпадает, то открываю форму.
Но у всех Dicttable.FormRef есть инфа, но не во всех таблицах в свойствах имеется наименование формы.
Как определить, где есть форма, а где нет?
Старый 17.07.2014, 06:46   #2  
yuriy_64 is offline
yuriy_64
Участник
 
88 / 10 (1) +
Регистрация: 21.03.2014
Если кто не понял, то у таблицы EventCUD в свойствах FormRef пусто, а
DictTable = new DictTable(tableNum(EventCUD));
info(DictTable.FormRef());
выдает EventCUD
Старый 17.07.2014, 08:28   #3  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
как вариант проверить существует вообще форма такая или нет
X++:
static void JobFindForm(Args _args)
{
    DictTable DictTable;
    str NameForm;
    TreeNode   tree = infolog.findNode('\\Forms');
    TreeNodeIterator itForms;
    TreeNode FormsTree;
    str curNameForm;
    boolean existform;
    ;
    
    DictTable = new DictTable(tableNum(EventCUD));
    NameForm = DictTable.FormRef();
    
    itForms = tree.AOTiterator();
    FormsTree = itForms.next();
   
    while(FormsTree)
    {
        curNameForm = FormsTree.AOTname();
        
        if (curNameForm == NameForm)
        {
            existform = true;
            break;
        }
        FormsTree = itForms.next();
    }
    if (existform)
        info('Форма существует');
    else
        info('Формы нет');
}
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
За это сообщение автора поблагодарили: yuriy_64 (1).
Старый 17.07.2014, 09:19   #4  
Peter Savintsev is offline
Peter Savintsev
Участник
 
246 / 119 (4) +++++
Регистрация: 14.12.2001
Не совсем корректно таким образом проверять наличие формы. Дело в том, что в свойство FormRef таблицы указывается не имя формы, а имя menu-item. Оно в общем случае может не совпадать с именем формы, которую открывает menu-item. А еще он может вообще не форму запускать, а класс или любой другой объект, который можно привязать к menu-item.
За это сообщение автора поблагодарили: Pustik (2).
Старый 17.07.2014, 09:41   #5  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от Peter Savintsev Посмотреть сообщение
Не совсем корректно таким образом проверять наличие формы. Дело в том, что в свойство FormRef таблицы указывается не имя формы, а имя menu-item. Оно в общем случае может не совпадать с именем формы, которую открывает menu-item. А еще он может вообще не форму запускать, а класс или любой другой объект, который можно привязать к menu-item.
Согласен. Но можно аналогичным образом поискать и менюайтем. И поэтому я в начале указал "как вариант". Сам не считаю, что это идеальное решение.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 17.07.2014, 10:18   #6  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А зачем там вообще перебор в цикле?

Почему сразу нельзя через findNode форму (меню-айтем) найти?
Или UtilElement воспользоваться
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Pustik (2).
Старый 17.07.2014, 10:49   #7  
yuriy_64 is offline
yuriy_64
Участник
 
88 / 10 (1) +
Регистрация: 21.03.2014
Спасибо, помогло.
Старый 17.07.2014, 12:01   #8  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Peter Savintsev Посмотреть сообщение
Не совсем корректно таким образом проверять наличие формы. Дело в том, что в свойство FormRef таблицы указывается не имя формы, а имя menu-item. Оно в общем случае может не совпадать с именем формы, которую открывает menu-item. А еще он может вообще не форму запускать, а класс или любой другой объект, который можно привязать к menu-item.
Дополню. Если свойство FormRef не заполнено, то это ещё не означает, что таблица не связана ни с каким MenuItem. В этом случае будет использован MenuItem совпадающий по имени с таблицей, конечно если он существует.
Старый 18.07.2014, 05:51   #9  
yuriy_64 is offline
yuriy_64
Участник
 
88 / 10 (1) +
Регистрация: 21.03.2014
На наличие формы решил по количеству DataSource:
CountNum=fr.dataSourceCount();
Если кол-во больше 0 тогда Форма, иначе таблица.
Старый 18.07.2014, 08:58   #10  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от yuriy_64 Посмотреть сообщение
На наличие формы решил по количеству DataSource:
CountNum=fr.dataSourceCount();
Если кол-во больше 0 тогда Форма, иначе таблица.
Простите, что?
Старый 18.07.2014, 09:37   #11  
yuriy_64 is offline
yuriy_64
Участник
 
88 / 10 (1) +
Регистрация: 21.03.2014
Если на Form цепляется DataSource, то количество их становится отличным от нуля. Если
frform.dataSourceCount() больше 0, то данная таблица цепляется к форме, а если 0, то это просто голимая таблица.
args.name(dictTable.formRef());
frform = ClassFactory.formRunClass(args);
frform.init();
CountNum=frform.dataSourceCount();
Старый 18.07.2014, 10:00   #12  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Мягко говоря странно пытаться создавать не существующую форму, ради определения существует она или нет. Это хорошо что текущая реализация ClassFactory.formRunClass молча проглатывает такое, но нет никакой гарантии что это будет поддерживаться позднее.

Кроме того, в случае когда formRef реально будет ссылаться на форму без источника данных, либо на промежуточный класс, вы получите также отрицательный результат.

Лучше воспользуйтесь советом AndyD.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
emeadaxsupport: White Paper on Common Upgrade Performance Tips Blog bot DAX Blogs 1 11.10.2012 08:05
workflowax: How do I select from table Common in AX? Blog bot DAX Blogs 0 16.11.2011 15:11
paruvella: AIF File System Common Error Blog bot DAX Blogs 0 04.10.2011 19:11
palleagermark: Not enough rights to use table 'Common' (Common) error i Purchase Totals (PurchTotals) Blog bot DAX Blogs 0 07.06.2011 19:11
Inside Dynamics AX 4.0: Common Search Blog bot DAX Blogs 0 29.10.2007 10:50

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

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

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