Compartilhar via


Escopos para comandos modernos

Os comandos têm um de três escopos. O escopo determina se um comando (schemaname = appaction) será renderizado para uma tabela em um único aplicativo, para uma tabela em todos os aplicativos ou para todas as tabelas e todos os aplicativos.

Um comando deve ser vinculado a um local da barra de comandos, como grade principal ou formulário principal, independentemente do escopo. Portanto, alterar o escopo não renderizará o comando em diferentes locais da barra de comandos, como grade principal e formulário principal.

  • Aplicativo Este é o escopo mais estreito e comportamento padrão ao criar ou editar comandos usando o designer de comandos moderno. O designer de comandos é aberto no contexto de um aplicativo baseado em modelo, tabela e localização da barra de comando.
  • Tabela Também conhecido como escopo da entidade. Vinculado a uma tabela específica e local da barra de comando. Não vinculado a nenhum aplicativo específico. Portanto, os comandos no escopo da tabela serão renderizados em todos os aplicativos que usem essa tabela. Por exemplo, um comando de escopo de tabela para a tabela de contas e o local do formulário principal estará presente em todos os aplicativos ao visualizar o formulário principal de um registro de conta.
  • Global Este é o escopo mais amplo. Os comandos de escopo global são vinculados apenas a um local da barra de comandos, não a um aplicativo ou tabela. Por exemplo, um comando de escopo global para o local do formulário principal está presente em todos os aplicativos dentro de um ambiente ao visualizar o formulário principal para cada tabela.

Importante

Comandos que usam o Power Fx para a ação e/ou visibilidade não podem ser convertidos em tabela ou escopo global neste momento.

Quando os comandos são aninhados em listas suspensas, grupos e botões de divisão, todos devem ser definidos para o mesmo escopo.

Se um comando de escopo global ou de tabela for editado no designer de comando moderno, uma cópia (instância) será criada com o escopo do aplicativo e vinculada ao comando original. Por exemplo, editar um comando de escopo global no designer de comandos substitui o comando de escopo global original, mas apenas para o aplicativo e a tabela específicos escolhidos ao abrir o designer de comandos. Todos os outros aplicativos e tabelas renderizarão o comando original. A cópia (instância) agora tem seu próprio ciclo de vida. As alterações no comando de escopo global original não afetarão a nova instância de escopo do aplicativo e vice-versa.

Tabela de substituição e comandos com escopo global

Escopos mais estreitos podem substituir um comando de escopo mais amplo em todos os níveis. O escopo mais estreito vence.

  • Um comando tabela (entidade) com escopo substitui comandos com escopo global. Você pode definir um comando que será o mesmo em todas as tabelas, mas modificar o comportamento apenas para tabelas específicas.
  • Um comando com escopo de aplicativo substitui todos os outros escopos, mas apenas para um aplicativo e uma tabela específicos.

Como criar um comando com escopo de tabela

  1. Crie um ou mais comandos em sua solução usando o designer de comandos. Como alternativa, crie uma solução separada e selecione Adicionar existente > Tabela.

  2. Selecione Selecionar objetos e então adicione os comandos desejados.

  3. Selecione Exportar para exportar sua solução.

    Exportar solução.

  4. Se você tiver feito alterações recentes que ainda não foram publicadas, selecione Publicar. Em seguida, selecione Executar para verificar se a solução tem problemas ou dependências e, em seguida, selecione Avançar.

  5. Selecione a opção Não gerenciado e, em seguida, selecione Exportar.

  6. Na caixa de diálogo Download, selecione Salvar e, na caixa de diálogo Download concluído, selecione Abrir Pasta.

  7. Clique com o botão direito para selecionar o arquivo .zip compactado que você baixou e selecione Extrair todos.

  8. Selecione um local para extrair os arquivos e selecione Extrair.

  9. Abra a pasta para os arquivos extraídos, abra o arquivo appaction.xml e localize o comando desejado (appaction).

  10. Exclua o nó appmoduleid do xml.

     <appmoduleid>
       <uniquename>demo_DemoFestApp</uniquename>
     </appmoduleid>
    
  11. Mude o valor do nome exclusivo da ação do aplicativo. Alterar qualquer um dos últimos caracteres é suficiente, como trocar 1 para 2 ou, se preferir, usar convenções de nomenclatura mais descritivas.

