1s προκαθορισμένη τιμή αναφοράς στο αίτημα. Προκαθορισμένα στοιχεία

Προσοχή! Ακολουθεί μια δοκιμαστική έκδοση του μαθήματος, το υλικό του οποίου μπορεί να μην είναι πλήρες.

Συνδεθείτε ως φοιτητής

Συνδεθείτε ως μαθητής για να αποκτήσετε πρόσβαση στο σχολικό περιεχόμενο

Γλώσσα ερωτήματος 1C 8.3 για αρχάριους προγραμματιστές: συνάρτηση VALUE

Λειτουργία ΕΝΝΟΙΑ σχεδιασμένο να χειρίζεταιστο σώμα του αιτήματος στις τιμές αριθμητικού συστήματοςΚαι προκαθορισμένα δεδομένα.

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

Απαριθμήσεις

Απαριθμήσεις- αυτό είναι ένα αντικείμενο εφαρμογής (θυμάστε ότι υπάρχουν ακόμα Βιβλία αναφοράςΚαι Τεκμηρίωση). Γιατί χρειαζόταν;

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

Το αμετάβλητο είναι το βασικό τους ατού. Αυτές είναι σταθερές βάσης δεδομένων.

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

Φανταστείτε τι θα συμβεί αν προσπαθήσει να χρησιμοποιήσει τον κατάλογο για αυτούς τους σκοπούς;

Πρώτον, κάποιος χρήστης θα προχωρήσει και θα προσθέσει κάποιο "αρειανό πάτωμα".

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

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

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

Ας δούμε ένα παράδειγμα μιας τέτοιας απαρίθμησης στη βάση δεδομένων μας "Gastronom". Διαβάζετε μια δοκιμαστική έκδοση του μαθήματος, βρίσκονται τα πλήρη μαθήματα.

Εδώ είναι ο αριθμός μας με το όνομα Πάτωμα. Τι αξίες μπορεί να πάρει;

Υπάρχουν μόνο δύο τιμές. Με τα ονόματα «Άνδρας» και «Γυναίκα». Αυτό που χρειαζόμαστε.

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

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

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

Τώρα ας αλλάξουμε το ερώτημα ώστε να μείνουν μόνο άντρες. Αν προσπαθήσουμε να γράψουμε κάτι σαν:

τότε δεν παίρνουμε τίποτα:

Επειδή δεν είναι δυνατή η πρόσβαση σε τιμές απαρίθμησης με αυτόν τον τρόπο. Πρέπει να προσπελαστούν χρησιμοποιώντας τη λειτουργία ΕΝΝΟΙΑ:

Έτσι, ένα από τα καθήκοντα της συνάρτησης ΕΝΝΟΙΑ- χρήση των τιμών απαρίθμησης σε ερωτήματα.

προκαθορισμένα δεδομένα

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

Στη βάση δεδομένων μας "Gastronom" (σε λειτουργία χρήστη), ανοίξτε την αναφορά "Μονάδες μέτρησης":

Ρίξτε μια ματιά στα στοιχεία του. Βλέπετε τους κίτρινους κύκλους δίπλα σε μερικά από τα στοιχεία; Αυτά τα στοιχεία (που έχουν κύκλους) είναι προκαθορισμένα δεδομένα.

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

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

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

Αυτός είναι ο λόγος για τον οποίο η απλή διαγραφή ενός τέτοιου στοιχείου δεν θα λειτουργήσει. Δοκιμάστε να το επισημάνετε για διαγραφή:

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

Εδώ είναι όλα τα προκαθορισμένα στοιχεία μας για τη Μονάδα μέτρησης αναφοράς. Σημειώστε ότι όλα τα προκαθορισμένα στοιχεία έχουν ένα ειδικό όνομα που δεν εμφανίζεται στη λειτουργία χρήστη.

Για ένα στοιχείο με κωδικό 1, αυτό το όνομα είναι Ton, με κωδικό 2 - Gram, και ούτω καθεξής. Αυτό το όνομα λέγεται προκαθορισμένο όνομα στοιχείουκαι με αυτό το όνομα μπορείτε να ανατρέξετε σε αυτό από τον κωδικό (ή από το αίτημα στην περίπτωσή μας).

