Inquiridor
Cadastro de itens - importação

Pergunta
-
Muito bom dia a todos,
Venho pedir o auxilio de meus amigos pois não consigo concluir o processo de importação de itens via assistente do exel para dentro do Dynamics. Ja criei os grupos obrigatórios inclusive. Os itens são importados porem não aparecem no cadastro de itens, apenas no menu drop down do diario de movimentação de estoque.
Agradeço qq ajuda
Abraço
Todas as Respostas
-
Olá Luiz.
O cadastro de Itens está ok, no entanto, os relacionamentos devem ser respeitados para que o sistema aceite os seus itens
Verifique todas as relações (como por exemplo, os campos Item Group, Inventory Model Group etc.), realize o pré-cadastro dos grupos necessários e verifique.
Espero ter ajudado.
Abraço
-
Bom dia, Luiz.
Estou com o mesmo problema e dando uma olhada no processo percebi que falta importar também as tabelas InventTableModule e InventLocation.
Faça o seguinte:
Cadastre um item manualmente, preenchendo somente os campos obrigatórios, e veja o que acontece com essas tabelas.
Você vai ver que teremos 3 registros na InventTableModule para cada item cadastrado.
Espero ter ajudado
César Pileggi.
-
César, só complementando sua informação:
Eu criei um procedimento simples para migração, baseado nas dicas de integração postadas pelo Eduardo Miranda.
As classes de nome AxNomeDaTabela possuem lógica de validação dos dados, portanto, é recomendável sua utilização em detrimento dos inserts "secos".
As classes possuem métodos com prefixo "parm" , seguidos do nome do campo na tabela.
Feito o mapeamento, é chamado o método Save() que por sua vez executa todas as operações de validação e insere os registros na tabela.
Exemplo simples:
Considere:
Uma tabela no SQL chamada TABELA , contendo os campos Nome e Código;
Uma tabela no Ax chamada MinhaTabela , contendo os mesmos campos;
Uma classe AxMinhaTabela;
Job\Exemplo - Code Blockstatic void migracaoMinhaTabela(Args _args)
{
System.Data.SqlClient.SqlConnection connection;
System.Data.SqlClient.SqlCommand command;
System.Data.SqlClient.SqlDataReader dr;
AxMinhaTabela minhaTabela;str connectionString;
;
connectionString = "Server = meuServidor;Database=MinhaBase;Trusted_Connection=yes;";
connection = new System.Data.SqlClient.SqlConnection();
connection.set_ConnectionString(connectionString);
connection.Open();command = new System.Data.SqlClient.SqlCommand("SELECT Codigo, Nome from Tabela", connection);
dr = command.ExecuteReader();
while (dr.Read())
{
minhaTabela = new AxMinhaTabela();minhaTabela.parmCodigo(dr.get_Item("Codigo"));
minhaTabela.parmNome(dr.get_Item("Nome"));minhaTabela.save();
}
dr.Close();
} -
André,
Concordo que um processo de migração feito via código é muito melhor do que importar registros via excel, mas no meu caso, não tinha os registros em um banco de dados e sim na planilha.
Ainda não usei essas classes para migração, mas vale lembrar que o cadastro de produtos tem campos que vem preenchidos automaticamente quando uma nova linha é iniciada, alem de outros campos que tem metodos disparados automaticamente quando são modificados ou inseridos.
Como não usei ainda não sei como a classe se comporta nesses casos de cadastros um pouco mais complexos.
Assim que tiver um uso prático retornarei pra vcs.
-
Neste caso, ainda podemos melhorar:
Adaptando o código anterior, o Excel pode ser acessado por Oledb.
É mais uma das inúmeras opções que o AX oferece.
Code Snippetstatic void Job5(Args _args)
{System.Data.OleDb.OleDbConnection connection;
System.Data.OleDb.OleDbCommand command;
System.Data.OleDb.OleDbDataReader dr;
str id;
str nome;
str c;
str strSql;c = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Dados.xls;Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\";";
// O parametro HDR determina se a primeira linha contem os nomes de colunas
// "IMEX=1;" lê os dados como texto.
connection = new System.Data.OleDb.OleDbConnection();
connection.set_ConnectionString(c);
connection.Open();strSql = "SELECT * FROM [MinhaTabela$]";
//MinhaTabela é o nome da Planilha seguido por $ e entre []s.
command = new System.Data.OleDb.OleDbCommand(strSql, connection);
dr = command.ExecuteReader();
while (dr.Read())
{id = dr.get_Item(0);
nome = dr.get_Item(1);
info(strfmt("%1 - %2",id,nome));
}
dr.Close();
}Em todo caso, quando você tiver o caso prático, será de grande valor pra comunidade!
Espero ter contribuído!
Abraço
-
Pessoal,
Mais uma:
http://axaptabrasil.blogspot.com/2007/12/job-para-migrao-de-produtos-utilizando.html
O Rodrigo Matiazo postou no blog uma forma de migração mais completa.
Vale a pena dar uma olhada.
Abraço.
-
-