Προγραμματισμένες εργασίες Έκδοση αρχείου 1s 8.2. Καθολική ρυθμιστική εργασία

" Σε αυτό θα εξετάσουμε νέες δυνατότητες που δεν σχετίζονται με τη διεπαφή συστήματος, αλλά επεκτείνουν σημαντικά την παρεχόμενη λειτουργικότητα της πλατφόρμας 1C:Enterprise 8.

Εφαρμογή

Το άρθρο περιγράφει την έκδοση 8.3.4.437 της πλατφόρμας 1C:Enterprise. Όλες οι λειτουργίες που περιγράφονται στο άρθρο έχουν ενημερωθεί στην έκδοση 8.3.11.

Άλλες καινοτομίες στο 1C:Enterprise 8.3

Ας συνεχίσουμε να εξοικειωνόμαστε με τις καινοτομίες της πλατφόρμας 1C:Enterprise 8.3.

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

Σε ΠΟΛΛΟΥΣ τυπικές διαμορφώσειςστην πλατφόρμα 8.2 υπήρχε μια σταθερά που υποδείκνυε τον χρήστη υπό τον οποίο εκτελούνταν οι εργασίες στην έκδοση του αρχείου.

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

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

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

Αν αυτό είναι αρχείο IB Τότε
=
Constants.UserForExecutingRoutineTasksInFileVariant.Get();
Αν chValueVariable("glCurrentUser") =
UserTo ExecuteTaskReglΕπειτα
// με ένα διάστημα δευτερολέπτων καλούμε τη διαδικασία για εργασία με εργασίες ρουτίνας
SupportRegularTaskForFileVersion();
IntervalForPoll=
Constants.IntervalForPollingRoutineTasksInFileVariant.Get();
Αν IntervalForPoll= Απροσδιόριστο
Ή IntervalForPoll= 0 Τότε
IntervalForPoll= 60 ;
Τέλος εαν ;
ConnectWaitHandler("Υποστήριξη για RoutineTaskForFileVersion",
IntervalForPoll);
Τέλος εαν ;
Τέλος εαν ;

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

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

Μια εργασία παρασκηνίου που ξεκίνησε από μια περίοδο λειτουργίας εκτελείται από την ίδια εφαρμογή πελάτη που την ξεκίνησε.

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

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

Οι εργασίες ρουτίνας εκτελούνται από την πρώτη εφαρμογή πελάτη με τη σειρά εκκίνησης, η οποία δεν απαγορεύεται να εκτελεί εργασίες ρουτίνας (για να απαγορεύσει τη συνεδρία, η περίοδος λειτουργίας πρέπει να ξεκινήσει με την παράμετρο γραμμής εντολών /AllowExecuteScheduledJobs -Απενεργοποίηση).

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

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

Οι εργασίες ρουτίνας υποβάλλονται σε επεξεργασία μία φορά κάθε 60 δευτερόλεπτα.

Σημειώστε ότι οι εργασίες ρουτίνας της λύσης εφαρμογής (στην έκδοση αρχείου) άρχισαν να εκτελούνται όχι νωρίτερα από 1 λεπτό μετά την εκκίνηση της εφαρμογής πελάτη. Ξεκινώντας με την έκδοση 8.3.8, αυτός ο χρόνος έχει διπλασιαστεί, και επομένως οι εργασίες ρουτίνας αρχίζουν να εκτελούνται το πολύ 2 λεπτά μετά την εκκίνηση του προγράμματος-πελάτη (στην έκδοση αρχείου).

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

Ακολουθεί ο κώδικας που επεξηγεί τα παραπάνω:

Για μεγέθυνση, κάντε κλικ στην εικόνα.

Υπολογισμός αθροίσματος ελέγχου

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

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

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

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

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

Πλατφόρμα 8.3.4.437 υποστηρίζει τον υπολογισμό των ακόλουθων συναρτήσεων κατακερματισμού: CRC32, MD5, SHA1, SHA256. Αλλά οι λειτουργίες SHA1Και SHA256δεν υποστηρίζονται στην πλατφόρμα για κινητά.