Ίσως ρωτήσετε γιατί δεν ήταν δυνατό να γίνουν οι μονάδες μέτρησης απλώς μια απαρίθμηση με τα στοιχεία Ton, Gram και Pack; Και όλα αυτά γιατί σε αυτήν την περίπτωση είναι σημαντικό για εμάς η μονάδα μέτρησης αναφοράς να περιέχει πάντα ορισμένα συγκεκριμένα στοιχεία (τόνος, γραμμάριο και συσκευασία), αλλά ταυτόχρονα δεν θέλουμε να απαγορεύσουμε στον χρήστη να προσθέσει οποιοδήποτε από τα στοιχεία του ( κιλό, κομμάτι και ούτω καθεξής). Διαβάζετε μια δοκιμαστική έκδοση του μαθήματος, βρίσκονται τα πλήρη μαθήματα.

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

Και μπορούμε να έχουμε πρόσβαση στα προκαθορισμένα στοιχεία μας από το αίτημα χρησιμοποιώντας τη λειτουργία που είναι ήδη γνωστή σε εμάς ΕΝΝΟΙΑ:

Κανε το τεστ

Έναρξη δοκιμής

1. Ορίζονται οι τιμές Enum

2. Για αποθήκευση λίστας αποθηκών σε μια εταιρεία, ο τύπος

3. Για αποθήκευση λίστας μονάδων μέτρησης σε αποθήκη, ο τύπος

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

5. Για αναφορά στην τιμή απαρίθμησης σε ένα ερώτημα, είναι κατάλληλη μια συνάρτηση

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

7. Τα προκαθορισμένα δεδομένα προέρχονται από

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

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

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

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

Ως διέξοδος, μπορείτε να αποθηκεύσετε έναν σύνδεσμο προς κάθε στοιχείο που χρησιμοποιείται συχνά στον κατάλογο "Τύποι τιμών στοιχείων" σε ξεχωριστές σταθερές και να λάβετε τιμές από αυτές στο ερώτημα. Ωστόσο, σε αυτήν την περίπτωση, ο προγραμματιστής θα πρέπει να προσθέσει μια ξεχωριστή σταθερά για κάθε τέτοιο στοιχείο. Η κατάσταση θα γίνει πολύ πιο περίπλοκη εάν τέτοια στοιχεία δεν βρίσκονται μόνο στον κατάλογο "Τύποι τιμών Ονοματολογίας", αλλά και σε άλλους καταλόγους ("Κατηγορίες αντικειμένων", "Ποιότητα", "Ονοματολογία" και άλλοι). Τότε ο αριθμός των σταθερών στο σύστημα μπορεί να αυξηθεί αρκετές φορές!

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

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

Λύση μίας στάσης

Η ουσία της καθολικής λύσης θα είναι η εξής: θα δημιουργηθεί ένας κατάλογος, στον οποίο ο προγραμματιστής θα προσθέσει προκαθορισμένα στοιχεία. Το χαρακτηριστικό "Τιμή" προστέθηκε στο λεξικό, ο τύπος του οποίου εξαρτάται από τις τιμές για τις οποίες θα δημιουργηθεί η αντιστοιχία "Προκαθορισμένο στοιχείο λεξικού -> Συσχετισμένη τιμή". Η δομή των μεταδεδομένων καταλόγου μοιάζει με αυτό (δείτε το παρακάτω στιγμιότυπο οθόνης).

Για να λάβετε ένα προκαθορισμένο στοιχείο η καλύτερη επιλογήείναι η χρήση της καθολικής μεθόδου "ΠροκαθορισμένηΤιμή(<Имя>)" . Μεταβιβάστηκε ως παράμετρος στη μέθοδο πλήρης διαδρομήσε ένα προκαθορισμένο στοιχείο. Η σύνταξη είναι παρόμοια με τη συνάρτηση γλώσσας ερωτήματος "VALUE()" .

