| ♥ 0 | Olá, estou a tentar desenvolver uma aplicacao para leitura e classificação de faturas, e depois inseri las no primavera. Gostaria de saber qual a melhor forma de o fazer. Estou a utilizar uma livraria “pythonnet” para conseguir importar as DLL do primavera e aceder as funcções do mesmo, mas no entanto nao sei se estaé a melhor forma de fazer o que pretendo, e mesmo continuando com este metodo precisava de documentação sobre as funcoes. Tambem pensei em escrever diretamente na BD mas essa forma deve ser ainda mais complicada, pois nao tenho conhecimento da estrutura da BD. Eu consegui fazer isto até agora: clr.AddReference(r'dll\SG900\Interop.RhpBE900')
from Interop.RhpBE900 import RhpBEFuncionario
funcionario = RhpBEFuncionario()
teste_func = {
"Funcionario" : 1,
"Nome" : "zeq",
"DataAdmissao": "2020-01-01",
"Situacao": "empregado",
"Instrumento": "Idk",
"Estabelecimento" : "acb",
"SegurancaSocial": "123546789",
}
func = RhpBEFuncionario(teste_func)
mas devovle me o seguinte erro:
TypeError: object does not implement RhpBEFuncionario
tambem tentei criar um dicionario de c#
from System.Collections.Generic import Dictionary
from System import String
from System import Object
func2 = Dictionary[String, Object]()
func2["Nome"] = "Ze"
func2["Funcionario"] = "999"
func2["DataAdmissao"] = "2020-01-01"
func2["Situacao"] = "Teste"
func2["Instrumento"] = "Teste"
func2["Estabelecimento"] = "Teste"
func2["SegurancaSocial"] = "123456789"
mas o erro é o mesmo Update: Penso que consigo usar a dll mas agora estou com um erro estranho no regedit motor().AbreEmpresaTrabalho("2", "TESTE", "Primavera", "Primavera.123")
...
Traceback (most recent call last):
File "<input>", line 1, in <module>
System.Runtime.InteropServices.COMException: REGISTO: Entrada HKEY_LOCAL_MACHINE\Software\PRIMAVERA\SGS900\DEFAULT\ADM não encontrada.
em Interop.ErpBS900.ErpBSClass.AbreEmpresaTrabalho(EnumTipoPlataforma& enuTipoPlataforma, String& strCodEmp, String& strUtilizador, String& strPassword, StdBETransaccao& objTrans, String& strInstancia, Boolean& blnModoPrimario)
cpts.
Marcado como spam |
| Resposta privada O teu problema está o targetCPU do teu projeto em relação à arquitectura da tua maquina, isto é, a tua maquina deve ser de 64bits e o teu ptojeto está com targetCPU de 32bit (x86). Assim a aplicação está a procurar à procura de uma entrada de registo que está em HKEY_LOCAL_MACHINESOFTWAREWOW6432NodePRIMAVERA Marcado como spam Comentários Olá,
Sim está correto (tenho maquina 64bits e estou a trabalhar com python32bits), as DLL do primavera a que tenho acesso estão todas compiladas como 32 bits, e não sei como posso fazer para mudar isto. Tentei criar manualmente as chaves no regedit mas o erro continua a aparecer. Ola, tenho o primavera instlaado num amaquina ed 32 bits e agora quando tento chamar a funcao AbreEmpresaTrabalho tenho outro erro,
IndexError: tuple assignment index out of range
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "", line 1, in
SystemError: returned a result with an error set eu tive de registar as DLL manualmente no regedit, pois ao instalar o primavera ele criar no regedit a chaves SGP900, mas quando vou usar a DLL ela pede me o caminho SGS900. |