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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.05.2004, 07:45   #1  
djoker is offline
djoker
Участник
Аватар для djoker
 
83 / 10 (1) +
Регистрация: 28.05.2004
Адрес: Красноярск
? есть ли в AXAPTA глобальные переменные ?
Я ещё новичок, и не знаю как делать дальше свой диплом, а проблема такая:
появилась необходимость хранить некоторые значения переменных,
например надо хранить данные не таблицей, а просто числами, строками,
или массивами.
Вопрос - как это сделать и можно ли?
__________________
Смотрим в книгу - видим фигу.
Старый 28.05.2004, 10:20   #2  
Vasilenko Alexsandr is offline
Vasilenko Alexsandr
Участник
Дети Юза
 
90 / 16 (1) ++
Регистрация: 05.09.2002
Адрес: Одесса
Я думаю Вам стоит использовать глобальные макросы, которые можно создать в АОТ и определить там макропеременные! А затем использовать эти макропеременные в любом месте Вашего кода, предварительно конечно, подключив нужный макрос.
Старый 28.05.2004, 12:38   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
нет-нет-нет.
макросы - это константы.
а вопрос был про переменные.

см. класс applicatioin или global.
В application можно есть механизм инициализации при входе, в global - нет.

Но лучше и правильнее использовать методику хранения в sysLastValue при помощи pack/unpack. sysLastValue позволяет хранить и передавать данным между сессиями.

и... хм, а куда сейчас ссылку делать?... в общем документ о глоабльных переменных, и методах pack/unpack

Вот например, http://forum.mazzy.ru/index.php?showtopic=172
или вот http://www.axforum.info/forums/showt...s=&threadid=30
Старый 28.05.2004, 16:24   #4  
ta_and is offline
ta_and
Участник
 
226 / 122 (5) +++++
Регистрация: 26.02.2002
Адрес: СПб
Не нужны в Ахарте глобальные переменные... ИМХУ.
Старый 28.05.2004, 17:28   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
согласен с ta_and
в Аксапте почти нет случаев, когда действительно нужны глобальные переменные.
Старый 29.05.2004, 07:33   #6  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
хотя...
Было как-то, использовал для хранения состояния окна - когда окно открывалось, глобальная переменная инкриментировалась. Использовалось для блокировки открытия нового окна, если одно (n) уже открыто.
Старый 29.05.2004, 11:21   #7  
ravil is offline
ravil
Участник
 
133 / 18 (1) ++
Регистрация: 15.04.2003
А как быть в случае, если я хочу создать один единственный экземпляр класса на все приложение или по экземпляру на пользователя? Как отслеживать, есть уже экземпляр (тогда новый не нужно создавать) или еще нет? На Java для этого можно использовать static member самого класса, а на X++ у класса их нет, здесь как быть без глобальных переменных?
Старый 29.05.2004, 12:51   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
вам же сказали: вставляйте в application или в global, если так уж надо сделать глобальную в пределах сессии переменную.

Причем, обратите внимание на вашу оговорку - вы хотите создать глобальную переменную "на пользователя". Один пользователь может зайти несколько раз. Тогда будет несколько сессий. Любоые переменные создаюются в пределах СЕССИИ.

И еще раз (вам уже говорили об этом): Если вы хотите запоминать значения между сессиями - пользуйтесь механизмом sysLastValue.

Другое дело, что, скорее всего, ваша исходная задача решается совсем не так.
Скорее всего, вы выбрали не тот инструмент для решения.
Но это уже ваши проблемы. Вы же не сообщили для чего вам это надо.
Старый 29.05.2004, 12:56   #9  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Re: хотя...
Цитата:
Изначально опубликовано George Nordic
Было как-то, использовал для хранения состояния окна - когда окно открывалось, глобальная переменная инкриментировалась. Использовалось для блокировки открытия нового окна, если одно (n) уже открыто.
это говорит, что вы скорее всего неправильно решали неправильно посталенную задачу.
Axapta - типичное приложение, построенное по стандарту MDI.
Превращать ее в SDI-приложение - бороться с ветрянными мельницами. Можно. Но эффективно ли? И приближает ли такая борьба к результату?


И еще раз. Я не пртив программирования. Я за то, чтобы решались проблемы пользователей эффективными способами. Я за то, чтобы имеющийся инструментарий использовался максимально полно.

Конечно же, если у вас есть время и деньги, то почему бы и не сделать учебный проект?
Старый 29.05.2004, 14:10   #10  
mifi is offline
mifi
Microsoft Dynamics
Сотрудники Microsoft Dynamics
 
173 / 89 (3) ++++
Регистрация: 24.07.2002
Глобальные переменные в Аксапта применяются, в основном, для задач оптимизации производительности (кэширование) и правильным местом для их размещения является класс Info, а не Application. Класс Global не предназначен для использования каких-либо переменных, а содержит одни статические методы-функции.
Старый 29.05.2004, 14:36   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
или так.
Старый 29.05.2004, 14:46   #12  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано mifi
Класс Global не предназначен для использования каких-либо переменных, а содержит одни статические методы-функции.
Кстати.

