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

Ερώτηση: Η διαδικασία εργασίας στο παρασκήνιο κατέρρευσε...


Καλημέρα σε όλους και καλή εβδομάδα!)
Λογιστική επιχειρήσεων, έκδοση 3.0 (3.0.46.11).
Πλατφόρμα 8.3.9.2033.
Κατά την ανάρτηση εγγράφων σε ομάδες, εμφανίζεται το σφάλμα "Η διαδικασία εργασίας στο παρασκήνιο έχει τερματιστεί ασυνήθιστα". Δεν αναφέρονται οι λόγοι...
Η επανεκκίνηση του διακομιστή SQL, ο διακομιστής 1C (ποτέ δεν ξέρεις) δεν βοηθάει... Ίσως κάποιος να έχει αντιμετωπίσει παρόμοιο πρόβλημα;;; Είναι ακόμη δύσκολο να πούμε πότε εμφανίστηκε αυτό το σφάλμα επειδή δεν έχουμε χρησιμοποιήσει την ομαδική εκτέλεση (κλείσιμο του μήνα) για μεγάλο χρονικό διάστημα...

Απάντηση:() () Καλησπέρα και πάλι) Άνοιξα το περιοδικό τεχνολογίας και βρήκα αυτά τα ενδιαφέροντα πράγματα (ίσως ξέρετε ποιο είναι το πρόβλημα;):
Έγινε προσπάθεια να γίνει επέμβαση σε αντικείμενο που δεν είναι πρίζα...
Η διαδικασία τελειώνει. Η εξερχόμενη κλήση απορρίφθηκε...
Δεν βρέθηκαν διακομιστές που να φιλοξενούν την υπηρεσία...

Ερώτηση: Εργασίες στο παρασκήνιο


Πλατφόρμα 1C:Enterprise 8.3 (8.3.9.2170), conf BP 3.0.
Η διαμόρφωση διαμορφώνει την ενοποίηση μέσω εξωτερικών πηγών δεδομένων (τύπος DBMS - OracleDatabase). Έχει προστεθεί ένας αριθμός πινάκων από τους οποίους φορτώνονται κύρια δεδομένα και συναλλαγές. Επειδή Υπήρχαν πολλά δεδομένα, οπότε αποφασίστηκε να γίνει μαζική λήψη μέσω εργασιών στο παρασκήνιο. Το μέγεθος μερίδας είναι 100.000, το μέγεθος παρτίδας είναι 10.000, ο αριθμός συναλλαγών στο έγγραφο είναι 1000, ο αριθμός των εργασιών παρασκηνίου που εκτελούνται ταυτόχρονα είναι 8.
Εκτοξεύω, φορτώνω, όλα είναι εντάξει. Αλλά αν το βάλω το βράδυ, νιώθω ότι το 1c μπαίνει σε κατάσταση ύπνου, δηλ. Μετά από κάποιο χρονικό διάστημα, όπως δείχνει το αρχείο καταγραφής, οι εργασίες παρασκηνίου ξεκινούν, αλλά δεν ολοκληρώνονται. Ως αποτέλεσμα, αποδείχθηκε ότι οι εργασίες ξεκίνησαν στις 12 το βράδυ και ολοκληρώθηκαν στις 8 το πρωί (όταν κίνησα το ποντίκι) και μετά συνέχισαν να εκτελούνται σε κανονική λειτουργία. Το έτρεξα και σε λεπτές και χοντρές πελάτισσες. Υπάρχει μια ρύθμιση στις παραμέτρους - η ώρα για ύπνο σε μια παθητική συνεδρία είναι 1200, αλλά αυτό δεν ισχύει μόνο για τον thin client και μπορεί να είναι πρόβλημα; Δεν θέλω να το απενεργοποιήσω γιατί... οι χρήστες δεν βγαίνουν από το πρόγραμμα, αφήστε τους να αποκοιμηθούν. Έχει αντιμετωπίσει κανείς παρόμοιο πρόβλημα; Πώς το αποφάσισες;

