Βασικές λεπτομέρειες του εντύπου. Λεπτομέρειες διαχειριζόμενης φόρμας (1Cv8) Οι διαχειριζόμενες φόρμες 1c προσθέτουν λεπτομέρειες μέσω προγραμματισμού

Λεπτομέρειες φόρμας

Ένα σύνολο λεπτομερειών φόρμας περιγράφει τη σύνθεση των δεδομένων που εμφανίζονται, επεξεργάζονται ή αποθηκεύονται στη φόρμα. Ταυτόχρονα, τα ίδια τα στοιχεία της φόρμας δεν παρέχουν τη δυνατότητα εμφάνισης και επεξεργασίας δεδομένων. Τα στοιχεία φόρμας (δείτε την ενότητα «Στοιχεία φόρμας» αυτού του κεφαλαίου) που σχετίζονται με λεπτομέρειες φόρμας χρησιμοποιούνται για εμφάνιση και επεξεργασία. Το σύνολο όλων των λεπτομερειών φόρμας θα ονομάζεται δεδομένα φόρμας.

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

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

Επέκταση φόρμας– αυτές είναι πρόσθετες ιδιότητες, μέθοδοι και παράμετροι φόρμας του αντικειμένου ManagedForm, χαρακτηριστικά του αντικειμένου που είναι το κύριο στοιχείο της φόρμας.

Κατά τη διαδικασία ανάπτυξης φόρμας, μπορείτε να ορίσετε ρητά τη δυνατότητα προβολής και επεξεργασίας συγκεκριμένων λεπτομερειών φόρμας, όσον αφορά τους ρόλους, χρησιμοποιώντας τις ιδιότητες Προβολή και Επεξεργασία (για περισσότερες λεπτομέρειες, ανατρέξτε στην ενότητα «Ρυθμίσεις φόρμας βάσει ρόλων» της ενότητας «Επεξεργαστές ” κεφάλαιο). Επιπλέον, η διαθεσιμότητα ενός συγκεκριμένου χαρακτηριστικού στην ίδια τη φόρμα μπορεί να διαμορφωθεί χρησιμοποιώντας λειτουργικές επιλογές (περισσότερες λεπτομέρειες σχετικά με τις λειτουργικές επιλογές μπορείτε να βρείτε στο κεφάλαιο «Διαχείριση διεπαφής διαμόρφωσης»).

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

Τύποι δεδομένων διαθέσιμοι σε διαχειριζόμενη μορφή

Μια διαχειριζόμενη φόρμα διαφέρει επίσης από μια κανονική φόρμα στους τύπους δεδομένων με τα οποία λειτουργεί. Εάν η κανονική φόρμα λειτουργεί με τους περισσότερους από τους τύπους που παρέχει το 1C:Enterprise (συμπεριλαμβανομένων των τύπων DirectoryObject, DocumentObject, κ.λπ.), τότε στη διαχειριζόμενη φόρμα μπορούν να διακριθούν οι ακόλουθες κατηγορίες τύπων:

  • Οι τύποι που χρησιμοποιούνται άμεσα στη φόρμα είναι εκείνοι οι τύποι που υπάρχουν στο πλάι του thin και του προγράμματος-πελάτη Web (για παράδειγμα, Number, DirectoryLink.Products, GraphicScheme, TabularDocument).
  • τύπους που θα μετατραπούν σε ειδικούς τύπους δεδομένων—τύπους δεδομένων διαχειριζόμενης φόρμας. Τέτοιοι τύποι εμφανίζονται στη λίστα με τις λεπτομέρειες της φόρμας σε παρένθεση, για παράδειγμα (DirectoryObject.Products).
  • δυναμική λίστα (για περισσότερες λεπτομέρειες, ανατρέξτε στην ενότητα «Δυναμική λίστα» αυτού του κεφαλαίου).

Μετατροπή αντικειμένων εφαρμογής σε δεδομένα φόρμας