Για τη διευκόλυνση της ανάπτυξης, προτείνω να μετακινήσετε τη συνάρτηση για τη λήψη της τιμής που σχετίζεται με ένα προκαθορισμένο στοιχείο σε μια κοινή λειτουργική μονάδα. ΣΕ διαμόρφωση δοκιμής, διαθέσιμο για λήψη από τον σύνδεσμο στο τέλος του άρθρου, έχει δημιουργηθεί μια κοινή ενότητα "Τιμές προκαθορισμένων στοιχείων" με λειτουργία εξαγωγής "GetPredefinedElementValue(<ИмяПредопределенногоЭлемента>)" . Κωδικός προγράμματοςΗ συνάρτηση λαμβάνει μια αναφορά σε ένα προκαθορισμένο στοιχείο και στη συνέχεια με αίτημα λαμβάνει τις τιμές του χαρακτηριστικού "Value". Το παρακάτω στιγμιότυπο οθόνης δείχνει την πλήρη λίστα της λειτουργίας.

Όπως μπορούμε να δούμε, η συνάρτηση σχηματίζει ένα αίτημα στο χαρακτηριστικό "Value" του προκαθορισμένου στοιχείου που μεταβιβάζεται ως παράμετρος. Η παράμετρος συνάρτησης είναι μια συμβολοσειρά με το όνομα ενός προκαθορισμένου στοιχείου.
Για να λειτουργήσει σωστά ο μηχανισμός που δημιουργήθηκε, πρέπει να συσχετίσετε ένα προκαθορισμένο στοιχείο στη λειτουργία χρήστη με ένα κανονικό στοιχείο λεξικού επιλέγοντας το κατάλληλο στοιχείο στο χαρακτηριστικό "Value". Ας προχωρήσουμε στο θέμα του αντίκτυπου της απόδοσης.

Επίδραση απόδοσης

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

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

Στην έκδοση εργασίας πελάτη-διακομιστή, τα αποτελέσματα των δοκιμών δείχνουν μια εντελώς διαφορετική εικόνα. Η ταχύτητα απόκτησης σύνδεσης με το επιθυμητό στοιχείο δεν μειώθηκε σημαντικά (μία από τις δοκιμές έδειξε 0,002 δευτερόλεπτα για αναζήτηση με όνομα και 0,0008 δευτερόλεπτα κατά την εργασία μέσω ενός προκαθορισμένου στοιχείου), αλλά η αξιοπιστία του προγράμματος έχει αυξηθεί σημαντικά!

συμπεράσματα

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

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

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

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

Λήψεις:

  1. Εκφόρτωση μιας δοκιμαστικής βάσης δεδομένων με παραδείγματα από το άρθρο.

Όλοι γνωρίζουν τη διαφορά μεταξύ των προκαθορισμένων στοιχείων και των κανονικών στοιχείων: "Τα προκαθορισμένα στοιχεία δημιουργούνται σε λειτουργία Configurator και δεν μπορούν να διαγραφούν στη λειτουργία 1C:Enterprise." Στη λειτουργία χρήστη, μπορείτε να διακρίνετε ένα προκαθορισμένο στοιχείο από αυτά που έχουν προσθέσει οι χρήστες μέσω ενός ειδικού εικονιδίου (δείτε το παρακάτω στιγμιότυπο οθόνης).

Βασικά, τα προκαθορισμένα στοιχεία δημιουργούνται από προγραμματιστές για να συνδέσουν αλγόριθμους πάνω τους σε διάφορα αντικείμενα διαμόρφωσης. Για παράδειγμα, στη διαμόρφωση "Manufacturing Enterprise Management" στο βιβλίο αναφοράς "Quality", οι προγραμματιστές έχουν προσθέσει ένα προκαθορισμένο στοιχείο "New".

Αυτό το στοιχείο χρησιμοποιείται σε πολλές μονάδες διαμόρφωσης. Έτσι στο έγγραφο «Παραλαβή αγαθών και υπηρεσιών» κατά την ανάρτηση σε όλα τα μητρώα όπου υπάρχει διάσταση «Ποιότητα», αντικαθίσταται η τιμή ενός προκαθορισμένου στοιχείου. Ακολουθεί μια λίστα με τη συμπλήρωση του πίνακα αναρτήσεων σύμφωνα με το μητρώο "GoodsOrganizations":

