Mostrando postagens com marcador Customização. Mostrar todas as postagens
Mostrando postagens com marcador Customização. Mostrar todas as postagens

quinta-feira, 19 de fevereiro de 2015

Gráfico - Mudar o Título dos Eixos

0 comentários
Algumas vezes precisamos fazer pequenas alterações nos gráficos, tais como remover legenda, remover títulos dos eixos, remover valores dos eixos, transformar em 3D, etc…
Neste exemplo iremos mudar o título dos eixos do gráfico abaixo:

g1 
Primeiro devemos exportar o gráfico
i2 Abra o aquivo XML, e localize as definições da área <ChartArea> e acrescente o atributo Title com o valor desejado conforme exemplo abaixo
i8

Salve o arquivo XML, e importe o Gráfico
i4 i5
i6 i9
E a aparência do gráfico ficará conforme abaixo


g3

Leia Mais >>

Gráfico – Remover Legenda

0 comentários

Algumas vezes precisamos fazer pequenas alterações nos gráficos, tais como remover legenda, remover títulos dos eixos, remover valores dos eixos, transformar em 3D, etc…

Neste exemplo iremos remover a legenda do gráfico abaixo:

g1 

Primeiro devemos exportar o gráfico

i2 Abra o aquivo XML, e localize as definições das séries <Series> e modifique o valor do atributo IsValueShowAsLabel para False.

i3Salve o arquivo XML, e importe o Gráfico

i4 i5

i6 i7

E a aparência do gráfico ficará conforme abaixo

g2

Leia Mais >>

quarta-feira, 18 de fevereiro de 2015

Erro ao Importar Soluções - An item with the same key has already been added.

0 comentários

Passamos 3 mêses trabalhando em um projeto… Relatórios Customizados, Gráficos que encheram os olhos do cliente, Workflows customizados… Momento de colocar em produção… Solução exportada, é momento de Importar… Huuumm deu “pau”.

download e5 An item with the same key has already been added.

Para resolver este problema devemos descompactar a solução, e editar o arquivo customizations.xml

i1 Este erro costuma aparecer nas definições dos atributos, onde o nome do attributo não , coincide com o nome criado no ambiente ao qual deseja importar a solução <attribute>.

e6

Para corrigir identifique qual a entidade relacionada conforme log de erro, e vá até as definições dos atributos <attribute> e corriga o nome.

   

Compacte novamente os arquivos (zip), e renomeie o arquivo preferencialmente com o mesmo nome da solução exportada.

p2

Leia Mais >>

Erro ao Importar Soluções - Not all instances of the entity entity name match

0 comentários

Passamos 3 mêses trabalhando em um projeto… Relatórios Customizados, Gráficos que encheram os olhos do cliente, Workflows customizados… Momento de colocar em produção… Solução exportada, é momento de Importar… Huuumm deu “pau”.

download_thumb2[10]e3 Not all instances of the entity entity name match

Para resolver este problema devemos descompactar a solução, e editar o arquivo customizations.xml

i1_thumb2Este erro costuma aparecer nas definições das Entidades <Entity>e4 

Para corrigir identifique qual a entidade relacionada conforme log de erro, e vá até as definições de entidade <Entity> e procure pela tag <Name> e verifique se o nome está igual ao contido na tag <entity>, e faça a correção.

Compacte novamente os arquivos (zip), e renomeie o arquivo preferencialmente com o mesmo nome da solução exportada.

p2_thumb1

Leia Mais >>

Erro ao Importar Soluções – The Label attribute is not declared

0 comentários

Passamos 3 mêses trabalhando em um projeto… Relatórios Customizados, Gráficos que encheram os olhos do cliente, Workflows customizados… Momento de colocar em produção… Solução exportada, é momento de Importar… Huuumm deu “pau”.

download

erro1 The import file is invalid. XSD validation failed with the following error: 'The 'label' attribute is not declared.

Para resolver este problema devemos descompactar a solução, e editar o arquivo customizations.xml

i1 Este erro costuma aparecer nas definições das views das entidades <savedquery>.

e2

Para corrigir identifique qual a entidade relacionada conforme log de erro, e vá até as definições de views <savedquery> e procure por “label=” no layout do grid, apage este atributo e salve o arquivo.

Compacte novamente os arquivos (zip), e renomeie o arquivo preferencialmente com o mesmo nome da solução exportada.

p2 

Leia Mais >>

terça-feira, 17 de fevereiro de 2015

Entendendo Soluções