Ορισμένοι τύποι εφαρμογών (όπως το DirectoryObject, κ.λπ.) δεν υπάρχουν στη λεπτή πλευρά και στην πλευρά του προγράμματος-πελάτη Web (ανατρέξτε στο κεφάλαιο Managed Application Concept για περισσότερες λεπτομέρειες). Επομένως, για την αναπαράσταση τέτοιων τύπων εφαρμογών στη φόρμα, η πλατφόρμα έχει εισαγάγει ειδικούς τύπους δεδομένων που έχουν σχεδιαστεί για να λειτουργούν σε διαχειριζόμενες φόρμες. Αυτή η δυνατότητα μιας διαχειριζόμενης εφαρμογής καθιστά απαραίτητη τη μετατροπή αντικειμένων εφαρμογής σε δεδομένα σχηματισμού (και αντίστροφα).

Χρησιμοποιούνται οι ακόλουθοι τύποι δεδομένων:

  • Form DataStructure – περιέχει ένα σύνολο ιδιοτήτων αυθαίρετου τύπου. Οι ιδιότητες μπορεί να είναι άλλες δομές, συλλογές ή δομές με συλλογές. Αυτός ο τύπος αναπαρίσταται, για παράδειγμα, με τη μορφή DirectoryObject.
  • Μια FormDataCollection είναι μια λίστα με πληκτρολογημένες τιμές, παρόμοια με έναν πίνακα. Η πρόσβαση σε ένα στοιχείο συλλογής γίνεται με ευρετήριο ή αναγνωριστικό. Η πρόσβαση μέσω αναγνωριστικού ενδέχεται να μην είναι διαθέσιμη σε ορισμένες περιπτώσεις. Αυτό οφείλεται στον τύπο του αντικειμένου εφαρμογής που αντιπροσωπεύεται από αυτήν τη συλλογή. Το αναγνωριστικό μπορεί να είναι οποιοσδήποτε ακέραιος αριθμός. Αυτός ο τύπος αντιπροσωπεύεται, για παράδειγμα, με τη μορφή πίνακα.
  • Το Form DataStructureWithCollection είναι ένα αντικείμενο που αναπαρίσταται ως δομή και ως συλλογή ταυτόχρονα. Μπορεί να αντιμετωπιστεί όπως οποιαδήποτε από αυτές τις οντότητες. Αυτός ο τύπος αντιπροσωπεύει, για παράδειγμα, ένα σύνολο εγγραφών σε μια φόρμα.
  • Form DataTree – ένα αντικείμενο σχεδιασμένο για την αποθήκευση ιεραρχικών δεδομένων.

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

Για παράδειγμα, ένα έγγραφο που περιέχει ένα τμήμα πίνακα θα αντιπροσωπεύεται από ένα αντικείμενο του τύπου FormDataStructure (το ίδιο το έγγραφο), στο οποίο υποτάσσεται ένα αντικείμενο του τύπου FormDataCollection (τμήμα πίνακα του εγγράφου).

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

Διαβίβαση δεδομένων μεταξύ τμημάτων πελάτη και διακομιστή μιας διαχειριζόμενης φόρμας

Στην πραγματικότητα, μπορούμε να πούμε ότι τα δεδομένα φόρμας είναι μια ενοποιημένη αναπαράσταση δεδομένων από διάφορα αντικείμενα εφαρμογής με τα οποία η φόρμα λειτουργεί ομοιόμορφα και τα οποία υπάρχουν τόσο στον διακομιστή όσο και στον πελάτη. Δηλαδή, η φόρμα περιέχει κάποια «προβολή» δεδομένων αντικειμένων εφαρμογής με τη μορφή των δικών της τύπων δεδομένων και πραγματοποιεί μετατροπή μεταξύ τους εάν είναι απαραίτητο. Ωστόσο, εάν ο προγραμματιστής ρυθμίσεων εφαρμόσει τον δικό του αλγόριθμο επεξεργασίας δεδομένων, τότε πρέπει να πραγματοποιήσει ανεξάρτητα τη μετατροπή δεδομένων (από εξειδικευμένους τύπους σε τύπους εφαρμογών και αντίστροφα).