Απάντηση:

Δεν υπάρχει τέτοια δυνατότητα.

Τι νόημα έχει να εκτελείτε μια εργασία παρασκηνίου και να περιμένετε να ολοκληρωθεί;
για να μην δημιουργήσετε περισσότερες από 8 εργασίες φόντου;

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

Έκανα 40-50 εργασίες στο παρασκήνιο στο Pentuim D840 - η πτήση ήταν κανονική, μετά περιορίστηκε από τον επεξεργαστή/μνήμη.

Ερώτηση: Πώς να μεταφέρετε ένα αρχείο σε μια εργασία παρασκηνίου


Πλατφόρμα 8.3.6.2152
Πρέπει να μεταφέρετε το αρχείο από την υπεριώδη ακτινοβολία σε μια εργασία παρασκηνίου για μεταγενέστερη επεξεργασία.
Έκανε αυτό:
&OnClient
Διαδικασία Command1(Command) FileDD = New BinaryData(FileName); StorageAddressForBackground = PlaceInTemporaryStorage(FileDD, UniqueIdentifier); Έναρξη UploadLoadOnServer(StorageAddressForBackground) EndProcedure &OnServer Λειτουργία StartUploadLoadOnServer(StorageAddressForBackground) Μέθοδος Παράμετροι = Νέος πίνακας. MethodParameters.Add(StorageAddressForBackground); Job = BackgroundTasks.Run("MyGeneralModule.MyBackground", MethodParameters); EndFunction
Στη γενική ενότητα:

Διαδικασία MyBackground(StorageAddress) Export FileDD = GetFromTemporaryStorage(StorageAddress); Αν TypeValue(FileDD) = Type("BinaryData") Τότε Εγγραφή Ημερολογίου Εγγραφή Ημερολογίου("Debug","No DD"); Τέλος εαν ; Τέλος Διαδικασίας Δοκίμασα αυτό: PlacedFiles = New Array; PlacedFiles.Add(NewDescriptionofTransferFile(FileName)); PlacedFiles = Νέος πίνακας; Αν ΟΧΙ PlaceFiles (PlaceFiles, PlaceFiles, False, UniqueIdentifier) ​​Τότε Επιστροφή ; Τέλος εαν ; StorageAddressForBackground = PlacedFiles.Storage; Δοκίμασα αυτό: StorageAddressForBackground = PlaceInTemporaryStorage(Undefined, UniqueIdentifier); PlaceFile(StorageAddressFor Background, FileName, False);
Μεταφέρεται κανονικά από το παρασκήνιο στον πελάτη μέσω προσωρινής αποθήκευσης, αλλά για κάποιο λόγο δεν μεταφέρεται από τον υπολογιστή-πελάτη στο παρασκήνιο.

Απάντηση:Σε γενικές γραμμές, όλα αποδείχθηκαν αρκετά απλά. Αποδεικνύεται ότι μπορείτε να μεταβιβάσετε ανόητα Binary Data ως παράμετρο σε μια εργασία παρασκηνίου. Για ανειδίκευτους ερασιτέχνες να αναφέρουν αναφορές και να τους πουν ότι «έτσι προοριζόταν», ο κώδικας εργασίας είναι:
&OnClient
Διαδικασία Command1 (Command) Start UploadLoadOnServer(New BinaryData(FileName)) EndProcedure
Λειτουργία &OnServer Παράμετροι μεθόδου StartUploadLoadOnServer(DD) = Νέος πίνακας; MethodParameters.Add(DD); Job = BackgroundTasks.Run("MyGeneralModule.MyBackground", MethodParameters); Διαδικασία EndFunctions MyBackground(FileDD) Export If TypeValue(FileDD) = Type("BinaryData") Στη συνέχεια Εγγραφή Ημερολογίου("Εντοπισμός σφαλμάτων", "Ναι DD"); Σε διαφορετική περίπτωση Εγγραφή Ημερολογίου("Debug","No DD"); Τέλος εαν ; Τέλος Διαδικασίας

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


