Το ACS δεν είναι μόνο για αναφορές - υλοποίηση καθολικών επιλογών. Χρήση επιλογών στο SCD Πώς να κάνετε επιλογές χωρίς SDS

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

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

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

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

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

Και στην καρτέλα Επιλογή, προσθέστε τον Αντισυμβαλλόμενο στην επιλογή:

Τώρα ας ξεκινήσουμε τη δημιουργία της φόρμας. Ας εμφανίσουμε στη φόρμα της ίδιας της επεξεργασίας την Επιλογή με την οποία θα εργαστεί ο χρήστης. Θα εμφανίσουμε ένα στοιχείο του τύπου Πεδίου πίνακα στη φόρμα και θα του δώσουμε το όνομα Selection με τον τύπο δεδομένων Composer.Settings.Selection:

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

Διάταξη Perem; Procedure ButtonExecutePress(Button) Result.Clear(); LayoutLinker = newDataLayoutLayoutLinker; Layout Layout = Layout Composer.Execute(Layout, Composer.GetSettings(), Type("DataCompositionLayoutGeneratorForValueCollection")); CompositionProcessor = newDataCompositionProcessor; LayoutProcessor.Initialize(LayoutLayout); Επεξεργαστής εξόδου = Νέος επεξεργαστής εξόδου του αποτελέσματος της σύνθεσης δεδομένων σε μια συλλογή τιμών. OutputProcessor.SetObject(Αποτέλεσμα); OutputProcessor.Output(CompositionProcessor); Αν FormElements.Result.Columns.Quantity() = 0 Τότε FormElements.Result.CreateColumns(); τέλος εαν; EndProcedure ProcedureOnOpen() Layout = GetLayout("Layout"); SourceAvailableSettings = Νέο SourceAvailableSettingsDataComposition(Layout); Linker.Initialize(SourceAvailableSettings); Linker.LoadSettings(Layout.DefaultSettings); Τέλος Διαδικασίας

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

Αυτό είναι όλο, ελπίζω αυτό το άρθρο να σας βοηθήσει να βελτιώσετε την ευελιξία των επιλογών στην επεξεργασία σας.

Κονόνοφ Σεργκέι

Σε τι μπορεί να χρησιμοποιηθεί το SKD;

Η καθιερωμένη γνώμη είναι για σκοπούς αναφοράς.

στην πραγματικότητα Οι δυνατότητες της ACS υπερβαίνουν τη δημιουργία καθολικών αναφορών.

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

Για ποιες εργασίες θα είναι χρήσιμο;

Ας δώσουμε παραδείγματα από τυπικές διαμορφώσεις:

  • Επεξεργασία "Μεταφόρτωση δεδομένων στον ιστότοπο"
  • Σχηματισμός τιμοκαταλόγου
  • Μεταφόρτωση δεδομένων στο TSD (τερματικό συλλογής δεδομένων)
  • Τμηματοποίηση προϊόντων, συνεργάτες
  • Διαμόρφωση παραγγελιών (πελατών, προμηθευτών) ανάλογα με τις ανάγκες
  • Σχεδιασμός επισκευής σε 1C:ERP.

Δηλαδή, το εργαλείο είναι χρήσιμο όπου είναι απαραίτητο να παρέχει στον χρήστη ευρεία επιλογή.

Δημιουργία τυχαίας επιλογής σε ελεγχόμενη μορφή χρησιμοποιώντας ACS

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

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

Λήψη δεδομένων από τη βάση δεδομένων με φιλτράρισμα κατά επιλογή ACS

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

Χρησιμοποιείται ένα "τρομακτικό" αντικείμενο - ProcessorOutputResultCompositionDataIntoValueCollection.

Στην πραγματικότητα, δεν είναι όλα τόσο περίπλοκα - σε 8 λεπτά λύνουμε το πρόβλημα.

Αποθήκευση επιλογών SKD στη βάση πληροφοριών

Στο μάθημα θα δούμε αποθήκευση των ρυθμίσεων του προγράμματος δημιουργίας ACSχρησιμοποιώντας το Value Store.

