0
I was trying to use a par method to adevolver a bytearray using ERP but get an exception spent some time saying Object Variable or With Block Not Set, which may be ?
PS. Yes I know that the engine has a native function but I wanted to use this to then do the settlement document and do not know what can be, any suggestions ?
public ImpressaoVendaERP ImprimeDocumentoVenda(string filial, string tipoDoc, string serie, int numdoc, int numeroVias, out string mensagem, bool usarViasERP = true)
{
mensagem = "A iniciar ligação ERP." + Environment.NewLine;
ImpressaoVendaERP pdf = new ImpressaoVendaERP();
try
{
mensagem = "";
if (ERP == null)
{
mensagem += "Não foi efetuado o login ou a sessão expirou" + Environment.NewLine;
return pdf;
}
else
{
//Se não foi efetuado Login
if (Modelo == null)
{
mensagem += "Empresa não aberta ou ligação não efetuada." + Environment.NewLine;
return pdf;
}
try
{
var documentoExiste = ERP.Comercial.Vendas.Existe(filial, tipoDoc, serie, numdoc);
//Se não existe o documento
if (!documentoExiste)
{
mensagem += "O Documento não Existe." + Environment.NewLine;
return pdf;
}
//string id = ERP.Comercial.Vendas.DaValorAtributo(filial, tipoDoc, serie, numdoc, "ID").ToString();
//string strSelFormula = String.Format("{{CabecDoc.Id}}='{0}'", id);
int NVias = usarViasERP ? int.Parse(ERP.Comercial.Series.DaValorAtributo("V", tipoDoc, serie, "NumVias").ToString()) : numeroVias;
string Mapa = ERP.Comercial.Series.DaValorAtributo("V", tipoDoc, serie, "Config").ToString();
Mapa = (String.Compare(Mapa, "", false) == 0 ? "GcpVls01.rpt" : Mapa + ".rpt");
Plataforma.Mapas.Inicializar("VND");
for (int i = 0; i < NVias; i++)
{
string dadosEmpresa = @"StringVar Nome;
StringVar Morada;
StringVar Localidade;
StringVar CodPostal;
StringVar Telefone;
StringVar Fax;
StringVar Contribuinte;
StringVar CapitalSocial;
StringVar Conservatoria;
StringVar Matricula;
StringVar MoedaCapitalSocial;
Nome:='" + ERP.Contexto.IDNome.Replace("'", "''") + @"';
Morada:='" + ERP.Contexto.IDMorada.Replace("'", "''") + @"';
Localidade:='" + ERP.Contexto.IDLocalidade.Replace("'", "''") + @"';
CodPostal:='" + ERP.Contexto.IDCodPostal.Replace("'", "''") + @"';
Telefone:='" + ERP.Contexto.IDTelefone.Replace("'", "''") + @"';
Fax:='" + ERP.Contexto.IDFax.Replace("'", "''") + @"';
Contribuinte:='" + ERP.Contexto.IFNIF.Replace("'", "''") + @"';
CapitalSocial:= '" + ERP.Contexto.ICCapitalSocial.ToString().Replace(",", ".") + @"';
Conservatoria:='" + ERP.Contexto.ICConservatoria.Replace("'", "''") + @"';
Matricula:='" + ERP.Contexto.ICMatricula.Replace("'", "''") + @"';
MoedaCapitalSocial:='" + ERP.Contexto.MoedaBase.Replace("'", "''") + @"'";
String percursoMapa = Plataforma.RegistryPRIMAVERA.DaPercursoMapasEx("GCP", ERP.Contexto.Instancia) + Mapa;
if (!File.Exists(percursoMapa))
{
percursoMapa = Plataforma.RegistryPRIMAVERA.DaPercursoMapasNovosEx(ERP.Contexto.Instancia) + Mapa;
}
if (File.Exists(percursoMapa))
{
string inicializaParametros = @"NumberVar TipoDesc;
NumberVar DecQde;
NumberVar DecPrecUnit;
StringVar MotivoIsencao;
BooleanVar UltimaPag;
StringVar PRI_TextoCertificacao;
TipoDesc:= 0;
DecQde:=3;
DecPrecUnit:=" + Plataforma.FuncoesGlobais.DaCasasDecimais("Moedas", "DecArredonda") + @";
UltimaPag:=False;
PRI_TextoCertificacao:='" + ERP.Comercial.Vendas.DevolveTextoAssinaturaDoc(tipoDoc, serie, numdoc, filial) + "';";
Plataforma.Mapas.SetFormula("InicializaParametros", inicializaParametros);
try
{
//Diretoria com o Nome do Ficheiro
string nomeDocumentoExportado = (String.Format("{0}TEMP\\{1}_{2}_{3}.PDF", AppDomain.CurrentDomain.BaseDirectory, tipoDoc, serie, numdoc)).ToUpper();
Plataforma.Mapas.set_Destino(CRPEExportDestino.edFicheiro);
Plataforma.Mapas.SetFileProp(Interop.StdPlatBS900.CRPEExportFormat.efPdf, nomeDocumentoExportado);
//Atribui a Fórmula de REgisto
string strSelFormula = "(({CabecDoc.NumDoc} = " + numdoc.ToString() + " AND {CabecDoc.Serie} = \"" + serie + "\") AND {CabecDoc.TipoDoc} = \"" + tipoDoc + "\")";
if (Plataforma.Mapas.ImprimeListagem(percursoMapa.Substring(0, percursoMapa.Length - 4), "Documento de Venda", "P", 1, "N", strSelFormula, 0, false, true) != 0)
{
//Espera que o documento esteja exportado
int contador = 0;
while (!File.Exists(nomeDocumentoExportado))
{
contador++;
if (contador >= 10000)
{
break;
}
}
//Abre o ficheiro e converte para ByteArray
pdf.Dados = File.ReadAllBytes(nomeDocumentoExportado);
//Apaga o Ficheiro
File.Delete(nomeDocumentoExportado);
}
//Fim de impressão
}
catch (Exception ex)
{
//ignorar...
mensagem += ex.Message;
return pdf;
}
}
else
{
mensagem += "Não existe o mapa: " + percursoMapa + Environment.NewLine;
return pdf;
}
}
}
catch (Exception ex)
{
mensagem += ex.Message;
return pdf;
}
}
}
catch (Exception ex)
{
mensagem += ex.Message;
return pdf;
}
mensagem += "Impressão efetuada com sucesso.";
return pdf;
}
This error seems to me to be relative to how you are referencing objects and accessing them within blocks Try/Catch. Have you tried running in Debug to see where the exception is being cast?
– Flávio Jardim
@Fláviojardim of course yes, the error occurs in the line of printing and listing and in addition it is done like dozens of other methods that work well as Transformadocumentex2... etc... It must be something that I do not understand in the method of Imprimelistagem...
– Bruno Marques
@Brunomarques, is PDF actually generated? Why not simplify the method
ImprimeListagem
?Plataforma.Mapas.Inicializar "GCP" 
 Plataforma.Mapas.Destino = edFicheiro 
 Plataforma.Mapas.SetFileProp efPdf, "C:\NomeDoFicheiro.pdf"
 Plataforma.Mapas.ImprimeListagem sReport:="ACTCOB01", sTitulo:="Report ACTCOB01...", sDestino:="W", iNumCopias:=1, bMapaSistema:=True
– Nuno Gonçalves
There was an error in the method Printing in a build previous, which I think is corrected in the last build of the Platform. What build of PLT has installed?
– João Martins
@Joãomartins have the following versions of the modules: - PLT and BAS: 09.1509.1046 - GCP: 09.1509.1111
– Bruno Marques
It didn’t simplify because besides having to work like this, I need to generate settlement Pdfs and other maps.... Anyone have any idea? Will be engine bug?
– Bruno Marques
If it is version 9 then the bug question does not arise, since it was in V10.
– João Martins
@Joãomartins It is in version 9 yes I have the problem....
– Bruno Marques
@Brunomarques what is the right goal? You want to use PDF after printing?
– João Martins