Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Замечание
Группы интересов сообщества теперь переехали из Yammer в Microsoft Viva Engage. Чтобы присоединиться к сообществу Viva Engage и принять участие в последних обсуждениях, заполните форму " Запрос доступа к финансам и операциям Viva Engage Community " и выберите сообщество, к которому вы хотите присоединиться.
В этой статье описываются функции времени выполнения сеанса.
curExt
Извлекает расширение, используемое для текущей компании.
str curExt()
Возвращаемое значение
Расширение для текущей компании.
Example
static void curExtExample(Args _arg)
{
str s;
// Sets s to the extension of the current company.
s = curExt();
print "Current extension is " + s;
}
curUserId
Извлекает ненумерный идентификатор, представляющий текущего пользователя.
str curUserId()
Возвращаемое значение
Ненумерный идентификатор, представляющий текущего пользователя.
Example
static void curUserIdExample(Args _arg)
{
str s;
s = curUserId();
print "Current user ID is " + s;
}
funcName
Извлекает строку, содержащую текущий контекст функции.
str funcName()
Возвращаемое значение
Имя метода, выполняющего этот метод.
Замечания
Если выполнение в настоящее время находится в элементе таблицы или класса, имя метода префиксируется именем этой таблицы или класса.
Example
static void funcNameExample(Args _arg)
{
print "Current function context is " + funcName();
}
getCurrentPartition
Извлекает короткое имя текущей секции.
str getCurrentPartition()
Возвращаемое значение
Короткое имя текущей секции.
Замечания
Максимальная длина возвращаемого имени секции данных составляет восемь символов.
Example
В следующем примере кода показаны вызовы и выходные данные, функция getCurrentPartition языка X++ и связанные функции или методы.
static public void Main(Args _args) // X++ method.
{
int64 iPartition;
str sPartition;
SelectableDataArea oSelectableDataArea; // System ExDT.
iPartition = getCurrentPartitionRecId();
sPartition = getcurrentpartition();
oSelectableDataArea = Global::getCompany( tableNum(BankAccountTable) );
Global::info( strFmt(
"getCurrentPartitionRecId =%1 , getCurrentPartition =%2 , getCompany =%3",
iPartition, sPartition, oSelectableDataArea) );
}
/**** Pasted from Infolog window:
Message_@SYS14327 (03:42:38 pm)
getCurrentPartitionRecId =5637144576 , getCurrentPartition =initial , getCompany =ceu
****/
getCurrentPartitionRecId
Извлекает поле RecId текущей секции.
int64 getCurrentPartitionRecId()
Возвращаемое значение
Поле RecId текущей секции данных.
Замечания
Чтобы просмотреть пример кода, основанный на функции getCurrentPartitionRecId , см. статью "Включение фильтра для секции" в Direct Transact-SQL.
Example
В следующем примере кода показаны вызовы и выходные данные, функция getCurrentPartitionRecId языка X++ и связанные функции или методы.
static public void Main(Args _args) // X++ method.
{
int64 iPartition;
str sPartition;
SelectableDataArea oSelectableDataArea; // System ExDT.
iPartition = getCurrentPartitionRecId();
sPartition = getcurrentpartition();
oSelectableDataArea = Global::getCompany( tableNum(BankAccountTable) );
Global::info( strFmt(
"getCurrentPartitionRecId =%1 , getCurrentPartition =%2 , getCompany =%3",
iPartition, sPartition, oSelectableDataArea) );
}
/**** Pasted from Infolog window:
Message_@SYS14327 (03:42:38 pm)
getCurrentPartitionRecId =5637144576 , getCurrentPartition =initial , getCompany =ceu
****/
getPrefix
Извлекает текущий префикс выполнения после последовательных вызовов функции setPrefix .
str getPrefix()
Возвращаемое значение
Текущий префикс выполнения.
Замечания
Механизм префикса упрощает написание точных сообщений об ошибках о транзакциях, выполняемых приложением. Так как иерархический дисплей создается в infolog, его можно легко определить, откуда произошла каждая ошибка.
Example
static void getPrefixExample(Args _arg)
{
setPrefix("Prefix");
setPrefix("Another prefix");
print getPrefix();
}
идентификатор сессии
Извлекает номер сеанса текущего сеанса.
int sessionId()
Возвращаемое значение
Числовый идентификатор текущего сеанса.
Замечания
Номер сеанса назначается при запуске клиента и подключении к серверу объектов приложения (AOS). Каждый вызов этой функции во время жизни клиента возвращает одно целочисленное значение. Возвращаемое значение совместимо с расширенным типом данных SessionID . Содержит методы, возвращающие сведения о отдельных сеансах пользователей.
Example
static void sessionIdExample(Args _arg)
{
int session;
session = sessionId();
print "This session ID is number " + int2Str(session);
}
prmIsDefault
Определяет, имеет ли указанный параметр для текущего метода значение по умолчанию.
int prmIsDefault(anytype argument)
Параметры
| Параметр | Description |
|---|---|
| Аргумент | Параметр для тестирования. |
Возвращаемое значение
1 , если использовалось значение по умолчанию для параметра; в противном случае — 0 (ноль).
Example
static void prmIsDefaultExample(Args _arg)
{
void fn(boolean b = true, int j = 42)
{
if (prmIsDefault(b) == 1)
{
print "First parameter is using the default value.";
}
else
{
print "First parameter is not using the default value.";
}
}
fn();
fn(false);
}
runAs
Позволяет вызывающему объекту запускать метод X++ в контексте безопасности другого пользователя. Эта функция чаще всего используется с пакетной обработкой.
container runAs(
str userId,
int classId,
str staticMethodName
[,
container params,
str company,
str language,
str partition
])
Параметры
| Параметр | Description |
|---|---|
| userId | Пользователь для олицетворения. |
| classId | Класс, вызывающий в олицетворенный сеанс. |
| staticMethodName | Метод класса для вызова в новом контексте пользователя. |
| params | Параметры, передаваемые методу; необязательный. |
| компания | Компания, выбранная для олицетворенного сеанса; необязательный. |
| language | Язык, выбранный для олицетворенного сеанса; необязательный. |
| partition | Ключ секции типа, возвращаемого функцией getCurrentPartition ; необязательный. |
Возвращаемое значение
Контейнер, содержащий возвращаемое значение или значения метода, вызываемого функцией runAs , если были возвращены какие-либо значения.
Замечания
Эта функция позволяет запускать код от имени другого пользователя. Эта возможность представляет угрозу безопасности. Поэтому эта функция выполняется в разделе "Безопасность доступа к коду". Вызовы этой функции на сервере требуют разрешения из класса RunAsPermission . Каждое использование этого интерфейса программирования приложения (API) должно быть моделировано. Если обнаружена уязвимость безопасности, проверьте входные данные в этом API. Отладчик может игнорировать точки останова, расположенные в методе, который вызывается с помощью функции runAs . Код X++, выполняемый функцией runAs , должен выполняться как Общий промежуточный язык Microsoft .NET Framework (CIL). Если CIL не был создан для целевого статического метода, сообщение об ошибке указывает, что метод не найден. Системный тип PartitionKey — это точный тип параметра секции . PartitionKey — это строка, которая имеет максимальную длину восьми символов.
Example
В следующем примере вызывается метод runDueDateEventsForUser в классе EventJobDueDate . Код выполняется в контексте безопасности пользователя. Запустите этот код, применяя его к методу в новом классе.
server static public void Main(Args _args)
{
RunAsPermission perm;
UserId runAsUser;
SysUserInfo userInfo;
userInfo = SysUserInfo::find();
runAsUser = userInfo.Id;
perm = new RunAsPermission(runAsUser);
perm.assert();
runAs(runAsUser, classnum(EventJobDueDate), "runDueDateEventsForUser");
CodeAccessPermission::revertAssert();
}
setPrefix
Задает префикс для текущей области выполнения.
int setPrefix(str _prefix)
Параметры
| Параметр | Description |
|---|---|
| _приставка | Префикс текущей области выполнения. |
Возвращаемое значение
Значение 0 , если префикс был успешно установлен.
Замечания
Полный префикс выполнения можно получить с помощью функции getPrefix . Когда область слева, префикс автоматически сбрасывается на предыдущий уровень. Механизм префикса упрощает написание точных сообщений об ошибках о транзакциях, выполняемых приложением. Например, метод AA вызывает метод BB , а каждый метод вызывает функцию setPrefix . Сообщения, которые метод BB записывает в infolog, отображаются в иерархии. Когда метод BB заканчивается, и элемент управления возвращается в метод AA , префикс, заданный методом BB , не присоединяется к последующим сообщениям.
Example
static void setPrefixExample(Args _arg)
{
int i;
i = setPrefix("Prefix");
print i;
}