Ας δούμε ένα απλό παράδειγμα. Υποτίθεται ότι στον διακομιστή στον κατάλογο του προγράμματος υπάρχει ένα αρχείο " ragent.exe" Ανάγκη υπολογισμού MD5-άθροισμα για αυτό το αρχείο.

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

&OnClient
Διαδικασία Υπολογισμός (εντολή)
Αποτέλεσμα = CalculateOnServer();
Αναφορά(String(Αποτέλεσμα));
Διαδικασία λήξης
&Στον διακομιστή
Λειτουργία CalculateOnServer()
Hash = Νέο HashingData(HashFunction.MD5);
Hash.AddFile(Κατάλογος Προγράμματα() + "ragent.exe" );
Επιστροφή Hash.HashSum ;
EndFunction

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

Εργασία με προστατευμένες εκδόσεις πρωτοκόλλων SMTP/POP3

Στην πλατφόρμα 8.3 κατέστη δυνατή η χρήση προστατευμένων εκδόσεων πρωτοκόλλων SMTP/POP3(υπάρχουν όροι SMTPS/POP3Sή SSLSMTP/SSLPOP3).

Για αντικείμενο InternetMailProfileνέες ιδιότητες που υλοποιήθηκαν:

  • Χρησιμοποιήστε SSLSMTP;
  • Χρησιμοποιήστε το SSLPOP3;
  • Μόνο SecureAuthenticationSMTP;
  • Μόνο POP3 Secure Authentication.

Ιδιότητες AuthenticationSMTPΚαι Έλεγχος ταυτότητας POP3αντικείμενο InternetMailProfile, καθώς και μεταγραφές Μέθοδος ελέγχου ταυτότητας SMTPAΚαι Μέθοδος ελέγχου ταυτότητας POP3η χρήση δεν συνιστάται - υποστηρίζονται για συμβατότητα.

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

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

Για μεγέθυνση, κάντε κλικ στην εικόνα.

Όταν πατάτε το κουμπί ΣτείλετεΘα εκτελεστεί ο παρακάτω κώδικας:

&OnClient
Διαδικασία Send (Command) Mail = New InternetMail; Προφίλ = Νέο InternetMailProfile;
Profile.SMTPSServerAddress= “smtp.googlemail.com” ;
Προφίλ.UserSMTP= “[email προστατευμένο]” ;
Profile.PasswordSMTP= "Κωδικός πρόσβασης" ;
Προφίλ.UseSSLSMTP= Αλήθεια ;
Profile.SMTPport = 465 ; Απόπειρα
Mail.Connect(Προφίλ);
Εξαίρεση
Αναφορά(ErrorDescription());
ΕΠΙΣΤΡΟΦΗ ;
EndAttempt ; MailMessageText= “” ;
Συνημμένα = Νέα Δομή ;
Text.GetHTML(MailMessageText, Συνημμένα ); Μήνυμα αλληλογραφίας= Καινούργιο InternetMail Message;
MailMessage.Recipients.Add(Σε ποιον );
MailMessage.Subject= Θέμα;
MailMessage.Texts.Add(MailMessageText,
MailMessageTextType.HTML) Mail.Send ( Μήνυμα αλληλογραφίας); Αλληλογραφία. Αποσύνδεση();
Διαδικασία λήξης

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

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

Εκτύπωση διπλής όψης

Στην πλατφόρμα 8.2 Η ίδια η πλατφόρμα δεν διαχειριζόταν την εκτύπωση διπλής όψης.

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

Οι απαριθμήσεις συστήματος εμφανίστηκαν στην ενσωματωμένη γλώσσα:

  • Τύπος εκτύπωσης διπλής όψης(Καμία, FlipUp, FlipLeft);
  • (Αυτόματο, MirrorTop, MirrorLeft, Μη χρήση).

