Delphi Can

Orjinalini görmek için tıklayınız: E fatura okuma hakkında
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2
Kendi kullandığımız Go3 Ticari programına muhtelif firmalardan gelen E faturaları aktarmak istiyorum.
E faturaları grid' de memo da veya başka bir bileşende nasıl gösterebilirim.
İmza kısmı ile ilgilenmiyorum e faturadan 
fatura trh, no , cari bilgiler, stok bilgileri fiyatlar gibi bilgileri almak istiyorum.


Delphican, Delhiturkiye  ve google 
Delphi  E fatura okuma ve Delphi XML okuma şeklinde arattım

Delphi E fatura okuma ile ilgili yazı örnek bulamadım tamamına yakını oluşturma imzalama ve iletme ile alakalı

Okuma ile ilgili soru çok cevap bulamadım.

Delphi XML okuma ile ilgili örnek çok bu örnekler ile E fatura okunamıyor.
xml'i IXMLDocument ile açıp gerekli değerleri okuyabilirsin,

Örneğin :
var
  D : IXMLDocument;
  Node : IXMLNode;
begin
  D:= LoadXMLDocument('xyzgelenfatura.xml');
  Node  := D.DocumentElement;
  Node.ChildNodes.FindNode('AccountingSupplierParty').Text; // Müşteri
Sayın emrahg Cevabınız için teşekkür ederim 

Yeni proje oluşturdum.
forma 
 Button ve  XMLDocument  
ekledin onclick olayına
procedure TForm1.Button1Click(Sender: TObject);
var
 D : IXMLDocument;
 Node : IXMLNode;
begin
 D:= LoadXMLDocument('C:\Users\CASPER17\Desktop\yazilim\test\KAE2017000025694.xml');
 Node  := D.DocumentElement;
 Node.ChildNodes.FindNode('AccountingSupplierParty').Text; // Müşteri

end;
  

yazdım çalıştırdığımda resimdeki hata Access Violation hatası veriyor. 

Birden fazla firmadan gelen fatura örneği ile denendi sonuç aynı
Merhaba,

üstteki örneğe binaen UBL 2.1 standartlarındaki AccountingSupplierParty node'unun ana verisine erişmek için alacağınız field;

item.Invoice.AccountingSupplierParty.Party.PartyName.Name.Value;

InvoiceType > AccountingSupplierPartyType > PartyType > PartyNameType > NameType > Value(String)

Bence önce tam olarak XML dosyayı okuyup HTML verisi olarak Memo alanda listelemeniz. Daha sonra node ve level parçalamaları yaparak ham verileri toplayacağınız kod bloklarını yazarsınız. Veya ComplexType denilen özel tipleri oluşturarak WSDL standartındaki bir XML gibi davranıp nesneden dönen değeri doğrudan muadil bir nesneye aktararak işlem yapabilirsiniz. Hangi entegratör ile çalışıyorsunuz?
Abdullah bey cevabınız için teşekkür ederim.

Ben e-fatura veya e-Arşiv fatura kullanmıyorum.
Herhangi bir enteğratör ile çalışmıyoruz.

İlk mesajımda belirtiğim gibi bana gelen e-arşiv faturaları kullanmakta olduğumuz ticari programın fatura bölümüne aktarmak
istiyorum. Xml formatında farklı firmalardan gelen faturaları delphi de herhangi bir bileşene atarak 
görüntülemek şu an işimi görecektir.

Hayırlı akşamlar.
Merhaba,

Aslında kod ilerlemesi olarak doğru yönde ilerlemişsiniz. Tek sıkıntı node olarak bulduğunuz AccountingSupplierParty (fatura gönderici bilgileri ana nesnesi)'nin içindeki diğer kırılımları da gezmeniz gerektiği.

Yani önce AccountingSupplierParty'yi node olarak bulun ve değişkene atayın. Daha sonra onun içinde yukarıdaki cevapta yazdığım değişkeni bulun. Sırayla en alt nesneye kadar ilerleyin. Sonra Value erişimi yapabilirsiniz. Bir deneyin eğer olmazsa buraya yazın ben akşam deneyip size demo proje atayım.

İyi günler
Selam,
Aşağıdaki kod, xml dosyasındaki node lar, text elementler nelerdir onları tek tek dökecektir. Görünce daha kolay işlem yapabilirsiniz.

var
 D : IXMLDocument;
IlkNode : IXMLNode;
begin
memo1.Lines.Clear;
D:= LoadXMLDocument('D:\BAF2017000003803UBL.xml');
D.Active := True ;
IlkNode:=D.DocumentElement.ChildNodes.First; // ilk node invoice tir
repeat
if (IlkNode.IsTextElement=true) then
Memo1.Lines.Add(IlkNode.NodeName+' - '+IlkNode.Text)
else
Memo1.Lines.Add('          ---- ChildNode : '+ IlkNode.NodeName);

IlkNode  := IlkNode.NextSibling;//bir sonraki node ya atla
until IlkNode=Nil;
Cevaplar için teşekkür ederim pazartesi deneyeceğim inşallah.
E-Fatura Xml inden bazı verileri şu şekilde çektim ancak aşağıdaki resimde olduğu gibi VKN ve ona benzer alt düğümlerin cbc parametrelerini nasıl alabilirim.

procedure ChangeNode(parent:IXMLNode;name:String; namespace:String;value:String);
var                          
node:IXMLNode;                             
begin
  node:=parent.ChildNodes.FindNode(name,namespace);
  if node=nil then
  exit;
  if value='' then
  begin
    parent.ChildNodes.Remove(node);
    exit;
  end;
  node.Text:=value;
end;
function ChangeSearch(parent:IXMLNode;name:String; namespace:String):String;
var
node:IXMLNode;
begin
  node:=parent.ChildNodes.FindNode(name,namespace);
  if node=nil then
  exit;
  if node.Text='' then
  begin
    parent.NextSibling;

    //exit;
  end;
  donen:=node.Text;
  Result:=donen;
procedure TForm2.Button1Click(Sender: TObject);
var
doc:IXMLDocument;
parent:IXMLNode;
begin
doc:= LoadXMLDocument('C:\Users\Leaked\Desktop\bugün\XML GİB Fatura\XML_OKUMA\TemelFaturaOrnegi.xml');
parent:=doc.DocumentElement;
Edit1.Text:= ChangeSearch(parent,'ProfileID',NS_cbc);
Edit2.Text:= ChangeSearch(parent,'ID',NS_cbc);
Edit3.Text:= ChangeSearch(parent,'CopyIndicator',NS_cbc);
Edit4.Text:= ChangeSearch(parent,'UUID',NS_cbc);
Edit5.Text:= ChangeSearch(parent,'IssueDate',NS_cbc);
Edit6.Text:= ChangeSearch(parent,'IssueTime',NS_cbc);
Edit7.Text:= ChangeSearch(parent,'InvoiceTypeCode',NS_cbc);
Edit8.Text:= ChangeSearch(parent,'DocumentCurrencyCode',NS_cbc);
end;
E-fatura xmli:
1.png
Yukarıda daha önce vermiş olduğum kod ile XML nin içersindeki değerleri okuyabiliyormusunuz önce onu deneyin, okuyabilirseniz (ki bende okuyor) gerisi zaten çok kolay, hangi kısım hangi kısmın içerisinde göreceksiniz zaten ona göre de gerisini çözebilirsiniz.
Sayfalar: 1 2