Όταν επεξεργάζεστε λεπτομέρειες φόρμας σε ένα εξειδικευμένο πρόγραμμα επεξεργασίας (για περισσότερες λεπτομέρειες, ανατρέξτε στην ενότητα «Λεπτομέρειες φόρμας» του κεφαλαίου «Επεξεργαστές»), είναι δυνατό να επηρεαστεί η μεταφορά δεδομένων μεταξύ του πελάτη και του διακομιστή ενώ εκτελείται η φόρμα. Η στήλη του επεξεργαστή λεπτομερειών χρησιμοποιείται για αυτό. Να χρησιμοποιείτε πάντα. Η επίδραση αυτής της ιδιότητας διαφέρει για τρεις τύπους ιδιοτήτων:

  • Για ένα χαρακτηριστικό δευτερεύον σε μια δυναμική λίστα (στήλη δυναμικής λίστας):
    • Η ιδιότητα είναι ενεργοποιημένη – το χαρακτηριστικό διαβάζεται πάντα από τη βάση δεδομένων και περιλαμβάνεται στα δεδομένα της φόρμας.
    • Η ιδιότητα είναι απενεργοποιημένη - το χαρακτηριστικό διαβάζεται από τη βάση δεδομένων και περιλαμβάνεται στα δεδομένα φόρμας μόνο όταν υπάρχει ένα ορατό προς το παρόν στοιχείο φόρμας που σχετίζεται με το χαρακτηριστικό ή το δευτερεύον χαρακτηριστικό του.
  • Για στηρίγματα που εξαρτώνται από τη συλλογή κινήσεων:
    • Η ιδιότητα είναι ενεργοποιημένη – οι κινήσεις εγγράφων διαβάζονται από τη βάση δεδομένων και θα υπάρχουν στα δεδομένα της φόρμας.
    • Η ιδιότητα είναι απενεργοποιημένη - οι κινήσεις εγγράφων δεν θα διαβαστούν από τη βάση δεδομένων και δεν θα συμπεριληφθούν στα δεδομένα της φόρμας (αν δεν υπάρχει στοιχείο φόρμας που να αναφέρεται στις κινήσεις εγγράφων).
  • Άλλες λεπτομέρειες φόρμας:
    • Η ιδιότητα είναι ενεργοποιημένη – το χαρακτηριστικό θα υπάρχει στα δεδομένα της φόρμας, ανεξάρτητα από το αν υπάρχει ή όχι τουλάχιστον ένα στοιχείο φόρμας που σχετίζεται με το χαρακτηριστικό ή το δευτερεύον χαρακτηριστικό του.
    • Η ιδιότητα είναι απενεργοποιημένη - το χαρακτηριστικό θα υπάρχει στα δεδομένα φόρμας μόνο εάν υπάρχει ένα στοιχείο φόρμας που σχετίζεται με το χαρακτηριστικό ή το δευτερεύον χαρακτηριστικό του. Σε αντίθεση με τα χαρακτηριστικά της δυναμικής λίστας, η ορατότητα του στοιχείου που σχετίζεται με το χαρακτηριστικό δεν έχει σημασία εδώ.

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

Μέθοδοι μετατροπής δεδομένων αντικειμένων εφαρμογής σε δεδομένα φόρμας

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

  • ValueInFormData(),
  • FormDataInValue(),
  • CopyFormData().

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

Όταν μετατρέπετε δεδομένα φόρμας σε αντικείμενο εφαρμογής, πρέπει να λάβετε υπόψη τη συμβατότητά τους.

  • ValueInFormData() – μετατρέπει ένα αντικείμενο τύπου εφαρμογής σε δεδομένα φόρμας.
  • FormDataInValue() – μετατρέπει δεδομένα φόρμας σε αντικείμενο τύπου εφαρμογής.
  • CopyFormData() – αντιγράφει δεδομένα φόρμας που έχουν συμβατή δομή. Επιστρέφει True εάν το αντίγραφο ήταν επιτυχές ή False εάν η δομή του αντικειμένου δεν είναι συμβατή.

