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

Γεια!
Σήμερα θέλω να περιγράψω ένα θέμα που δεν μπορείς να καταλάβεις χωρίς εργαλεία κατάδυσης :);)

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

Για παράδειγμα, συνιστώ ανεπιφύλακτα την "Ανάπτυξη σύνθετων αναφορών στο" 1C: Enterprise 8.2 ". Σύστημα σύνθεσης δεδομένων ", (πιο συγκεκριμένα, δείτε σελίδες 224, 267 και 473)

Υπάρχουν 2 τύποι πηγών δεδομένων στο ACS: Ερώτημα, αντικείμενο και ένωση (αυτό το πράγμα δεν υπολογίζεται, δεν είναι πηγή δεδομένων, αλλά χειριστής υπαρχόντων δεδομένων). Δείτε την εικόνα 1:


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

Αρχικά, θα περιγράψω τι θέλουμε να πάρουμε στην έξοδο:

Αναφορά, ο χρήστης έκανε κλικ στο κουμπί " Να διαμορφώσουμε"Και εμφανίστηκε μια λίστα με την ονοματολογία (βλ. Εικ. 2):

Ναι, έκανα μια ανακρίβεια, δηλαδή: δεν υπάρχει κουμπί στην εικόνα " Να διαμορφώσουμε", Αλλά υπάρχει ένα κουμπί" νέα δράση"(Θα εξηγήσω λίγο αργότερα γιατί συνέβη αυτό;)

Ναι ναι! Ένα άλλο σημείο: ολόκληρη η λίστα προέρχεται από το σύνολο δεδομένων "Αντικείμενο":

Λύση:

  1. Δημιουργούμε μια εξωτερική αναφορά.
  2. Προσθέστε μια διάταξη του ACS, ας το ονομάσουμε "MainData Layout Scheme".
  3. Προσθέστε το σύνολο δεδομένων "Αντικείμενο" σε αυτό, εκχωρήστε το όνομα "NomenclatureList" (θα πρέπει να είναι το ίδιο όπως στο Σχ. 3).
  4. Δεν πειραματιζόμαστε πολύ στις ρυθμίσεις αναφοράς, ας είναι απλό (βλέπε σχήμα 4)

Εντάξει, η μισή δουλειά έχει ολοκληρωθεί;)

Τώρα ας δημιουργήσουμε την κύρια φόρμα αναφοράς (ναι, μια ακόμη στιγμή! Η διαμόρφωσή μου λειτουργεί στην κανονική διεπαφή, αλλά νομίζω ότι διαχειριζόμενες φόρμεςθα βρείτε μια λύση;) Άρα η φόρμα είναι:

Εδώ έρχεται το πρόβλημα! Αν κάνουμε κλικ στο κουμπί "δημιουργία" (Εικ. 5.), τότε θα δούμε ένα σφάλμα!


Αφιέρωσα αυτό το άρθρο στη λύση αυτού του προβλήματος!

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

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


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

  1. Δημιουργία δεδομένων εισόδου για ACS.
  2. Αρχικοποιούμε το ACS.
  3. Εμφανίζουμε το αποτέλεσμα ΣΤΗ ΜΟΡΦΗ (δώστε προσοχή και σε αυτό!).

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

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

Το κύριο κομμάτι του κώδικα φαίνεται παρακάτω:

Αίτημα = Νέο αίτημα. Request.Text = "SELECT | Nomenclature.Name as Nomenclature | FROM | Reference.Nomenclature AS Nomenclature"; NomenclatureList = Query.Run (). Εκφόρτωση (); Σύνολα δεδομένων = Νέα δομή ("NomenclatureList", NomenclatureList); // ACS = GetLayout ("MainDataCompositionSchema"); ACS = Σχέδιο DataComposition; LayoutComp = νέο LayoutComposerDataComposition; layoutComp = LayoutComp.Run (SKD, SKD.Default Settings); DataComposition Processor = νέος DataComposition Processor; ProcessorCompData.Initialize (layoutComp, σύνολα δεδομένων) output = newDataCompositionOutputProcessorIn TabularDocument; output.SetDocument (FormElements.Result); output.Display (ProcessorCompData, true);

Ναί! Να άλλη μια ωραία στιγμή !!!