Και για αντικείμενα Πίνακας ΈγγραφοΚαι GraphicSchemeεμφανίστηκαν ιδιότητες Εκτύπωση διπλής όψηςΚαι Εναλλαγή Διατάξεων Σελίδων, με το οποίο μπορείτε να αλλάξετε τη διάταξη των εκτυπωμένων σελίδων.

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

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

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

  • δυνατότητα ελέγχου της διαθεσιμότητας των υπηρεσιών Ιστού από προεπιλογή (χαρακτηριστικό pointEnableCommonστοιχείο ws);
  • δυνατότητα ελέγχου της εκτέλεσης εργασιών παρασκηνίου στην έκδοση αρχείου (χαρακτηριστικό επιτρέπω την εκτέλεση προγραμματισμένων εργασιώνστοιχείο ws).

Εάν πλαίσιο ελέγχου "Δημοσίευση υπηρεσιών Ιστού από προεπιλογή"στον σελιδοδείκτη "Βασικός"είναι εγκατεστημένο και, στη συνέχεια, κατά την ενημέρωση της δημοσίευσης, οι επιλεγμένες υπηρεσίες Web θα δημοσιευτούν αυτόματα.

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

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

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

Διαφορετικά, η χρήση τέτοιων υπηρεσιών Web θα απαγορεύεται.

Ρυθμίσεις "Εργασίες παρασκηνίου σε λειτουργία αρχείου"ταιριάζει χαρακτηριστικό επιτρέπω την εκτέλεση προγραμματισμένων εργασιώνστοιχείο ws στο αρχείο προεπιλογή.vrd.

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

Το χαρακτηριστικό μπορεί να λάβει τις ακόλουθες τιμές:

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

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

Αρίθμηση αντικειμένων βάσης πληροφοριών

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

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

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

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

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

  • Κάθε();
  • Οποιος();
  • StandardDeviationofPopulation();
  • StandardSampleDeviation();
  • VarianceSamples();
  • VarianceofPopulation();
  • CovariancePopulation();
  • SampleCovariance();
  • Συσχέτιση();
  • RegressionSlope();
  • RegressionSegment();
  • RegressionCount();
  • RegressionR2();
  • RegressionAverageX();
  • RegressionAverageY();
  • RegressionAverageSXX();
  • RegressionAverageSYY();
  • RegressionAverageSXY().

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

Για μεγέθυνση, κάντε κλικ στην εικόνα.

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

Επίσης ενδιαφέρον νέο χαρακτηριστικόΤαξινόμησηABC(). Το αποτέλεσμα της συνάρτησης θα είναι ο αριθμός κλάσης, ξεκινώντας από το 1 (το 1 αντιστοιχεί στην κλάση Α, το 2 στην κλάση Β, το 3 στην κατηγορία Γ κ.λπ.).

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

ΕΠΙΛΕΓΩ
Κατανάλωση προϊόντοςΠροϊόντα.Προϊόν,
Κατανάλωση ΠροϊόντοςΠροϊόντα.Ποσότητα
ΑΠΟ
Έγγραφο.Κατανάλωση Αγαθών.ΕμπορεύματαΠΩΣ Κατανάλωση προϊόντοςΠροϊόντα

Ας ορίσουμε ένα νέο υπολογισμένο πεδίο Τάξη:

Για μεγέθυνση, κάντε κλικ στην εικόνα.

Ας ρυθμίσουμε τους πόρους ως εξής:

Για μεγέθυνση, κάντε κλικ στην εικόνα.

Στη λειτουργία χρήστη, η αναφορά μοιάζει με αυτό:

