Διακόπτες, κανονική εφαρμογή, διαχειριζόμενες φόρμες. Διακόπτες, κανονική εφαρμογή, διαχειριζόμενες φόρμες 1γ προβλήματα με διαχειριζόμενες φόρμες

Η πλατφόρμα 1C:Enterprise σάς επιτρέπει να προσθέτετε και να αλλάζετε μέσω προγραμματισμού στοιχεία μιας διαχειριζόμενης φόρμας. Ας καταλάβουμε γιατί μπορεί να χρειαστεί.

Τροποποίηση λογισμικού της φόρμας ενδέχεται να απαιτείται σε διάφορες περιπτώσεις:

  • Κατά την οριστικοποίηση τυπικών διαμορφώσεων για τη διευκόλυνση της επακόλουθης διαδικασίας ενημέρωσης. Σε αυτήν την περίπτωση, θα αλλάξει μόνο η ενότητα φόρμας. Οι ενότητες ενημερώνονται πολύ πιο εύκολα από τις φόρμες.
  • Κατά την εφαρμογή ορισμένων κοινών αλγορίθμων. Για παράδειγμα, στο υποσύστημα «Απαγόρευση επεξεργασίας λεπτομερειών αντικειμένου», ένα κουμπί μπορεί να δημιουργηθεί μέσω προγραμματισμού για όλα τα αντικείμενα που είναι συνδεδεμένα στο υποσύστημα για να ενεργοποιηθεί η δυνατότητα επεξεργασίας λεπτομερειών.
  • Κατά την εφαρμογή κάποιων συγκεκριμένων αλγορίθμων. Για παράδειγμα, στον κατάλογο Ονοματολογία, δημιουργούνται πεδία για την επεξεργασία πρόσθετων λεπτομερειών.

Σε μια διαχειριζόμενη φόρμα, μπορείτε να προσθέσετε, να αλλάξετε και να διαγράψετε μέσω προγραμματισμού:

  • προαπαιτούμενα?
  • τοπικές ομάδες?
  • στοιχεία.

Όλες αυτές οι λειτουργίες είναι δυνατές μόνο στον διακομιστή.

Η αναμόρφωση μέσω προγραμματισμού έχει περιορισμούς:

  • Μπορείτε να διαγράψετε μόνο λεπτομέρειες/εντολές/στοιχεία που έχουν προστεθεί μέσω προγραμματισμού. Δεν μπορείτε να διαγράψετε μέσω προγραμματισμού αντικείμενα που έχουν δημιουργηθεί στο πρόγραμμα διαμόρφωσης.
  • Δεν μπορείτε να εκχωρήσετε ένα χαρακτηριστικό ως κύριο.

Αλλαγή εντολών φόρμας

Για να διαχειριστείτε τη σύνθεση εντολών για ένα αντικείμενο Διαχειριζόμενη Φόρμαυπάρχει μια συλλογή Της ομάδας

    Προσθήκη (< ИмяКоманды >)

    Ποσότητα ()

    Εύρημα (< ИмяКоманды >)

    Διαγράφω (< Команда >)

Η συλλογή Teams είναι διαθέσιμη τόσο στον πελάτη όσο και στον διακομιστή. Μπορείτε να αλλάξετε τη συλλογή (μέθοδοι Add() και Delete()) μόνο στον διακομιστή. Μπορείτε να αναζητήσετε και να λάβετε τον αριθμό των στοιχείων (οι μέθοδοι Find () και Count ()) τόσο στον πελάτη όσο και στον διακομιστή.

Ως παράδειγμα εργασίας με εντολές φόρμας, ας δημιουργήσουμε μια νέα εντολή ChangeHistory με την επικεφαλίδα "ChangeHistory...", η οποία θα καλεί τον χειριστή Ιστορικό εμφάνισης(). Η δημιουργία πραγματοποιείται όταν ανοίγει η φόρμα.

&Στον διακομιστή
Διαδικασία WhenCreatingOnServer (Αποτυχία, ΤυπικήΕπεξεργασία)
Ομάδα = Ομάδες. Προσθήκη( "Ιστορία των Αλλαγών");
Ομάδα . Δράση = ;
Ομάδα . Τίτλος = "Ιστορία των αλλαγών...";
Τέλος Διαδικασίας
&OnClient
Διαδικασία Connectable_DisplayHistory(Εντολή)
// Ενέργειες εντολών
Τέλος Διαδικασίας

Ο χειριστής εντολών πρέπει να βρίσκεται σε μια φόρμα και να έχει μια οδηγία μεταγλώττισης &OnClient.

Αλλαγή στοιχείων φόρμας

Η ανάγνωση της σύνθεσης των λεπτομερειών της φόρμας πραγματοποιείται από τη συνάρτηση Λάβετε λεπτομέρειες(< Путь >) επιστρέφοντας έναν πίνακα τύπου FormAttributes. Η παράμετρος συνάρτησης καθορίζει τη διαδρομή προς το γονικό χαρακτηριστικό (ως συμβολοσειρά). Εάν η παράμετρος παραλειφθεί ή έχει καθοριστεί μια κενή συμβολοσειρά, επιστρέφονται οι λεπτομέρειες ανώτατου επιπέδου.

Η αλλαγή των λεπτομερειών γίνεται χρησιμοποιώντας τη μέθοδο Αλλαγή Στοιχείων(<Προστέθηκαν λεπτομέρειες>, <Αφαιρούμενες λεπτομέρειες>) αντικείμενο Διαχειριζόμενη Φόρμα. Στις παραμέτρους Προστέθηκαν λεπτομέρειεςΚαι Αφαιρούμενες λεπτομέρειεςΜεταδίδονται πίνακες με στοιχεία του τύπου Form Attributes.

Προσοχή!

Η διαδικασία αλλαγής της σύνθεσης των λεπτομερειών απαιτεί αρκετά πόρους. Η φόρμα ουσιαστικά αναδημιουργείται. Από αυτή την άποψη, η εργασία με τα στοιχεία της φόρμας εκτελείται σε λειτουργία παρτίδας.

Ας δημιουργήσουμε ένα νέο χαρακτηριστικό φόρμας με το όνομα Αγοραστής:


AddedDetails = Νέος πίνακας;
Προστέθηκαν λεπτομέρειες. Add(New Form Attributes("Αγοραστής", Περιγραφή νέου τύπου ("DirectoryLink. Αντισυμβαλλόμενοι"), "Πελάτης"));