Σημείωση. Κατά την εκτέλεση τυπικών ενεργειών (άνοιγμα φόρμας, εκτέλεση τυπικής εντολής Εγγραφής κ.λπ.) μιας φόρμας με τις κύριες λεπτομέρειες, η μετατροπή εκτελείται αυτόματα.

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

&OnServerProcedure When CreateOnServer (Αποτυχία, StandardProcessing)

ObjectProduct = Directories.Products.FindByName("Coffeepot").GetObject(); ValueInFormData(ObjectItem, Object);

Τέλος Διαδικασίας

&OnClient Διαδικασία Εγγραφή()

WriteOnServer();

Τέλος Διαδικασίας

Διαδικασία &OnServer WriteOnServer()

ObjectProduct = FormDataValue(Object, Type("DirectoryObject.Products")); ObjectItem.Write();

Τέλος Διαδικασίας

Το αντικείμενο ManagedForm έχει επίσης μεθόδους διαθέσιμες στον διακομιστή:

  • ValueВFormAttribute() – μετατρέπει ένα αντικείμενο τύπου εφαρμογής στο καθορισμένο χαρακτηριστικό φόρμας.
  • FormAttributeVValue() – μετατρέπει ένα χαρακτηριστικό δεδομένων φόρμας σε αντικείμενο τύπου εφαρμογής.

Η χρήση αυτών των μεθόδων είναι συνήθως πιο βολική, καθώς έχουν, για παράδειγμα, πληροφορίες σχετικά με τον τύπο των λεπτομερειών της φόρμας. Επιπλέον, η μέθοδος Form AttributesValue() ορίζει την αντιστοιχία μεταξύ των δεδομένων της φόρμας και του αντικειμένου, η οποία χρησιμοποιείται κατά τη δημιουργία μηνυμάτων. Μπορείτε να διαβάσετε περισσότερα για αυτό στο κεφάλαιο «Δυνατότητες πλοήγησης υπηρεσιών».

Ας δώσουμε ένα παράδειγμα χρήσης αυτών των μεθόδων.

Διαδικασία &OnServer RecalculateOnServer()

// Μετατρέπει το χαρακτηριστικό Object σε αντικείμενο εφαρμογής. Document = Form AttributesValue("Object"); // Εκτελεί εκ νέου υπολογισμό χρησιμοποιώντας τη μέθοδο που ορίζεται στη λειτουργική μονάδα εγγράφων. Document.Recalculate(); // Μετατρέπει το αντικείμενο της εφαρμογής πίσω σε υποστηρικτικό. ValueВFormAttributes (Έγγραφο, "Αντικείμενο");

Τέλος Διαδικασίας

Διεπαφή λογισμικού

FormDataTree

  • FindById
  • GetItems

Περιγραφή:

Σχεδιασμένο για να μοντελοποιεί ένα δέντρο σε δεδομένα διαχειριζόμενης μορφής.

Αυτό το αντικείμενο μπορεί να σειριοποιηθεί προς/από XDTO. Ο τύπος XDTO που αντιστοιχεί σε αυτό το αντικείμενο ορίζεται στον χώρο ονομάτων. Όνομα τύπου XDTO:

GetItems

Σύνταξη:

GetItems()

Επιστρεφόμενη τιμή:

Τύπος: Συλλογή δεδομένων φόρμας στοιχείων δέντρου.

Περιγραφή:

Αποκτά μια συλλογή από στοιχεία δέντρου ανώτατου επιπέδου.

Διαθεσιμότητα: πελάτης, διακομιστής, thin client, web client.

FindById

Σύνταξη:

FindById(<Идентификатор>)

Επιλογές:

<Идентификатор>(απαιτείται)

Τύπος: Αριθμός. Αναγνωριστικό στοιχείου δέντρου.

Επιστρεφόμενη τιμή:

Τύπος:FormDataTreeElement.

Περιγραφή:

Λαμβάνει ένα στοιχείο συλλογής με αναγνωριστικό.