Συμπερασματικά, σημειώνουμε ότι από έκδοση σε έκδοση στην πλατφόρμα 1C 8.3 ο μηχανισμός ACS βελτιώνεται και βελτιώνεται διαρκώς και στο πλαίσιο του άρθρου μας «νέος» δεν είναι δυνατή η πλήρης παρουσίαση αυτών των αλλαγών. Ναι, αυτό φαίνεται περιττό, γιατί, δουλεύει για τρέχουσα έκδοσηπλατφόρμα, μπορείτε πάντα να χρησιμοποιήσετε διάφορα συστήματα βοήθειας για να σας βοηθήσουν να αναλύσετε τη μία ή την άλλη πτυχή της λειτουργίας αυτού του μηχανισμού.

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

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

Εννοια ασύγχρονος προγραμματισμός

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

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

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

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

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

Εργασίες παρασκηνίου στο 1C:Enterprise 8

Στο 1C:Enterprise 8, οι εργασίες παρασκηνίου έχουν σχεδιαστεί για να εκτελούν εργασίες εφαρμογής ασύγχρονα. Μπορούν να δημιουργήσουν θυγατρικές εργασίες παρασκηνίου, για παράδειγμα, για να παραλληλίσουν σύνθετους υπολογισμούς σε διαφορετικούς λειτουργικούς διακομιστές του συμπλέγματος σε έναν τρόπο λειτουργίας πελάτη-διακομιστή.

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

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

Επιλογή πελάτη-διακομιστή

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

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

Επιλογή αρχείου

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

Προηγουμένως, για την αυτόματη εκτέλεση εργασιών, ήταν απαραίτητο να ξεκινήσει μια ξεχωριστή, πρόσθετη περίοδος λειτουργίας 1C:Enterprise, που χρησιμοποιήθηκε ως προγραμματιστής εργασιών. Και σε αυτή τη συνεδρία ήταν απαραίτητο να εκτελείται περιοδικά η ενσωματωμένη μέθοδος γλώσσας ExecuteTaskProcessing().Αυτή η προσέγγιση ήταν αρκετά επαχθής, άβολη και περιόριζε σημαντικά τη χρήση παρασκηνίου και εργασιών ρουτίνας στην έκδοση αρχείου της εργασίας.

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

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

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

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

Ένα παράδειγμα ασύγχρονης εκτέλεσης κώδικα στο 1C:Enterprise 8

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

Ας δείξουμε την απλότητα και την κομψότητα της ασύγχρονης εκτέλεσης κώδικα στο 1C:Enterprise 8!

Βήμα 1.Ας δημιουργήσουμε ένα νέο σύστημα ασφάλειας πληροφοριών για την ανάπτυξη διαμόρφωσης

Βήμα 2.Στη διαμόρφωση θα προσθέσουμε τη γενική ενότητα "Asynchronous Handlers"

Γιατί προσθέσαμε μια κοινόχρηστη ενότητα; Όλα είναι απλά εδώ: για την εκτέλεση ασύγχρονων λειτουργιών στο 1C:Enterprise 8, χρησιμοποιούνται εργασίες παρασκηνίου, οι οποίες έχουν τον δικό τους διαχειριστή - "BackgroundTask Manager". Αυτό το αντικείμενο έχει μια μέθοδο "Εκτέλεση", με τη βοήθεια της οποίας εκκινείται η εργασία παρασκηνίου.

Ας στραφούμε στον βοηθό σύνταξης.

Άρα θα χρειαστούμε μια κοινή ενότητα.

Βήμα 3.Στη γενική ενότητα "Asynkronous Handlers" θα προσθέσουμε τη διαδικασία εξαγωγής OurLongOperation()

Διαδικασία OurLongOperation(Duration) Export // Προσομοίωση μακροπρόθεσμης ενέργειας (Διάρκεια δευτ.). OperationStartDate = CurrentDate(); Ενώ CurrentDate() - Ημερομηνία έναρξης λειτουργίας< Длительность Цикл КонецЦикла; КонецПроцедуры

Βήμα 4.Προσθέστε την επεξεργασία "Asynchronous Programming Concept" στη διαμόρφωση (μπορείτε να δημιουργήσετε εξωτερική επεξεργασία)

Προσθέστε ένα χαρακτηριστικό στη φόρμα:

