14.06.2022, 12:38 | #1 |
Участник
|
isAOS vs isRunningOnServer
А кто-то может рассказать, чем отличается
X++: xGlobal::clientKind() == ClientType::Server от X++: xGlobal::isAOS() на разных версиях аксапты (3-2012) ? |
|
14.06.2022, 14:06 | #2 |
Участник
|
по-моему, isAOS() - это какой-то атавизм со времен трешки, когда можно было запускать толстого клиента без АОСа.
|
|
14.06.2022, 17:42 | #3 |
Участник
|
Я считал, что
X++: ClientType::Server п. А X++: xGlobal::isAOS() Еще до Ax3 включительно было перечисление AOSClientMode (например из метода aosClientMode класса Session), но с DAX4 там всегда возвращается, что работает тонкий клиент. Может что-то считаю ошибочно, но вроде такой подход помогал не запутаться. |
|
14.06.2022, 17:49 | #4 |
Участник
|
Хотя вот только что увидел ,что для определения того, что работаем не на клиенте, а на сервере используется вполне себе:
X++: xGlobal::clientKind() == ClientType::Server Видимо стоит иногда задуматься и пересмотреть привычки. |
|
14.06.2022, 17:53 | #5 |
Участник
|
А не, всё нормально.
Это зависит от того, откуда именно берем ClientType. Если из X++: new Session().clientKind() == ClientType::Server; А если из: X++: xGlobal::clientKind() == ClientType::Server; Что такое X++: xGlobal::isAOS() PS вообще использовать одну сущность для определения разных понятий было не очень хорошей идеей авторов Аксы. |
|
15.06.2022, 07:46 | #6 |
Участник
|
Судя по перекрестным ссылкам isAos в 365ой(нашлось штук 5 ссылок, возможно в более младших версиях их больше) используется в качестве костыля и связано со спецификой работы итераторов - Нюансы класса SetIterator при вызове на клиенте/сервере
Примеры X++: static SysDBInformation construct(boolean remotePossible = true) { SysDBInformation sysDBInformation; boolean loadRemote = false; ; if (isAOS()) { if (xGlobal::clientKind() == ClientType::Client) if (remotePossible) loadRemote = true; } X++: CustVendOpenTransEngine_RU\createMapCVTrans_FactureJourAmount if (isAOS()) //We work by AOs tmpMap = Map::create(factureCalcBalances.mapSettledAmounts().pack()); else tmpMap = factureCalcBalances.mapSettledAmounts();
__________________
Sergey Nefedov |
|
18.06.2022, 00:25 | #7 |
Участник
|
я ж и говорю: атавизм с тех времен, когда еще была доступна двухзвенка, т.е. способ различать, есть в наличии АОС или нет. После 3.0 - не актуально.
куча перекрестных ссылок с кодом вида X++: if (isAOS() && clientKind() == ClientType::Client) Последний раз редактировалось gl00mie; 18.06.2022 в 00:30. |
|