♥ 0 | Boa tarde, Criei uma dll com 2 formulários dentro, ambos herdando de CustomForm. A partir do ERP invoco um deles e depois deste, dentro da dll invoco o outro form. Com uma versão do Primavera v10 mais antiga, consigo invocar este segundo form sem problema (estou a usar o ShowDialog()) mas com a versão atualizada do Primavera, dá-me NullReferenceException ao fazer ShowDialog(). O objecto existe porque como é possivel ver pelo código abaixo, corro um método dessa classe antes de fazer showDialog().
O código que estou a fazer é bastante simples mas dá erro na linha a bold.
FDU_DetalhesDocDigitizer FrmDetalhes = new FDU_DetalhesDocDigitizer(); FrmDetalhes.BindControlos(Doc, OpersDocDigit); FrmDetalhes.ShowDialog();
Onde BindControlos é: public void BindControlos (JObject DadosDocumento, Operacoes OpersWS) { OpersDocDigit = OpersWS; DadosDoc = DadosDocumento;
//criamos uma instância de EstruturaDoc em DocERP para guardar os dados de DadosDocumento DocERP = new EstruturaDoc( DadosDocumento[“document”][“id”].ToString(), DadosDocumento[“document”][“annotations”][“data”][“document:invoice:client_tax_id”].ToString(), DadosDocumento[“document”][“annotations”][“data”][“document:invoice:client_name”].ToString(), DadosDocumento[“document”][“annotations”][“data”][“document:invoice:currency”].ToString(), DadosDocumento[“document”][“annotations”][“data”][“document:invoice:invoice_number”].ToString(), DadosDocumento[“document”][“annotations”][“data”][“document:invoice:vendor_tax_id”].ToString(), DadosDocumento[“document”][“annotations”][“data”][“document:invoice:vendor_name”].ToString(), (decimal)DadosDocumento[“document”][“annotations”][“data”][“document:invoice:base_amount”], (decimal)DadosDocumento[“document”][“annotations”][“data”][“document:invoice:vat_amount”], (decimal)DadosDocumento[“document”][“annotations”][“data”][“document:invoice:total_amount”], DateTime.Parse(DadosDocumento[“document”][“annotations”][“data”][“document:invoice:emission_date”].ToString()));
this.txtClientName.Text = DocERP.ClienteNome; this.txtClientTaxId.Text = DocERP.ClienteNif; this.txtCurrency.Text = DocERP.Moeda; this.txtInvoiceNumber.Text = DocERP.Documento; this.txtVendorName.Text = DocERP.FornecedorNome; this.txtVendorTaxId.Text = DocERP.FornecedorNif; this.txtValorBase.EditValue = DocERP.ValorBase; this.txtValorIVA.EditValue = DocERP.ValorIVA; this.txtValorTotal.EditValue = DocERP.ValorTotal; this.txtCalend.EditValue = DocERP.DataDoc.ToString(“yyyy-MM-dd”);
//verificamos se o documento tem linhas. Se tiver, criamos a grid, senão não fazemos mais nada try { JArray ArrLinhas = JArray.FromObject(DadosDocumento[“document”][“annotations”][“data”][“document:invoice:tax_lines”]); if (ArrLinhas.Count > 0) CriarGrid(true, ArrLinhas, ref DocERP); } catch (Exception) { Console.WriteLine(“Não tem linhas”); }
//botões do formulário BotaoERP = new SimpleButton(); BotaoERP.Parent = this.containerDocERP; BotaoERP.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Style3D; BotaoERP.Text = ” Criar doc. ERP “; BotaoERP.AutoSize = true; BotaoERP.Enabled = (DocJaCriado(DocERP.Documento)) ? false : true; BotaoERP.Show(); BotaoERP.Click += new System.EventHandler(this.BotaoERP_Click);
BotaoFichOrig = new SimpleButton(); BotaoFichOrig.Parent = this.containerFichOrig; BotaoFichOrig.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Style3D; BotaoFichOrig.Text = ” Ver ficheiro original “; BotaoFichOrig.AutoSize = true; BotaoFichOrig.Enabled = true; BotaoFichOrig.Show(); BotaoFichOrig.Click += new System.EventHandler(this.BotaoFichOrig_Click);
//mostramos a label criado se o documento já tiver sido anteriormente persistido if (DocJaCriado(DocERP.Documento)) this.lblCriado.Visible = true; else this.lblCriado.Visible = false; } Marked as spam |
Private answer Bom dia, experimenta instanciar o form com este código: using (var result = BSO.Extensibility.CreateCustomFormInstance(typeof(FDU_DetalhesDocDigitizer))) { if (result.IsSuccess()) { (result.Result as FDU_DetalhesDocDigitizer).ShowDialog(); } } Vais precisar de fazer using deste namespace: using Primavera.Extensibility.Extensions;
Marked as spam Comments Muito obrigado Daniel! | |
Private answer Bom dia Daniel, Instancei o form conforme indicado: //PriCustomFormItem1 f2 = new PriCustomFormItem1(RubricaCCT); Marked as spam | |
Private answer Boa tarde, Tentei usar o codigo anterior para uma situação identica em dentro de um CustomForm chamo outro e dá-me o seguinte erro em anexo. Marked as spam |