Διάρκεια (Αριθμός)

και δύο ομάδες

Εκτελέστε LongOperation.

Εκτελέστε μια μακροχρόνια λειτουργία ασύγχρονα.

Βήμα 5.Σύμφωνα με τον βοηθό σύνταξης, συμπληρώστε τη μονάδα φόρμας

&Στη διαδικασία πελάτη Εκτέλεση Long-RunningOperation(Command) ExecuteLong-RunningOperationOnServer(); EndProcedure &OnServer Procedure ExecuteLongOperationOnServer() AsynchronousHandlers.OurLongOperation(Duration); Τέλος διαδικασίας &Στη διαδικασία πελάτη Εκτέλεση μακροχρόνιας λειτουργίας ασύγχρονα (εντολή) Εκτέλεση μακροχρόνιας λειτουργίας ασύγχρονα στον διακομιστή (); Τέλος διαδικασίας &Στον διακομιστή Διαδικασία Εκτέλεση μακροχρόνιας λειτουργίας ασύγχρονα στον διακομιστή() Παράμετροι = Νέος πίνακας; Parameters.Add(Duration); BackgroundTasks.Execute("AsynchronousHandlers.OurLongOperation", Parameters, New UniqueIdentifier, "Example of asynchronous programming concept"); Διαδικασία λήξης

Βήμα 6.Ας ξεκινήσουμε και ας ελέγξουμε!

Αποτέλεσμα:

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

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

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

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

Ένα παράδειγμα ασύγχρονης εκτέλεσης κώδικα στο 1C:Enterprise 8 χρησιμοποιώντας BSP

Ας εξετάσουμε ένα παράδειγμα εφαρμογής της έννοιας του ασύγχρονου προγραμματισμού στο 1C:Enterprise 8 στο BSP χρησιμοποιώντας το παράδειγμα επεξεργασίας "Τρέχουσες Υποθέσεις".

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

Ας αναλύσουμε τον κώδικα προγράμματος της φόρμας.

Το συμβάν φόρμας "When CreatedOnServer" καλεί τη διαδικασία "RunBackgroundTask" - αυτό χρειαζόμαστε.

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

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

Για να γίνει αυτό, οι προγραμματιστές χρησιμοποιούν τη μέθοδο ConnectWaitHandler(<ИмяПроцедуры>, <Интервал>, <Однократно>).



Σε μια συνδεδεμένη διαδικασία Connectable_CheckTaskComplete()οι προγραμματιστές καλούν τη συνάρτηση JobCompleted (TaskID)


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

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

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

Διαχείριση εργασιών ρουτίνας βάσεων δεδομένων 1C από το πρόγραμμα ενημέρωσης

2018-11-20T15:18:30+00:00

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

Πρώτα απ 'όλα, στο στοιχείο "Περισσότερα" -> "Διαχείριση εργασιών ρουτίνας...":

ΣΕ κατάλογος συμφραζόμενωναποκλειστική βάση δεδομένων (ή ομάδα βάσεων δεδομένων):

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

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

Ποια προβλήματα επιτρέπει την επίλυση η σωστή ομάδαβάσεις (ή μία βάση);

Επιλογή εργασιών ρουτίνας

Λάβετε υπόψη ότι μπορείτε να επιλέξετε μια λίστα με τακτικές εργασίες σε πολλές λειτουργίες παρακάτω:

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

Σε αυτήν την περίπτωση, μπορείτε να υποδείξετε τα ονόματα των προγραμματισμένων εργασιών που χρειάζεστε στην ενότητα "Οι εργασίες σας...", για παράδειγμα, ως εξής:

Τα ονόματα για τέτοιες εργασίες ρουτίνας μπορούν να ληφθούν απευθείας από την αναφορά για όλες τις εργασίες ρουτίνας (αυτό συζητείται).

Εμφανίζει την τρέχουσα κατάσταση των εργασιών

