28.05.2004, 07:45 | #1 |
Участник
|
есть ли в AXAPTA глобальные переменные ?
Я ещё новичок, и не знаю как делать дальше свой диплом, а проблема такая:
появилась необходимость хранить некоторые значения переменных, например надо хранить данные не таблицей, а просто числами, строками, или массивами. Вопрос - как это сделать и можно ли?
__________________
Смотрим в книгу - видим фигу. |
|
28.05.2004, 10:20 | #2 |
Участник
|
Я думаю Вам стоит использовать глобальные макросы, которые можно создать в АОТ и определить там макропеременные! А затем использовать эти макропеременные в любом месте Вашего кода, предварительно конечно, подключив нужный макрос.
|
|
28.05.2004, 12:38 | #3 |
Участник
|
нет-нет-нет.
макросы - это константы. а вопрос был про переменные. см. класс 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 |
Участник
|
Не нужны в Ахарте глобальные переменные... ИМХУ.
|
|
28.05.2004, 17:28 | #5 |
Участник
|
согласен с ta_and
в Аксапте почти нет случаев, когда действительно нужны глобальные переменные. |
|
29.05.2004, 07:33 | #6 |
Модератор
|
хотя...
Было как-то, использовал для хранения состояния окна - когда окно открывалось, глобальная переменная инкриментировалась. Использовалось для блокировки открытия нового окна, если одно (n) уже открыто.
|
|
29.05.2004, 11:21 | #7 |
Участник
|
А как быть в случае, если я хочу создать один единственный экземпляр класса на все приложение или по экземпляру на пользователя? Как отслеживать, есть уже экземпляр (тогда новый не нужно создавать) или еще нет? На Java для этого можно использовать static member самого класса, а на X++ у класса их нет, здесь как быть без глобальных переменных?
|
|
29.05.2004, 12:51 | #8 |
Участник
|
вам же сказали: вставляйте в application или в global, если так уж надо сделать глобальную в пределах сессии переменную.
Причем, обратите внимание на вашу оговорку - вы хотите создать глобальную переменную "на пользователя". Один пользователь может зайти несколько раз. Тогда будет несколько сессий. Любоые переменные создаюются в пределах СЕССИИ. И еще раз (вам уже говорили об этом): Если вы хотите запоминать значения между сессиями - пользуйтесь механизмом sysLastValue. Другое дело, что, скорее всего, ваша исходная задача решается совсем не так. Скорее всего, вы выбрали не тот инструмент для решения. Но это уже ваши проблемы. Вы же не сообщили для чего вам это надо. |
|
29.05.2004, 12:56 | #9 |
Участник
|
Re: хотя...
Цитата:
Изначально опубликовано George Nordic
Было как-то, использовал для хранения состояния окна - когда окно открывалось, глобальная переменная инкриментировалась. Использовалось для блокировки открытия нового окна, если одно (n) уже открыто. Axapta - типичное приложение, построенное по стандарту MDI. Превращать ее в SDI-приложение - бороться с ветрянными мельницами. Можно. Но эффективно ли? И приближает ли такая борьба к результату? И еще раз. Я не пртив программирования. Я за то, чтобы решались проблемы пользователей эффективными способами. Я за то, чтобы имеющийся инструментарий использовался максимально полно. Конечно же, если у вас есть время и деньги, то почему бы и не сделать учебный проект? |
|
29.05.2004, 14:10 | #10 |
Microsoft Dynamics
|
Глобальные переменные в Аксапта применяются, в основном, для задач оптимизации производительности (кэширование) и правильным местом для их размещения является класс Info, а не Application. Класс Global не предназначен для использования каких-либо переменных, а содержит одни статические методы-функции.
|
|
29.05.2004, 14:36 | #11 |
Участник
|
или так.
|
|
29.05.2004, 14:46 | #12 |
Участник
|
Цитата:
Изначально опубликовано mifi
Класс Global не предназначен для использования каких-либо переменных, а содержит одни статические методы-функции. Здесь все правильно. Но я и говорил о том, что в Global нет механизма инициализации. при входе. Для некоторых глобальных вещей имеет смысл применять следующую методику: в Global определяется статический метод и privet переменная. В коде идет обращение к методу. В методе делается проверка и если переменная не инициализирована, то сначала выполняется инициализация, а потом уже сам метод: примерно так: PHP код:
Плюс состоит в том, что инициализация и выделение памяти происходит автоматически только в момент первого обращения к методу. Но, естественно, у такого подхода есть минусы. Нужно взвешивать и принимать решения. |
|
29.05.2004, 18:36 | #13 |
Модератор
|
Developer's guide -> Using global variables
|
|
|
За это сообщение автора поблагодарили: mazzy (2). |
29.05.2004, 18:39 | #14 |
Модератор
|
Re: есть ли в AXAPTA глобальные переменные ?
Цитата:
Изначально опубликовано djoker
Я ещё новичок, и не знаю как делать дальше свой диплом оригинальная подпись.. с правилами форума Вы уже успели ознакомиться? |
|
29.05.2004, 22:02 | #15 |
Участник
|
Цитата:
Изначально опубликовано Vadik
Developer's guide -> Using global variables Буду знать. Все уже придумано до нас. |
|
01.06.2004, 10:22 | #16 |
Moderator
|
Цитата:
Как отслеживать, есть уже экземпляр (тогда новый не нужно создавать) или еще нет? На Java для этого можно использовать static member самого класса, а на X++ у класса их нет, здесь как быть без глобальных переменных?
Хотя класс SysGlobalCache все-таки может чем-то помочь Цитата:
Изначально опубликованно mazzy: Конечно же, если у вас есть время и деньги, то почему бы и не сделать учебный проект?
|
|
01.06.2004, 11:28 | #17 |
Участник
|
2mazzy
По поводу Global: как это в PHP код:
|
|
01.06.2004, 11:30 | #18 |
Участник
|
Извините, не сработал тэг.
Имелось ввиду: Как это в СТАТИЧЕСКОМ методе класса обратиться к переменной ЭКЗЕМПЛЯРА класса ??? |
|
01.06.2004, 12:10 | #19 |
Moderator
|
Цитата:
Как это в СТАТИЧЕСКОМ методе класса обратиться к переменной ЭКЗЕМПЛЯРА класса ???
|
|
01.06.2004, 12:25 | #20 |
Модератор
|
Вступлюсь за себя.
Цитата:
Изначально опубликовано mazzy
это говорит, что вы скорее всего неправильно решали неправильно посталенную задачу. Axapta - типичное приложение, построенное по стандарту MDI. Превращать ее в SDI-приложение - бороться с ветрянными мельницами. Можно. Но эффективно ли? И приближает ли такая борьба к результату? Цитата:
И еще раз. Я не пртив программирования. Я за то, чтобы решались проблемы пользователей эффективными способами. Я за то, чтобы имеющийся инструментарий использовался максимально полно.
|
|
Теги |
глобальная переменная |
|
|