{"id":9385,"date":"2019-07-12T14:57:25","date_gmt":"2019-07-12T13:57:25","guid":{"rendered":"https:\/\/developers.primaverabss.com\/en\/questions\/nullreference-ao-invocar-um-formulario-com-showdialog-ou-show\/"},"modified":"2020-09-08T11:56:08","modified_gmt":"2020-09-08T10:56:08","slug":"nullreference-ao-invocar-um-formulario-com-showdialog-ou-show","status":"publish","type":"cma_thread","link":"https:\/\/developers.ila.cegid.com\/en\/forum\/nullreference-ao-invocar-um-formulario-com-showdialog-ou-show\/","title":{"rendered":"NullReference ao invocar um formul\u00e1rio com ShowDialog() ou Show()"},"content":{"rendered":"<p>Boa tarde,<\/p>\n<p>Criei uma dll com 2 formul\u00e1rios 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\u00e3o do Primavera v10 mais antiga, consigo invocar este segundo form sem problema (estou a usar o ShowDialog()) mas com a vers\u00e3o atualizada do Primavera, d\u00e1-me NullReferenceException ao fazer ShowDialog(). O objecto existe porque como \u00e9 possivel ver pelo c\u00f3digo abaixo, corro um m\u00e9todo dessa classe antes de fazer showDialog().<\/p>\n<p>&nbsp;<\/p>\n<p>O c\u00f3digo que estou a fazer \u00e9 bastante simples mas d\u00e1 erro na linha a bold.<\/p>\n<p>&nbsp;<\/p>\n<p>FDU_DetalhesDocDigitizer FrmDetalhes = new FDU_DetalhesDocDigitizer();<\/p>\n<p>FrmDetalhes.BindControlos(Doc, OpersDocDigit);<\/p>\n<p><strong>FrmDetalhes.ShowDialog();<\/strong><\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>Onde BindControlos \u00e9:<\/p>\n<p>public void BindControlos (JObject DadosDocumento, Operacoes OpersWS)<\/p>\n<p>{<\/p>\n<p>OpersDocDigit = OpersWS;<\/p>\n<p>DadosDoc = DadosDocumento;<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/criamos uma inst\u00e2ncia de EstruturaDoc em DocERP para guardar os dados de DadosDocumento<\/p>\n<p>DocERP = new EstruturaDoc(<\/p>\n<p>DadosDocumento[&#8220;document&#8221;][&#8220;id&#8221;].ToString(),<\/p>\n<p>DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:client_tax_id&#8221;].ToString(),<\/p>\n<p>DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:client_name&#8221;].ToString(),<\/p>\n<p>DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:currency&#8221;].ToString(),<\/p>\n<p>DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:invoice_number&#8221;].ToString(),<\/p>\n<p>DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:vendor_tax_id&#8221;].ToString(),<\/p>\n<p>DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:vendor_name&#8221;].ToString(),<\/p>\n<p>(decimal)DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:base_amount&#8221;],<\/p>\n<p>(decimal)DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:vat_amount&#8221;],<\/p>\n<p>(decimal)DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:total_amount&#8221;],<\/p>\n<p>DateTime.Parse(DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:emission_date&#8221;].ToString()));<\/p>\n<p>&nbsp;<\/p>\n<p>this.txtClientName.Text = DocERP.ClienteNome;<\/p>\n<p>this.txtClientTaxId.Text = DocERP.ClienteNif;<\/p>\n<p>this.txtCurrency.Text = DocERP.Moeda;<\/p>\n<p>this.txtInvoiceNumber.Text = DocERP.Documento;<\/p>\n<p>this.txtVendorName.Text = DocERP.FornecedorNome;<\/p>\n<p>this.txtVendorTaxId.Text = DocERP.FornecedorNif;<\/p>\n<p>this.txtValorBase.EditValue = DocERP.ValorBase;<\/p>\n<p>this.txtValorIVA.EditValue = DocERP.ValorIVA;<\/p>\n<p>this.txtValorTotal.EditValue = DocERP.ValorTotal;<\/p>\n<p>this.txtCalend.EditValue = DocERP.DataDoc.ToString(&#8220;yyyy-MM-dd&#8221;);<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/verificamos se o documento tem linhas. Se tiver, criamos a grid, sen\u00e3o n\u00e3o fazemos mais nada<\/p>\n<p>try<\/p>\n<p>{<\/p>\n<p>JArray ArrLinhas = JArray.FromObject(DadosDocumento[&#8220;document&#8221;][&#8220;annotations&#8221;][&#8220;data&#8221;][&#8220;document:invoice:tax_lines&#8221;]);<\/p>\n<p>if (ArrLinhas.Count &gt; 0)<\/p>\n<p>CriarGrid(true, ArrLinhas, ref DocERP);<\/p>\n<p>}<\/p>\n<p>catch (Exception)<\/p>\n<p>{<\/p>\n<p>Console.WriteLine(&#8220;N\u00e3o tem linhas&#8221;);<\/p>\n<p>}<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/bot\u00f5es do formul\u00e1rio<\/p>\n<p>BotaoERP = new SimpleButton();<\/p>\n<p>BotaoERP.Parent = this.containerDocERP;<\/p>\n<p>BotaoERP.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Style3D;<\/p>\n<p>BotaoERP.Text = &#8221; Criar doc. ERP &#8220;;<\/p>\n<p>BotaoERP.AutoSize = true;<\/p>\n<p>BotaoERP.Enabled = (DocJaCriado(DocERP.Documento)) ? false : true;<\/p>\n<p>BotaoERP.Show();<\/p>\n<p>BotaoERP.Click += new System.EventHandler(this.BotaoERP_Click);<\/p>\n<p>&nbsp;<\/p>\n<p>BotaoFichOrig = new SimpleButton();<\/p>\n<p>BotaoFichOrig.Parent = this.containerFichOrig;<\/p>\n<p>BotaoFichOrig.LookAndFeel.Style = DevExpress.LookAndFeel.LookAndFeelStyle.Style3D;<\/p>\n<p>BotaoFichOrig.Text = &#8221; Ver ficheiro original &#8220;;<\/p>\n<p>BotaoFichOrig.AutoSize = true;<\/p>\n<p>BotaoFichOrig.Enabled = true;<\/p>\n<p>BotaoFichOrig.Show();<\/p>\n<p>BotaoFichOrig.Click += new System.EventHandler(this.BotaoFichOrig_Click);<\/p>\n<p>&nbsp;<\/p>\n<p>\/\/mostramos a label criado se o documento j\u00e1 tiver sido anteriormente persistido<\/p>\n<p>if (DocJaCriado(DocERP.Documento))<\/p>\n<p>this.lblCriado.Visible = true;<\/p>\n<p>else<\/p>\n<p>this.lblCriado.Visible = false;<\/p>\n<p>}<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Boa tarde, Criei uma dll com 2 formul\u00e1rios 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\u00e3o do Primavera v10 mais antiga, consigo invocar este segundo form sem problema (estou a usar o ShowDialog()) mas com a vers\u00e3o atualizada [&hellip;]<\/p>\n","protected":false},"author":177,"featured_media":0,"template":"","tags":[],"cma_category":[],"cma_difficulty_level":[],"forum-tag":[369,370,374],"class_list":["post-9385","cma_thread","type-cma_thread","status-publish","hentry","forum-tag-general","forum-tag-integration","forum-tag-v10-en","forum-languages-pt"],"_links":{"self":[{"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/cma_thread\/9385","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/cma_thread"}],"about":[{"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/types\/cma_thread"}],"author":[{"embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/users\/177"}],"wp:attachment":[{"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/media?parent=9385"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/tags?post=9385"},{"taxonomy":"cma_category","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/cma_category?post=9385"},{"taxonomy":"cma_difficulty_level","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/cma_difficulty_level?post=9385"},{"taxonomy":"forum-tag","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/en\/wp-json\/wp\/v2\/forum-tag?post=9385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}