// Αλλαγές στη σύνθεση των λεπτομερειών
);

Αλλαγή στοιχείων μορφής

Για τον έλεγχο της σύνθεσης των στοιχείων ενός αντικειμένου Διαχειριζόμενη Φόρμαυπάρχει μια συλλογή Στοιχεία. Η συλλογή έχει διάφορες μεθόδους:

    Εισάγετε (< Имя>, < ТипЭлемента>, < Родитель>, < Элемент >)

    Προσθήκη (< Имя>, < ТипЭлемента>, < Родитель >)

    Ποσότητα ()

    Εύρημα (< Имя >)

    Κίνηση(< Элемент>, < Родитель>, < МестоРасположения >)

    Διαγράφω (< Элемент >)

Η συλλογή αντικειμένων είναι διαθέσιμη τόσο στον πελάτη όσο και στον διακομιστή. Τροποποίηση συλλογής (Εισαγωγή μεθόδων () , Προσθήκη () , Μετακίνηση () και Διαγραφή () ) είναι διαθέσιμα μόνο στον διακομιστή. Μπορείτε να αναζητήσετε και να λάβετε τον αριθμό των στοιχείων (οι μέθοδοι Find () και Count ()) τόσο στον πελάτη όσο και στον διακομιστή. Τα στοιχεία της συλλογής μπορεί να είναι:

  • FormGroup;
  • FormTable;
  • FormField;
  • Κουμπί φόρμας.

Μπορείτε να εκχωρήσετε μέσω προγραμματισμού χειριστές συμβάντων για στοιχεία φόρμας. Η μέθοδος προορίζεται για αυτούς τους σκοπούς SetAction(< ИмяСобытия>, < Действие >) .

Ας δούμε μερικά από τα πιο κοινά παραδείγματα εργασίας με εντολές, λεπτομέρειες και στοιχεία φόρμας.

Προσθήκη μιας εντολής και του σχετικού κουμπιού:

// Δημιουργία εντολής
Ομάδα = Ομάδες. Προσθήκη( "Ιστορία των Αλλαγών");
Ομάδα . Δράση = "Plug-in_Display History"; // Η φόρμα πρέπει να περιέχει μια διαδικασία με το καθορισμένο όνομα
Ομάδα . Επικεφαλίδα = "Ιστορία των αλλαγών...";
// Δημιουργήστε ένα κουμπί και συσχετίστε το με μια εντολή
Στοιχείο = Είδη. Προσθήκη( "Ιστορία των Αλλαγών", Type("FormButton" ));
Element.CommandName = "Ιστορία των Αλλαγών";

Προσθήκη ενός χαρακτηριστικού και του σχετικού πεδίου εισαγωγής:

// Περιγραφή των πρόσθετων λεπτομερειών
AddedDetails = Νέος πίνακας;
Προστέθηκαν λεπτομέρειες. Προσθήκη(New Form Props ("Αγοραστής", Περιγραφή νέου τύπου ( "DirectoryLink. Αντισυμβαλλόμενοι"), "Πελάτης" ));
// Αλλαγή της σύνθεσης των λεπτομερειών
Αλλαγή Λεπτομέρειες (Προστέθηκαν Λεπτομέρειες);
// Δημιουργία πεδίου εισαγωγής και σύνδεση με χαρακτηριστικά
Στοιχείο = Είδη. Add("Buyer" , Type("FormField" ));
Στοιχείο . Προβολή = FormFieldView. Πεδίο εισαγωγής.
Στοιχείο . PathToData= "Αγοραστής" ;

Εκχώρηση ενός προγράμματος χειρισμού συμβάντων σε ένα στοιχείο φόρμας:

ΑντικείμενοΠελάτης. SetAction("Όταν αλλάζει" , "Connected_BuyerOnChange");

&OnClient
Διαδικασία Connected_BuyerOnChange(Στοιχείο)
// Ενέργειες συμβάντος
Τέλος Διαδικασίας

Προσοχή!

Διαδικασίες που ορίζονται ως χειριστές συμβάντων από κώδικα χρησιμοποιώντας τη μέθοδο SetAction(), συνιστάται να ορίσετε το πρόθεμα Connectable_.

Προσοχή!

Μπορείτε να κάνετε λήψη της επεξεργασίας με παραδείγματα αναζήτησης μέσω προγραμματισμού και αλλαγής λεπτομερειών, εντολών και στοιχείων μιας διαχειριζόμενης φόρμας.

Και Δόμηση αντικειμένου μεταφοράς δεδομένων σε κώδικα, ελεγχόμενη μορφή στο περιβάλλον 1C 8.2.

Εισαγωγή

Ας ξεκινήσουμε με μια σύντομη περιγραφή της έννοιας της "διαχειριζόμενης μορφής" και των σχετικών εννοιών της πλατφόρμας 1C. Οι γνώστες της πλατφόρμας μπορεί να θέλουν να παραβλέψουν αυτήν την ενότητα.

Το 2008, έγινε διαθέσιμη μια νέα έκδοση της πλατφόρμας 1C: Enterprise 8.2 (εφεξής η Διαχειριζόμενη εφαρμογή), η οποία αλλάζει εντελώς ολόκληρο το επίπεδο εργασίας με τη διεπαφή. Αυτό περιλαμβάνει τη διεπαφή εντολών, τις φόρμες και το σύστημα παραθύρων. Ταυτόχρονα, όχι μόνο αλλάζει το μοντέλο για την ανάπτυξη της διεπαφής χρήστη στη διαμόρφωση, αλλά προτείνεται και μια νέα αρχιτεκτονική για το διαχωρισμό της λειτουργικότητας μεταξύ της εφαρμογής πελάτη και του διακομιστή.
Η διαχειριζόμενη εφαρμογή υποστηρίζει τους ακόλουθους τύπους πελατών:

  • Χοντρός πελάτης (κανονική και διαχειριζόμενη λειτουργία εκκίνησης)
  • Λεπτός πελάτης
  • Web client