Διαθεσιμότητα: πελάτης, διακομιστής, thin client, web client.

FormDataTreeItem

Ιδιότητες:

<Имя свойства> (<Имя свойства>)

  • GetId (GetId)
  • GetParent
  • GetItems
  • Ιδιοκτησία

Περιγραφή:

Στοιχείο δέντρου δεδομένων φόρμας.

FormDataTreeItemCollection

Στοιχεία συλλογής: DataFormTreeElement

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

  • Εισάγετε
  • Προσθήκη
  • Ευρετήριο (IndexOf)
  • μετρώ
  • Σαφή
  • Παίρνω
  • Κίνηση
  • Διαγράφω

Περιγραφή:

Συλλογή από ξύλινα στοιχεία.

Διαθεσιμότητα: πελάτης, διακομιστής, thin client, web client.

Δείτε επίσης:

  • FormDataTreeElement, μέθοδος GetElements
  • DataFormTree, μέθοδος GetItems

Χαρακτηριστικά της εργασίας με ένα δέντρο αξίας

Ενημέρωση δέντρου

Υπάρχει ένα πρόβλημα πτώσειςπλατφόρμες κατά την ενημέρωση του δέντρου.

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

Λύση: Πρέπει να καθαρίσετε το δέντρο πριν από την ενημέρωση.

Για παράδειγμα:

&Στη διαδικασία διακομιστή ClearTree(στοιχεία) Για κάθε στοιχείο από στοιχεία Loop ClearTree(element.GetElements()); EndCycle; στοιχεία.Clear(); Τέλος Διαδικασίας

&Στη Διαδικασία διακομιστή Συμπλήρωση δένδρων εννοιών() dConcepts = srProperties.Build Concept Tree(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems()); ValueInFormData(dConcepts, ConceptTree); Τέλος Διαδικασίας

Διαδικασία &OnClient OnDateOnChange(Element) Fill ConceptTree(); Τέλος Διαδικασίας

Η πλατφόρμα 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_.

Προσοχή!

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

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

Ερώτηση 10.05 της εξέτασης 1C: Platform Professional. Σε τι χρησιμοποιείται το κύριο χαρακτηριστικό φόρμας;

  1. Καθορίζει την πηγή δεδομένων για τη φόρμα στο σύνολό της
  2. Καθορίζει τις τυπικές δυνατότητες της πλατφόρμας για εργασία με τη φόρμα με δεδομένα του τύπου που καθορίζεται στο κύριο χαρακτηριστικό
  3. Για να παρέχει τη δυνατότητα πρόσβασης μέσω προγραμματισμού σε λεπτομέρειες αντικειμένου από το περιβάλλον της τοπικής φόρμας
  4. Παρέχει οπτικοποίηση των λεπτομερειών του αντικειμένου στο παράθυρο διαλόγου της φόρμας
  5. Τα 2 και 3 είναι σωστά
  6. Τα 1 και 2 είναι σωστά

Η σωστή απάντηση είναι ο αριθμός έξι, βλέπε παραπάνω.


Ερώτηση 10.06 της εξέτασης 1C: Platform Professional. Σε τι χρειάζονται τα στοιχεία της φόρμας;
  1. Για να περιγράψετε το περιεχόμενο των δεδομένων που εμφανίζονται, επεξεργάζονται ή αποθηκεύονται σε μια φόρμα
  2. Για εμφάνιση και επεξεργασία δεδομένων σε μια φόρμα
  3. Τα 1 και 2 είναι σωστά

Η σωστή απάντηση είναι η τρίτη - και τα δύο.

Ερώτηση 10.07 της εξέτασης 1C: Platform Professional. Για να εκχωρήσετε βασικά χαρακτηριστικά σε μια αυθαίρετη ελεγχόμενη φόρμα...

  1. Πρέπει να επιλέξετε το πλαίσιο ελέγχου "Βασικές λεπτομέρειες" στις ιδιότητες των χαρακτηριστικών της φόρμας
  2. πρέπει να συμπληρώσετε την ιδιότητα «Δεδομένα» της φόρμας επιλέγοντας το απαιτούμενο χαρακτηριστικό φόρμας