// ΠΡΟΪΟΝΤΑ ΚΑΤΑ ΜΗΤΡΩΟ ΠροϊόνταΟργανισμοί. MoveSet = Μετακινείται. GoodsΟργανισμοί; Αν ReceiptType = Απαριθμήσεις. Είδη παραλαβών εμπορευμάτων. Στην Αποθήκη Τότε // Λάβετε έναν πίνακα τιμών που ταιριάζει με τη δομή του συνόλου εγγραφών καταχωρητή. MoveTable =MoveSet. Unload() ; // Συμπληρώστε τον πίνακα κίνησης.Γενικού σκοπού. LoadToValueTable(TableByProducts,TableMovements) ; // Πεδία που λείπουν.Πίνακας Κινήσεων. FillValues(Οργανισμός, "Οργανισμός") ; Πίνακας Κινήσεων. FillValues(Undefined, "Commissioner") ; Πίνακας Κινήσεων. FillValues(Αναφορές. Ποιότητα. Νέο , " Ποιότητα " ) ; // Συμπληρώστε την ποιότητα από ένα προκαθορισμένο στοιχείο

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

Διαφορές

Στη διαμόρφωση δοκιμής, δημιουργήθηκε ο κατάλογος "Goods". Σε αυτό δημιουργείται η ομάδα "Στοιχεία δοκιμής". Θα μπορούσατε να δείτε τα περιεχόμενα της ομάδας στο στιγμιότυπο οθόνης στην αρχή του άρθρου. Για το βιβλίο αναφοράς "Προϊόντα" στη βάση δεδομένων SQL υπάρχει ένας αντίστοιχος πίνακας "_Reference37" με την εξής δομή:

Αλλά πώς να προσδιορίσετε την αντιστοιχία μεταξύ των λεπτομερειών του δέντρου διαμόρφωσης και των πεδίων στον πίνακα SQL;

Ας χρησιμοποιήσουμε την τυπική μέθοδο του καθολικού περιβάλλοντος "GetDatabaseStorageStructure()", η οποία θα επιστρέψει έναν πίνακα τιμών με μια περιγραφή της δομής του πίνακα.

Στον πίνακα τιμών "Πεδία", βλέπουμε την αντιστοιχία μεταξύ των πεδίων του πίνακα SQL και των λεπτομερειών του αντικειμένου στο δέντρο μεταδεδομένων. Στο παράδειγμά μας, εξετάζουμε τη δομή του καταλόγου "Προϊόντα". Όλα τα λεξικά έχουν ένα τυπικό χαρακτηριστικό "Προκαθορισμένο" τύπου boole, το οποίο έχει οριστεί σε TRUE για προκαθορισμένα στοιχεία:

Σύμφωνα με τον πίνακα με τη δομή αποθήκευσης καταλόγου στη βάση δεδομένων, μπορούμε σίγουρα να πούμε ότι το πεδίο "Προκαθορισμένο" αντιστοιχεί στο πεδίο "IsMetadata". Αν δούμε τα περιεχόμενα του πίνακα "_Reference37" στη βάση δεδομένων SQL, θα δούμε τα εξής:

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

Τα προκαθορισμένα στοιχεία μπορούν να βρουν έναν πολύ ενδιαφέρον σκοπό. Με τη βοήθειά τους, μπορείτε να απαγορεύσετε τη διαγραφή / επισήμανση για διαγραφή μιας ομάδας στοιχείων στον κατάλογο και άλλων αντικειμένων όπου μπορούν να προστεθούν. Αν προσπαθήσουμε να διαγράψουμε ή να επισημάνουμε για διαγραφή την ομάδα «Είδη δοκιμής». λαμβάνουμε τα ακόλουθα σφάλματα:

Έτσι, τα προκαθορισμένα στοιχεία καθιστούν την ομάδα στην οποία τοποθετούνται επίσης «προκαθορισμένη».

Ολοκλήρωση

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

Ισχύει για την έκδοση πλατφόρμας 1C:Enterprise 8.3.3 και νεότερη χωρίς λειτουργία συμβατότητας με την έκδοση 8.2

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

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

