Caros,
Eu montei um AX 2012 para meus estudos e estava incomodado com a demora para abrir formulários, e pesquisando vi que podemos desabilitar os factboxes e também os previews, que são bastante uteis no entanto ‘custam caro’ quando o assunto é performance. Eu particularmente passei a trabalhar com eles desativados e ai cabe a cada um escolher a melhor forma.
A forma para desativar e testar é só ir em System Administration -> Setup -> System -> Client Performance Options e desmarcar o que não quiser mais visualizar.
Obs.: O Francisco escreveu uma série de artigos de performance, pesquisando eu até encontrei um post dele que fala disso com mais detalhes, e pode ser acessado aqui: Dicas para melhorar a performance do AX2012 R2!
Abração,
Pichler
25 Jun 2013
Posted by: Ricardo Pichler in: X++
Caros,
Mexendo no artigo anterior eu achei duas novas implementações que são os métodos strCapital e strCapitalWord, vejam o funcionamento de ambos:
1 2 3 4 5 6 | static void Job1(Args _args) { ; info(str2Capital("la lala lalala")); //produz La lala lalala info(str2CapitalWord("la lala lalala")); //produz La Lala Lalala } |
Abraço,
Pichler
24 Jun 2013
Posted by: Ricardo Pichler in: X++
Caros,
Frequentemente temos que criar métodos do tipo ‘parm’ no DAX via X++ e toda vez é sempre a mesma coisa, criamos a classe, as variáveis e etc… O próximo passo é criar os métodos para que essas propriedades possam ser atribuídas / lidas, e hoje, ao presenciar essa situação novamente eu resolvi criar um script que gera pra mim os métodos dentro da minha classe a partir do Class Declaration. Vamos ao exemplo.
A primeira coisa a se fazer é criar o método que irá tratar o meu texto selecionado, para isso:
Na classe EditorScripts crie um novo método com a estrutura:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | public void template_method_createAllParms(Editor editor) { Source template = "public %1 parm%3(%1 _%2 = %2)\r\n{\r\n ;\r\n %2 = _%2;\r\n return %2;\r\n}"; str parmOne, parmTwo; int spacePosition; List linesToCreate = new List(Types::String); List parmsToCreate = new List(Types::String); ListEnumerator listEnum; str currentLine; ClassBuild obj; TreeNode parent = TreeNode::findNode(SysTreeNode::pathParent(editor.path())); ; linesToCreate = strSplit(EditorScripts::getSelectedText(editor), '\r\n'); if(linesToCreate) { listEnum = linesToCreate.getEnumerator(); while(listEnum.moveNext()) { currentLine = strLTrim(listEnum.current()); if(currentLine) { spacePosition = strScan(currentLine, " ", 1, strLen(currentLine)); parmOne = subStr(currentLine, 0, (spacePosition - 1)); parmTwo = strLTrim(strRTrim(subStr(currentLine, spacePosition, strLen(currentLine)))); parmTwo = subStr(parmTwo, 0, strLen(parmTwo) -1); parmsToCreate.addEnd(strFmt(template, parmOne, parmTwo, str2Capital(parmTwo))); } } } if(parmsToCreate) { listEnum = parmsToCreate.getEnumerator(); obj = new ClassBuild(parent.AOTname(), true); while(listEnum.moveNext()) { currentLine = strLTrim(listEnum.current()); obj.addMethod('name', listEnum.current()); obj.classNode().AOTcompile(); } } } |
O segundo passo é criar a classe com as variáveis:
1 2 3 4 5 6 7 8 | class Class1 { str StringOne; int IntOne; real RealOne; date DateOne; NoYes NoYesEnum; } |
Agora que já temos tudo o que precisávamos, vamos ao funcionamento!
1 -> Abra o ClassDeclaration da classe criada acima;
2 -> Selecione as variáveis que quer criar as propriedades;
3 -> Clique com o botão direito e seguir o caminho: Scripts -> Template -> Method -> CreateAllParms.
Espere o processo terminar, e no final sua classe ficará assim:
Considerações:
Abração,
Pichler
29 May 2013
Posted by: Ricardo Pichler in: Configuração, X++
Caros,
Estava com problemas para trabalhar / apresentar soluções na VPC fornecida pela Microsoft, a mensagem “Failed to create a session; confirm that the user has the proper privileges to log on to Microsoft Dynamics” era exibida e eu não conseguia mais seguir em frente.
Pesquisando, achei diversas propostas para resolver, umas bem complexas e outras simples, e foi uma super simples que funcionou. Para este caso específico, basta desabilitar a opção: Execute business operations in CIL, que fica em: Tools > Options > Development > Execute business operations in CIL.
Essa opção faz com que código que tipicamente seria executado pelo CIL volte a ser interpretado, vejam:
Durante o desenvolvimento quando você frequentemente irá fazer modificações e retestar, algumas vezes é mais conveniente debugar código X++ no modo interpretado! Fonte: http://msdn.microsoft.com/en-us/library/hh528509.aspx
Pasmem vocês, eu achei utilizando a super ferramenta de buscas chamada Bing! Que meu amigo André Hociko insiste em tentar convencer meu outro amigo Daniel Zanni a usar!
Abraço,
Pichler
Caros,
Mais uma dica no nosso amigo Humberto Santiago! Façam bom proveito!
Microsoft Dynamics AX 2012 R2 Database Entity Relationship Diagrams
[]s
Pichler