Για να το κάνετε αυτό, μεταβείτε στην καρτέλα "Ανάληψη" και κάντε κλικ στο κουμπί "Ανάληψη...":

Στα αποτελέσματα μπορούμε να δούμε:

  1. Η εκκίνηση νέων προγραμματισμένων εργασιών στον διακομιστή 1C είναι ενεργοποιημένη ή απενεργοποιημένη.
  2. Λίστα εργασιών ρουτίνας στη βάση δεδομένων.
  3. Το πρόγραμμά τους.
  4. Οι εργασίες είναι ενεργοποιημένες ή απενεργοποιημένες.
  5. Εάν η τελευταία εκτέλεση μιας εργασίας είχε σφάλμα, αυτό το σφάλμα εμφανίζεται με κόκκινο χρώμα δίπλα στην εργασία.

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

Απενεργοποιήστε όλες ή ορισμένες εργασίες

Για να το κάνετε αυτό, μεταβείτε στην καρτέλα "Απενεργοποίηση":

Για όλες ή επιλεγμένες προγραμματισμένες εργασίες, το πλαίσιο ελέγχου "Χρήση" θα διαγραφεί.

Εδώ είναι το αποτέλεσμα για μία βάση (κάντε κλικ για ανάπτυξη)

Συμπεριλάβετε όλες ή μερικές εργασίες

Για να το κάνετε αυτό, μεταβείτε στην καρτέλα "Ενεργοποίηση":

Για όλες ή επιλεγμένες προγραμματισμένες εργασίες, θα επιλεγεί το πλαίσιο ελέγχου "Χρήση".

Λάβετε υπόψη ότι η σημαία "Make" είναι διαθέσιμη σε αυτήν την καρτέλα. Αντίγραφο ασφαλείαςβάση» στην κάτω αριστερή γωνία.

Εδώ είναι το αποτέλεσμα για μία βάση (κάντε κλικ για ανάπτυξη)

Διαχειριζόμαστε την εκκίνηση προγραμματισμένων εργασιών στον διακομιστή 1C

Για να το κάνετε αυτό, μεταβείτε στην καρτέλα "Διακομιστής 1C":

Επιλέξτε "block" ή "unblock" και κάντε κλικ στο κουμπί "Run".

Ρύθμιση προγράμματος εργασιών

Τι γίνεται όμως αν χρειαστεί να ορίσουμε ένα χρονοδιάγραμμα για την εκκίνηση μιας εργασίας (ή μιας ομάδας εργασιών) σε πολλές βάσεις δεδομένων ταυτόχρονα;

Για να το κάνετε αυτό, μεταβείτε στην καρτέλα "Ρύθμιση προγράμματος":

Ρυθμίζουμε το χρονοδιάγραμμα (ο διάλογος και οι δυνατότητές του συμπίπτουν πλήρως με το τυπικό στο ίδιο το 1C) και κάνουμε κλικ στο "Προσαρμογή...".

Ξεκινάμε εργασίες για εκτέλεση

Για να το κάνετε αυτό, μεταβείτε στην καρτέλα "Εκτέλεση":

Επιλέξτε τις απαιτούμενες εργασίες και κάντε κλικ στο κουμπί "Εκτέλεση":

Αποθήκευση ρυθμίσεων εργασιών σε εξωτερικό αρχείο

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

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

Επαναφορά ρυθμίσεων εργασιών από εξωτερικό αρχείο

Και στη συνέχεια φορτώνουμε αυτό το αρχείο με ρυθμίσεις εργασιών σε όλες τις άλλες βάσεις δεδομένων:

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

Χωριστικές λέξεις

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

Δημιουργία μιας εργασίας ρουτίνας

Ας δημιουργήσουμε μια εργασία ρουτίνας "Εκτέλεση επεξεργασίας".

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

Ας ορίσουμε μια διαδικασία που θα ενεργοποιηθεί όταν εκκινηθεί μια εργασία ρουτίνας:Ενότητα RoutineTasks.RoutineTaskExecutionProcessing.

