Πώς να δημιουργήσετε μέσω προγραμματισμού μια σύνδεση από τον κάτοχο σε μια φόρμα. Πώς να προσθέσετε μέσω προγραμματισμού ένα νέο στοιχείο καταλόγου εάν έχει κάτοχο (1C: Προγραμματιστής) Φόρμα ελεγχόμενης επικοινωνίας από τον ιδιοκτήτη

31.10.2021

Πώς να δημιουργήσετε μέσω προγραμματισμού μια σύνδεση από τον κάτοχο σε μια φόρμα. Πώς να προσθέσετε μέσω προγραμματισμού νέο στοιχείοκατάλογο, εάν έχει κάτοχο (1C: Προγραμματιστής)

Ερώτηση Πώς να συνδέσετε ανά κάτοχο σε μια φόρμα;
Απάντηση
Ας υποθέσουμε ότι κάπου, για παράδειγμα, σε μια φόρμα λίστας μητρώου, θέλετε να δώσετε στον χρήστη την ευκαιρία να καθορίσει διαδραστικά τη μονάδα αποθήκευσης ενός αντικειμένου. Η «Ονοματολογία» είναι ένα βιβλίο αναφοράς. Η "Μονάδα αποθήκευσης" είναι ένας κατάλογος που εξαρτάται από την ονοματολογία. Ο κατάλογος "Ονοματολογία" περιέχει συνήθως πολλά στοιχεία. Εάν έχουμε τη μορφή λίστας καταχωρητών, απλώς προσθέτουμε δύο στήλες - "Στοιχείο" και "Μονάδα αποθήκευσης", τότε όταν προσπαθήσουμε να επιλέξουμε διαδραστικά μια "μονάδα αποθήκευσης" θα παγώσει. Έχουμε ήδη γράψει σχετικά με αυτό στο άρθρο "Πώς να ορίσετε την επιλογή ενός δευτερεύοντος στοιχείου ενός καταλόγου και εδώ θα εξετάσουμε το πρόβλημα από μια ελαφρώς διαφορετική οπτική γωνία".
Για την αποφυγή παγώματος, συνήθως εκχωρείται η "Επικοινωνία από τον ιδιοκτήτη". Δείτε εικόνα. Αριστερά στο σχήμα είναι η φόρμα λίστας καταχωρητών, δεξιά στο σχήμα οι ιδιότητες του πεδίου εισαγωγής "ex" (το ίδιο που σημειώνεται στα αριστερά στη φόρμα λίστας μητρώου με κόκκινα γράμματα "ex") . Για να προσδιορίσετε μοναδικά τον ιδιοκτήτη (όχι μέσω προγραμματισμού), για το πεδίο εισαγωγής "ex", συμπληρώστε το πεδίο που σημειώνεται στο σχήμα με τον αριθμό "1" - "Σχέση κατά ιδιοκτήτη", όπου υποδεικνύεται η σύνδεση με το πεδίο "Ονοματολογία". .

Ερώτηση Πώς να δημιουργήσετε μέσω προγραμματισμού έναν σύνδεσμο από τον κάτοχο σε μια φόρμα;
Απάντηση
Ωστόσο, συμβαίνει ότι ο ιδιοκτήτης πρέπει να εγκατασταθεί μέσω προγραμματισμού, ανάλογα με κάποια συνθήκη.

Ας υποθέσουμε ότι το πεδίο "EX" της λίστας μητρώων πρέπει να συσχετιστεί με το πεδίο ιδιοκτήτη "Μονάδα μεταφοράς" (το οποίο είναι επίσης στοιχείο του καταλόγου "Ονοματολογία"), εάν η μονάδα μεταφοράς είναι συμπληρωμένη και εάν δεν έχει συμπληρωθεί in, τότε ο ιδιοκτήτης θα πρέπει να θεωρείται η τιμή στο πεδίο "Ονοματολογία" - δείτε τον αριθμό ευρετηρίου 3 στο σχήμα.

Πώς να το εφαρμόσετε αυτό;

