Veja a tabela comparativa entre o AX 2009 e o AX 2012, no que diz respeito aos layers.
[]s
Pichler
Pessoal,
Segue o pdf com o que há de novo para desenvolvedores no AX 2012.
Whats New in Microsoft Dynamics AX 2012 for Developers.
Abraço,
Pichler
Caros,
O Francisco esta em um projeto e me perguntou como poderiamos bloquear o copy / paste no ax e para tal, tive que recorrer a um post antigo, onde mostro como recuperar a tecla que foi pressionada. O post é o Capturando o teclado no AX.
A ideia é capturar a combinação que o usuário pressionou e tomar uma decisão.
Se abrir a macro Task, vai ver que temos:
1 2 3 4 | ... #define.taskCut(770) #define.taskCopy(771) ... |
Tendo em vista isto, vamos até a classe SysSetupFormRun, método task, e adicionamos logo no começo, ficando:
1 2 3 4 5 6 7 8 9 | ... ; if(_p1 == #taskCopy || _p1 == #taskCut) { return 0; } else if (_p1 == #taskFilter) ... |
Beleza? Agora é só usar a criatividade.
[]s
Pichler
16 Jun 2011
Posted by: Ricardo Pichler in: X++
Este artigo foi escrito originalmente por Mike Kensok no blog Dynamics AX in the Field.
Trabalhando com clientes eu encontrei vários cenários aonde o usuário estava tentando configurar permissões de segurança em múltiplos grupos ou com diferentes permissões em conjuntos de domínios diferentes. Permissões são comparadas entre grupos de usuários e domínios usando o principio menos restritivo, que causa confusão. Por conta disto, estou disponibilizando alguns exemplos de como AX compara as permissões em usuários em vários grupos e/ou domínios que você pode.
Primeiro exemplo:
Veja a ilustração abaixo. Arnie é um usuário que foi designado ao grupo de usuários chamado SalesPerson o qual tem permissões FULL, VIEW e CREATE na tabela chamada CUSTGROUP em três domínios diferentes. O grupo SalesPerson é o único grupo de usuários que o usuário Arnie pertence.
Abaixo vou explicar os direitos que Arnie terá em cada uma das empresas:
FULL – porque a CompanyA pertence ao Domain1 e ao Admin_Domain, as permissões precisam ser comparadas entre os domínios, uma vez que o grupo de usuários SalesPerson tem direitos FULL no Domain1 e direitos CREATE no Admin_Domain, o FULL é o menos restritivo que o CREATE.
FULL – porque a CompanyB pertence ao Domain1 e ao Admin_Domain, as permissões precisam ser comparadas entre os domínios, uma vez que o grupo de usuários SalesPerson tem direitos FULL no Domain1 e direitos CREATE no Admin_Domain, o FULL é o menos restritivo que o CREATE.
CREATE – porque a CompanyC pertence ao Domain2 e ao Admin_Domain, as permissões precisam ser comparadas entre os domínios, uma vez que o grupo de usuários SalesPerson tem direitos VIEW no Domain2 e direitos CREATE no Admin_Domain, o CREATE é o menos restritivo que o VIEW.
Segundo exemplo:
Veja a ilustração abaixo. Arnie é um usuário que foi designado ao grupo de usuários chamado SalesPerson e ao grupo InsideSales. O grupo SalesPerson tem os direitos FULL, VIEW e CREATE para a tabela CustGroup em três diferentes domínios enquanto o grupo InsideSales tem o direito FULL apenas em um domínio.
FULL – porque a CompanyC pertence ao Domain2 e ao Admin_Domain, as permissões precisam ser comparadas entre os domínios, uma vez que o grupo de usuários SalesPerson tem direitos VIEW no Domain2, direitos CREATE no Admin_Domain e direitos FULL no grupo InsideSales, o FULL é o menos restritivo que o CREATE ou VIEW.
Terceiro exemplo:
Veja a ilustração abaixo. Arnie é um usuário que foi designado ao grupo de usuários chamado SalesPerson. O grupo SalesPerson tem os direitos FULL e VIEW para a tabela CustGroup em dois diferentes domínios. O grupo SalesPerson é o úncio grupo que o Arnie pertence.
VIEW – porque a CompanyC não pertence a nenhum outro domínio, as permissões não precisam ser comparadas entre os domínios mas serão comparadas por grupos de usuários, uma vez que o grupo de usuários SalesPerson é o único que o usuário Arnie pertence e este tem direitos VIEW no Domain2.
Este artigo foi escrito originalmente por Mike Kensok no blog Dynamics AX in the Field.
Esses dias eu precisei desenvolver um formulário bem genérico que poderia ser carregado de diversos lugares, populado por dados diversos e com a funcionalidade de “Ir para o formulário da tabela principal” funcionando, para tal, temos que sobrescrever o método jumpRef do campo que queremos usar e escrever um pouco de código.
O processo é bem simples, consistem em sobrescrever o método e chamar o formulário que deve ser aberto, abaixo um exemplo simples:
1 2 3 4 5 6 7 8 9 10 11 12 | public void jumpRef() { LedgerJournalTable ledgerJournalTable = LedgerJournalTable::find(PIC_ShowTransactions.JournalNum); Args args; FormRun formRun; ; args = new Args(); args.caller(element); args.record(ledgerJournalTable); formRun = new MenuFunction(menuitemdisplaystr(LedgerJournalTable), MenuItemType::Display).create(args); formRun.run(); } |
Este exemplo não é um exemplo muito usual, mas foi o mais rápido que fiz para postar aqui pra vocês.
Abraço,
Pichler