Η ίδια η διαδικασία μοιάζει με:

Εξαγωγή διαδικασίας RoutineTaskExecutionProcessing(Key).

Παράμετροι RoutineTasks.PerformProcessingWithParameters(Key);

Διαδικασία λήξης

Δημιουργούμε ένα βιβλίο αναφοράς για εργασίες ρουτίνας

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

Βιβλίο αναφοράς "Παράμετροι προγραμματισμένων εργασιών" :

Προϋποθέσεις :

· CodeBefore Launch- απεριόριστη συμβολοσειρά - κώδικας σε γλώσσα 1C που πρέπει να εκτελεστεί πριν από την εκκίνηση.

· Επεξεργασία από τη διαμόρφωση - γραμμή (100) - αναγνωριστικό επεξεργασίας από τη διαμόρφωση

· Επεξεργασία από τον κατάλογο - γραμμή (100) - σύνδεσμος στο στοιχείο καταλόγου "Εξωτερική επεξεργασία", εάν υπάρχει στη διαμόρφωση

· Θα δημιουργηθεί η εκτέλεση μέσω της εφαρμογής 1C - Boolean ξεχωριστή εφαρμογή 1C και μια εργασία ρουτίνας θα ξεκινήσει σε αυτό. Δημιουργήθηκε για την έκδοση 8.1, όπου δεν είναι διαθέσιμες όλες οι μέθοδοι εφαρμογής στον διακομιστή όπου εκτελείται η προγραμματισμένη εργασία.

· Κωδικός εκκίνησης- - απεριόριστη γραμμή - κωδικός σε γλώσσα 1C που θα εκτελεστεί όταν ξεκινήσει μια προγραμματισμένη εργασία.

Ας δημιουργήσουμε το σχήμα του στοιχείου :

Κάνοντας κλικ στο «Δημιουργία Reg. task" μια εργασία ρουτίνας με κωδικό κλειδιού δημιουργείται μέσω προγραμματισμού:

Διαδικασία BasicActionsFormCreateReglTask(Button)

Μεταβλητή εργασία;

Κλειδί = AbbrLP(Κωδικός);

Task = RoutineTasks.CreateRoutineTask("PerformProcessing");

Task.Name = Κλειδί;

Task.Key = Κλειδί;

Παράμετροι = New Array();

Parameters.Add(Key);

Task.Parameters = Παράμετροι;

Task.Write();

Διαδικασία λήξης

Έναρξη προγραμματισμένης εργασίας

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

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

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

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

Για το 1C81, η εκτέλεση παρέχεται σε μια νέα εφαρμογή - έτσι ώστε να μπορείτε να χρησιμοποιήσετε κώδικα που είναι διαθέσιμος μόνο στον πελάτη, συμπεριλαμβανομένης της χρήσης εξωτερικές θεραπείες. Για να το κάνετε αυτό, πρέπει να επιλέξετε το πλαίσιο ελέγχου "Εκτέλεση μέσω εφαρμογής 1C". Διαφορετικά, η προγραμματισμένη εργασία θα εκτελεστεί στον διακομιστή.

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

Το χρονοδιάγραμμα εργασιών ρουτίνας δημιουργείται χρησιμοποιώντας τον υπερσύνδεσμο «Προγραμματισμός» από τη φόρμα εργασιών ρουτίνας. Μπορείτε να χρησιμοποιήσετε την επεξεργασία "Routine Task Console".

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

Δημιουργήστε μια εργασία

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

Η εργασία ρουτίνας είναι αναντικατάστατη:

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

Για να το δημιουργήσετε πρέπει να πάτε στο βάση πληροφοριώνστη λειτουργία "Configurator". Στη συνέχεια, βρείτε τον κλάδο «Εργασίες ρουτίνας» στο δέντρο ρυθμίσεων, βρίσκονται στην καρτέλα «Γενικά» και κάντε κλικ στο κουμπί «Προσθήκη» (Εικ. 1).