Γειά σου!
Υπάρχει 1C:Enterprise 8.3 (8.3.11.2924), UT 11.3.4.93 πελάτης - διακομιστής.
Σε αυτήν τη διαμόρφωση, οι κινήσεις στο μητρώο "Διακανονισμοί με πελάτες σε έγγραφα" δεν εκτελούνται κατά τη στιγμή της ανάρτησης των εγγράφων, αλλά με την εργασία ρουτίνας "Εκτέλεση αναβαλλόμενων κινήσεων σε διακανονισμούς με πελάτες/προμηθευτές".
Ταυτόχρονα, μερικές φορές η εργασία ρουτίνας δημιουργούσε ένα σφάλμα, επειδή προσπάθησε να κάνει κινήσεις σε κλειστή περίοδο (Πριν την ημερομηνία απαγόρευσης του μοντάζ). Στις ρυθμίσεις της εργασίας ρουτίνας, καταχωρήσαμε έναν ειδικό χρήστη του οποίου η ημερομηνία αποκλεισμού ήταν ανοιχτή, μετά την οποία όλα άρχισαν να λειτουργούν.
Ωστόσο, υπάρχει ανάγκη να διασφαλιστεί ότι αυτές οι μετακινήσεις στα μητρώα γίνονται τη στιγμή της ανάρτησης του εγγράφου και όχι όταν ξεκινά η εργασία παρασκηνίου σύμφωνα με το χρονοδιάγραμμα.
Εάν εκτελείτε τον ίδιο τον κώδικα, ο οποίος εκτελεί μια εργασία ρουτίνας κατά τη δημοσίευση ενός εγγράφου, τότε εμφανίζεται το ίδιο σφάλμα - η περίοδος έχει κλείσει. Και αν εκτελέσετε μέσω προγραμματισμού μια εργασία παρασκηνίου που εκτελεί τον ίδιο κώδικα τη στιγμή που δημοσιεύεται το έγγραφο, τότε προκαλεί ακριβώς το ίδιο σφάλμα, επειδή η περίοδος κλείνει και η εργασία παρασκηνίου, που ξεκινά μέσω προγραμματισμού, ξεκινά με το όνομα του τρέχοντος χρήστη και η ημερομηνία απαγόρευσής του έχει κλείσει. Ωστόσο, όταν μια εργασία στο παρασκήνιο εκκινείται σύμφωνα με ένα χρονοδιάγραμμα, το οποίο έχει εγκατεστημένο τον «σωστό» χρήστη στον προγραμματιστή, τότε όλα πάνε με μεγάλη έκρηξη. Δείτε πώς να το κάνετε αυτό μέσω προγραμματισμού, πώς να εκτελέσετε μέσω προγραμματισμού μια εργασία παρασκηνίου κάτω από τον επιθυμητό χρήστη "μέσω του χρονοπρογραμματιστή", όπως κάνουν οι τυπικές προγραμματισμένες εργασίες, πείτε μου;

Απάντηση:

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

Ο Lis2007 είπε:

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

Κάντε κλικ για επέκταση...

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


Η εργασία παρασκηνίου εκτελείται με σφάλμα. Αποφάσισα να το διορθώσω.
Το εκκινώ μέσω εξωτερικής επεξεργασίας με μία γραμμή:
BackgroundTasks.Run("MyModule.MyTask");
Το σημείο διακοπής στη μονάδα δεν έχει επιτευχθεί.
Επιτρέπεται ο εντοπισμός σφαλμάτων στον διακομιστή, ο εντοπισμός σφαλμάτων ελέγχεται, η αυτόματη σύνδεση, οι εργασίες στο παρασκήνιο είναι ενεργοποιημένες. Τι άλλο μπορεί να είναι το πρόβλημα;