Το θέμα είναι ότι Σε αυτήν την περίπτωση, το πεδίο 1 «Σχέση κατά ιδιοκτήτη» δεν χρειάζεται να συμπληρωθεί. Αλλά στο πεδίο 2 "Έναρξη επιλογής" πρέπει να υποδείξετε τη διαδικασία κατά την οποία η σύνδεση από τον ιδιοκτήτη θα καθοριστεί μέσω προγραμματισμού χρησιμοποιώντας μια οδηγία "ChoiceByOwner".
Παράδειγμα διαδικασίας:

Πληροφορίες διαδικασίας Λίστα καταχώρησης Επιλογή έναρξης μονάδας αποθήκευσης (στοιχείο, τυπική επεξεργασία) // καθορίζει τον ιδιοκτήτη του τρέχοντος EX Owner = FormElements. Κατάλογος Μητρώου Πληροφοριών. Τρέχοντα Δεδομένα. Ονοματολογία; If ValueFilled(FormElements.InformationRegisterList.CurrentData.TransportUnit) Στη συνέχεια IfFormElements. Κατάλογος Μητρώου Πληροφοριών. Τρέχοντα Δεδομένα. Μονάδα Μεταφοράς. Τύπος είδους = Μεταφορές. USTYPESΟνοματολογία. Load then Owner = FormElements. Κατάλογος Μητρώου Πληροφοριών. Τρέχοντα Δεδομένα. TransportUnit EndIf ; EndIf ;// ορίστε την επιλογή από τον ιδιοκτήτη

Ερώτηση Στοιχείο. SelectByOwner = Ιδιοκτήτης;
Απάντηση
Τέλος Διαδικασίας
Πώς να προσθέσετε μέσω προγραμματισμού ένα νέο στοιχείο καταλόγου εάν έχει κάτοχο.

Ας υποθέσουμε ότι θέλετε να δημιουργήσετε μέσω προγραμματισμού ένα νέο στοιχείο καταλόγου "Storage Units", του οποίου ο κάτοχος είναι ο κατάλογος "Nomenclature"Αυτό γίνεται ως εξής: // δημιουργήστε ένα νέο στοιχείο καταλόγου "Μονάδες αποθήκευσης": EX = Κατάλογοι. Αποθηκευτικές Μονάδες. CreateItem() ; // γράψτε τον ιδιοκτήτη για αυτό - έναν σύνδεσμο προς την ονοματολογία, όπου η "Ονοματολογία" είναι ένα στοιχείο του καταλόγου "Ονοματολογία" που ορίστηκε προηγουμένωςΠΡΩΗΝ. Ιδιοκτήτης = Είδος. Σύνδεσμος; // ορίστε το όνομα και άλλες λεπτομέρειες:ΠΡΩΗΝ. Όνομα = "Το όνομά μας" ;ΠΡΩΗΝ. Συντελεστής = 1;

// ... - το ίδιο είναι εδώ, συμπληρώνουμε όλες τις απαραίτητες λεπτομέρειες

// στην πραγματικότητα, γράψτε τη δημιουργημένη μονάδα αποθήκευσης στη βάση δεδομένων:

ΠΡΩΗΝ. Write() ;

Πληροφορίες που λαμβάνονται από τον ιστότοπο

Ας υποθέσουμε ότι με τη μορφή μιας λίστας καταχωρητών, είναι απαραίτητο να παρέχεται στον χρήστη η ευκαιρία να καθορίσει διαδραστικά τη μονάδα αποθήκευσης του αντικειμένου. Η «Ονοματολογία» είναι ένα βιβλίο αναφοράς. Η "Μονάδα αποθήκευσης" είναι ένας κατάλογος που εξαρτάται από την ονοματολογία. Ο κατάλογος Nomenclature περιέχει συνήθως πολλά στοιχεία. Εάν έχουμε τη μορφή λίστας καταχωρητών, απλώς προσθέτουμε δύο στήλες - "Στοιχείο" και "Μονάδα αποθήκευσης", τότε όταν προσπαθήσουμε να επιλέξουμε διαδραστικά μια "μονάδα αποθήκευσης" θα παγώσει.

Ας δούμε το πρόβλημα από μια ελαφρώς διαφορετική οπτική γωνία.

Για παράδειγμα, το πεδίο "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();