Fórum
Ver pergunta

Fazer ligação de app externa ao Primavera   

118 visualizações
1
0

Estou a começar a criar aplicações conectadas com o Primavera ERP v9.0…

Criei a seguinte aplicação de teste em C#:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using Interop.ErpBS900;
using Interop.StdPlatBS900;
using Interop.StdBE900;
using Interop.GcpBE900;
using Interop.IGcpBS900;

namespace PrimTest
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine(Caller.PrimaveraIsActive() ? "Activo" : "Inactivo");
        }
    }

    class Caller
    {
        public static StdPlatBS Plataforma { get; set; }

        /// <summary>
        ///  Returns the engine that allows acess to the modules.
        /// </summary>
        public static ErpBS Engine { get; set; }

        public static bool PrimaveraIsActive()
        {
            Plataforma = new StdPlatBS();

            return Plataforma.Inicializada;
        }

    }
}

Só consegui compilar depois de adicionar as referências às livrarias Interop.* no ficheiro *.csproj (Visual Studio).

No entanto continuo com erros:

O programa dá erro quando utiliza o módulo Interop.* : erro ‘80040154 Classe não registada (0x80040154 (REGDB_E_CLASSNOTREG))’…

Então tentei usar o utilitário do Windows regsvr32 para cada um dos módulos Interop.* utilizados, por exemplo, fiz regsvr32 Interop.ErpBS900.dll na directoria do Primavera… No entanto deu erro : não encontra ponto de entrada DllRegisterServer…

Que é que devo fazer?

Faça login para poder traduzir
Integração
Geral
Marcado como spam
Criado há 3 anos e 6 meses joodias
joodias Iniciante
2 respostas
1
Resposta privada

Bom dia

Antes de mais tens de entender a logica de funcionamento do ERP. Existe um conjunto minimo de DLLs que tens de referenciar para que um projeto funcione. Assim:

  • ERPBS tem de estar sempre, porque é o que te permite aceder aos modulos funcionais.
  • StdPlatBS é opcional e permite que possas aceder a funcionalidades de plataforma como lista, segurança.
  • XXXBE representam as entidades dos modulos que queres trabalhar, onde xxx é a abrebiatura do modulo (ex: GcpBE modulo de gestão comercial).

Depois disto em versões anteriores a V10 tens de referenciar os interops, e estes apontam para a DLL´s concretas nos modulos de acordo com o que está no registo do windows. Assim tens de ter atensão à plataforma com que estás a complilar o projeto porque X86 e x64 vão locais diferentes do registo procurar as DLL's.

  • Win 64 bits - Target CPU "x86"
  • Win 32 bits - Target CPU "AnyCPU"

Este é o teu problema, esta configuração.

Faça login para poder traduzir
Marcado como spam
Criado há 3 anos e 6 meses sergiosereno
sergiosereno Most Valuable Professional
    Comentários
    Muito obrigado pelas informações e pelo manual.
    3 anos e 6 meses
    joodias
      2
      Resposta privada

      Boa tarde João,

      Além do que o Sereno referiu, se estas a dar os primeiros passos com os motores da V9, existe documentação no Primavera Knowledge Base (PKB) que pode ajudar-te.
      Vê o exemplo da pagina 21 no manual de extensibilidade da V9 no seguinte link:

      Embora os exemplos sejam em VB, facilmente convertes em C#, espero que ajude ;-)

      Faça login para poder traduzir
      Marcado como spam
      Criado há 3 anos e 6 meses emiliosusavila
      emiliosusavila Responsiveness Member