Exemplo de XML.

   <appaction uniquename="crdff_NewCommand!a078463b5d7c473d8965f0f80469f412!crdff_CustomApp!crdff_entity1!1">
  <buttonlabeltext default="Show Alert">
    <label description="Show Alert" languagecode="1033" />
   </buttonlabeltext>
   <buttonsequencepriority>10.0000000000</buttonsequencepriority>
   <context>1</context>
   <contextentity>
    <logicalname>crdff_entity1</logicalname>
   </contextentity>
   <fonticon>AALinkedInLogo</fonticon>
   <contextvalue>crdff_entity1</contextvalue>
   <hidden>0</hidden>
   <iscustomizable>1</iscustomizable>
   <location>1</location>
   <name>EntityScoped!a078463b5d7c473d8965f0f80469f412</name>
   <onclickeventjavascriptfunctionname>ShowAppAlert</onclickeventjavascriptfunctionname>
   <onclickeventjavascriptparameters>[]</onclickeventjavascriptparameters>
   <onclickeventjavascriptwebresourceid>
    <webresourceid>ac21ad24-3c11-ef11-b6u7-000d3a1d942c</webresourceid>
   </onclickeventjavascriptwebresourceid>
   <onclickeventtype>2</onclickeventtype>
   <statecode>0</statecode>
   <statuscode>1</statuscode>
   <type>0</type>
   </appaction>

Depois de editar e salvar o arquivo appaction.xml, compacte sua solução no mesmo formato em que foi exportada. Em seguida, Importe a solução de volta ao seu ambiente e teste o comportamento.

Como criar um comando com escopo global

  1. Siga as mesmas etapas acima para editar o arquivo appaction.xml.

  2. Exclua o nó appmoduleid do xml:

     <appmoduleid>
       <uniquename>demo_DemoFestApp</uniquename>
     </appmoduleid>
    
  3. Mude o valor do nome exclusivo da ação do aplicativo. Alterar qualquer um dos últimos caracteres é suficiente, como trocar 1 para 2 ou, se preferir, usar convenções de nomenclatura mais descritivas.

  4. Exclua os nós contextentity e contextvalue do xml:

    <contextentity>
     <logicalname>account</logicalname>
    </contextentity>
    <contextvalue>account</contextvalue>
    
  5. Altere o valor contexto de 1 para 0.

    <appaction uniquename="crdff_NewCommand1!8fe72a85-1f84-431e-ac56-854f1bfadc4e!1">
    <buttonlabeltext default="Show Alert">
    <label description="Show Alert" languagecode="1033" />
    </buttonlabeltext>
    <buttonsequencepriority>10.0000000000</buttonsequencepriority>
    <context>0</context>
    <hidden>0</hidden>
    <iscustomizable>1</iscustomizable>
    <fonticon>AALinkedInLogo</fonticon>
    <location>1</location>
    <name>EntityScoped!a078463b5d7c473d8965f0f80469f412</name>
    <onclickeventjavascriptfunctionname>ShowGlobalAlert</onclickeventjavascriptfunctionname>
    <onclickeventjavascriptparameters>[]</onclickeventjavascriptparameters>
    <onclickeventjavascriptwebresourceid>
     <webresourceid>ac21ad24-3c01-ec11-b6e7-000d3a1d942c</webresourceid>
    </onclickeventjavascriptwebresourceid>
    <onclickeventtype>2</onclickeventtype>
    <statecode>0</statecode>
    <statuscode>1</statuscode>
    <type>0</type>
    </appaction>
    

Depois de editar e salvar o arquivo appaction.xml, compacte sua solução no mesmo formato em que foi exportada. Em seguida, Importe a solução de volta ao seu ambiente e teste o comportamento.