Η διαχειριζόμενη εφαρμογή χρησιμοποιεί φόρμες που βασίζονται σε νέα τεχνολογία. Καλούνται Διαχειριζόμενες Φόρμες. Για τη διευκόλυνση της μετάβασης, υποστηρίζονται και προηγούμενες φόρμες (οι λεγόμενες κανονικές φόρμες), αλλά η λειτουργικότητά τους δεν έχει αναπτυχθεί και είναι διαθέσιμες μόνο στη λειτουργία εκκίνησης παχύ πελάτη.
Οι κύριες διαφορές των διαχειριζόμενων φορμών για έναν προγραμματιστή:
  • Δηλωτική, όχι «pixel-pixel» περιγραφή της δομής. Η συγκεκριμένη τοποθέτηση στοιχείων πραγματοποιείται αυτόματα από το σύστημα όταν εμφανίζεται η φόρμα.
  • Όλες οι λειτουργίες της φόρμας περιγράφονται ως ΛεπτομέριεςΚαι της ομάδας. Οι λεπτομέρειες είναι τα δεδομένα με τα οποία λειτουργεί η φόρμα και οι εντολές είναι οι ενέργειες που πρέπει να εκτελεστούν.
  • Η φόρμα εκτελείται τόσο στον διακομιστή όσο και στον πελάτη.
  • Στο πλαίσιο του πελάτη, σχεδόν όλοι οι τύποι εφαρμογών δεν είναι διαθέσιμοι και, κατά συνέπεια, είναι αδύνατη η αλλαγή των δεδομένων στη βάση πληροφοριών.
  • Για κάθε μέθοδο ή μεταβλητή φόρμας, πρέπει να προσδιορίζεται οδηγία για τη σύνταξη, ορίζοντας τη θέση εκτέλεσης (πελάτη ή διακομιστή) και πρόσβαση στο περιβάλλον της φόρμας.
Ας παραθέσουμε τις οδηγίες για τη σύνταξη μεθόδων φόρμας:
  • &OnClient
  • &Στον διακομιστή
  • &OnServerWithout Context
  • &OnClientOnServerWithout Context
Ας δείξουμε τα παραπάνω. Το στιγμιότυπο οθόνης δείχνει ένα παράδειγμα μιας διαχειριζόμενης φόρμας και της ενότητας της σε λειτουργία ανάπτυξης. Βρείτε τη δηλωτική περιγραφή, τα στηρίγματα, τις οδηγίες συλλογής κ.λπ.

Όλες οι περαιτέρω συζητήσεις θα αφορούν τη δεξιά πλευρά της εικόνας, σχετικά με τον τρόπο δομής του κώδικα της ενότητας και ποιες αρχές θα σας επιτρέψουν να εφαρμόσετε αποτελεσματική αλληλεπίδραση πελάτη-διακομιστή.

Ας ορίσουμε το πρόβλημα

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

Ας δούμε τη δομή του κώδικα (μονάδα φόρμας) σε διάφορες μορφές της ίδιας τυπικής διαμόρφωσης και ας προσπαθήσουμε να βρούμε μοτίβα.
Με τον όρο δομή εννοούμε τμήματα κώδικα (τις περισσότερες φορές αυτά είναι μπλοκ σχολίων) που εκχωρούνται από τον προγραμματιστή για να ομαδοποιήσουν μεθόδους και οδηγίες μεταγλώττισης για αυτές τις μεθόδους.
Παράδειγμα 1:
Ενότητα χειριστών συμβάντων Μέθοδος - στον πελάτη Μέθοδος - στον διακομιστή Μέθοδος - στον πελάτη Ενότητα διαδικασιών και λειτουργιών υπηρεσίας Βοηθητικές λειτουργίες ελέγχου εισόδου
Παράδειγμα 2:
Διαδικασίες και λειτουργίες υπηρεσίας Έγγραφα πληρωμής Αξίες Χειριστές συμβάντων
Παράδειγμα 3:
Διαδικασίες υπηρεσίας στον διακομιστή Διαδικασίες υπηρεσίας στον πελάτη Διαδικασίες υπηρεσίας στον διακομιστή χωρίς πλαίσιο Χειριστές συμβάντων κεφαλίδας Χειριστές συμβάντων εντολών
Παράδειγμα 4:
Διαδικασίες γενικού σκοπού Χειριστές συμβάντων φορμών Διαδικασίες του υποσυστήματος «πληροφορίες επικοινωνίας»
Ουσιαστικά, η δομή του κώδικα λείπει, ή για να το θέσω ήπια, είναι παρόμοια με αυτή που υπήρχε στις Φόρμες 8.1:

  • Μη ενημερωτικές λέξεις «Γενικός, Υπηρεσία, Βοηθητικός».
  • Συνεσταλμένες προσπάθειες διαχωρισμού μεθόδων πελάτη και διακομιστή.
  • Οι μέθοδοι συχνά ομαδοποιούνται με στοιχεία διεπαφής "Εργασία με το τμήμα πίνακα Προϊόντα, Στοιχεία επικοινωνίας".
  • Αυθαίρετη διάταξη μεθόδων και ομάδων κωδικών. Για παράδειγμα, οι Χειριστές συμβάντων μπορεί να βρίσκονται στην κορυφή με μια μορφή, στο κάτω μέρος με μια άλλη, να μην επισημαίνονται καθόλου σε μια τρίτη, κ.λπ.
  • Και ας μην ξεχνάμε ότι όλα αυτά είναι μέσα σε μία διαμόρφωση.
  • Ναι, υπάρχουν διαμορφώσεις στις οποίες οι λέξεις "Γενικό, Υπηρεσία, Βοηθητικό" βρίσκονται πάντα στα ίδια σημεία, αλλά...
Γιατί χρειάζεστε δομή κώδικα;
  • Απλοποίηση της συντήρησης.
  • Απλοποιήστε τη μάθηση.
  • Καταγραφή γενικών/σημαντικών/επιτυχημένων αρχών.
  • ...η επιλογή σου
Γιατί δεν βοηθά το υπάρχον πρότυπο ανάπτυξης από το 1C;
Ας δούμε τις αρχές που δημοσιεύονται στους δίσκους ITS και σε διάφορους «Οδηγούς προγραμματιστή...» που συνιστώνται κατά τη σύνταξη μιας διαχειριζόμενης φόρμας.
  • Ελαχιστοποιήστε τον αριθμό των κλήσεων διακομιστή.
  • Μέγιστος υπολογισμός στον διακομιστή.
  • Οι κλήσεις διακομιστή χωρίς συμφραζόμενα είναι πιο γρήγορες από τις κλήσεις με βάση τα συμφραζόμενα.
  • Πρόγραμμα με γνώμονα την επικοινωνία πελάτη-διακομιστή.
  • και ούτω καθεξής.
