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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 14.04.2008, 14:43   #1  
Zoe is offline
Zoe
Участник
 
14 / 10 (1) +
Регистрация: 23.03.2008
Адрес: Санкт-Петербург
:( Проблема вызова метода доступа (Enum'ы!)
Добрый день!!! Столкнулась с непреодолимой для себя проблемой (занимаюсь программированием в Axapt’е целых две недели, параллельно осваивая ООП J ). В двух словах: Программа для печати некоторых документов. По нажатию на разные кнопки в форме вызываются два разных метода (назовем их Meth_A и Meth_B), которые передают в специальный класс для передачи данных Cls_PassParam данные из одного поля, заполненного пользователем («Категория»). Данное поле имеет расширенный тип Enum, Z_Category. Метод доступа класса cls_PassParam имеет стандартный вид:
PHP код:
public Z_Category Pass_z_c (Z_Category _z_c z_c)
{
z_c _z_c;
return 
z_c;} 
Обращение к данному методу из двух разных методов печати приводит к разным результатам: в первом случае, при вызове из метода PrintCategory, категория отображается как положено, во втором - при вызове из метода PrintShowReport – она вообще не отображается. Понимаю, что чудес не бывает, поэтому хотелось бы как-то рационально объяснить происходящее. Для чистоты эксперимента строки вызова сделала идентичными и в методах, записывающем параметры в класс PassParam (например, метод meth_PrintCATEGORY),
PHP код:
void meth_PrintCATEGORY()
{
Cls_PrintStockLabel z_cls_PrintStockLabel;
Z_category z_category;
Cls_PassParam z_cls_PassParam = new Cls_PassParam();
Args _args
;
_args element.args();
<

z_category str2enum(Z_CategoryUserCategoryComboBox.valueStr());
z_cls_PassParam.Pass_z_c(z_category);
<...> } 
,
и в методах, вызывающих форму для печати (например, метод PrintShowReport)
PHP код:
void PrintShowReport(Cls_PassParam cls_passParamcontainer ElemCont)
{
FormDataSource formDataSource;
SysOperationProgress operationProgress;
Z_Category z_c;
<

if (
this.CategMeth(cls_PassParam.Pass_z_c()) != "PR_0")
{
fr.setVar('Categoria''\''this.CategMeth(cls_PassParam.Pass_z_c()) + '\'');
}
<
fr.show();} 
Да, и сам метод CategMeth
PHP код:
str CategMeth(Z_Category z_c)
{switch (
z_c)
{case 
Z_Category::PR1:
return 
"PR_1";
<
>
}
return 
"PR_0"; } 
Еще хочу отметить, что при отладке метод Pass_z_c возвращает 0. И, казалось бы, программка не должна была бы вообще работать... Однако на практике она не работает только во втором случае, в первом же – печатает безотказно и все как положено...
Простите меня, я в самом деле дилетант и прошу вашей помощи. Спасибо заранее огромное!
Старый 14.04.2008, 15:12   #2  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Не очень понятно вы написали.

Но проблема порылась где-то здесь.
Цитата:
Сообщение от Zoe Посмотреть сообщение
X++:
z_category = str2enum(Z_Category, UserCategoryComboBox.valueStr());
z_cls_PassParam.Pass_z_c(z_category);
Если у вас комбобокс типа Z_Category, то не надо заниматься преобразованием в строку и обратно. Просто берите значение.

См. формы с префиксом tutorial_*
В частности там есть примеры работы с диалогом.
__________________
полезное на axForum, github, vk, coub.
Старый 14.04.2008, 17:54   #3  
Zoe is offline
Zoe
Участник
 
14 / 10 (1) +
Регистрация: 23.03.2008
Адрес: Санкт-Петербург
Mazzy, спасибо Вам большое! Я сейчас попробую реализовать Вашу идею. Но все-таки - вопрос у меня остался: почему же при обращении к одному и тому же методу доступа в классе PassParam (поправьте меня, если я ошибаюсь в терминологии - я ведь и в самом деле новичок пока, а в дальнейшем мне бы хотелось более понятно выражаться, оперируя понятиями Axapt'ы и среды MorphX) выполняются два разных действия?! Причем даже, точнее выражаясь, одно-то выполняется без проблем, а второе - вообще не выполняется...
Старый 14.04.2008, 18:27   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Zoe Посмотреть сообщение
Но все-таки - вопрос у меня остался: почему же при обращении к одному и тому же методу доступа в классе PassParam (поправьте меня, если я ошибаюсь в терминологии - я ведь и в самом деле новичок пока, а в дальнейшем мне бы хотелось более понятно выражаться, оперируя понятиями Axapt'ы и среды MorphX) выполняются два разных действия?!
Потому что один раз вы вызываете метод с параметром, а другой раз без параметра.


Цитата:
Сообщение от Zoe Посмотреть сообщение
PHP код:
Cls_PassParam z_cls_PassParam = new Cls_PassParam();
...
z_cls_PassParam.Pass_z_c(z_category); 
,
Здесь с параметром.
следовательно, приватная переменная класса получит значение, указанное здесь в качестве параметра.

Цитата:
Сообщение от Zoe Посмотреть сообщение
PHP код:
fr.setVar('Categoria''\''this.CategMeth(cls_PassParam.Pass_z_c()) + '\''); 
А здесь без параметра.
Сысл такого вызова следующий: я не хочу менять приватную переменную. Я хочу всего лишь прочитать что там было раньше.

я не очень понимаю что там не должно работать.
Если вы хотите продолжать спрашивать, то сократите ваш код еще. Уберите то, что не относится к вопросу. напишите что вы ожидаете увидеть в результате правильной работы.
__________________
полезное на axForum, github, vk, coub.
Старый 14.04.2008, 23:48   #5  
Zoe is offline
Zoe
Участник
 
14 / 10 (1) +
Регистрация: 23.03.2008
Адрес: Санкт-Петербург
Mazzy, спасибо Вам еще раз огромное! Подправила, отладила, даже перезагрузила - все работает. Так что спрашивать больше пока, увы, нечего!.. У Вас замечательный сайт. Спасибо!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Проблема с правами доступа к данным velk DAX: Администрирование 12 14.11.2007 22:58
Проблема доступа через COM Connector wit DAX: Функционал 0 10.07.2006 12:34
Проблема с назначением доступа к таблице Договора Hidden DAX: Администрирование 5 17.11.2004 12:43
OLAP, проблема, ENUM в качестве аналитики z_av DAX: База знаний и проекты 1 22.07.2003 17:55
Проблема с правами доступа sa2002as DAX: Администрирование 1 30.06.2003 13:28

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

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

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