Die genauen Regeln, wie sich diese Adresse bildet (und wann man die Verknüpfungsnamen explizit mit aufführen muss und wann man das nicht darf), weiß ich leider auch nicht. Aber das Eigenschaftsfenster des entsprechenden Eingabefeldes stellt eine Schaltfläche zur Verfügung, die diesen Namen in die Zwischenablage kopiert
Der Aufbau der „Kante“ für den Zugriff auf 1:1 Felder ist: <Schlüsselfeld>.<Zielansicht>.<Schlüsselfeld>.<Feldname>. Der <Feldname> kann dann wiederum aus solch einer Kante bestehen, wenn Sie auf ein 1:1:1 Feld zugreifen wollen. Wichtig ist auch, dass alle Feldnamen die jeweils physikalischen Feldnamen sein müssen, also keine ggf. übersetzten Aliasnamen.
In Ihrem Fall lautet der Feldname also (gemäß Ihren Screenshots):
"ProductID.Produkte.ID.VAT.UStSätze.No.UStSatz"
(Bei Ihnen fehlte die „ID“ als Schlüsselfeld der Zielansicht, um vom Belegposten zum Produkt zu kommen.)
Das andere theoretisch mögliche Problem könnte noch sein, wie Sie an den oRecord kommen. Das darf NICHT der Beleg-Record sein, sondern muss der jeweilige BelegPosten-Record sein. Denn es gibt in einem Beleg ja „N“ BelegPosten-Records, die auch alle unterschiedliche USt.-Sätze haben könnten. Falls das noch für Sie ein Knackpunkt ist, einfach nochmal hier kurz melden, dann dröseln wir das auf.
„UStSatz“. Mich macht grad noch stutzig, dass der Feldname DEUTSCH ist, aber alle anderen Feldnamen Englisch? Ist das wirklich der PHYSIKALISCHE Feldname? Müsste das Feld nicht „Rate“ o.ä. heißen?
Ansonsten: Mir fallen direkt Zugriffsrechte ein (Leserechte auf „VAT“, Zugriffsrechte auf die Ansicht „UStSätze“, Leserechte dort auf das Feld „UStSatz“)
Wenn Sie in der Ansicht Belegposten das Feld mal platzieren (so wie ich beispielhaft hier in der Large-Solution)
Ich weiß nicht, was das Ziel des Scriptes letztendlich ist, aber ich möchte Sie noch auf 2 mögliche Fallstricke hinweisen:
1.) Der Zugriff auf die Belegposten über den Container wendet einen etwaigen Containerfilter ebenfalls an. Wenn also gerade irgendein Container-Filter aktiv ist , „sieht“ das Script ausschließlich nur die gerade sichtbaren (=gefilterten) Belegposten und nicht alle. Das kann gewollt sein. Oder aber auch eine blöde Fußangel.
Wenn Sie sicher alle Belegposten erwischen wollen:
Set oRecordSet = cRM.CurrentProject.ActiveViews.ActiveView.CurrentRecordSet.CurrentRecord.GetRelationalRecordSet("ID.Belegposten.SalesDocumentID")
(basierend auf den Feldnamen und Ansichtennamen der Large-Solution, )
2.) Den USt-Satz aus dem verknüpften Produkt zu holen kann rein theoretisch zu einer Diskrepanz gegenüber dem aktuell im Belegposten tatsächlich eingetragenen Umsatzsteuer-Satz führen. Zumindest in der Large-Solution gibt es ein direktes Belegposten-Feld, das direkt zu einem USt-Satz führt:
Angenommen, Sie würden eine Auslandsrechnung erstellen, dann wären die Umsatzsteuern der konkreten Belegposten 0% - aber in den Produkt-Stammdaten würde natürlich dennoch (z. B.) 19% eingetragen sein. Das kann genau so gewollt sein, dass Sie explizit auf die Stammdaten-USt-Sätze zugreifen wollen, es kann aber auch eine Stolperfalle sein, wenn der dort hinterlegte USt-Satz nachher gar nicht der USt-Satz aus dem Posten ist.