Ας ρίξουμε μια πιο προσεκτική ματιά στο παράθυρο ιδιοτήτων του (Εικ. 2):
Εικ.2

  1. Όνομα, συνώνυμο και σχόλιο - οι κανόνες και οι αρχές για τη συμπλήρωση αυτών των πεδίων είναι παρόμοιοι για όλα τα αντικείμενα διαμόρφωσης και δεν χρειάζεται να τα περιγράψουμε ξανά.
  2. Όνομα μεθόδου – μια διαδικασία της γενικής ενότητας που περιγράφει τον απαιτούμενο αλγόριθμο όσο το δυνατόν ακριβέστερα (κάνοντας κλικ στο κουμπί επιλογής ανοίγουν οι διαθέσιμες διαδικασίες, η αναπαράσταση των οποίων αποτελείται από το όνομα της γενικής ενότητας και το όνομα της διαδικασίας σε διάφορες στήλες του πίνακα)·
  3. Κλειδί – καθορίζει όχι τόσο τη μοναδικότητα της προγραμματισμένης εργασίας, αλλά μάλλον τη μοναδικότητα της διαδικασίας παρασκηνίου που ξεκινά με βάση την εργασία.
  4. Πρόγραμμα - θα αφιερώσουμε μια ξεχωριστή παράγραφο του άρθρου μας στην περιγραφή αυτού του στοιχείου.
  5. Χρήση – η επιλογή αυτού του πλαισίου προσδιορίζει τη δραστηριότητα της εργασίας, TRUE σημαίνει ότι η εργασία θα ξεκινήσει και θα εκτελεστεί σύμφωνα με το χρονοδιάγραμμα.
  6. Προκαθορισμένο – εάν ένα στοιχείο έχει αυτό το πλαίσιο ελέγχου, αυτές οι εργασίες δεν μπορούν να διαγραφούν, δημιουργούνται αυτόματα όταν η διαμόρφωση αποθηκεύεται στη βάση δεδομένων.
  7. Αριθμός επαναλήψεων - εάν παρουσιαστεί εξαίρεση κατά την εκτέλεση, θα γίνει επανεκκίνηση, έτσι ώστε να μην εμφανίζεται ατελείωτος βρόχος, το πρόγραμμα περιορίζει τον αριθμό των επανεκκινήσεων.
  8. Διάστημα επανάληψης προσπάθειας – χρόνος σε δευτερόλεπτα μεταξύ επανεκκινήσεων ασυνήθιστα ολοκληρωμένων εργασιών.

Ας ρίξουμε μια πιο προσεκτική ματιά στο πρόγραμμα.

Πρόγραμμα εργασιών ρουτίνας

Εικ.3

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

Καρτέλα "Γενικά":

  • Ημερομηνία έναρξης εργασίας.
  • Ημερομηνία λήξης επεξεργασίας.
  • Συχνότητα επανάληψης εργασιών.

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

Καρτέλα "Καθημερινή" (Εικ. 4)
Εικ.4

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

Οι καρτέλες «Καθημερινά» και «Εβδομαδιαία» περιέχουν πληροφορίες για τις αντίστοιχες περιόδους.

Χαρακτηριστικά λειτουργίας

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

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

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

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

Επιπλέον, στις τυπικές παραδόσεις 1C, κατέστη δυνατή η διαχείριση της προγραμματισμένης εργασίας απευθείας από το πρόγραμμα, χωρίς να μεταβείτε στο "Configurator". Στη διαμόρφωση "ZUP", έκδοση 3.1.3.223, μπορείτε να ανοίξετε τη φόρμα διαχείρισης από το μενού Διαχείριση->Συντήρηση->Λειτουργίες ρουτίνας->Εργασίες ρουτίνας και παρασκηνίου (Εικ. 5)
Εικ.5

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


Μπορείτε επίσης να ξεκινήσετε μια εργασία απευθείας από τη φόρμα.

mob_info