Αυτά είναι συνθήματα που είναι απολύτως αληθινά, αλλά πώς να τα εφαρμόσετε; Πώς να ελαχιστοποιήσετε τον αριθμό των κλήσεων, τι σημαίνει προγραμματισμός σε λειτουργία πελάτη-διακομιστή;

Σχεδιαστικά μοτίβα ή σοφία γενεών

Η αλληλεπίδραση πελάτη-διακομιστή έχει χρησιμοποιηθεί σε διάφορες τεχνολογίες λογισμικού εδώ και δεκαετίες. Η απάντηση στα ερωτήματα που περιγράφηκαν στην προηγούμενη ενότητα είναι γνωστή εδώ και πολύ καιρό και συνοψίζεται σε δύο βασικές αρχές.
  • Απομακρυσμένη πρόσοψη(εφεξής καλούμενη διεπαφή απομακρυσμένης πρόσβασης)
  • Αντικείμενο μεταφοράς δεδομένων(εφεξής καλούμενο αντικείμενο μεταφοράς δεδομένων)
Λίγα λόγια από τον Μάρτιν Φάουλερ, την περιγραφή αυτών των αρχών:
  • Κάθε αντικείμενο που δυνητικά προορίζεται για απομακρυσμένη πρόσβαση πρέπει να έχει διεπαφή χαμηλής ευαισθησίας, το οποίο θα ελαχιστοποιήσει τον αριθμό των κλήσεων που απαιτούνται για την εκτέλεση μιας συγκεκριμένης διαδικασίας. ... Αντί να ζητάτε ένα τιμολόγιο και όλα τα στοιχεία του ξεχωριστά, πρέπει να διαβάσετε και να ενημερώσετε όλα τα στοιχεία τιμολογίου σε ένα αίτημα. Αυτό επηρεάζει ολόκληρη τη δομή του αντικειμένου... Θυμηθείτε: διεπαφή απομακρυσμένης πρόσβασης δεν περιέχει λογική τομέα.
  • ...αν ήμουν φροντισμένη μητέρα, σίγουρα θα έλεγα στο παιδί μου: «Μην γράφετε ποτέ αντικείμενα μεταφοράς δεδομένων!» Στις περισσότερες περιπτώσεις, τα αντικείμενα μεταφοράς δεδομένων δεν είναι τίποτα περισσότερο από σετ φουσκωμένο χωράφι... Η αξία αυτού του αποκρουστικού τέρατος έγκειται αποκλειστικά στην πιθανότητα μεταδίδουν πολλαπλές πληροφορίες μέσω του δικτύου σε μία κλήση- μια τεχνική που έχει μεγάλη σημασία για τα κατανεμημένα συστήματα.
Παραδείγματα προτύπων στην πλατφόρμα 1C
Η διεπαφή προγραμματισμού εφαρμογών που είναι διαθέσιμη στον προγραμματιστή κατά την ανάπτυξη μιας διαχειριζόμενης φόρμας περιέχει πολλά παραδείγματα αυτών των αρχών.
Για παράδειγμα, η μέθοδος OpenForm(), μια τυπική "τραχύ" διεπαφή.
OpeningParameters = Νέα δομή ("Parameter1, Parameter2, Parameter3", Value1, Value2, Value3); Form = OpenForm(FormName, OpeningParameters);
Συγκρίνετε με το στυλ που υιοθετήθηκε στην έκδοση 8.1.
Form = GetForm(FormName); Form.Parameter1 = Value1; Form.Parameter2 = Value2; Form.Open();

Στο πλαίσιο μιας διαχειριζόμενης φόρμας, υπάρχουν πολλά "Αντικείμενα μεταφοράς δεδομένων". Μπορείτε να επιλέξετε συστήματοςΚαι ορίζεται από τον προγραμματιστή.
Τα συστήματα μοντελοποιούν ένα αντικείμενο εφαρμογής στον πελάτη, με τη μορφή ενός ή περισσότερων στοιχείων δεδομένων φόρμας. Είναι αδύνατο να τα δημιουργήσετε χωρίς αναφορά στις λεπτομέρειες της φόρμας.

  • DataFormsStructure
  • DataFormsCollection
  • DataFormStructureWithCollection
  • DataShapesTree
Η μετατροπή των αντικειμένων μεταφοράς δεδομένων συστήματος σε τύπους εφαρμογών και αντίστροφα πραγματοποιείται χρησιμοποιώντας τις ακόλουθες μεθόδους:
  • ValueInFormData()
  • FormDataValue()
  • CopyFormData()
  • ValueInFormAttributes()
  • FormAttributesValue()
Συχνά χρησιμοποιείται ρητή μετατροπή κατά την προσαρμογή μιας υπάρχουσας λύσης. Οι μέθοδοι ενδέχεται να αναμένουν (χρησιμοποιούν χαρακτηριστικά) παραμέτρους εισόδου, όπως ValueTable αντί FormDataCollection, ή η μέθοδος έχει οριστεί στο πλαίσιο ενός αντικειμένου εφαρμογής και δεν είναι διαθέσιμη για άμεση κλήση από τη φόρμα.
Παράδειγμα 1C v8.1:
// στον πελάτη στο πλαίσιο της φόρμας FillUserCache(DepartmentLink)
Παράδειγμα 1C v8.2:
// στον διακομιστή στο πλαίσιο της φόρμας ProcessingObject = Form AttributesValue("Object"); ProcessingObject.FillUserCache(DepartmentRef); ValueВFormAttributes(ProcessingObject, "Object");

Τα αντικείμενα μεταφοράς δεδομένων, η δομή των οποίων καθορίζεται από τον προγραμματιστή, είναι ένα μικρό υποσύνολο των τύπων που διατίθενται τόσο στον πελάτη όσο και στον διακομιστή. Τις περισσότερες φορές, τα ακόλουθα χρησιμοποιούνται ως παράμετροι και αποτελέσματα μεθόδων μιας "χονδρικής" διεπαφής:

  • Πρωτόγονοι τύποι (συμβολοσειρά, αριθμός, boolean)
  • Δομή
  • Αλληλογραφία
  • Πίνακας
  • Σύνδεσμοι προς αντικείμενα εφαρμογής (μοναδικό αναγνωριστικό και αναπαράσταση κειμένου)