Για αυτό

  • στην ιδιότητα του βιβλίου αναφοράς, του λογιστικού σχεδίου, του σχεδίου τύπων χαρακτηριστικών ή του σχεδίου τύπων υπολογισμού, πρέπει να οριστεί η τιμή Αυτο(προεπιλογή) και δεν θα πρέπει να επιτρέπει κλήσεις μέσω προγραμματισμού στη μέθοδο SetUpdatePredefinedDataαυτά τα αντικείμενα για να αλλάξετε αυτή τη λειτουργία.
  • αποτρέψτε τους χρήστες από τη διαγραφή προκαθορισμένων στοιχείων απενεργοποιώντας τα ακόλουθα δικαιώματα σε όλους τους ρόλους (απενεργοποιημένα από προεπιλογή):
    • InteractiveDeleting Predefined Data
    • InteractiveDeletionMarkPredefinedData
    • InteractiveUnflaggingDeletingPredefinedData
    • InteractiveDeletingLabeledPredefinedData

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

Εν:

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

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

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

Αν Σχέδια Ανταλλαγής. MainNode() = Undefined then // συμπληρώστε προκαθορισμένα στοιχεία// ... Τέλος εαν ;

Κατά τη χρήση του υποσυστήματος "Ανταλλαγή δεδομένων" στη διαμόρφωση της Βιβλιοθήκης Τυποποιημένων Υποσυστημάτων (BSP) έκδοσης 2.1.4 και νεότερης έκδοσης, οι απαιτήσεις (α) και (β) καταργούνται.

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

Βιβλία αναφοράς. Όνομα καταλόγου> . SetUpdatePredefinedData(UpdatePredefinedData. UpdateAutomatically) ;

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

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

Για αυτό

  • στην ιδιοκτησία Ενημέρωση Προκαθορισμένων ΔεδομένωνΤο βιβλίο αναφοράς, το λογιστικό σχέδιο, το γράφημα χαρακτηριστικών τύπων ή το γράφημα τύπων υπολογισμού πρέπει να οριστούν σε "Να μην ενημερώνεται αυτόματα"
  • παρέχετε κώδικα για τη δημιουργία (και την ακύρωση) ενός προκαθορισμένου στοιχείου ανάλογα με την επιχειρηματική λογική, για παράδειγμα:
Αν GetFunctionOption( "Χρήση παρακολούθησης χρόνου εργαζομένων σε ώρες") Στη συνέχεια AccrualObject = Σχέδια τύπων υπολογισμού. δεδουλευμένα. CreateCalculationView() ; AccrualObject. PredefinedDataName = "Ωριαίο μισθό" ; // ... AccrualObject. Write() ; Τέλος εαν ;
  • λαμβάνουν υπόψη την απουσία προκαθορισμένων στοιχείων στο IS στον κώδικα εφαρμογής. Διαφορετικά, κατά την πρόσβαση σε ένα ανύπαρκτο προκαθορισμένο στοιχείο από τον κώδικα ή το κείμενο αιτήματος, θα δημιουργηθεί μια εξαίρεση:
. . . = PlanTypes of Calculation. δεδουλευμένα. Μισθός με την ώρα? . . . = ΠροκαθορισμένηΤιμή( "Σχέδιο τύπων υπολογισμού. Δεδουλευμένα. Μισθός ανά ώρα") ;

Όταν χρησιμοποιείτε τη Βιβλιοθήκη Τυποποιημένων Υποσυστημάτων (SSL) έκδοση 2.1.4 και νεότερη στη διαμόρφωση, συνιστάται η χρήση της συνάρτησης Προκαθορισμένο Στοιχείοκοινή ενότητα General PurposeClientServer, που επιστρέφει Απροσδιόριστοςγια προκαθορισμένα στοιχεία που δεν υπάρχουν στο IB.

Εκτύπωση (Ctrl+P)

Εργασία με προκαθορισμένες τιμές χρησιμοποιώντας τη Διαχείριση αντικειμένων

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

PredefinedValueType.MetadataObjectName.Value


