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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 01.11.2007, 07:32   #1  
Proba is offline
Proba
Участник
 
60 / 13 (1) ++
Регистрация: 25.06.2007
Адрес: Красноярск\Зеленогорск
Обработка ошибки!
Добрый день!

Есть код. В определенный момент появляется ошибка, нужно обработать эту ошибку.
X++:
args    = new Args(PurchTable);
formRun = new FormRun(args);
 
formRun.init();
formRun.run();
tab = formRun.control(12294); //12290; 12292
 
if(tab)
{
     for(i=1; i<=tab.tabs(); i++)
     {
     ...................
     }
}
На строке
X++:
for(i=1; i<=tab.tabs(); i++)
выдается ошибка.
Как поймать эту ошибку, и как в качестве обработки выполнить какую либо другую операцию.
Ошибка появляется не для всех форм.

Пробовал использовать try и catch, просмотрел темы,
Вопрос про throw error

Почему может не ловиться исключение
но это мне не помогло.

Подскажите, как можно поймать и обработать эту ошибку?
Старый 01.11.2007, 09:53   #2  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
Сообщение от Proba Посмотреть сообщение
X++:
tab = formRun.control(12294); //12290; 12292
А это что за хакерство у вас? Что вы хотите сделать-то?
__________________
Андрей.
Старый 01.11.2007, 10:00   #3  
Proba is offline
Proba
Участник
 
60 / 13 (1) ++
Регистрация: 25.06.2007
Адрес: Красноярск\Зеленогорск
Хочу получить TabPage формы. Исходный код этого хакерства можно посмотреть здесь.
У меня строка "Control::Tab", почему то не работала, поэтому пришлось написать так.
Старый 01.11.2007, 10:11   #4  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Ну по ссылке _такого_ не написано.
ИДшники контролов формы - дело переменчивое, на них не стоит завязываться. А Control::Tab не работает потому, что у вас сам FormTabControl имеет название отличное от "Tab". Напишите "Control::<ваше_название>".
__________________
Андрей.
Старый 01.11.2007, 10:21   #5  
Proba is offline
Proba
Участник
 
60 / 13 (1) ++
Регистрация: 25.06.2007
Адрес: Красноярск\Зеленогорск
Цитата:
ИДшники контролов формы - дело переменчивое, на них не стоит завязываться
Согласен, но ни чего не поделаеш.
В том то и дело, что название "своего" контрола не знаю.
Цикл должен быть универсален, чтоб работало для любой формы, у каждой свой Tab, а там имён тьма тьмущая.
Старый 01.11.2007, 10:32   #6  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цикл по всем контролам формы, с проверкой на FormTabControl, можно написать так:
X++:
FormControl    formControl;
...
for (i = 1; i <= formRun.design().controlCount(); i++)
{
    formControl = formRun.design().controlNum(i);
    if (classIdGet(formControl) == classnum(FormTabControl))
    {
    ...
    }
}
Но задача у вас какая-то, извините, странная. А если на форме не 1 таб, а два, три? Вложенные?
__________________
Андрей.
Старый 01.11.2007, 10:57   #7  
Proba is offline
Proba
Участник
 
60 / 13 (1) ++
Регистрация: 25.06.2007
Адрес: Красноярск\Зеленогорск
Интерсно
X++:
for (i = 1; i <= formRun.design().controlCount(); i++)
, НО (на примере формы InventTable) "controlCount()" выдаёт количество контролов равное 2. Но ведь это не так, их гораздо больше. В итоге обрабатывается только одна вкладка, о др. контрол отсекается условием.

Цитата:
А если на форме не 1 таб, а два, три?
Не пойму, а в чем проблема если их больше однго. По выше приведенной ссылке, показано как активировать n-ю вкладку.

Зада в том чтоб перебрать все вкладки формы и сделать для них скрин шот, ВСЕ те которые ВИДНЫ пользователю. Например для таблицы "PurchTable" у меня не видно не одной вкладки (хотя они есть), и в стороке "tab.tabs(); " происходила ошибка. Поэтому и захотелось проигнарировать эту ошибку, и сделать скрин шот формы как есть.
Старый 01.11.2007, 11:14   #8  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Да, там еще надо рекурсивно залазить внутрь контейнерных контролов на форме.
Посмотрите форму tutorial_Form_EnumerateControls, там это все есть.

Цитата:
Сообщение от Proba Посмотреть сообщение
Не пойму, а в чем проблема если их больше однго. По выше приведенной ссылке, показано как активировать n-ю вкладку.
Я имел в виду не закладки (TabPages), а сами Табы (FormTabControl). Ну это ладно, проехали.
__________________
Андрей.
Старый 02.11.2007, 09:45   #9  
Proba is offline
Proba
Участник
 
60 / 13 (1) ++
Регистрация: 25.06.2007
Адрес: Красноярск\Зеленогорск
Спасибо большое за пример!!!!
Моё решение
X++:
formRun.control(12294)
было в корне не правильно!
Последовал вашему совету
Цитата:
Посмотрите форму tutorial_Form_EnumerateControls
и все проблемы решились сами собой!
Спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Обработка входящего НДС andrw DAX: Функционал 12 05.03.2008 11:35
Ошибки при разноске в ГК Андрей К. DAX: Программирование 16 17.04.2007 12:44
Ошибки (?) в акте списания Ivanhoe DAX: Функционал 0 01.02.2007 13:32
Висит обработка фактуры Pavel8338 DAX: Администрирование 12 12.01.2006 13:10
Суммарная обработка накладной AlexUnik DAX: Функционал 1 19.08.2004 15:51

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

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

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