Παράδειγμα: η μέθοδος δέχεται μια λίστα εντολών για αλλαγή κατάστασης και επιστρέφει μια περιγραφή των σφαλμάτων στον πελάτη.
Συνάρτηση &OnServerWithoutContext ServerChangeOrderStatus(Orders, NewStatus) Errors = New Match(); // [παραγγελία][περιγραφή σφάλματος] Για κάθε παραγγελία από παραγγελίες Κύκλος StartTransaction(); Δοκιμάστε το DocOb = Order.GetObject(); …. άλλες ενέργειες, δυνατές όχι μόνο με την παραγγελία... Εξαίρεση CancelTransaction(); Errors.Insert(Order, ErrorDescription()); EndAttempt; EndCycle; Σφάλμα επιστροφής. EndFunction // ServerChangeOrderStatus()

Δόμηση του κώδικα

Οι κύριοι στόχοι που πρέπει να αντικατοπτρίζει η ενότητα διαχειριζόμενης φόρμας και προσεγγίζει τη λύση.
  • Σαφής διαχωρισμός κώδικα πελάτη και διακομιστή.Ας μην ξεχνάμε ότι τη στιγμή της εκτέλεσης πρόκειται για δύο αλληλεπιδρώντες διαδικασίες, καθεμία από τις οποίες έχει σημαντικά διαφορετική διαθέσιμη λειτουργικότητα.
  • Σαφής αναγνώριση της διεπαφής απομακρυσμένης πρόσβασης, ποιες μέθοδοι διακομιστή μπορούν να κληθούν από τον πελάτη και ποιες όχι; Τα ονόματα των μεθόδων απομακρυσμένης διεπαφής ξεκινούν με το πρόθεμα "Διακομιστής". Αυτό σας επιτρέπει να βλέπετε αμέσως τη μεταφορά του ελέγχου στον διακομιστή κατά την ανάγνωση του κώδικα και απλοποιεί τη χρήση της βοήθειας με βάση τα συμφραζόμενα. Λάβετε υπόψη ότι η επίσημη σύσταση (ITS) προτείνει μεθόδους ονομασίας με postfixes, για παράδειγμα, ChangeOrderStatusOnServer(). Ωστόσο, επαναλαμβάνουμε ότι δεν είναι δυνατή η κλήση όλων των μεθόδων διακομιστή από τον πελάτη, και επομένως η λογική προσβασιμότητα είναι πιο σημαντική παρά η τοποθεσία μεταγλώττισης. Επομένως, με το πρόθεμα «Διακομιστής» επισημαίνουμε μόνο τις μεθόδους που είναι διαθέσιμες στον πελάτη· ας ονομάσουμε τη μέθοδο παραδείγματος ServerChangeOrderStatus().
  • Ευανάγνωστο.Θέμα γούστου, δεχόμαστε την παραγγελία όταν ξεκινά η ενότητα με τις διαδικασίες δημιουργίας φόρμας στον διακομιστή και τις μεθόδους απομακρυσμένης πρόσβασης.
  • Συντηρησιμότητα.Πρέπει να υπάρχει μια σαφής θέση για την προσθήκη νέου κώδικα. Ένα σημαντικό σημείο είναι ότι τα πρότυπα μεθόδων που δημιουργούνται αυτόματα από τον διαμορφωτή προστίθενται στο τέλος της ενότητας. Δεδομένου ότι οι χειριστές συμβάντων για στοιχεία φόρμας δημιουργούνται συχνότερα αυτόματα, το αντίστοιχο μπλοκ βρίσκεται τελευταίο, έτσι ώστε να μην σύρεται κάθε πρόγραμμα χειρισμού σε άλλη θέση στη λειτουργική μονάδα.
Παρακάτω είναι η βασική δομή της ενότητας που υλοποιεί τους αναφερόμενους στόχους.
  • Γραφική επιλογή – δείχνει ξεκάθαρα την κύρια ροή εκτέλεσης.
  • Η επιλογή κειμένου είναι ένα παράδειγμα σχεδίασης προτύπου για γρήγορη εισαγωγή μιας δομής σε μια νέα λειτουργική μονάδα φόρμας.

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор=""Ημερομηνία=""/> // <Описание> // // ////////////////////////////////////////////////////////////////// ////////////////////////// // ΜΕΤΑΒΛΗΤΕΣ ΕΝΟΤΗΤΑΣ ///////////////// // //////////////////////////////////////////////////////////////////////////////////////////////// ////////// // ΣΤΟΝ ΔΙΑΚΟΜΙΣΤΗ //******* ΓΕΓΟΝΟΤΑ ΣΤΟΝ ΔΙΑΚΟΜΙΣΤΗ ******* &Στον διακομιστή Διαδικασία κατά τη δημιουργία του διακομιστή (Αποτυχία, ΤυπικήΕπεξεργασία) / /Εισαγάγετε τα περιεχόμενα του προγράμματος χειρισμού Τέλος διαδικασίας //******* ΔΙΕΠΕΥ ΑΠΟΣΤΑΣΕΙΣ ΠΡΟΣΒΑΣΗΣ ******* //******* ΕΠΙΧΕΙΡΗΜΑΤΙΚΗ ΛΟΓΙΚΗ ΣΤΟΝ ΔΙΑΚΟΜΙΣΤΗ ******* ///////// /////////////////////////////////////////////////////////// /////// /////////////////// // ΚΟΙΝΕΣ ΜΕΘΟΔΟΙ ΠΕΛΑΤΗ ΚΑΙ ΔΙΑΚΟΜΙΣΤΗ /////////////// /////// ////////////////////////////////////////////////////////////// ///// //////// // ΣΤΟΝ ΠΕΛΑΤΗ //******* ΕΠΙΧΕΙΡΗΜΑΤΙΚΗ ΛΟΓΙΚΗ ΣΤΟΝ ΠΕΛΑΤΗ ******* //******** ΟΜΑΔΑ * ****** //******** ΕΚΔΗΛΩΣΕΙΣ ΠΕΛΑΤΩΝ ******* ////////////////////////// ///// /////////////////////////////////////////////////////////////////////////////////// // / / ΚΥΡΙΟΙ ΧΕΙΡΙΣΤΕΣ ΠΡΟΓΡΑΜΜΑΤΟΣ

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

Έντυπαστο 1C:Enterprise προορίζονται για την εμφάνιση και την επεξεργασία πληροφοριών που περιέχονται στη βάση δεδομένων. Οι φόρμες μπορούν να ανήκουν σε συγκεκριμένα αντικείμενα διαμόρφωσης ή να υπάρχουν χωριστά από αυτά και χρησιμοποιούνται από ολόκληρη τη λύση εφαρμογής.