PredefinedValueType– για να λάβετε προκαθορισμένες τιμές, μπορούν να καθοριστούν οι ακόλουθοι τύποι δεδομένων (γραμμένοι
πληθυντικός):
● Εγχειρίδια,
● Σχέδια τύπων χαρακτηριστικών,
● Λογιστικά σχέδια,
● Σχέδια τύπων υπολογισμού,
● Απαριθμήσεις.
Όνομα αντικειμένου μεταδεδομένων

● Τιμή - μπορεί να είναι ένα από τα ακόλουθα:
● για τις απαριθμήσεις, καθορίζεται το όνομα της τιμής απαρίθμησης.

● RoutePoints.PointName είναι το σημείο διαδρομής της επιχειρηματικής διαδικασίας.
Σε περίπτωση που απαιτείται να ληφθεί ένα σημείο διαδρομής επιχειρηματικής διαδικασίας, η συμβολοσειρά που περιγράφει τη ληφθείσα τιμή θα μοιάζει με αυτό:

BusinessProcesses.MetadataObjectName.RoutePoint.RoutePointName
Παράδειγμα:


Είδος = Απαριθμήσεις.Τύποι αγαθών.Εμπορεύματα;
// Λήψη των προκαθορισμένων δεδομένων καταλόγου.
Στοιχείο = Directories.Currency.Ruble;
// Σημείο διαδρομής επιχειρηματικής διαδικασίας
Σημείο = Επιχειρηματική Διαδικασία Έγκριση Σημεία διαδρομής Έγκριση.

Εργασία με προκαθορισμένες τιμές Χρησιμοποιώντας τη συνάρτηση ΠροκαθορισμένηΤιμή()

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

Ας ρίξουμε μια πιο προσεκτική ματιά στα συστατικά αυτής της γραμμής:
PredefinedValueType– για να λάβετε προκαθορισμένες τιμές, μπορούν να καθοριστούν οι ακόλουθοι τύποι δεδομένων (γραμμένοι
ενικός):
● Εγχειρίδιο,
PlanSpeciesΧαρακτηριστικά,
● Λογιστικό Σχέδιο,
PlanTypesCalculation,
● Καταχώρηση,
● Business Process.
● Και ObjectNameMetadata– καθορίστε το όνομα του αντικειμένου μεταδεδομένων όπως καθορίζεται στο πρόγραμμα διαμόρφωσης.
● Τιμή - μπορεί να είναι ένα από τα παρακάτω

● για τις απαριθμήσεις, καθορίζεται το όνομα της τιμής απαρίθμησης.
● για να λάβετε μια προκαθορισμένη τιμή, καθορίστε το όνομά της όπως καθορίζεται στον διαμορφωτή.
● RoutePoint.PointName – σημείο διαδρομής επιχειρηματικής διαδικασίας.
● EmptyLink - για να λάβετε έναν κενό σύνδεσμο.
Εάν πρέπει να λάβετε την τιμή της απαρίθμησης του συστήματος, η παράμετρος της μεθόδου θα μοιάζει με αυτό:
SystemEnumName.SystemEnum Τιμή.
Για παράδειγμα:

ChartType = PredefinedValue("ChartType.ConcaveSurface“);
Εάν θέλετε να λάβετε ένα σημείο διαδρομής επιχειρηματικής διαδικασίας, η συμβολοσειρά που περιγράφει την τιμή που λαμβάνετε θα μοιάζει με αυτό:
Παράδειγμα:

// Λάβετε την τιμή του enum.
Προβολή = ΠροκαθορισμένηΤιμή("Enumeration.Types of Goods.Goods");
// Λάβετε την τιμή μιας κενού αναφοράς.
Κενός σύνδεσμος =
ΠροκαθορισμένηΤιμή("Document.Invoice.EmptyReference");
// Λήψη των προκαθορισμένων δεδομένων καταλόγου.
Στοιχείο = ΠροκαθορισμένηΤιμή("Εγχειρίδιο. Νόμισμα. Ρούβλι");
// Σημείο Επιχειρηματικής Διαδικασίας
Τελεία = ΠροκαθορισμένηΤιμή("BusinessProcess.Agreement.Routepoint.Approval");



Φόρτωση...
Μπλουζα