Η σωστή απάντηση είναι η δεύτερη:

Ερώτηση 10.08 της εξέτασης 1C: Platform Professional. Για να εκχωρήσετε τα κύρια στοιχεία σε ένα αυθαίρετο τακτικό έντυπο...
  1. η φόρμα πρέπει να γίνει η κύρια, οι κύριες λεπτομέρειες καθορίζονται αυτόματα
  2. Πρέπει να επιλέξετε το πλαίσιο ελέγχου "Βασικές λεπτομέρειες" στις ιδιότητες των χαρακτηριστικών της φόρμας
  3. πρέπει να μεταβείτε στο μενού "Επεξεργασία", "Βασικές λεπτομέρειες" και να επιλέξετε την επιθυμητή τιμή
  4. πρέπει να συμπληρώσετε την ιδιότητα «Δεδομένα» της φόρμας επιλέγοντας το απαιτούμενο χαρακτηριστικό φόρμας

Η τέταρτη σωστή απάντηση είναι:

Οι κύριες λεπτομέρειες επισημαίνονται με έντονους χαρακτήρες:

Ερώτηση 10.09 της εξέτασης 1C: Platform Professional. Εάν υπάρχει ένα χαρακτηριστικό κύριας φόρμας, είναι δυνατόν να προσθέσετε ένα άλλο κύριο χαρακτηριστικό;
  1. Αυτό είναι αδύνατο
  2. Είναι δυνατό με την ανάθεση της κατάλληλης τιμής στην ιδιότητα χαρακτηριστικού φόρμας
  3. Είναι δυνατή μόνο μέσω προγραμματισμού, κατά την πρόσβαση στο αντικείμενο "Φόρμα".
  4. Αυτό είναι δυνατό προσθέτοντας μια άλλη τιμή στην αντίστοιχη ιδιότητα φόρμας

Η σωστή απάντηση είναι η πρώτη, υπάρχει αυστηρά μια βασική προϋπόθεση, γιατί η σύνδεση με το αντικείμενο πρέπει να είναι ξεκάθαρη.

Ερώτηση 10.113 της εξέτασης 1C: Platform Professional. Ποια από τις λεπτομέρειες του εντύπου που παρουσιάζεται στο σχήμα είναι η κύρια;

  1. Κατάλογος των συναλλαγματικών ισοτιμιών
  2. DirectoryObject
  3. Οι φόρμες καταλόγου δεν έχουν βασικές λεπτομέρειες
  4. Οι φόρμες καταλόγου έχουν όλες τις βασικές λεπτομέρειες
Η δεύτερη σωστή απάντηση είναι αυτή με έντονους χαρακτήρες.

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

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

Προσθήκη στοιχείων σε μια φόρμα

Αυτό γίνεται πολύ απλά: πρέπει να επιλέξετε το στοιχείο Μορφήστο παράθυρο Στοιχεία σχεδίασης φόρμας και κάντε κλικ στο κουμπί «Προσθήκη». Μετά από αυτό, θα ανοίξει ένα παράθυρο στο οποίο πρέπει να επιλέξετε τον επιθυμητό τύπο στοιχείου

Μετά την επιλογή, το επιθυμητό στοιχείο θα εμφανιστεί στο παράθυρο Στοιχεία.

Στοιχείο διαχειριζόμενης φόρμας Πεδίο

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

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

Ας συνδέσουμε τώρα το στοιχείο φόρμας που προστέθηκε πρόσφατα με μία από τις λεπτομέρειες. Για να το κάνετε αυτό, επιλέξτε το επιθυμητό χαρακτηριστικό από την ιδιότητα PathKData του στοιχείου.

Μετά από αυτό, οι ιδιότητες DataPath και View θα συμπληρωθούν και το ίδιο το στοιχείο θα εμφανιστεί στην προβολή φόρμας.

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