Απάντηση:Σε κοινές λειτουργικές μονάδες, υπήρχε μια κλήση σε λειτουργίες που απαιτούσαν εκτέλεση πελάτη και όχι διακομιστή. Έπρεπε να τα βάλω σε αγκύλες #If Client Then. Το παρασκήνιο λειτούργησε επίσης.

Ερώτηση: Σφάλμα κατά την εκτέλεση μιας ανταλλαγής


Καλησπέρα Πες μου πού να σκάψω:
Πραγματοποιώ ανταλλαγή στη βάση δεδομένων λογιστικής. Περίπου τρεις δωδεκάδες έγγραφα μεταφορτώνονται από το UT-shka μέσω μιας τυπικής ανταλλαγής. Σκέφτονται για πολλή ώρα (περίπου μια ώρα) και τελειώνουν με το μήνυμα:
Η διαδικασία εργασίας στο παρασκήνιο διακόπηκε

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

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

Αρχικά, ας καταλάβουμε τι σημαίνουν και ποια είναι η διαφορά τους:

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

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

Ανοίξτε τη διαμόρφωση και προσθέστε μια προγραμματισμένη εργασία.

Ρύθμιση ιδιοτήτων

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

  • στο χωράφι" Όνομα μεθόδου» επιλέγει τη διαδικασία μιας συγκεκριμένης γενικής ενότητας που θα εκτελεστεί απευθείας. Θα υποδεικνύει όλα τα βήματα για τη μεταφόρτωση τιμών στον ιστότοπό μας. Σημειώστε ότι η εκτέλεση θα πραγματοποιηθεί στον διακομιστή. Αυτό είναι λογικό, επειδή οι λειτουργίες ρουτίνας εκτελούνται χωρίς τη συμμετοχή του χρήστη.
  • Η προγραμματισμένη εργασία μπορεί να απενεργοποιηθεί ή να ενεργοποιηθεί όπως απαιτείται. Δεν χρειάζεται να επεξεργάζεστε το πρόγραμμά του κάθε φορά. Για να το κάνετε αυτό, στην παλέτα ιδιοτήτων, ορίστε ή διαγράψτε τη σημαία " Χρήση».
  • Ένα άλλο σημαντικό πράγμα είναι να ορίσετε εάν αυτή η καθημερινή εργασία θα είναι προκαθορισμένο, ή όχι. Οι προκαθορισμένες προγραμματισμένες εργασίες εκκινούνται αυτόματα. Εάν αυτή η δυνατότητα δεν είναι εγκατεστημένη, τότε θα πρέπει να την εκκινήσετε μέσω προγραμματισμού ή να χρησιμοποιήσετε την επεξεργασία "Task Console" με το ITS.
  • Μπορείτε επίσης να καθορίσετε τον αριθμό των επαναλήψεων και το διάστημα μεταξύ τουςσε περίπτωση μη φυσιολογικού τερματισμού. Ο μη φυσιολογικός τερματισμός αναφέρεται σε εκείνες τις καταστάσεις όπου οι εργασίες δεν ολοκληρώθηκαν λόγω σφάλματος.

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

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

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

Αποκλεισμός προγραμματισμένων εργασιών

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

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

Με τον ίδιο τρόπο, μπορείτε να απενεργοποιήσετε πλήρως τις εργασίες ρουτίνας στο 1C 8.3. Για να απενεργοποιήσετε συγκεκριμένες εργασίες στο παρασκήνιο, μπορείτε να χρησιμοποιήσετε την επεξεργασία "Background Job Console" που είναι ενσωματωμένη στις πιο πρόσφατες εκδόσεις.

Παρασκήνιο και προγραμματισμένες εργασίες σε λειτουργία αρχείου

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

Σε αυτήν την περίπτωση, οι εργασίες ρουτίνας ενεργοποιούνται χρησιμοποιώντας τη μέθοδο "RunTaskProcessing()".