Για παράδειγμα, ένας κατάλογος Ονοματολογίαμπορεί να έχει πολλές φόρμες που θα χρησιμοποιηθούν για συγκεκριμένους σκοπούς - επεξεργασία ενός στοιχείου καταλόγου, εμφάνιση λίστας κ.λπ.:

Μαζί με αυτό, μπορεί να υπάρχουν γενικές φόρμες που δεν ανήκουν σε συγκεκριμένα αντικείμενα διαμόρφωσης - γενικές φόρμες.

Βασικές μορφές

Κάθε αντικείμενο διαμόρφωσης μπορεί να χρησιμοποιηθεί για την εκτέλεση ορισμένων τυπικών ενεργειών. Για παράδειγμα, για οποιονδήποτε κατάλογο μπορεί να χρειαστεί να εμφανίσετε μια λίστα με τα στοιχεία του, να εμφανίσετε μεμονωμένα στοιχεία του καταλόγου, να εμφανίσετε μια ομάδα καταλόγου, να επιλέξετε στοιχεία και ομάδες στοιχείων από τον κατάλογο. Για οποιοδήποτε έγγραφο, η λίστα τέτοιων ενεργειών θα είναι πολύ μικρότερη: προβολή λίστας εγγράφων, επιλογή από μια λίστα εγγράφων και προβολή ξεχωριστού εγγράφου.

Για να διασφαλιστεί ότι τέτοιες τυπικές ενέργειες εκτελούνται με τα δεδομένα αντικειμένων λύσεων εφαρμογής, για καθένα από αυτά υπάρχει ένα σύνολο βασικών μορφών που θα χρησιμοποιηθούν κατά την εκτέλεση των αντίστοιχων ενεργειών. Οποιαδήποτε από τις φόρμες που είναι δευτερεύουσες σε αυτό το αντικείμενο μπορεί να αντιστοιχιστεί ως η κύρια. Για παράδειγμα, στον κατάλογο ΟνοματολογίαΜπορεί να υπάρχουν οι ακόλουθες βασικές μορφές:

Και το έγγραφο Παραλαβή αγαθών και υπηρεσιώνη σύνθεση των κύριων μορφών θα είναι διαφορετική:

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

Φόρμες που δημιουργούνται αυτόματα

Ένα σημαντικό χαρακτηριστικό του συστήματος 1C:Enterprise 8 είναι ο μηχανισμός των εντύπων που δημιουργούνται αυτόματα. Αυτός ο μηχανισμός απαλλάσσει τον προγραμματιστή από το να χρειάζεται να δημιουργήσει όλες τις πιθανές φόρμες για κάθε αντικείμενο διαμόρφωσης. Ο προγραμματιστής χρειάζεται απλώς να προσθέσει ένα νέο αντικείμενο διαμόρφωσης και το ίδιο το σύστημα θα δημιουργήσει, στις κατάλληλες στιγμές στην εργασία του χρήστη, τις απαραίτητες φόρμες για την εμφάνιση των πληροφοριών που περιέχονται σε αυτό το αντικείμενο.

Έτσι, ο προγραμματιστής χρειάζεται να δημιουργήσει τις δικές του μορφές αντικειμένων λύσεων εφαρμογής μόνο εάν πρέπει να έχουν διαφορές (διαφορετικό σχέδιο ή συγκεκριμένη συμπεριφορά) από τις φόρμες που δημιουργούνται αυτόματα από το σύστημα.

Σύνδεση μιας φόρμας με δεδομένα

Το αν μια φόρμα ανήκει σε ένα συγκεκριμένο αντικείμενο διαμόρφωσης δεν καθορίζει τη σύνθεση των δεδομένων που εμφανίζονται στη φόρμα. Το γεγονός ότι η φόρμα ανήκει, για παράδειγμα, σε έναν κατάλογο Ονοματολογία, σας επιτρέπει να το εκχωρήσετε ως μία από τις κύριες φόρμες για αυτόν τον κατάλογο, αλλά δεν καθορίζει σε καμία περίπτωση ποια δεδομένα θα εμφανίσει αυτή η φόρμα και ποια θα είναι η συμπεριφορά της.

Για να συσχετιστεί μια φόρμα με δεδομένα, χρησιμοποιούνται λεπτομέρειες φόρμας, οι οποίες υποδεικνύουν τη λίστα των δεδομένων που εμφανίζει η φόρμα. Όλες οι φόρμες, οι ίδιες, έχουν την ίδια συμπεριφορά, ανεξάρτητα από τα δεδομένα που εμφανίζουν. Ωστόσο, ένα από τα χαρακτηριστικά της φόρμας μπορεί να οριστεί ως το κύριο χαρακτηριστικό για αυτό (επισημαίνεται με έντονη γραφή), οπότε η τυπική συμπεριφορά της φόρμας και οι ιδιότητές της θα συμπληρωθούν ανάλογα με τον τύπο που έχει το χαρακτηριστικό της κύριας φόρμας:

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

Δομή φόρμας

Το κύριο χαρακτηριστικό των εντύπων είναι ότι δεν σχεδιάζονται από τον προγραμματιστή λεπτομερώς, «pixel by pixel». Μια φόρμα σε μια διαμόρφωση είναι μια λογική περιγραφή της σύνθεσης της φόρμας. Και η συγκεκριμένη τοποθέτηση στοιχείων εκτελείται αυτόματα από το σύστημα όταν εμφανίζεται η φόρμα.

Το εμφανιζόμενο τμήμα της φόρμας (ορατό στον χρήστη) περιγράφεται ως δέντρο που περιέχει στοιχεία φόρμας.

Τα στοιχεία μπορεί να είναι πεδία εισαγωγής, πλαίσια ελέγχου, κουμπιά επιλογής, κουμπιά κ.λπ. Επιπλέον, ένα στοιχείο μπορεί να είναι μια ομάδα που περιλαμβάνει άλλα στοιχεία. Μια ομάδα μπορεί να αναπαρασταθεί ως πίνακας με πλαίσιο, πίνακας με σελίδες (σελιδοδείκτες), ίδια σελίδα ή πίνακας εντολών. Επιπλέον, το στοιχείο μπορεί να είναι ένας πίνακας, ο οποίος περιλαμβάνει και στοιχεία (στήλες). Η δομή του στοιχείου περιγράφει πώς θα φαίνεται η φόρμα.

