Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Observação
Grupos de interesse da comunidade mudaram do Yammer para o Microsoft Viva Engage. Para ingressar em uma comunidade do Viva Engage e participar das discussões mais recentes, preencha o formulário Solicitar acesso às Finanças e Operações viva engage community e escolha a comunidade que você deseja ingressar.
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 da 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 curto 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 retornado é de oito caracteres.
Example
O exemplo de código a seguir mostra chamadas e saídas 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 , confira Como incluir um filtro para partição no Transact-SQL Direto.
Example
O exemplo de código a seguir mostra chamadas e saídas 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 chamadas sucessivas 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 gravar mensagens de erro precisas sobre as transações executadas por um aplicativo. Como uma exibição hierárquica é criada no Infolog, pode ser mais fácil determinar de onde veio cada erro.
Example
static void getPrefixExample(Args _arg)
{
setPrefix("Prefix");
setPrefix("Another prefix");
print getPrefix();
}
sessionId
Recupera o número da sessão 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 AOS (Application Object Server). Cada chamada dessa 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 contém informações de retorno 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 ser testado. |
Valor de retorno
1 se o valor padrão do parâmetro foi usado; 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. Essa função é usada com mais frequência com o 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 ser representado. |
| 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 serem passados para o método; opcional. |
| empresa | A empresa selecionada para a sessão representada; opcional. |
| linguagem | O idioma selecionado para a sessão representada; opcional. |
| partição | A chave de partição do tipo retornado pela função getCurrentPartition ; opcional. |
Valor de retorno
Um contêiner que contém o valor retornado ou os valores do método que é chamado pela função runAs , se algum valor foi retornado.
Observações
Essa função possibilita executar o código como outro usuário. Essa funcionalidade apresenta 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 API (interface de programação de aplicativo) deve ser modelado por ameaças. Se uma vulnerabilidade de segurança for descoberta, valide a entrada para essa API. O depurador pode ignorar pontos de interrupção localizados em um método chamado usando a função runAs . O código X++ executado pela função runAs deve ser executado como CIL (Common Intermediate Language) do Microsoft .NET Framework. Se CIL não tiver sido gerado para o método estático de destino, uma mensagem de erro indicará 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 |
|---|---|
| _prefixo | 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 buscado 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 gravar mensagens de erro precisas sobre as transações executadas por um aplicativo. 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 definido pelo método BB não é anexado às mensagens subsequentes.
Example
static void setPrefixExample(Args _arg)
{
int i;
i = setPrefix("Prefix");
print i;
}