Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Observação
Os grupos de interesse da comunidade passaram do Yammer para o Microsoft Viva Engage. Para participar de uma comunidade Viva Engage e participar das últimas discussões, preencha o formulário Solicitar acesso ao Finance and Operations Viva Engage Community e escolha a comunidade à qual deseja participar.
Este artigo descreve as funções de tempo de execução da sessão.
curExt
Recupera a extensão usada para a empresa atual.
str curExt()
Valor de retorno
A extensão para a empresa atual.
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 a ID não numérica que representa o usuário atual.
str curUserId()
Valor de retorno
A ID não numérica que representa o usuário atual.
Example
static void curUserIdExample(Args _arg)
{
str s;
s = curUserId();
print "Current user ID is " + s;
}
funcName
Recupera uma cadeia de caracteres que contém o contexto da função atual.
str funcName()
Valor de retorno
O nome do método que está executando esse método.
Observações
Se a execução estiver atualmente dentro do membro de uma tabela ou classe, o nome do método será prefixado com o nome dessa tabela ou classe.
Example
static void funcNameExample(Args _arg)
{
print "Current function context is " + funcName();
}
getCurrentPartition
Recupera o nome abreviado da partição atual.
str getCurrentPartition()
Valor de retorno
O nome curto da partição atual.
Observações
O comprimento máximo do nome da partição de dados que é retornado é de oito caracteres.
Example
O exemplo de código a seguir mostra chamadas e saída da função getCurrentPartition da linguagem X++ e funções ou 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 o campo RecId da partição atual.
int64 getCurrentPartitionRecId()
Valor de retorno
O campo RecId da partição de dados atual.
Observações
Para ver um exemplo de código que depende da função getCurrentPartitionRecId, consulte Como incluir um filtro para partição no Direct Transact-SQL.
Example
O exemplo de código a seguir mostra chamadas e saída da função getCurrentPartitionRecId da linguagem X++ e funções ou 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 o prefixo de execução atual após sucessivas chamadas para a função setPrefix .
str getPrefix()
Valor de retorno
O prefixo de execução atual.
Observações
O mecanismo de prefixo torna mais simples escrever mensagens de erro precisas sobre as transações que um aplicativo executa. Como uma exibição hierárquica é criada no Infolog, pode ser mais fácil determinar de onde cada erro veio.
Example
static void getPrefixExample(Args _arg)
{
setPrefix("Prefix");
setPrefix("Another prefix");
print getPrefix();
}
ID de sessão
Recupera o número da sessão atual.
int sessionId()
Valor de retorno
A ID numérica da sessão atual.
Observações
Um número de sessão é atribuído quando o cliente é iniciado e se conecta ao Application Object Server (AOS). Cada chamada desta função durante a vida útil do cliente retorna o mesmo valor inteiro. O valor retornado é compatível com o tipo de dados estendido SessionID . Os métodos contains retornam informações sobre sessões de usuário individuais.
Example
static void sessionIdExample(Args _arg)
{
int session;
session = sessionId();
print "This session ID is number " + int2Str(session);
}
prmIsDefault
Determina se o parâmetro especificado para o método atual tem o valor padrão.
int prmIsDefault(anytype argument)
Parâmetros
| Parâmetro | Description |
|---|---|
| Argument | O parâmetro a testar. |
Valor de retorno
1 se foi utilizado o valor padrão para o parâmetro; caso contrário, 0 (zero).
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 que o chamador execute um método X++ no contexto de segurança de outro usuário. Esta função é mais frequentemente usada com processamento em lote.
container runAs(
str userId,
int classId,
str staticMethodName
[,
container params,
str company,
str language,
str partition
])
Parâmetros
| Parâmetro | Description |
|---|---|
| userId | O usuário a personificar. |
| classId | A classe a ser invocada na sessão representada. |
| staticMethodName | O método de classe a ser invocado no novo contexto de usuário. |
| parâmetros | Os parâmetros a passar para o método; opcional. |
| empresa | A empresa selecionada para a sessão personificada; opcional. |
| linguagem | O idioma selecionado para a sessão representada; opcional. |
| partition | A chave de partição do tipo que é retornada pela função getCurrentPartition ; opcional. |
Valor de retorno
Um contêiner que contém o valor de retorno ou valores do método que é chamado pela função runAs , se quaisquer valores foram retornados.
Observações
Esta função torna possível executar o código como outro usuário. Esta capacidade representa uma ameaça à segurança. Portanto, essa função é executada em Segurança de Acesso ao Código. As chamadas para essa função no servidor exigem permissão da classe RunAsPermission . Cada uso dessa interface de programação de aplicativos (API) deve ser modelado por ameaças. Se for descoberta uma vulnerabilidade de segurança, valide a entrada para esta API. O depurador pode ignorar pontos de interrupção localizados em um método que é chamado usando a função runAs . O código X++ que é executado pela função runAs deve ser executado como Microsoft .NET Framework Common Intermediate Language (CIL). Se a CIL não tiver sido gerada para o método estático de destino, uma mensagem de erro indica que o método não foi encontrado. O tipo de sistema PartitionKey é o tipo exato do parâmetro de partição . PartitionKey é uma cadeia de caracteres que tem um comprimento máximo de oito caracteres.
Example
O exemplo a seguir chama o método runDueDateEventsForUser na classe EventJobDueDate . O código é executado no contexto de segurança de um usuário. Execute esse código aplicando-o a um método em uma nova classe.
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
Define o prefixo para o escopo de execução atual.
int setPrefix(str _prefix)
Parâmetros
| Parâmetro | Description |
|---|---|
| _prefix | O prefixo para o escopo de execução atual. |
Valor de retorno
0 se o prefixo foi definido com êxito.
Observações
O prefixo completo para a execução pode ser obtido usando a função getPrefix . Quando o escopo é deixado, o prefixo é automaticamente redefinido para o nível anterior. O mecanismo de prefixo torna mais simples escrever mensagens de erro precisas sobre as transações que um aplicativo executa. Por exemplo, o método AA chama o método BB e cada método chama a função setPrefix . As mensagens que o método BB grava no Infolog aparecem aninhadas em uma hierarquia. Quando o método BB termina e o controle retorna ao método AA , o prefixo que foi definido pelo método BB não é anexado às mensagens subsequentes.
Example
static void setPrefixExample(Args _arg)
{
int i;
i = setPrefix("Prefix");
print i;
}