Ανάλογα με την επιλεγμένη τιμή, θα καθοριστεί η λειτουργικότητα. Στα παραπάνω σχήματα, η επιλεγμένη τιμή είναι – πεδίο εισαγωγής, δηλ. μπορούμε να εισάγουμε οποιεσδήποτε τιμές σε αυτό το πεδίο εισαγωγής και αν επιλέξουμε μια τιμή πεδίο ετικέτας, τότε δεν θα μπορούμε να εισάγουμε τίποτα.

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

Τώρα ας προσθέσουμε ένα νέο στοιχείο φόρμας με τύπο Πεδίο εισαγωγήςκαι συνδέστε το με τα στηρίγματα ΛεπτομέρειεςΗμερομηνίαμέσω της ήδη γνωστής σε εμάς ιδιότητας DataPath

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

Έτσι, συμπεραίνουμε ότι η λειτουργικότητα του πεδίου εισαγωγής εξαρτάται από τον τύπο του χαρακτηριστικού.

Για στηρίγματα με τύπο BooleanΟι ακόλουθες τιμές ιδιοκτησίας Προβολή θα είναι διαθέσιμες.

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

Λεπτομερέστερη εργασία με στοιχεία φόρμας χρησιμοποιώντας πρακτικά παραδείγματα δίνεται στο βιβλίο «Βασικές αρχές ανάπτυξης στο 1C: Ταξί. Διαχειριζόμενη Ανάπτυξη Εφαρμογών σε 12 Βήματα».

Μερικές φορές φαίνεται ότι η εκμάθηση της γλώσσας προγραμματισμού σε 1C είναι περίπλοκη και δύσκολη. Στην πραγματικότητα, ο προγραμματισμός σε 1C είναι εύκολος. Τα βιβλία μου θα σας βοηθήσουν να μάθετε γρήγορα και εύκολα τον προγραμματισμό σε 1C: και "Βασικά στοιχεία ανάπτυξης σε 1C: Ταξί"

Μάθετε προγραμματισμό σε 1C με τη βοήθεια του βιβλίου μου "Προγραμματισμός σε 1C σε 11 βήματα"

  1. Χωρίς περίπλοκους τεχνικούς όρους.
  2. Πάνω από 700 σελίδες πρακτικού υλικού.
  3. Κάθε εργασία συνοδεύεται από ένα σχέδιο (στιγμιότυπο οθόνης).
  4. Μια συλλογή προβλημάτων για την εργασία.
  5. Το βιβλίο είναι γραμμένο σε σαφή και απλή γλώσσα - για αρχάριους.

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

  1. Χωρίς περίπλοκους τεχνικούς όρους.
  2. Περισσότερες από 600 σελίδες πρακτικού υλικού.
  3. Κάθε παράδειγμα συνοδεύεται από ένα σχέδιο (στιγμιότυπο οθόνης).
  4. Το βιβλίο αποστέλλεται με email σε μορφή PDF. Μπορεί να ανοίξει σε οποιαδήποτε συσκευή!

Κωδικός προσφοράς για έκπτωση 15% - 48PVXHeYu


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

Μπορείτε να πληρώσετε χειροκίνητα:

Yandex.Money - 410012882996301
Web Money - R955262494655

Εγγραφείτε στις ομάδες μου.

Και Δόμηση αντικειμένου μεταφοράς δεδομένων σε κώδικα, ελεγχόμενη μορφή στο περιβάλλον 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 έλαβε μια ανεπιτυχή αρχιτεκτονική απόφαση, εισάγοντας την προσωρινή αποθήκευση μόνο στο επίπεδο των μεθόδων κλήσης κοινών μονάδων και χωρίς να παρέχει δυνατότητες ελέγχου (χρόνος συνάφειας, επαναφορά κατά παραγγελία).
  • Σιωπηρές κλήσεις διακομιστή. Μην ξεχνάτε τα τεχνολογικά χαρακτηριστικά· πολλές «ακίνδυνες» λειτουργίες στον πελάτη προκαλούν την πλατφόρμα να επικοινωνήσει με τον διακομιστή.