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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.07.2007, 13:35   #1  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
? Поиск источника ошибки в SysSetupForm
Для облегчения жизни в SysSetupForm был добавлен код для вывода наименования DataSource, полей и т.п.
В одной из форм (чужой) форма валится в стек по причине того, что не найден DataSource в AOT

dataSource = Form...Control.dataSource(); - возвращает значение 17539
dataSourceName = formRun.Form().dataSource(dataSource).Name(); - благополучно падает в стек

Как можно найти ссылку на отсутствующий в AOT DataSource в дизайне формы?
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 12.07.2007, 14:28   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
А табакс на ней не валится? Функция определения поля?
Старый 12.07.2007, 14:31   #3  
Мариночка is offline
Мариночка
Microsoft Dynamics
Аватар для Мариночка
Сотрудники Microsoft Dynamics
 
75 / 56 (2) ++++
Регистрация: 31.01.2005
Адрес: Киев
Как я понимаю, датасорс был динамически добавлен.
Можно попробовать перебором, я когда-то над этой проблемкой работала и ничего другого не нашла.

X++:
int dataSourceNo;
    int ds_id;
    int i;
    FormBuildDatasource fbds;
    ;
    
 
    id = fc.dataSource();

    dataSourceNo = element.form().dataSourceCount();

    for (i = 1; i <= dataSourceNo; i++)
    {
        fbds = element.form().dataSource(i);
        ds_id = fbds.id();
        
        if (ds_id == id)
            info(fbds.name());
    }
А Form().dataSource() принимает номер датасорса по счету, а вы даете ему айди его.
Старый 12.07.2007, 14:49   #4  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
А табакс на ней не валится? Функция определения поля?
У меня Tabax не установлен. Я же не программирую, мое дело анализ. Можно ради эксперимента установить, но мне придется сначала его освоить ))
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 12.07.2007, 14:52   #5  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Благодаря Ивану, в табаксе есть код, выводящий истоячник для текущего поля. Вот он:
X++:
    Object              formControlEditField;
    TreeNode            runTreeNode;

    TreeNode getDataSourceNode()
    {
        int         dataSourceId;
        int         fieldExtId;
        str         dataMethodName;
        TreeNode    fieldNode;
    ;
        dataSourceId    = formControlEditField.dataSource();
        fieldExtId      = formControlEditField.dataField();
        dataMethodName  = formControlEditField.dataMethod();
        if (dataSourceId)
        {
            if (fieldExtId)
            {
                fieldNode = TreeNode::findNode(#TablesPath + #AOTRootPath + tableId2Name(currentForm.form().dataSource(dataSourceId).table()) + "\\Fields");
                if (fieldNode)
                    fieldNode = fieldNode.AOTfindChild(fieldId2Name(currentForm.form().dataSource(dataSourceId).table(), fieldExt2Id(fieldExtId)));
                if (fieldNode)
                    fieldNode.AOTnewWindow();
                return fieldNode;
            }
            else
            {
                if (dataMethodName)
                {
                    fieldNode = TreeNode::findNode(strFmt(#DataSourceMethodPath, #FormsPath + #AOTRootPath + currentForm.name(), currentForm.form().dataSource(dataSourceId).name(), dataMethodName));
                    if (fieldNode)
                        fieldNode.AOTedit();
                    else
                    {
                        fieldNode = TreeNode::findNode(strFmt(#MethodPath, #TablesPath + #AOTRootPath + tableId2Name(currentForm.form().dataSource(dataSourceId).table()), dataMethodName));
                        if (fieldNode)
                            fieldNode.AOTedit();
                    }
                }
            }
        }
        return null;
    }
Старый 12.07.2007, 14:58   #6  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Хотя навреное, для данного случая работать не будет - в дизайне-то нет...
Старый 12.07.2007, 15:04   #7  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
но и RunTime error по идее не будет
Старый 12.07.2007, 15:10   #8  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Цитата:
Сообщение от belugin Посмотреть сообщение
Хотя навреное, для данного случая работать не будет - в дизайне-то нет...
Знать бы поле в дизайне? А так строится дерево по дизайну и в каком-то узле все падает. А перебирать все узлы упаришься. Хотя, скорее всего, так и придется сделать ((
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 12.07.2007, 15:21   #9  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Цитата:
Знать бы поле в дизайне
попробуй табакс - там спецкнопка, которая открывает текущее поле в дизайние
Старый 12.07.2007, 15:30   #10  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от belugin Посмотреть сообщение
попробуй табакс - там спецкнопка, которая открывает текущее поле в дизайние
Кстати реально удивляет, почему консультанты не пользуются.
Я своим провел детальную презентацию, так после этого форма Tabax - первая, которую они открывают в системе.
Старый 12.07.2007, 15:35   #11  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
запиши флешик
Старый 12.07.2007, 15:39   #12  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Так форма-то сама открывается. А вот при вызове SysSetupForm по этой форме все и происходит.
Т.е. я стою на форме, нажимаю правую кнопку, выбираю "Настройка" и падаю в стек
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
Старый 12.07.2007, 17:23   #13  
KiselevSA is offline
KiselevSA
Злыдни
Аватар для KiselevSA
Злыдни
Лучший по профессии 2015
 
958 / 333 (13) ++++++
Регистрация: 25.01.2002
Адрес: Москва
Установка Tabax не спасла. Удобная в некоторых случаях штука, но в моем случае финт с переходом к последнему полю не помогает.
__________________
люди...считают, что если техника не ломается, то ее не нужно ремонтировать. Инженеры считают, что если она не ломается, то нуждается в совершенствовании.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поиск в Grid по полю DataMethod Tiruvileijadal' DAX: Программирование 20 14.05.2007 13:37
Ошибки при разноске в ГК Андрей К. DAX: Программирование 16 17.04.2007 12:44
Поиск источника ошибки nikbik DAX: Программирование 11 16.02.2006 09:09
Поиск по подстроке JohNick DAX: Программирование 8 06.03.2004 22:24
Поиск по полю временной таблицы Swetik DAX: Программирование 2 10.12.2003 11:35

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

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

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