Ερώτηση
Πώς να συνδέσετε ανά κάτοχο σε μια φόρμα;
ΑπάντησηΑς υποθέσουμε ότι κάπου, για παράδειγμα, σε μια φόρμα λίστας μητρώου, θέλετε να δώσετε στον χρήστη την ευκαιρία να καθορίσει διαδραστικά τη μονάδα αποθήκευσης ενός αντικειμένου. Η «Ονοματολογία» είναι ένα βιβλίο αναφοράς. Η "Μονάδα αποθήκευσης" είναι ένας κατάλογος που εξαρτάται από την ονοματολογία. Ο κατάλογος "Ονοματολογία" περιέχει συνήθως πολλά στοιχεία. Εάν έχουμε τη μορφή λίστας καταχωρητών, απλώς προσθέτουμε δύο στήλες - "Στοιχείο" και "Μονάδα αποθήκευσης", τότε όταν προσπαθήσουμε να επιλέξουμε διαδραστικά μια "μονάδα αποθήκευσης" θα παγώσει. Έχουμε ήδη γράψει σχετικά με αυτό στο άρθρο "Πώς να ορίσετε την επιλογή ενός δευτερεύοντος στοιχείου ενός καταλόγου και εδώ θα εξετάσουμε το πρόβλημα από μια ελαφρώς διαφορετική οπτική γωνία".
Για την αποφυγή παγώματος, συνήθως εκχωρείται η "Επικοινωνία από τον ιδιοκτήτη". Δείτε εικόνα. Αριστερά στο σχήμα είναι η φόρμα λίστας καταχωρητών, δεξιά στο σχήμα οι ιδιότητες του πεδίου εισαγωγής "ex" (το ίδιο που σημειώνεται στα αριστερά στη φόρμα λίστας μητρώου με κόκκινα γράμματα "ex") . Για να προσδιορίσετε μοναδικά τον ιδιοκτήτη (όχι μέσω προγραμματισμού), για το πεδίο εισαγωγής "ex", συμπληρώστε το πεδίο που σημειώνεται στο σχήμα με τον αριθμό "1" - "Σχέση κατά ιδιοκτήτη", όπου υποδεικνύεται η σύνδεση με το πεδίο "Ονοματολογία". .
Ερώτηση
Πώς να δημιουργήσετε μέσω προγραμματισμού έναν σύνδεσμο από τον κάτοχο σε μια φόρμα;
ΑπάντησηΩστόσο, συμβαίνει ότι ο ιδιοκτήτης πρέπει να εγκατασταθεί μέσω προγραμματισμού, ανάλογα με κάποια συνθήκη.
Ας υποθέσουμε ότι το πεδίο "EX" της λίστας μητρώων πρέπει να συσχετιστεί με το πεδίο ιδιοκτήτη "Μονάδα μεταφοράς" (το οποίο είναι επίσης στοιχείο του καταλόγου "Ονοματολογία"), εάν η μονάδα μεταφοράς είναι συμπληρωμένη και εάν δεν έχει συμπληρωθεί in, τότε ο ιδιοκτήτης θα πρέπει να θεωρείται η τιμή στο πεδίο "Ονοματολογία" - δείτε τον αριθμό ευρετηρίου 3 στο σχήμα.
Πώς να το εφαρμόσετε αυτό;
Το θέμα είναι ότι Σε αυτήν την περίπτωση, το πεδίο 1 «Σχέση κατά ιδιοκτήτη» δεν χρειάζεται να συμπληρωθεί. Αλλά στο πεδίο 2 "Έναρξη επιλογής" πρέπει να υποδείξετε τη διαδικασία κατά την οποία η σύνδεση από τον ιδιοκτήτη θα καθοριστεί μέσω προγραμματισμού χρησιμοποιώντας μια οδηγία "ChoiceByOwner".
Παράδειγμα διαδικασίας:
Ερώτηση
Στοιχείο. SelectByOwner = Ιδιοκτήτης;
ΑπάντησηΤέλος Διαδικασίας
Πώς να προσθέσετε μέσω προγραμματισμού ένα νέο στοιχείο καταλόγου εάν έχει κάτοχο.
// ... - το ίδιο είναι εδώ, συμπληρώνουμε όλες τις απαραίτητες λεπτομέρειες
// στην πραγματικότητα, γράψτε τη δημιουργημένη μονάδα αποθήκευσης στη βάση δεδομένων:
ΠΡΩΗΝ. Write() ;
Πληροφορίες που λαμβάνονται από τον ιστότοπο
Ας δούμε το πρόβλημα από μια ελαφρώς διαφορετική οπτική γωνία.
Για παράδειγμα, το πεδίο "IST" της λίστας μητρώων πρέπει να συσχετιστεί με το πεδίο ιδιοκτήτη "Μονάδα μεταφοράς" (το οποίο είναι επίσης στοιχείο του καταλόγου "Ονοματολογία"), εάν η μονάδα μεταφοράς είναι συμπληρωμένη και εάν όχι συμπληρωμένο, τότε η τιμή στο πεδίο «Ονοματολογία» θα πρέπει να θεωρείται ως κάτοχος - βλέπε ευρετήριο Νο. 3 στο σχήμα.
Πώς εφαρμόζεται αυτό;
Σε αυτήν την περίπτωση, το πεδίο 1 «Σχέση κατά ιδιοκτήτη» δεν χρειάζεται να συμπληρωθεί. Ταυτόχρονα, όμως, είναι απαραίτητο στο πεδίο 2 «Έναρξη επιλογής» να υποδείξετε τη διαδικασία κατά την οποία θα καθοριστεί μέσω προγραμματισμού η σύνδεση από τον ιδιοκτήτη χρησιμοποιώντας την οδηγία «Επιλογή από κάτοχο».
Παράδειγμα διαδικασίας:
Πληροφορίες διαδικασίας Λίστα καταχώρησης Επιλογή έναρξης μονάδας αποθήκευσης (στοιχείο, τυπική επεξεργασία)
Owner = Form Elements.Information RegisterList.CurrentData.Nomenclature;
If ValueFilled(FormElements.InformationRegisterList.CurrentData.TransportUnit) Τότε
Αν Στοιχεία Φόρμας.Πληροφορίες RegisterList.CurrentData.Transport Unit.Item Type = Transfers.usTipsItem.Cargo Τότε
Owner = Form Elements.Information RegisterList.CurrentData.TransportUnit
endIf;
endIf;
Item.SelectByOwner = Κάτοχος;
Τέλος Διαδικασίας
Πρέπει να δημιουργήσουμε μέσω προγραμματισμού ένα νέο στοιχείο καταλόγου "Storage Units", ο κάτοχος του οποίου είναι ο κατάλογος "Nomenclature"
Αυτό γίνεται ως εξής:
// δημιουργήστε ένα νέο στοιχείο καταλόγου "Μονάδες αποθήκευσης":
IST = Directories.StorageUnits.CreateItem();
// γράψτε τον ιδιοκτήτη για αυτό - έναν σύνδεσμο προς την ονοματολογία, όπου η "Ονοματολογία" είναι ένα στοιχείο του καταλόγου "Ονοματολογία" που ορίστηκε προηγουμένως
HIST.Owner = Ονοματολογία.Σύνδεσμος;
// ορίστε το όνομα και άλλες λεπτομέρειες:
IST.Name = "μονάδα ABS";
HIST.Συντελεστής = 1;
//... συμπληρώστε τα υπόλοιπα στοιχεία
// στην πραγματικότητα, γράψτε τη δημιουργημένη μονάδα αποθήκευσης στη βάση δεδομένων:
IST.Write();