V αυτό το παράδειγμα, όπως μπορείτε να δείτε (βλέπε σχήμα 2), η έξοδος πραγματοποιείται με τη μορφή και όχι στον πίνακα. έγγραφο! Και αυτό είναι πολύ καλό, επειδή μπορούμε να δουλέψουμε με τη φόρμα (να παρακολουθούμε προγραμματικά τα γεγονότα του στοιχείου φόρμας, να κάνουμε κάθε είδους κόλπα drag and drop και ούτω καθεξής;)

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

Δείτε το σύστημα βοήθειας " Πεδίο εγγράφων υπολογιστικού φύλλου ", Και θα δώσω μόνο ένα απόσπασμα από την ενσωματωμένη τεκμηρίωση του συστήματος 1c Enterprise 8.2:

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

Εντάξει, όπως λένε, επιτυχία στη μάχη;)

Στο τελευταίο μου άρθρο έγραψα ήδη ότι το 1C είναι μια παράδοξη πλατφόρμα. Το σύστημα διάταξης δεδομένων είναι ένα από αυτά τα παράδοξα. Το ACS προορίζεται για την κατασκευή σύνθετων αναφορών και περιλαμβάνει την αντικατάσταση του "χειροκίνητου" προγραμματισμού των αναφορών με σχεδιασμό σε μια πολυλειτουργική εργαλειοθήκη. Δυνατότητα χρήση ACSεμφανίστηκε στην όγδοη έκδοση, αλλά χρειάστηκε πολύς καιρόςέτσι ώστε η έκδοση 8.2 να εμφανίζεται έτσι ώστε το 1C να μπορεί να το χρησιμοποιήσει στα βασικά προϊόντα του. Από τη μία πλευρά, το ACS είναι μια πολυλειτουργική εργαλειοθήκη, χρησιμοποιώντας την οποία μπορείτε να δημιουργήσετε πολύ περίπλοκες αναφορές χωρίς μία γραμμή κώδικα. Ωστόσο, το ACS έχει ένα αρκετά υψηλό όριο εισόδου, είναι πολύ δύσκολο να μελετηθεί και να αρχίσει να χρησιμοποιείται πλήρως "σε άλμα", επειδή η διεπαφή δεν είναι εντελώς διαισθητική, αλλά η πιο πλήρεις οδηγούςοι χρήσεις είναι διαθέσιμες μόνο με τη μορφή πληρωμένης βιβλιογραφίας.

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