Μπορείτε επίσης να χρησιμοποιήσετε την ακόλουθη κατασκευή:

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

Παρακολούθηση σφαλμάτων σε εργασίες παρασκηνίου

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

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

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

Εδώ μία από αυτές τις μεθόδους με τη μορφή σύντομων οδηγιών βήμα προς βήμα:

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

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


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

4. Σε έναν υπολογιστή με διακομιστή 1C, χρησιμοποιώντας τη διαχείριση εργασιών, αναζητήστε την αντίστοιχη διαδικασία rphost.exe από το PID της διαδικασίας απενεργοποιημένου εργαζόμενου και διαγράψτε την.

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

6. Ετοιμος. Μπορείτε να συνδεθείτε στην κονσόλα εργασιών και να ελέγξετε τη λειτουργικότητα της προγραμματισμένης εργασίας.

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

Στην περίπτωσή μου, η ανταλλαγή διαμορφώνεται μεταξύ των διαμορφώσεων "Trade Management 11.2" (εφεξής UT) και "Enterprise Accounting 3.0.43" (στο εξής BP). Η ανταλλαγή είναι μονόδρομη, από UT προς BP. Πριν από την αναβάθμιση Trade Management 11.1 σε 11.2, η ανταλλαγή δεδομένων διαμορφώθηκε χρησιμοποιώντας τη διαμόρφωση Data Conversion 2.0. Ωστόσο, μετά τη μετάβαση στο "11.2", εμφανίστηκαν σφάλματα στο "Trade Management" για τους χρήστες. Η διαδικασία ενημέρωσης των κανόνων ανταλλαγής πραγματοποιήθηκε, αλλά δεν απέφερε αποτελέσματα. Το πρόγραμμα εντοπισμού σφαλμάτων έδειξε ότι το πρόβλημα ήταν στην ανταλλαγή δεδομένων. Αποφασίστηκε να καταργηθεί η ρύθμιση ανταλλαγής δεδομένων και στις δύο διαμορφώσεις και να ρυθμιστεί ξανά.

Τόσο η «Διαχείριση Εμπορίου» όσο και η «Λογιστική Επιχειρήσεων» λειτουργούν σε έκδοση πελάτη-διακομιστή. Άρχισα να ρυθμίζω τον συγχρονισμό με το UT. Το έκανα με τέτοιο τρόπο ώστε τα δεδομένα να ανεβαίνουν από το UT σε ένα αρχείο. Δηλαδή συγχρονισμός μέσω καταλόγου δικτύου. Στο BP ρύθμισα την ανταλλαγή με τέτοιο τρόπο ώστε να μην γίνεται λήψη δεδομένων από την BP.

