Fórum
Ver pergunta

Erro ao aceder às linhas do documento no evento ArtigoIdentificado do Editor de Vendas   

72 visualizações
1
0

Estamos a migrar um projeto de VBA para a v10/VB.Net

 

Neste caso em concreto pretende-se associar a descrição de um artigo em inglês à descrição em português.

 

No evento “ArtigoIdentificado” do “Editor de Vendas” ao executar métodos relacionadas com as linhas dos documentos ocorre o erro “A referência de objecto não foi definida como uma instância de um objecto“.

 

Nos testes que fiz verifiquei que o mesmo erro ocorre com vários métodos relacionados com as linhas do documento.

 

O código que estou a tentar executar é o seguinte:

 

Public Overrides Sub ArtigoIdentificado(Artigo As String, NumLinha As Integer, ByRef Cancel As Boolean, e As ExtensibilityEventArgs)
    MyBase.ArtigoIdentificado(Artigo, NumLinha, Cancel, e)
    Dim strDescrEN As String

    'Adiciona a descrição em ingles à descrição standard em PT.
    'Só executa de o Cancel for false e se a descrição em EN existir
    If Cancel = False Then
        strDescrEN = BSO.Base.ArtigosIdiomas.DaValorAtributo(Artigo, "EN", "Descricao")
        If Len(strDescrEN) > 0 Then
           Me.DocumentoVenda.Linhas(NumLinha).Descricao = Me.DocumentoVenda.Linhas(NumLinha).Descricao & " | " & strDescrEN
        End If
    End If
End Sub

Obrigado!

 

EDIT: Entretanto apercebi-me do método “GetEdita” alterei o código para:

Me.DocumentoVenda.Linhas.GetEdita(NumLinha).Descricao = Me.DocumentoVenda.Linhas.GetEdita(NumLinha).Descricao & ” | ” & strDescrEN

Assim não dá erro e obtenho a funcionalidade que preciso.

É este o caminho correto?

TIA

Faça login para poder traduzir
V10
Marcado como spam
Criado há 3 anos e 7 meses jorgeoliveira
jorgeoliveira Responsiveness Member
1 respostas
1
Resposta privada

Sim está correcta a forma de aceder às linhas. No caso do editor e nesse evento em concreto podes usar uma das seguintes formas de aceder as linhas.

public class UiEditorVendas : EditorVendas
{
	public override void ArtigoIdentificado(string Artigo, int NumLinha, ref bool Cancel, ExtensibilityEventArgs e)
	{
		// Iterar por todas as linhas
		foreach(VndBE100.VndBELinhaDocumentoVenda l in this.DocumentoVenda.Linhas)
		{

		}

		// Aceder apenas a uma linha
		var linha = this.DocumentoVenda.Linhas.GetEdita(NumLinha);
	}
}

 

Faça login para poder traduzir
Marcado como spam
Criado há 3 anos e 7 meses sergiosereno
sergiosereno Most Valuable Professional