0 comentários
As soluções são como os profissionais e consultores que atuam com o Dynamis CRM, empacotam e estendem o Microsoft Dynamics CRM. Customizadores e desenvolvedores distribuem soluções para que as organizações podem usar o Microsoft Dynamics CRM para instalar e desinstalar a funcionalidade de negócios definido pela solução.
Use soluções para ampliar a capacidade de Microsoft Dynamics CRM. Para o software que opera fora do aplicativo (CRM), use métodos tradicionais para empacotar e instalar o aplicativo, como um programa de instalação.
Se o aplicativo consiste apenas de componentes da solução Microsoft Dynamics CRM, ele pode ser importado diretamente em CRM. Você não terá que criar um programa de instalação.
Soluções exportados a partir de uma versão anterior do CRM podem ser importados para versões mais recentes. No entanto, as soluções exportados a partir de versões mais recentes não podem ser importados para versões anteriores. Isso inclui versões maiores e menores.
Os componentes da solução são criados usando as ferramentas de personalização ou APIs incluídas no Microsoft Dynamics CRM e são totalmente hospedado no aplicativo, conforme o diagrama abaixo que mostra os tipos de componentes da solução.
IC455159
Existem dois tipos de soluções Microsoft Dynamics CRM: gerenciados e não gerenciados. A solução gerenciada é uma solução completa que está destinada a ser distribuída e instalada. Uma solução não gerenciada é um que ainda está em desenvolvimento ou não se destina a ser distribuída. Quando a solução não gerenciada é completa e você quer distribuí-la, deve ser exportada uma solução de gerenciada.
 
Soluções Não Gerenciadas
* Adicionar e Remover Componentes
* Deletar componentes que permite deleção
* Exportar e importar soluções não gerenciadas
* Exporta a solução como solução gerenciada.
 
Soluções Gerenciadas
* Você não pode adicionar ou remover componentes
* Você não pode exportar soluções gerenciadas
* Deletando uma solução gerenciada, irá desinstalar todos os componentes contido nela.
 
Usando propriedades gerenciadas, podemos controlar se um componente da solução é personalizável e que partes específicas do que pode ser personalizado.
As propriedades gerenciadas deve ser definida em uma solução não gerenciada. As definições de propriedades gerenciadas apenas são aplicadas após a solução gerenciada foi empacotada e instalada.
p1
 
 

Leia Mais >>

segunda-feira, 21 de novembro de 2011

Customização usando Visual Studio 2010 (C #) - Plug-In

0 comentários
Customização usando Visual Studio 2010 (C #) - Plug-In

No post 07. Customização usando Visual Studio 2010 (C#) e 08. Customização usando Visual Studio 2010 (C#) - Download SDK, iniciamos o estudo de customização usando o VS 2010. Hoje iremos desenvolver o plug-in para cadastrar os dados do Dynamics CRM para o ERP do cliente.
Inicie o Visual Studio 2010,  e abra um novo projeto adicionando um class library.

Dê o nome de CadCliente, e selecione o local onde será gravado os arquivos do seu projeto e clique em OK.
Precisamos assinar o projeto da seguinte forma:

Cique com botão direito do mouse em properties, e clique com Open.

Check Sign the Assembly and clique em Signing e em New

No campo (key file name), informe CadCliente e clique em Ok




Adicione no projeto um novo item do tipo Class com o nome de PluginCliente.cs


E insira o seguinte código:

using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System.Data.SqlClient;

namespace CadCliente
{
    public class PluginCliente : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            // Pega contexto em execução
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            if (context.MessageName.ToUpper() == "CREATE")
            {
                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {
                    // Captura a entidade
                    Entity targetEntity = (Entity)context.InputParameters["Target"];

                    if (targetEntity.LogicalName.ToUpper() == "ACCOUNT")
                    {
                        // Captura o serviço
                        IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                        IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

                        // String de conexão SQL do banco de dados ERP
                        string conexao = "Data Source=WIN-4EF7UMIGTTO;Initial Catalog=ERP;Integrated Security=SSPI";

                        string sql = "Insert into ERP_Cliente (codcliente,nome,endereco,bairro,cidade,estado,cep,telefone) values (@codcliente, @nome, @endereco, @bairro, @cidade, @estado, @cep, @telefone)";
                        SqlConnection con = new SqlConnection(conexao);
                        SqlCommand comando = new SqlCommand(sql, con);

                        comando.Parameters.Add(new SqlParameter("@codcliente", targetEntity["jd_codigo"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@nome", targetEntity["name"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@endereco", targetEntity["address1_name"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@bairro", targetEntity["address1_line1"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@cidade", targetEntity["address1_city"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@estado", targetEntity["address1_stateorprovince"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@cep", targetEntity["address1_postalcode"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@telefone", targetEntity["telephone1"].ToString()));

                        try
                        {
                            con.Open();
                            comando.ExecuteNonQuery();
                            con.Close();
                        }
                        catch (Exception ex)
                        {
                            return;
                        }
                    }
                    else
                    {
                        return;
                    }
                }
                else
                {
                    return;
                }
            }
            else if (context.MessageName.ToUpper() == "UPDATE")
            {
                if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
                {
                    // Captura a entidade.
                    Entity targetEntity = (Entity)context.InputParameters["Target"];

                    if (targetEntity.LogicalName.ToUpper() == "ACCOUNT")
                    {
                        // Captura o serviço
                        IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                        IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

                        // Id do registro atual
                        Guid id = (Guid)targetEntity["accountid"];

                        // captura dados da entidade
                        Entity entidade = service.Retrieve("account", id, new ColumnSet(true));

                        // String de conexão SQL do banco de dados ERP
                        // WIN-4EF7UMIGTTO = Nome da máquina/servidor pode ser substituido por "." (ponto).

                        string conexao = "Data Source=WIN-4EF7UMIGTTO;Initial Catalog=ERP;Integrated Security=SSPI";
                        string sql = @"Update ERP_Cliente Set nome = @nome , endereco = @endereco, bairro = @bairro,cidade = @cidade, estado = @estado, cep = @cep,
                                                              telefone = @telefone Where codcliente = @codcliente" ;

                        SqlConnection con = new SqlConnection(conexao);
                        SqlCommand comando = new SqlCommand(sql, con);

                        comando.Parameters.Add(new SqlParameter("@codcliente", entidade["jd_codigo"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@nome", entidade["name"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@endereco", entidade["address1_name"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@bairro", entidade["address1_line1"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@cidade", entidade["address1_city"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@estado", entidade["address1_stateorprovince"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@cep", entidade["address1_postalcode"].ToString()));
                        comando.Parameters.Add(new SqlParameter("@telefone", entidade["telephone1"].ToString()));

                        try
                        {
                            con.Open();
                            comando.ExecuteNonQuery();
                            con.Close();
                        }
                        catch (Exception ex)
                        {
                            return;
                        }
                    }
                }
            }
        }
    }
}


Compile e tire todos os erros que podem ter aparecido.
Nas próximas postagem iremos registrar o plugin, e como debugar.













Leia Mais >>

terça-feira, 15 de novembro de 2011

Customização usando Visual Studio 2010 (C#) - Download SDK

0 comentários
Customização usando Visual Studio 2010 (C#) - Download SDK

Antes de iniciarmos o desenvolvimento do Plugin citado no post 07. Customização usando Visual Studio 2010 (C#), devemos fazer o download do Microsoft Dynamics CRM 2011 SDK, e instalar na máquina, preferencialmente onde está instalado o Microsoft Dynamics CRM 2011.

O Software Development Kit (SDK) contém informações para desenvolvedores escrever código do lado do servidor, lógica de negócios personalizada, módulos de integraçãofluxo de trabalho, e plug-ins. Ele fornece uma visão geral da arquitetura do Microsoft Dynamics CRM, modelo de entidade, modelo de segurança, e serviços Web. Código de exemplo e são fornecidas orientações para guiá-lo através dos novos recursos. Ele também contém informações para desenvolvedores personalizar o cliente Web ou o Microsoft Dynamics CRM para Microsoft Office Outlook, incluindo scripting, integração de páginas Web personalizados, e um monte de código de exemplo.

Além da documentação, inclui ferramentas necessárias para o desenvolvimento.
Post Relacionado:
07. Customização usando Visual Studio 2010 (C#)

Leia Mais >>

sábado, 12 de novembro de 2011

Customização usando Visual Studio 2010 (C#)

0 comentários
Customização usando Visual Studio 2010 (C#)

Olá,
    Meus posts anteriores foram customizações usando o javascript, e como encontramos poucos blogs em .Net (C#), meus posts seguintes terão exemplos de como customizar o Dynamics CRM, utilizando o Visual Studio 2010 (C#).

     Suponhamos que o nosso cliente solicitou que ao gravar um cliente (Account), o mesmo seja gravado no banco de dados já existente no ERP do cliente. Para esta solução iremos desenvolver um Plugin.

     Para comerçamos, tenham em suas máquinas:
        - SQL Server
        - Dynamics CRM 2011
        - Visual Studio 2010

     Para simular o banco de dados do cliente, iremos criar um banco no SQL conforme abaixo:
        - Crie um banco de dados com o nome ERP.










        - No banco de dados ERP, crie a tabela Cliente, com a seguinte estrutura









      No próximo post iremos desenvolver o Plugin, até breve.

Leia Mais >>

Arquivo do blog

Números de Visitas

  

TOPO