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.
Este artículo describe las funciones de ejecución de la sesión.
curExt
Recupera la extensión que usa la empresa actual.
str curExt()
Return value
La extensión para 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()
Return value
El 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()
Return value
Nombre del método que ejecuta este método.
Remarks
Si la ejecución se encuentra actualmente dentro del miembro de una tabla o clase, el nombre del método tiene el prefijo del 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()
Return value
Nombre abreviado de la partición actual.
Remarks
La longitud máxima del nombre de partición de datos que se devuelve es de ocho caracteres.
Example
En el ejemplo de código siguiente se muestran las llamadas y la salida de la función getCurrentPartition del lenguaje X++ y las 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()
Return value
El campo RecId de la partición de datos actual.
Remarks
Para ver un ejemplo de código que se basa en la función getCurrentPartitionRecId , vea Cómo: Incluir un filtro para la partición en Direct Transact-SQL.
Example
En el ejemplo de código siguiente se muestran las llamadas y la salida de la función getCurrentPartitionRecId del lenguaje X++ y las 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()
Return value
El prefijo de ejecución actual.
Remarks
El mecanismo de prefijo hace que sea más sencillo escribir mensajes de error precisos sobre las transacciones que realiza una aplicación. Dado que se crea una visualización jerárquica en el Infolog, puede ser más fácil determinar de dónde proviene 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()
Return value
El ID numérico de la sesión actual.
Remarks
Asigna un número de sesión cuando inicies el cliente y te conectes al Application Object Server (AOS). Cada llamada a esta función durante la vida útil del cliente devuelve el mismo valor entero. El valor devuelto es compatible con el tipo de datos extendido SessionID . Los métodos contains 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)
Parameters
| Parameter | Description |
|---|---|
| Argument | El parámetro a probar. |
Return value
1 si se utilizó 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 utiliza con mayor frecuencia con el procesamiento por lotes.
container runAs(
str userId,
int classId,
str staticMethodName
[,
container params,
str company,
str language,
str partition
])
Parameters
| Parameter | Description |
|---|---|
| userId | El usuario al que se va a suplantar. |
| classId | La 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. |
| params | Los parámetros que se van a pasar al método; opcional. |
| company | La empresa seleccionada para la sesión suplantada; opcional. |
| language | El idioma seleccionado para la sesión suplantada; opcional. |
| partition | Clave de partición del tipo devuelto por la función getCurrentPartition ; opcional. |
Return value
Un contenedor que contiene el valor o valores de retorno del método que llama la función runAs , si es que se devuelve algún valor.
Remarks
Esta función permite ejecutar código como otro usuario. Esta capacidad presenta una amenaza para la seguridad. Por lo tanto, esta función se ejecuta en Seguridad de acceso de 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 según amenazas. Si se detecta una vulnerabilidad de seguridad, valide la entrada a esta API. El depurador puede ignorar puntos de interrupción que están localizados en un método que llama la función runAs . El código X++ que ejecuta la función runAs debe ejecutarse como Microsoft .NET Framework Common Intermediate Language (CIL). Si no se genera CIL para el método estático objetivo, un mensaje de error indica que el método no se ha encontrado. El tipo de sistema PartitionKey es el tipo exacto del parámetro partition . 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)
Parameters
| Parameter | Description |
|---|---|
| _prefix | Prefijo del ámbito de ejecución actual. |
Return value
0 si el prefijo se establece correctamente.
Remarks
Usa la función getPrefix para obtener el prefijo completo de la ejecución. Cuando termina el ámbito, el prefijo se reinicia automáticamente al nivel anterior. El mecanismo de prefijo facilita la emisión 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 el método BB escribe en el Infolog aparecen anidados en una jerarquía. Cuando el método BB termina y el control vuelve al método AA , el prefijo que el conjunto de métodos BB no se asocia a mensajes posteriores.
Example
static void setPrefixExample(Args _arg)
{
int i;
i = setPrefix("Prefix");
print i;
}