Όλες οι λειτουργίες της φόρμας περιγράφονται με τη μορφή λεπτομερειών και εντολών. Οι λεπτομέρειες είναι τα δεδομένα με τα οποία λειτουργεί η φόρμα και οι εντολές είναι οι ενέργειες που πρέπει να εκτελεστούν. Έτσι, ο προγραμματιστής στο πρόγραμμα επεξεργασίας φόρμας πρέπει να συμπεριλάβει τις απαραίτητες λεπτομέρειες και εντολές στη φόρμα, να δημιουργήσει στοιχεία φόρμας που να τα εμφανίζουν και, εάν χρειάζεται, να τακτοποιήσει τα στοιχεία σε ομάδες.

Με βάση αυτή τη λογική περιγραφή, το σύστημα δημιουργεί αυτόματα την εμφάνιση της φόρμας για εμφάνιση στον χρήστη. Σε αυτήν την περίπτωση, το σύστημα λαμβάνει υπόψη διάφορες ιδιότητες των εμφανιζόμενων δεδομένων (για παράδειγμα, τύπο) προκειμένου να τακτοποιήσει τα στοιχεία της φόρμας όσο το δυνατόν πιο βολικά για τον χρήστη.

Ο προγραμματιστής μπορεί να επηρεάσει τη διάταξη των στοιχείων με διάφορες ρυθμίσεις. Μπορεί να καθορίσει τη σειρά των στοιχείων, να καθορίσει το επιθυμητό πλάτος και ύψος. Ωστόσο, αυτές είναι μόνο μερικές πρόσθετες πληροφορίες που θα βοηθήσουν το σύστημα να εμφανίσει τη φόρμα.

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

Όλοι γνωρίζουμε ότι η εταιρεία 1C είχε πολλές διαφορετικές εκδόσεις της πλατφόρμας 1C· τώρα θα μας ενδιαφέρει μια από τις πιο πρόσφατες εκδόσεις τη στιγμή της συγγραφής αυτού του άρθρου, αυτές είναι οι εκδόσεις 1C 8.2 και 1C 8.3. Εάν έπρεπε να εργαστείτε και στις δύο αυτές εκδόσεις, τότε πιθανότατα παρατήρησαν διαφορές στις διεπαφές αυτών των εκδόσεων, για τους χρήστες διαφέρουν μόνο στην εμφάνιση. Ουσιαστικά μια επιλογή τακτική ή διαχειριζόμενη εφαρμογήλέει στο σύστημα ποιες φόρμες να εμφανίσει για εκτέλεση, τακτικά ή ελεγχόμενα, καθώς και ποιο πρόγραμμα-πελάτη εφαρμογής θα χρησιμοποιηθεί από προεπιλογή, παχύ ή λεπτό. Για πιο λεπτομερείς πληροφορίες σχετικά με τους πελάτες, διαβάστε το άρθρο «Τι είναι οι χοντροί και οι λεπτοί πελάτες σε 1C, καθώς και οι διαφορές τους».

Κανονική εφαρμογή 1C (κανονικές φόρμες, κανονική διεπαφή, έκδοση 1C 8.2)

Στο 1C 8.2 είναι δυνατή η εργασία μόνο με κανονικές φόρμες, σε κανονική λειτουργία εφαρμογής. Η παρακάτω εικόνα δείχνει τη βάση δεδομένων στον τρόπο λειτουργίας "κανονική εφαρμογή 1C" (κανονικές φόρμες).

Διαχειριζόμενη εφαρμογή 1C (διαχειριζόμενες φόρμες, διαχειριζόμενη διεπαφή, έκδοση 1C 8.3)

Στην πλατφόρμα 1C 8.3 μπορούμε να εργαστούμε τόσο με κανονικές φόρμες (σε λειτουργία συμβατότητας) όσο και με διαχειριζόμενες. Εξάλλου Οι διαχειριζόμενες φόρμες έχουν δύο τύπους εμφάνισης, αυτό είναι το τυπικό και το ταξί. Ένα παράδειγμα διαμόρφωσης 1C 8.3 με τυπικές διαχειριζόμενες φόρμες φαίνεται παρακάτω και μετά εμφανίζεται η διεπαφή "Taxi".

Ποια είναι η διαφορά μεταξύ μιας κανονικής και διαχειριζόμενης εφαρμογής 1C;

Όπως έχουμε ήδη ανακαλύψει μια κανονική εφαρμογή και μια διαχειριζόμενη εφαρμογή είναι αυτοί οι τύποι εκκίνησης ενός προγράμματος 1C. Επιπλέον, ανάλογα με την τιμή του τύπου εκτόξευσης 1C ( τακτική ή διαχειριζόμενη εφαρμογή), μια συγκεκριμένη διεπαφή θα φορτωθεί από προεπιλογή ( κανονικές ή διαχειριζόμενες φόρμες), επομένως υπάρχουν τόσα πολλά συνώνυμα για αυτήν την έννοια. Θα θέλαμε να σημειώσουμε ότι οι διαφορές στις διεπαφές είναι αρκετά σημαντικές· η διαχειριζόμενη διεπαφή έχει επανασχεδιαστεί πλήρως. Κατ 'αρχήν, αυτές είναι όλες οι διαφορές που βλέπουν οι απλοί χρήστες του προγράμματος 1C. Όσο για τους προγραμματιστές, η διαχειριζόμενη διεπαφή απαιτεί τη σύνταξη τροποποιημένου κώδικα, επειδή η ανάπτυξη πραγματοποιείται ήδη στο 1C 8.3 και όχι στο 1C 8.2, εξ ου και όλες οι επακόλουθες συνέπειες. Ο κώδικας πρέπει επίσης να χωριστεί σε πελάτη και διακομιστή, αυτό υποδεικνύεται χρησιμοποιώντας τις κατάλληλες οδηγίες στον διαμορφωτή.

Klyuev V.V.

http://prof1c.kklab.ru

ΕΡΓΑΣΙΑ ΜΕ ΔΙΑΚΟΠΤΕΣ

Λάβετε υπόψη όλους τους χρήστες της υπηρεσίας του ιστότοπου - δημοσιεύω υλικό στην ενότητα Αρχαρίων!!!

8.2 Διαχειριζόμενες φόρμες

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