Σφάλμα κατά την κλήση της μεθόδου περιβάλλοντος (Επαλήθευση): Σφάλμα επικύρωσης δεδομένων XDTO:
Η δομή του αντικειμένου "/Counterparty Bank Account/Bank" δεν αντιστοιχεί στον τύπο: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)KeyPropertiesBank
Έλεγχος της ιδιότητας "BIK":
σχήμα: Στοιχείο
όνομα: (http://v8.1c.ru/edi/edi_stnd/EnterpriseData/1.1)BIK
τύπος:
Λείπει το απαιτούμενο ακίνητο
Αντικείμενο: Συμφωνία με τον αντισυμβαλλόμενο αριθ.

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

Προσπάθησα ξανά να συγχρονίσω δεδομένα από το UT. Αυτή τη φορά τα δεδομένα μεταφορτώθηκαν με επιτυχία. Δημιουργήθηκε ένα αρχείο XML στο φάκελο δικτύου που περιέχει δεδομένα που θα μεταφερθούν από το UT στο BP.

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

Συμβάν: Ανταλλαγή δεδομένων
(GeneralModule.Long-runningOperations.Module(371)): Η διαδικασία του εργαζομένου στο παρασκήνιο τερματίστηκε ασυνήθιστα
RaiseException(ErrorText);

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

Με περαιτέρω δοκιμές συγχρονισμού, ήταν απαραίτητο να γίνουν κάποιες αλλαγές στους κανόνες για τη μετατροπή αντικειμένων. Ήρθε η ώρα να χρησιμοποιήσετε τη διαμόρφωση Data Conversion 3.0. Η ενσωματωμένη βοήθεια διαμόρφωσης περιγράφει πώς λειτουργεί. Βοήθησαν επίσης τα άρθρα στον ιστότοπο του ITS.

Ως αποτέλεσμα, φόρτωσα τα ακόλουθα δεδομένα στο "Data Conversion 3.0":

  • Κείμενα της γενικής ενότητας "Data Exchange Manager Through a Universal Format" από δύο βάσεις δεδομένων
  • Διάταξη και των δύο βάσεων
  • Περιγραφή της μορφής EnterpriseData (από οποιαδήποτε βάση δεδομένων)
  • Κανόνες μετατροπής

Μετά τη λήψη, άνοιξα τους κανόνες για τη μετατροπή δεδομένων, αντικειμένων και ιδιοτήτων στο "Data Conversion 3.0". Έκανα τις αλλαγές που χρειαζόμουν. Στη συνέχεια χρησιμοποίησα το κουμπί "Κατάργηση φόρτωσης μονάδας διαχειριστή ανταλλαγής". Το κείμενο της ενότητας έχει αντιγραφεί στο πρόχειρο. Το μόνο που μένει είναι να το εισαγάγετε στη διαμόρφωση.

Έχοντας πειραματιστεί με τη ρύθμιση των κανόνων στο "Data Conversion 3.0", συμπέρανα μόνος μου ότι στην περίπτωση που οι αλλαγές που γίνονται είναι ασήμαντες, είναι ευκολότερο να ρυθμίσετε τους κανόνες απευθείας στις διαμορφώσεις UT και BP, στη γενική ενότητα "Διαχειριστής ανταλλαγής δεδομένων μέσω της καθολικής μορφής". Εάν οι αλλαγές είναι σοβαρές, όπως, για παράδειγμα, η προσθήκη ενός νέου αντικειμένου στην ανταλλαγή, τότε θα πρέπει να χρησιμοποιήσετε τη διαμόρφωση " Μετατροπή δεδομένων 3.0".

Έκανα την εργασία προσθήκης του εγγράφου "Παραγγελία στον προμηθευτή" στο σχέδιο ανταλλαγής χρησιμοποιώντας " Μετατροπή δεδομένων 3.0". Στην τυπική έκδοση του UT - BP αυτό το έγγραφο δεν περιλαμβάνεται στο σχέδιο ανταλλαγής.

Ας θυμηθούμε ότι οι κανόνες για την εγγραφή αντικειμένων για μεταφόρτωση εξακολουθούν να διαμορφώνονται στη διαμόρφωση "Μετατροπή δεδομένων 2.0".

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

ΥΣΤΕΡΟΓΡΑΦΟ. Εάν έχετε ερωτήσεις ή δικές σας παρατηρήσεις σχετικά με την ανταλλαγή δεδομένων μέσω της Universal Format and Configurations" Data conversion 3.0", γράψτε στα σχόλια Θα ανταλλάξουμε εμπειρίες.

  • Συγχρονισμός δεδομένων
  • Universal EntepriseData Format
  • Μετατροπή δεδομένων 3.0
  • Μετατροπή δεδομένων 2.0
  • Εμπορική διαχείριση
  • Λογιστική επιχειρήσεων

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

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

Τι είναι οι εργασίες ρουτίνας και παρασκηνίου στο 1C

  • Προγραμματισμένες εργασίεςείναι ένας ειδικός μηχανισμός 1C Enterprise 8.3 που έχει σχεδιαστεί για να εκτελεί μια συγκεκριμένη ενέργεια σύμφωνα με ένα δεδομένο χρονοδιάγραμμα.
  • Εργασία στο παρασκήνιο- αντικείμενα που δημιουργούνται από μια εργασία ρουτίνας που εκτελούν απευθείας την προβλεπόμενη ενέργεια χωρίς τη συμμετοχή του χρήστη ή του προγραμματιστή 1C 8.2.

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

Ρύθμιση εργασιών παρασκηνίου σε λειτουργία πελάτη-διακομιστή 1C

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

Λάβετε 267 μαθήματα βίντεο στο 1C δωρεάν:

  • Όνομα μεθόδου— διαδρομή προς τη διαδικασία που θα εκτελεστεί σε μια εργασία παρασκηνίου σύμφωνα με ένα δεδομένο χρονοδιάγραμμα. Η διαδικασία πρέπει να είναι σε μια κοινή ενότητα. Συνιστάται να μην χρησιμοποιείτε τυπικά, αλλά να δημιουργήσετε το δικό σας. Μην ξεχνάτε ότι οι εργασίες παρασκηνίου εκτελούνται στον διακομιστή!
  • Χρήση— ένδειξη χρήσης μιας εργασίας ρουτίνας.
  • Προκαθορισμένο— υποδεικνύει εάν η εργασία ρουτίνας είναι προκαθορισμένη. Εάν θέλετε η εργασία ρουτίνας να λειτουργεί αμέσως μετά την τοποθέτηση στη βάση δεδομένων, καθορίστε αυτήν τη σημαία. Διαφορετικά, θα χρειαστεί να χρησιμοποιήσετε την επεξεργασία Job Console ή να κάνετε την εργασία να εκτελεστεί μέσω προγραμματισμού.
  • Αριθμός επαναλήψεων όταν μια εργασία τερματίζεται ασυνήθιστα— πόσες φορές έγινε επανεκκίνηση της εργασίας παρασκηνίου εάν εκτελούνταν με σφάλμα.
  • Προσπαθήστε ξανά το διάστημα όταν η εργασία τερματίζεται ασυνήθιστα— πόσο συχνά θα επανεκκινείται η εργασία παρασκηνίου εάν ολοκληρώθηκε με σφάλμα.

Και το πιο ενδιαφέρον σκηνικό είναι Πρόγραμμα:

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

Προσοχή!Μην ξεχάσετε να απενεργοποιήσετε τον αποκλεισμό της εκτέλεσης εργασιών ρουτίνας και παρασκηνίου σε επίπεδο DBMS!

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

Ρύθμιση εργασιών ρουτίνας σε λειτουργία αρχείου 1C

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

Στη λειτουργία αρχείου, μια εργασία ρουτίνας αρχικοποιείται όταν εκκινείται η μέθοδος "RunTaskProcessing()".

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

ConnectWaitHandler( <ИмяПроцедуры>, <Интервал>, <Однократно>).

  • Όνομα διαδικασίας— το όνομα της διαδικασίας που συνδέεται ως χειριστής αναμονής. Το όνομα της εξαγόμενης διαδικασίας μιας λειτουργικής μονάδας διαχειριζόμενης εφαρμογής (μιας κανονικής λειτουργικής μονάδας εφαρμογής) ή μιας καθολικής κοινόχρηστης λειτουργικής μονάδας. Η διαδικασία πρέπει να βρίσκεται στον πελάτη.
  • Διάστημα— περίοδος μεταξύ των εκτελέσεων των πράξεων σε δευτερόλεπτα.
  • Μια φορά- πώς να ολοκληρώσετε την εργασία, μία φορά ή όχι.

ConnectWaitHandler, 3600 );

Ένα βίντεο δύο λεπτών που δείχνει πώς να ρυθμίσετε μια εργασία ρουτίνας στο διαμορφωτή 1C:



Έχετε ερωτήσεις;

Αναφέρετε ένα τυπογραφικό λάθος

Κείμενο που θα σταλεί στους συντάκτες μας: