Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Los grupos de interés de la comunidad ahora se han movido de Yammer a Microsoft Viva Engage. Para unirse a una comunidad viva Engage y participar en las últimas discusiones, rellene el formulario Solicitar acceso a Finance and Operations Viva Engage Community y elija la comunidad a la que desea unirse.
En este artículo se describen las funciones en tiempo de ejecución de la sesión.
curExt
Recupera la extensión que se usa para la empresa actual.
str curExt()
Valor devuelto
Extensión de la empresa actual.
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
Recupera el identificador no numérico que representa al usuario actual.
str curUserId()
Valor devuelto
Identificador no numérico que representa al usuario actual.
Example
static void curUserIdExample(Args _arg)
{
str s;
s = curUserId();
print "Current user ID is " + s;
}
funcName
Recupera una cadena que contiene el contexto de función actual.
str funcName()
Valor devuelto
Nombre del método que ejecuta este método.
Observaciones
Si la ejecución está actualmente dentro del miembro de una tabla o clase, el nombre del método tiene como prefijo el nombre de esa tabla o clase.
Example
static void funcNameExample(Args _arg)
{
print "Current function context is " + funcName();
}
getCurrentPartition
Recupera el nombre corto de la partición actual.
str getCurrentPartition()
Valor devuelto
Nombre corto de la partición actual.
Observaciones
La longitud máxima del nombre de la partición de datos que se devuelve es de ocho caracteres.
Example
En el ejemplo de código siguiente se muestran llamadas a la función getCurrentPartition del lenguaje X++ y funciones o métodos relacionados.
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
Recupera el campo RecId de la partición actual.
int64 getCurrentPartitionRecId()
Valor devuelto
Campo RecId de la partición de datos actual.
Observaciones
Para ver un ejemplo de código que se basa en la función getCurrentPartitionRecId , vea How to: Include a Filter for Partition in Direct Transact-SQL.
Example
En el ejemplo de código siguiente se muestran llamadas a la función getCurrentPartitionRecId del lenguaje X++ y funciones o métodos relacionados.
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
Recupera el prefijo de ejecución actual después de llamadas sucesivas a la función setPrefix .
str getPrefix()
Valor devuelto
Prefijo de ejecución actual.
Observaciones
El mecanismo de prefijo facilita la escritura de mensajes de error precisos sobre las transacciones que realiza una aplicación. Dado que se crea una presentación jerárquica en infolog, puede ser más fácil determinar de dónde procede cada error.
Example
static void getPrefixExample(Args _arg)
{
setPrefix("Prefix");
setPrefix("Another prefix");
print getPrefix();
}
sessionId
Recupera el número de sesión de la sesión actual.
int sessionId()
Valor devuelto
Identificador numérico de la sesión actual.
Observaciones
Se asigna un número de sesión cuando se inicia el cliente y se conecta al servidor de objetos de aplicación (AOS). Cada llamada de esta función durante la vida del cliente devuelve el mismo valor entero. El valor devuelto es compatible con el tipo de datos extendido SessionID . Contiene métodos que devuelven información sobre sesiones de usuario individuales.
Example
static void sessionIdExample(Args _arg)
{
int session;
session = sessionId();
print "This session ID is number " + int2Str(session);
}
prmIsDefault
Determina si el parámetro especificado para el método actual tiene el valor predeterminado.
int prmIsDefault(anytype argument)
Parámetros
| Parámetro | Description |
|---|---|
| Argument | Parámetro que se va a probar. |
Valor devuelto
1 si se usó el valor predeterminado para el parámetro; de lo contrario, 0 (cero).
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
Permite al autor de la llamada ejecutar un método X++ en el contexto de seguridad de otro usuario. Esta función se usa con más frecuencia con el procesamiento por lotes.
container runAs(
str userId,
int classId,
str staticMethodName
[,
container params,
str company,
str language,
str partition
])
Parámetros
| Parámetro | Description |
|---|---|
| userId | El usuario que se suplanta. |
| classId | Clase que se va a invocar en la sesión suplantada. |
| staticMethodName | Método de clase que se va a invocar en el nuevo contexto de usuario. |
| parámetros | Parámetros que se van a pasar al método ; opcional. |
| empresa | La empresa seleccionada para la sesión suplantada; opcional. |
| lenguaje | Idioma seleccionado para la sesión suplantada; opcional. |
| partición | Clave de partición del tipo devuelto por la función getCurrentPartition ; opcional. |
Valor devuelto
Contenedor que contiene el valor devuelto o los valores del método al que llama la función runAs , si se devolvieron valores.
Observaciones
Esta función permite ejecutar código como otro usuario. Esta funcionalidad presenta una amenaza de seguridad. Por lo tanto, esta función se ejecuta en Seguridad de acceso al código. Las llamadas a esta función en el servidor requieren permiso de la clase RunAsPermission . Cada uso de esta interfaz de programación de aplicaciones (API) debe modelarse con amenazas. Si se detecta una vulnerabilidad de seguridad, valide la entrada a esta API. El depurador puede omitir los puntos de interrupción que se encuentran en un método al que se llama mediante la función runAs . El código X++ ejecutado por la función runAs debe ejecutarse como Lenguaje intermedio común (CIL) de Microsoft .NET Framework. Si CIL no se ha generado para el método estático de destino, un mensaje de error indica que no se encuentra el método. El tipo de sistema PartitionKey es el tipo exacto del parámetro de partición . PartitionKey es una cadena que tiene una longitud máxima de ocho caracteres.
Example
En el ejemplo siguiente se llama al método runDueDateEventsForUser en la clase EventJobDueDate . El código se ejecuta en el contexto de seguridad de un usuario. Ejecute este código aplicándolo a un método en una nueva clase.
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
Establece el prefijo para el ámbito de ejecución actual.
int setPrefix(str _prefix)
Parámetros
| Parámetro | Description |
|---|---|
| _prefijo | Prefijo para el ámbito de ejecución actual. |
Valor devuelto
0 si el prefijo se estableció correctamente.
Observaciones
El prefijo completo de la ejecución se puede capturar mediante la función getPrefix . Cuando se deja el ámbito, el prefijo se restablece automáticamente al nivel anterior. El mecanismo de prefijo facilita la escritura de mensajes de error precisos sobre las transacciones que realiza una aplicación. Por ejemplo, el método AA llama al método BB y cada método llama a la función setPrefix . Los mensajes que escribe el método BB en el Infolog aparecen anidados en una jerarquía. Cuando finaliza el método BB y el control vuelve al método AA , el prefijo establecido por el método BB no se adjunta a los mensajes posteriores.
Example
static void setPrefixExample(Args _arg)
{
int i;
i = setPrefix("Prefix");
print i;
}