Try ERPNext Buy Support Partners Foundation

Was bedeuten die Argumente frm, cdt und cdn?

Hallo,

Ich bin gerade dabei die Tutorial Reihe “ERPNext Developer videos” durchzugehen.

Um den Quellcode in Video 4 zu verstehen müsste ich dazu wissen, was die Argumente frm, cdt und cdn bedeuten?

Laut Google bedeuten “cdt” und “cdn” entweder
childdoctable und childdocname oder currentdoctable und currentdocname. Würde jetzt gerne wissen was das Richtige ist.

Und zu “frm” habe ich nichts gefunden. Wüsste da jemand was?

Meine Spekulation: frm = frappemodule?!?

besten Gruß

Hi,
benne bitte die Stelle im Video, oder poste den Code. Habs spontan nicht gefunden, aber auch nicht alles durchgeguckt. Als Anfängerkurs würde ich dir das empfehlen: https://frappeframework.com/docs/user/en/tutorial

frm ist jeweils das Formular (siehe auch cur_frm), darüber sind alle Werte des Formulars zugänglich (z.B. frm.doc.customer). cdt ist der current doctype (z.B. Sales Invoice Item) und cdn der current doctype name. Das wird normalerweise verwendet, um Zeilen in Untertabellen zu identifizieren.

Hi @itsdave,

momentan viel zu tun gehabt, aber dennoch in ERPNext auch noch gut dazugelernt.

Daher recht spät die Antwort.

Also im Prinzip habe ich das Grundkonzept verstanden, auch was den Quellcode für die Meetingapp aus dem Tutorial angeht. Dennoch bin ich noch nicht ganz aufgeklärt. Zumindest was das Prinzip des Frameworks selbst (auf Entwicklerebene) angeht.

Das nachfolgende Bild ist in min. 12:36 des vierten Videos aus der Meeting App Tutorialreihe erstellt worden.

Gruß

Juri

Hi @lasalesi,

ok also das mit cdt und cdn, denke ich, habe ich verstanden. Danke
Könntest du mir bitte den Befehl: frm.doc.customer anhand des unteren Beispiel nochmal etwas genauer erklären?

Ist auch ein Snippet aus dem o.g. Tutorial.

DeepinBildschirmfoto_Bereich%20ausw%C3%A4hlen_20201223172307

Und genauer gesagt Video 5. Sicherheitshalber nebenbei erwähnt.

frm.doc.customer enthält als frm das ganze Formular, darin in doc das “Dokument”, also den effektiven Datensatz. customer ist dann ein Feld im Datensatz, hier ein Link-Feld auf einen Kunden.

Du kannst so die Referenz auf den Kunden des aktuellen Dokuments auslesen

var customer = frm.doc.customer;

Denke daran, frm muss als Aufruf-Parameter gesetzt sein. Falls nicht, gibt es global cur_frm mit einer analogen Funktion, also cur_frm.doc.customer

Jedes Feld kann aber auch einen Change-Trigger haben mit dem Namen, also in dem Beispiel

frappe.ui.form.on("Meeting", {
    customer: function(frm) {
        // wird ausgeführt wenn der Wert des Feldes customer geändert wird
        frappe.show_alert("Customer ist neu " + frm.doc.customer); 
    }
});

Hoffe das hilft.