Ας μάθουμε πώς να λύσουμε αυτό το πρόβλημα στη διαμόρφωση "1C: Manufacturing Enterprise Management 1.3".

Απολαύστε την παρακολούθηση! :)

Γενικά, το ACS παρέχει πολλές ευκαιρίες.

Ακολουθούν μερικά «κόλπα» που δεν είχαμε καν χρόνο να περιγράψουμε στη σελίδα του μαθήματος.

Εάν χρειάζεται να συλλέξετε δεδομένα από διαφορετικές πηγές, υπάρχουν τρεις επιλογές.

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

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

Με τη βοήθεια του SKD μπορείτε απλά λάβετε ένα στιγμιότυπο των πιο πρόσφατων για κάθε ημερομηνία στην αναφορά.

Ή, για λόγους σαφήνειας, - λάβετε την τιμή του προϊόντος για κάθε ημερομηνία πώλησης.

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

Χρησιμοποιώντας το ACS, μπορείτε να οργανώσετε ένθετες ομαδοποιήσεις με την προσθήκη περιόδων (έτος/τρίμηνο/μήνας κ.λπ.)

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

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

Πώς να συνδυάσετε διάφορες συνθήκες χρησιμοποιώντας το OR σε μια αναφορά; Αυτή η επιλογή, για παράδειγμα, δεν είναι διαθέσιμη στο εργαλείο δημιουργίας αναφορών, αλλά είναι διαθέσιμη στο ACS

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

Φυσικά, υπάρχουν αποχρώσεις στις οποίες πρέπει να δοθεί προσοχή.

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

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

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

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

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

Αν θέλεις κατακτήστε το ACS επαγγελματικάκαι καθημερινά εφαρμόστε στην εργασία σας, εγγραφείτε στο μάθημα:

Υποστήριξη - 2 μήνες. Πεδίο μαθήματος – 34 διδακτικές ώρες.

Μην καθυστερείτε τις σπουδές σας!

Επέκταση γλώσσας ερωτήματος για σύστημα σύνθεσης δεδομένων

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

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

ΕΠΙΛΕΓΩ

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

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

(ΕΠΙΛΟΓΗ Είδους, Αποθήκη)

Μετά το ψευδώνυμο πεδίου μπορεί να υπάρχει ένας συνδυασμός χαρακτήρων ".*", που υποδεικνύει τη δυνατότητα χρήσης θυγατρικών πεδίων από αυτό το πεδίο.

Για παράδειγμα, η καταχώρηση Nomenclature.* υποδεικνύει τη δυνατότητα χρήσης θυγατρικών πεδίων του πεδίου "Nomenclature" (για παράδειγμα, το πεδίο "Nomenclature.Code"). Το στοιχείο SELECT μπορεί να εμφανιστεί μόνο στο πρώτο ερώτημα σύνδεσης.

ΟΠΟΥ

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

(WHERE Ονοματολογία.*, Αποθήκη)

Ένα απλό παράδειγμα

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

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

SELECT ReferenceNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty, SalesTurnover.Counterparty Agreement, SalesTurnover.QuantityTurnover AS Quantity, SalesTurnover.CostTurnover AS Cost FROM Reference.NomenclatureSNomenclaturesTransport. AS SalesTurnover PO SprNomenclature.Link = SalesTurnover. Ονοματολογία

Ιδού το αποτέλεσμα:

αντισυμβαλλόμενος Συμφωνία Ονοματολογία Ποσότητα Αθροισμα
μηδενικό μηδενικό _Τεστ1 μηδενικό μηδενικό
LLC "Korns and Hooves" Συμφωνία 1 Παντούφλες 10 1200
"Gazprom" Ωραίο συμβόλαιο Μπότες 5 13000
μηδενικό μηδενικό Γαλότσες μηδενικό μηδενικό
μηδενικό μηδενικό Πλάκες μηδενικό μηδενικό

Σε αυτό το παράδειγμα, δεν υπήρχαν πωλήσεις των ειδών: "Παπούτσια" και "Παντόφλες"