Λοιπόν, ας δημιουργήσουμε μια κενή διαμόρφωση για να κατανοήσουμε την ερώτηση ή ας επιλέξουμε οποιαδήποτε τυπική.
Μεταβείτε στην ομάδα που περιέχει καταλόγους και προσθέστε έναν νέο κατάλογο για πειραματισμό. Θα ήθελα να σημειώσω ότι η διαμόρφωση πρέπει να έχει την κύρια λειτουργία εκκίνησης - Διαχειριζόμενη εφαρμογή.

Λοιπόν, ας δημιουργήσουμε έναν νέο κατάλογο και ας προσθέσουμε το χαρακτηριστικό "Property1", με τον τύπο "Boolean"

Τώρα ας πάμε στην καρτέλα Φόρμες και ας προσθέσουμε μια νέα φόρμα.

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

Τι κάναμε λάθος λοιπόν;
Ας δούμε τις ιδιότητες των στηρίξεων για να δούμε αν υπάρχει αλλαγή στον τύπο ελέγχου.
Και βλέπουμε ότι το πεδίο Switch δεν είναι εδώ! (Πού κάναμε λάθος;

Προφανώς, ο τύπος ελέγχου στη φόρμα εξαρτάται από τον τύπο δεδομένων, ας επιστρέψουμε στις ιδιότητες της φόρμας, δηλαδή στην καρτέλα λεπτομερειών, και ας αλλάξουμε τις ιδιότητες του χαρακτηριστικού μας - δηλαδή τον τύπο του "Boolean", στον τύπο "Αριθμός".

Τώρα ας επιστρέψουμε στις ιδιότητες του στοιχείου ελέγχου και ας ελέγξουμε αν η προβολή του στοιχείου ελέγχου έχει προστεθεί στις ιδιότητές του - - - Και ώρα, βλέπουμε την προβολή εκεί - Εναλλαγή πεδίου.

Τώρα κοιτάξτε τη φόρμα, αυτό που βλέπουμε:

Βλέπουμε - 3 προεπιλεγμένες τιμές, 3 διακόπτες, αλλά χρειαζόμαστε δύο από αυτούς, μεταβείτε ξανά στις ιδιότητες του χαρακτηριστικού και δείτε τις ιδιότητες "Αριθμός στηλών" εκεί

Για 2 - ορίστε τον αριθμό στηλών - 2.

Αυτό μπορεί να σταματήσει λίγο έναν κουρασμένο προγραμματιστή)), αλλά τώρα τόσο αυτός όσο και εμείς το ξέρουμε!

8.2 Κανονικά έντυπα.

Βαρετό με διακόπτες σε συνηθισμένες μορφές.
Υπάρχουν τέτοιες στιγμές, και συμβαίνουν) όταν πρέπει να τροποποιήσετε κάποια έτοιμη φόρμα, η οποία έχει ήδη κάποιους διακόπτες, και πρέπει να προσθέσετε έναν άλλο διακόπτη σε αυτήν τη φόρμα. Εδώ προκύπτει κάποιου είδους κουραστική, που απαιτεί πολύ χρόνο, και όχι χρόνο για τον προγραμματισμό του κώδικα - αλλά χάσιμο χρόνου για να εμφανιστούν αυτοί οι διακόπτες στον χρήστη.

Ας δούμε λοιπόν ένα παράδειγμα. Υπάρχει ένα τέτοιο έγγραφο για την προσαρμογή των αποδείξεων στο 1C UPP - σίγουρα υπάρχει. Κάποτε χρειάστηκε να προσθέσουμε διακόπτες σε αυτό, έτσι ώστε να προκύπτουν ελαφρώς διαφορετικές εγγραφές για τη λογιστική. Ποιο είναι το πρόβλημα, φαίνεται ότι πρέπει, πρέπει, θα το κάνουμε. Αλλά αυτή η φόρμα έχει ήδη 2 κουμπιά επιλογής.

Έτσι φαίνεται η φόρμα στην οποία πρέπει να προσθέσουμε περισσότερους διακόπτες


Στην καρτέλα Για προχωρημένους, θα θέλαμε να τοποθετήσουμε δύο ακόμη κουμπιά επιλογής. Το πρώτο βήμα λοιπόν είναι να προσθέσουμε με τόλμη ένα νέο στοιχείο ελέγχου στο σημείο που χρειαζόμαστε και να το εισάγουμε.

Φαίνεται ότι όλα είναι απλά. Δημιουργούμε ένα νέο χαρακτηριστικό με τον τύπο "Αριθμός" και εισάγουμε 2 διακόπτες, ο ένας από τους οποίους θα μπορεί να γράψει δεδομένα στο χαρακτηριστικό και ο άλλος όχι.

Προσθέστε ένα νέο στοιχείο ελέγχου - Διακόπτης, προσθέστε τον διακόπτη2 στον πίνακα με τον αριθμό και την περιγραφή των διακοπτών, ορίστε πρώτα τον διακόπτη1 στην ομάδα και πατήστε OK. Τοποθετήστε τα στοιχεία ελέγχου που δημιουργήσατε στη φόρμα. Ενημερώνουμε τη διαμόρφωση της βάσης δεδομένων (F7) και την εκτελούμε για εντοπισμό σφαλμάτων.

Κατά την εκτέλεση (κατά τη δημιουργία ενός νέου εγγράφου σε λειτουργία 1C:Enterprise), βλέπουμε ότι όσο και να προσπαθούμε να κάνουμε κλικ στο Switch2, δεν συμβαίνει τίποτα. Τα στοιχεία δεν λειτουργούν όπως θα έπρεπε. Υπάρχει ένα κόλπο εδώ.
Επιστρέψτε στον διαμορφωτή. Επιλέξτε το στοιχείο μενού Φόρμα -> Ορισμός σειράς διέλευσης... (είναι σημαντικό η φόρμα να είναι ανοιχτή στην οθόνη)


Για να λειτουργήσουν οι διακόπτες μας, πρέπει να παραβιάσετε την αυτόματη παραγγελία και να συμφωνήσετε με μια χειροκίνητη. Και βάλτε το στη φόρμα ώστε οι διακόπτες μας να πηγαίνουν ο ένας μετά τον άλλο με τη σειρά.

ΕΝΤΑΞΕΙ. Ενημερώστε τη διαμόρφωση και δοκιμάστε να την εκτελέσετε.
Εξαιρετική. Όλα λειτούργησαν.

Επιπλέον - βίντεο (χωρίς ήχο, ώστε όλα να είναι ξεκάθαρα)