Αίτημα = Νέο αίτημα (
"ΕΠΙΛΕΓΩ
| Πίνακας. Ονοματολογία,
| Πίνακας. Αποθήκη
| ΑΠΟ
| & Πίνακας TK AS ");
Request.SetParameter ("TK", TK);

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

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

Ας αναλύσουμε λεπτομερώς την εργασία σε ένα παράδειγμα. Υπάρχει μια τυπική αναφορά Υπολογισμός δηλώσεων για την οργάνωση της διαμόρφωσης του ZiK 8. Είναι απαραίτητο οι τύποι υπολογισμών στην αναφορά να ομαδοποιηθούν σε ορισμένες ομάδες. Αντιστοιχίες Τύπος Διακανονισμού-Ομάδα αποθηκεύονται σε έναν εξωτερικό πίνακα τιμών. Για να το φορτώσετε στο κύριο σχήμα σύνθεσης δεδομένων, δημιουργήστε ένα "αντικείμενο δεδομένων" με το όνομα "Ομάδες" (Εικόνα 2). Πραγματοποιούμε σύνδεση με το "σύνολο δεδομένων ερωτήματος" - "Δεδουλευμένα" με βάση τον τύπο του υπολογισμού (Εικόνα 3). Στο "σύνολο δεδομένων ερωτήματος" - "Δεδουλευμένες" υπάρχουν πληροφορίες για ομάδες, διαγράφουμε όλες τις εμφανίσεις. Στη συνέχεια, στην καρτέλα "Ρυθμίσεις", μπορούμε να χρησιμοποιήσουμε το πεδίο "Ομάδα", η τιμή του οποίου φορτώνεται από εξωτερική πηγή δεδομένων (Εικόνα 4). Στη λειτουργία δημιουργίας της αναφοράς, συμπληρώνουμε τη φόρτωση εξωτερικών δεδομένων.

GenerateReport Function (Αποτέλεσμα = Απροσδιόριστο, Αποκωδικοποίηση Δεδομένων = Απροσδιόριστο, ΈξοδοςToReportForm = True) Εξαγωγή

// λήψη ή διαμόρφωση του απαιτούμενου πίνακα τιμών "Ομάδα" και εγγραφή του στην ομώνυμη μεταβλητή

ExternalData = Νέα δομή (); // δημιουργία και συμπλήρωση της εξωτερικής δομής δεδομένων
ExternalData.Insert (Ομάδες).

UserPanelValue = SampleReport.GetUserPanelSettingsObjectObject (ThisObject);
DefaultCustomization = SettingsComposer.GetSettings ();
Τυπικές εκθέσεις.GetAppliedSetting (ThisObject);
Τυπικές αναφορές. Δημιουργήστε μια τυπική αναφορά (ThisObject, Result, Decoding Data, Output To Report, ExternalData);
Ρυθμίσεις Linker.LoadSettings (Προεπιλεγμένη ρύθμιση).
Αποτέλεσμα επιστροφής χρημάτων

EndFunction

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

ExternalDatasets = Νέα δομή.
ExternalDatasets.Insert ("Groups", Groups); // Ομάδες - ο επιθυμητός πίνακας τιμών
DataCompositionSchema = GetLayout ("MainDataCompositionSchema"); // η διάταξή μας με σχήμα ρύθμισης δεδομένων
Ρυθμίσεις = DataComposition Scheme. Προεπιλεγμένες ρυθμίσεις.
Layout Composer = New DataComposition Layout Composer;
LayoutComposer = LayoutComposer.Run (DataCompositionSchema, Ρυθμίσεις);
DataComposition Processor = Νέος επεξεργαστής DataComposition;
DataCompositionProcessor.Initialize (LayoutDataSets);
TabDoc = Νέο TabularDocument;
OutputProcessor = Νέο OutputProcessorDataCompositionResultInTableSheetDocument;
Επεξεργαστής εξόδου. SetDocument (TabDok);
OutputProcessor.Output (DataComposition Processor);

Ανάγνωση 9660 μια φορά

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

Ανοίξτε τη μονάδα αντικειμένου και δημιουργήστε μια προκαθορισμένη διαδικασία OnCompositionResult (ResultDocument, DecryptionData, StandardProcessing)

Μέσα σε αυτήν τη διαδικασία, θα συλλέξουμε δεδομένα και θα δημιουργήσουμε μια αναφορά.
Απενεργοποιήστε την τυπική επεξεργασία στη διαδικασία OnCompositionResult. StandardProcessing = Λάθος.
Στη συνέχεια, σχηματίζουμε έναν πίνακα αξιών με αυθαίρετο τρόπο. Τα ονόματα των στηλών του πίνακα τιμών πρέπει να ταιριάζουν με τα μελλοντικά πεδία του συνόλου δεδομένων στο ACS:


Ας προσθέσουμε τρεις γραμμές δεδομένων ως παράδειγμα. Στη συνέχεια, βήμα προς βήμα, δημιουργούμε την έξοδο της αναφοράς.

  • Από το διάγραμμα, λαμβάνουμε τις προεπιλεγμένες ρυθμίσεις.

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

  • Διαμορφώνουμε τη διάταξη χρησιμοποιώντας το συνθέτη διάταξης.

  • Μεταφέρουμε το σχήμα, τις ρυθμίσεις και τα δεδομένα αποκρυπτογράφησης στη διάταξη διάταξης.

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

  • Καθαρίζουμε το πεδίο του εγγράφου υπολογιστικού φύλλου.

  • Εξάγουμε το αποτέλεσμα σε ένα έγγραφο υπολογιστικού φύλλου.
Το αποτέλεσμα είναι ο ακόλουθος κώδικας:
DataCompositionSchema = GetLayout ( "BasicDataCompositionSchema"); // Ρυθμίσεις = DataComposition Scheme.Default Settings; // - Εάν κάνετε όπως φαίνεται παραπάνω (συνιστάται σε ορισμένους πόρους), τότε όταν αλλάζετε τις ρυθμίσεις σε λειτουργία πελάτη // δεν θα δείτε αυτές τις αλλαγές, επειδή οι ρυθμίσεις θα είναι πάντα από προεπιλογή. Πώς να το κάνετε σωστά - η παρακάτω επιλογήΡυθμίσεις = Ρυθμίσεις Linker. GetSettings (); DecodeData = NewDataCompositionDecryptionData; Layout Composer = New DataComposition Layout Composer; LayoutComposition = LayoutComposer. Εκτέλεση (DataComposition Scheme, Settings, DecodingData); ExternalDataset = Νέα δομή ( "TableValuesTable", TZVyvod); DataComposition Processor = Νέος επεξεργαστής DataComposition; Επεξεργαστής DataComposition. Αρχικοποίηση (Layout, ExternalDataSet, Decryption Data); DocumentResult. Σαφή (); OutputProcessor = Νέο OutputProcessorDataCompositionResultInTableSheetDocument; Επεξεργαστής εξόδου. SetDocument (DocumentResult); Επεξεργαστής εξόδου. Έξοδος (DataComposition Processor); Προσθέστε τη διάταξη του διαγράμματος διάταξης. Μπορούμε να αφήσουμε το όνομα ως προεπιλογή.

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

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

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

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


Αυτό είναι όλο. Αρκετά απλό, έτσι δεν είναι;

Μπορείτε να κατεβάσετε την αναφορά που προκύπτει για ένα παράδειγμα

41
Πρόσφατα έκανα μια αναφορά με απροσδιόριστο αριθμό στηλών. Iμουν απρόθυμος να μπλέξω με τον κώδικα, αποφάσισα να το κάνω στο ACS. Δεν υπήρχε πρόβλημα με αυτό, ήταν απαραίτητο να τραβήξετε το αποτέλεσμα σε μια αυθαίρετη διάταξη (ο δικός σας τίτλος + ... 27
Παρόλο που οι μαθητές ACS συναντούν αυτό την πρώτη ή τη δεύτερη ημέρα, θα πρέπει να είναι στην ενότητα Συχνές ερωτήσεις. Ένα απλό παράδειγμα προγραμματικής εξαγωγής μιας αναφοράς σε μια διάταξη χρησιμοποιώντας τις προεπιλεγμένες ρυθμίσεις. // Λήψη του σχήματος από ... 18
Κατά τη δημιουργία αναφορών στο ACS, από προεπιλογή, όλες οι ομαδοποιήσεις επεκτείνονται, αλλά συμβαίνει να είναι απαραίτητο να εμφανίζεται μια αναφορά με συμπτυγμένες ομάδες αμέσως μετά τη δημιουργία! Αυτός ο κώδικας στη μονάδα αναφοράς σάς επιτρέπει να συμπτύξετε ... 10
Σε αυτήν την καρτέλα, μπορείτε να καθορίσετε ποιες συνδέσεις πραγματοποιούνται μεταξύ δύο ή περισσότερων συνόλων δεδομένων, σύμφωνα με ποιες παραμέτρους και συνθήκες..png 1. "Πηγή επικοινωνίας" - υποδεικνύει το πρώτο σύνολο δεδομένων, από ... 9
Ότι κατά την ανάπτυξη αναφορών, απαιτείται για έναν χρήστη με περιορισμένα δικαιώματα, η αναφορά να δημιουργείται εντελώς χωρίς έλεγχο των δικαιωμάτων! Ειδικά εάν το RLS έχει ρυθμιστεί. Υπάρχουν διάφοροι τρόποι για να το κάνετε αυτό: 1. Εγκαταστήστε ...

Κατά το άνοιγμα νέων υποκαταστημάτων της εταιρείας, για να υπολογίσετε το φορτίο στον διακομιστή 1C: Enterprise και άλλες εργασίες, ίσως χρειαστεί να δείτε τη δυναμική της εργασίας των χρηστών στο infobase με τη μορφή διαγράμματος.

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

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

Διαβάζουμε το ημερολόγιο εγγραφής

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

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

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

Διαδικασία OnCompositionResult (ResultDocument, DecodeData, StandardProcessing) StandardProcessing = False; // απενεργοποιήστε την τυπική έξοδο της αναφοράς - θα βγούμε μέσω προγραμματισμού // Λάβετε τις ρυθμίσεις αναφοράς, συμπεριλαμβανομένων περίοδοςΡυθμίσεις = Ρυθμίσεις Linker. GetSettings (); // Λάβετε τις ρυθμίσεις αναφοράς ParameterPeriod = Συνθέτης ρυθμίσεων. GetSettings (). Παράμετροι δεδομένων. Στοιχεία. Εύρεση ("Περίοδος"). Εννοια; ZhurTab = Πίνακας νέων τιμών. Επιλογή περιοδικού = Νέο πλαίσιο; // Δημιουργήστε μια δομή για την επιλογή του ημερολογίου // Συμπληρώστε την επιλογή ανά περίοδοΕπιλογή της Εφημερίδας. Εισαγωγή ("StartDate", ParameterPeriod. StartDate); Επιλογή της Εφημερίδας. Εισαγωγή ("EndDate", ParameterPeriod. EndDate); // Ορίστε την επιλογή για εκδηλώσεις Array of Events = New Array; Σειρά εκδηλώσεων. Προσθήκη ("_ $ Data $ _ ... Διαγράφω... Νέος"); Array of Events. Add (" _ $ Data $ _ ... Θέση"); Array of Events. Add (" _ $ Data $ _ ... TotalsPeriodUpdate"); Array of Events. Add (" _ $ Data $ _ ... Χωρίς δημοσίευση"); Array of Events. Add (" _ $ Data $ _ ... Εκσυγχρονίζω SelectLog. Insert ("Event", Array of Events); // Ξεφορτώστε το ημερολόγιο UnloadRegisterLog (ZhurTab, Array of Events); // Δημιουργήστε και συμπληρώστε τα δεδομένα για έξοδο στην αναφορά ZhurTab. Στήλες. Προσθήκη ("Timeρα"); ZhurTab. Στήλες. Προσθήκη(" Αριθμός εκδηλώσεων"); Για κάθε σελίδα από κύκλους LogTabs Κύκλος σελίδας =ρα = (ρα (Ημερομηνία σελίδας); Αριθμός σελίδων συμβάντων = 1; Τέλος κύκλου." // Ομαδοποίηση του αποτελέσματος ZhurTab. Κατάρρευση (" Όνομα χρήστη, Timeρα" , " Αριθμός εκδηλώσεων" ) ; // ..............

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

Μπορείτε να διαβάσετε περισσότερα σχετικά με τη χρήση της μεθόδου "UnloadLogRegister" στο βοηθητικό σύνταξης.

Μεταφέρουμε τον πίνακα τιμών στο ACS

Για να μπορέσει το ACS να λειτουργήσει με τον πίνακα τιμών που προκύπτει, πρέπει να κάνετε τα εξής:

1) Δημιουργήστε ένα σύνολο δεδομένων στο σχήμα διάταξης και ορίστε τα πεδία του.
2) Στον κωδικό προγράμματος της ενότητας "AtCompositionResult", γράψτε τη μεταφορά του πίνακα τιμών στο ACS.

// Ομαδοποίηση του αποτελέσματος ZhurTab. Κατάρρευση (" Όνομα χρήστη, Timeρα" , " Αριθμός εκδηλώσεων"); DecryptionData = NewDataCompositionDecryptionData; // Δημιουργία δεδομένων αποκρυπτογράφησης Layout Composer = New DataComposition Layout Composer; // Δημιουργήστε ένα συνθέτη διάταξης // Αρχικοποιήστε τη διάταξη χρησιμοποιώντας το σχήμα σύνθεσης δεδομένων // και τις ρυθμίσεις και τα δεδομένα αποκρυπτογράφησης που δημιουργήθηκαν προηγουμένως DataCompositionSchema = GetLayout (" BasicData Layout"); LayoutComposer = LayoutComposer. Εκτέλεση (DataCompositionSchema, Ρυθμίσεις, Αποκωδικοποίηση Δεδομένων); // Δημιουργήστε το αποτέλεσμαΕπεξεργαστής σύνθεσης = Νέος επεξεργαστής σύνθεσης δεδομένων. Διατάξεις επεξεργαστή. Αρχικοποίηση (LayoutComposition, // !!! Μεταφέρουμε τον πίνακα "ZhurTab" στον επεξεργαστή διάταξης !!!Νέα δομή (" LogRegistration", ZhurTab), Δεδομένα αποκρυπτογράφησης); DocumentResult. Clear (); // Εξάγετε το αποτέλεσμα σε ένα έγγραφο υπολογιστικού φύλλου OutputProcessor = Νέο OutputProcessorDataCompositionResultInTableSheetDocument; Επεξεργαστής εξόδου. SetDocument (DocumentResult); Επεξεργαστής εξόδου. Έξοδος (Επεξεργαστής διάταξης). Τέλος Διαδικασίας

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

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

Αποτέλεσμα

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

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

Μπορείτε να κατεβάσετε την αναφορά από το παράδειγμα με τον ακόλουθο σύνδεσμο.