Και όλα θα ήταν εντάξει, αν ομαδοποιήσουμε το δείγμα ανά αντισυμβαλλόμενο, τότε όλα τα απούλητα αντικείμενα θα πέσουν σε μια ξεχωριστή ομάδα, όπου Counterparty = Null, αλλά ο πελάτης θέλει να έχει μια τυχαία επιλογή στην αναφορά από το πεδίο αντισυμβαλλόμενου (φυσικά, αυτό σημαίνει τον αντισυμβαλλόμενο από το μητρώο πωλήσεων). Τι πρέπει να κάνω? Εξάλλου, στην πραγματικότητα, χρειάζεται μόνο να φιλτράρουμε τον πίνακα Εκπτώσεις. Εάν χρησιμοποιήσουμε αυτόματη συμπλήρωση στον κατασκευαστή ACS, τότε τα διαθέσιμα πεδία επιλογής θα περιλαμβάνουν το πεδίο αντισυμβαλλόμενος, όλα φαίνονται να είναι καλά, αλλά κατά την εκτέλεση μιας αναφοράς με επιλογή από αντισυμβαλλόμενο, θα χάσουμε όλες τις εγγραφές από τη σύνδεση με το στοιχείο. Για παράδειγμα, ας ορίσουμε την επιλογή: αντισυμβαλλόμενος = LLC "Korns and Hooves". Το αποτέλεσμα θα μοιάζει με αυτό:

Καθόλου αυτό που χρειαζόμαστε, σωστά;

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

Υπάρχει λύση: για αυτό μέσα εργαλείο δημιουργίας ερωτημάτωνστην καρτέλα Σύνθεση δεδομένων => Πίνακεςπροσθέστε ένα πεδίο συνθήκης στις συνθήκες εικονικού πίνακα Κύκλος πωλήσεωνκαι άλλαξε το ψευδώνυμό του σε Επιλογή αντισυμβαλλόμενου

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


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

SELECT SprNomenclature.Link AS Nomenclature, SalesTurnover.Counterparty AS Counterparty, SalesTurnover.Counterparty Agreement AS AS Counterparty Agreement, SalesTurnover.QuantityTurnover AS >Quantity, SalesTurnover.CostATIONStLINKCournover. ContractCounterparty aPresentation, PRESENTATIONLINK(SalesTurnover.Counterparty ) AS CounterpartyPresentation, SprNomenclature.Presentation AS NomenclaturePresentation FROM Directory.Nomenclature AS SprNomenclature Αριστερή ΣΥΝΔΕΣΗ Μητρώο συσσωρεύσεων.Πωλήσεις.Κύκλος εργασιών(&P , , , Αντισυμβαλλόμενος = &P3Αριθ.Περιπτώσεις S. κλατούρα

Και αναλόγως το αποτέλεσμα:

αντισυμβαλλόμενος Συμφωνία Ονοματολογία Ποσότητα Αθροισμα
μηδενικό μηδενικό _Τεστ1 μηδενικό μηδενικό
LLC "Korns and Hooves" Συμφωνία 1 Παντούφλες 10 1200
μηδενικό μηδενικό Μπότες μηδενικό μηδενικό
μηδενικό μηδενικό Γαλότσες μηδενικό μηδενικό
μηδενικό μηδενικό Πλάκες μηδενικό μηδενικό

Το Test1 είναι μια ομάδα στον κατάλογο Ονοματολογίας στην οποία βρίσκονται τα πάντα

Στη δημοσίευση επισυνάπτεται το σχήμα XML της αναφοράς που χρησιμοποιείται στη δημοσίευση. Δημιούργησα το κύκλωμα στον ολοκληρωμένο αυτοματισμό, αλλά νομίζω ότι όλα θα λειτουργήσουν καλά και στο UPP και στο UT 10

Συνοψίζοντας

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

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

Λογισμικό που χρησιμοποιείται

  • Πρόγραμμα στιγμιότυπο οθόνηςSnimOK!
  • Επεξεργαστής αρχείων XML