Como substituir um comando de escopo global por um escopo de tabela

Este exemplo é para quando você deseja que um comando de escopo global seja o mesmo em todos os lugares exceto para uma determinada tabela.

  • Ação no Escopo da Entidade ficará visível em grades crdff_entity1 em todos os aplicativos, exceto em crdff_CustomApp.
  • Ação no Escopo Global ficará visível em todas as grades de entidade, exceto em crdff_entity1.

Observação

Para substituir comandos de escopo global ou de tabela por um comando de escopo de aplicativo, basta editar o comando usando o designer de comandos.

Para substituir um comando de escopo global por um comando de escopo de tabela, modifique os arquivos appactions.xml para que tenham o mesmo XML <name> .

Regras a serem substituídas

  1. Siga os passos em Como criar um comando de escopo global, mas crie dois comandos usando o designer de comandos.

  2. Conforme descrito nas etapas, exporte sua solução e edite os arquivos appactions.xml.

  3. Continue seguindo as etapas para criar um comando de escopo global e um de entidade.

  4. Defina a propriedade nome para que seja exatamente igual para os comandos de escopo global e de entidade.

Exemplo de comando de escopo global XML

<appaction uniquename="crdff_NewCommand1!8fe72a85-1f84-431e-ac56-854f1bfadc4e!1">
<buttonlabeltext default="Show Alert">
 <label description="Show Alert" languagecode="1033" />
</buttonlabeltext>
<buttonsequencepriority>10.0000000000</buttonsequencepriority>
<context>0</context>
<hidden>0</hidden>
<iscustomizable>1</iscustomizable>
<fonticon>AALinkedInLogo</fonticon>
<location>1</location>
<name>EntityScoped!a078463b5d7c473d8965f0f80469f412</name>
<onclickeventjavascriptfunctionname>ShowGlobalAlert</onclickeventjavascriptfunctionname>
<onclickeventjavascriptparameters>[]</onclickeventjavascriptparameters>
<onclickeventjavascriptwebresourceid>
 <webresourceid>ac21ad24-3c01-ec11-b6e7-000d3a1d942c</webresourceid>
</onclickeventjavascriptwebresourceid>
<onclickeventtype>2</onclickeventtype>
<statecode>0</statecode>
<statuscode>1</statuscode>
<type>0</type>
</appaction>

Exemplo de comando de escopo de tabela XML

<appaction uniquename="crdff_NewCommand!a078463b5d7c473d8965f0f80469f412!crdff_entity1!1">
<buttonlabeltext default="Show Alert">
<label description="Show Alert" languagecode="1033" />
</buttonlabeltext>
<buttonsequencepriority>10.0000000000</buttonsequencepriority>
<context>1</context>
<contextentity>
<logicalname>crdff_entity1</logicalname>
</contextentity>
<fonticon>AALinkedInLogo</fonticon>
<contextvalue>crdff_entity1</contextvalue>
<hidden>0</hidden>
<iscustomizable>1</iscustomizable>
<location>1</location>
<name>EntityScoped!a078463b5d7c473d8965f0f80469f412</name>
<onclickeventjavascriptfunctionname>ShowEntityAlert</onclickeventjavascriptfunctionname>
<onclickeventjavascriptparameters>[]</onclickeventjavascriptparameters>
<onclickeventjavascriptwebresourceid>
<webresourceid>ac21ad24-3c01-ec11-b6e7-000d3a1d942c</webresourceid>
</onclickeventjavascriptwebresourceid>
<onclickeventtype>2</onclickeventtype>
<statecode>0</statecode>
<statuscode>1</statuscode>
<type>0</type>
</appaction>

Observação

Você pode nos falar mais sobre suas preferências de idioma para documentação? Faça uma pesquisa rápida. (Observe que esta pesquisa está em inglês)

A pesquisa levará cerca de sete minutos. Nenhum dado pessoal é coletado (política de privacidade).