Здесь все правильно. Но я и говорил о том, что в Global нет механизма инициализации. при входе.

Для некоторых глобальных вещей имеет смысл применять следующую методику: в Global определяется статический метод и privet переменная. В коде идет обращение к методу. В методе делается проверка и если переменная не инициализирована, то сначала выполняется инициализация, а потом уже сам метод:

примерно так:
PHP код:
public class Global
{
      
MyType myVar;
}

static 
myType mySuperMethod()
{
     if( !
myVar )
     {
           
// инициализация
     
}
     
// что-то делаем
     
return myVar;

Этот прием часто используется при программировании пропертей в COM- и ActiveX-объектах.

Плюс состоит в том, что инициализация и выделение памяти происходит автоматически только в момент первого обращения к методу. Но, естественно, у такого подхода есть минусы. Нужно взвешивать и принимать решения.
Старый 29.05.2004, 18:36   #13  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Developer's guide -> Using global variables
За это сообщение автора поблагодарили: mazzy (2).
Старый 29.05.2004, 18:39   #14  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
Re: есть ли в AXAPTA глобальные переменные ?
Цитата:
Изначально опубликовано djoker
Я ещё новичок, и не знаю как делать дальше свой диплом
о как.. диплом на X++

оригинальная подпись.. с правилами форума Вы уже успели ознакомиться?
Старый 29.05.2004, 22:02   #15  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Изначально опубликовано Vadik
Developer's guide -> Using global variables
Vadik, спасибо!
Буду знать. Все уже придумано до нас.
Старый 01.06.2004, 10:22   #16  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Как отслеживать, есть уже экземпляр (тогда новый не нужно создавать) или еще нет? На Java для этого можно использовать static member самого класса, а на X++ у класса их нет, здесь как быть без глобальных переменных?
На Java я бы использовал паттерн Singleton (в основе которого лежит все таже статическая переменная), а на X++ здесь действительно возможностей гораздо меньше.
Хотя класс SysGlobalCache все-таки может чем-то помочь

Цитата:
Изначально опубликованно mazzy: Конечно же, если у вас есть время и деньги, то почему бы и не сделать учебный проект?
А если есть люди, готовые платить за это деньги, а главное - не желающие прислушиваться к советам и настаивающие на своем, то почему на этом и не заработать
Старый 01.06.2004, 11:28   #17  
DenisS is offline
DenisS
Участник
 
65 / 24 (1) +++
Регистрация: 01.09.2003
2mazzy
По поводу Global:
как это в
PHP код:
статическом 
методе класса обратиться к переменной экземпляра класса ???
Старый 01.06.2004, 11:30   #18  
DenisS is offline
DenisS
Участник
 
65 / 24 (1) +++
Регистрация: 01.09.2003
Извините, не сработал тэг.
Имелось ввиду:
Как это в СТАТИЧЕСКОМ методе класса обратиться к переменной ЭКЗЕМПЛЯРА класса ???
Старый 01.06.2004, 12:10   #19  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
Как это в СТАТИЧЕСКОМ методе класса обратиться к переменной ЭКЗЕМПЛЯРА класса ???
Хм... Если только создав в этом методе экземпляр класса
Старый 01.06.2004, 12:25   #20  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,479 / 1250 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Вступлюсь за себя.
Цитата:
Изначально опубликовано mazzy
это говорит, что вы скорее всего неправильно решали неправильно посталенную задачу.
Axapta - типичное приложение, построенное по стандарту MDI.
Превращать ее в SDI-приложение - бороться с ветрянными мельницами. Можно. Но эффективно ли? И приближает ли такая борьба к результату?
1) Не ругайте, не уточнив деталей. Я как раз открывал _дополнительное_ окно, тем самым поддерживая идеологию MDI. Но если этой проверки бы не было, то это было бы "слишком MDI" $)
Цитата:
И еще раз. Я не пртив программирования. Я за то, чтобы решались проблемы пользователей эффективными способами. Я за то, чтобы имеющийся инструментарий использовался максимально полно.
2) Любой каприз за Ваши деньги. (с) Colambus IT Partners $)
Теги
глобальная переменная

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Глобальные переменные Максим П. DAX: Программирование 6 04.07.2007 09:59
axaptabuilder: How to build Axapta application from XPO files stored in Visual Source Safe. Blog bot DAX Blogs 0 12.04.2007 16:10
axaptabuilder: How to setup Axapta batch server running as user defined windows service Blog bot DAX Blogs 0 28.10.2006 16:47
Работа хозрасчетными департаментами компании в Axapta. Есть или нет? Andy J. DAX: Функционал 3 28.03.2005 00:33
Введение в Аксапту Роман Кошелев DAX: Прочие вопросы 0 18.12.2001 14:00

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

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

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