Προγραμματισμός σε γλώσσα 1C Enterprise 8. Κύκλοι με χρήση μεταβλητής - μετρητής κύκλων

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

  • Πού και με ποια βοήθεια να γράψετε κώδικα προγράμματος στην ενσωματωμένη γλώσσα 1C;
  • Τι είναι οι ενότητες λογισμικού, ποιοι είναι οι κανόνες για την εργασία μαζί τους;
  • Τι είναι μια μεταβλητή, πώς να εργαστείτε μαζί της, πώς και πού να τη δηλώσετε;
  • Ποιοι τελεστές σύγκρισης, ανάθεσης και υπό όρους υπάρχουν και πώς τους χρησιμοποιείτε;
  • Λειτουργίες Boolean - τι είναι και πώς να εργαστείτε με αυτές;
  • Γιατί χρειαζόμαστε βρόχους και πώς να τους χρησιμοποιήσουμε;

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

Εφαρμογή

Το υλικό είναι σχετικό για την πλατφόρμα 1C:Enterprise 8, έκδοση 8.2. και 8.3.

Μεταβλητές και τελεστές

Σε αυτό το άρθρο αρχίζουμε να μελετάμε την ενσωματωμένη γλώσσα 1C:Enterprise 8. Ο εκτελέσιμος κώδικας περιέχεται σε ενότητες προγράμματος.

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

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

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

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

Perem Warehouse, Division, Storekeeper Export;

Μετά τη δήλωση των μεταβλητών υπάρχει μια ενότητα διαδικασιών και συναρτήσεων.

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

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

Κατάσταση=1;
NewExpression=2;
Αποτέλεσμα=3;

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

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

Αποτέλεσμα=100Χ200
+400
-600;

Δεν έχει σημασία σε πόσες γραμμές βρίσκεται η δήλωση.

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

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

Διαδικασία CalculateValue()

InitialValue = 100;
IntermediateValue = InitialValue/5;
ΤελικήΤιμή = ΑρχικήΤιμή+ΕνδιάμεσηΤιμή

Τέλος Διαδικασίας

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

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

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

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

Δημιουργήθηκε = Λάθος;
Δημιουργήθηκε = Αληθινό;
Δημιουργήθηκε =100;

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

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

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

Σε αυτήν την περίπτωση, το όνομα της μεταβλητής πρέπει να αντικατοπτρίζει τη σημασία αυτής της μεταβλητής. Τα ονόματα μεταβλητών με ένα γράμμα (όπως A, B, C) είναι κακά παραδείγματα. Δεν αντικατοπτρίζουν την ουσία των μεταβλητών.

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

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

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

Θα πρέπει να σημειωθεί ότι οι τύποι δεδομένων δεν είναι δεσμευμένες λέξεις (για παράδειγμα, Array, Boolean, True, False). Το σύστημα θα δεχτεί σωστά τέτοια ονόματα μεταβλητών.

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

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

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

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

Λειτουργίες Boolean

Οι τελεστές σύγκρισης συχνά χρησιμοποιούν λογική Boolean που επιστρέφει True ή False.

Για παράδειγμα, σε έναν τελεστή υπό όρους μπορείτε να συγκρίνετε: Εάν Συμβάν = Πώληση Τότε ο αλγόριθμος θα ακολουθήσει έναν κλάδο (δηλαδή, εάν η τιμή είναι True), εάν η συνθήκη είναι False, θα εκτελεστεί ένας άλλος κλάδος του αλγορίθμου.

Οι συνθήκες μπορεί να είναι αρκετά περίπλοκες, μπορούν να συνδυαστούν και χρησιμοποιούνται οι ακόλουθοι τελεστές: AND, OR και NOT. Έτσι, για τον τελεστή AND:

Αλήθεια Και Αλήθεια = Αλήθεια.
Σωστό Και Λάθος = Λάθος.
False And True = Λάθος.
Λάθος ΚΑΙ Λάθος = Λάθος.

Για τον τελεστή OR, αρκεί ένας από τους τελεστές να είναι ίσος με True, τότε η τιμή του συνδυασμού θα είναι True. Η τιμή False λαμβάνεται μόνο όταν και οι δύο τελεστές είναι False.

Ο τελεστής NOT απλώς αντιστρέφει την τρέχουσα τιμή (False σε True, True to False).

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

Ο τελεστής NOT έχει την υψηλότερη προτεραιότητα, ακολουθούμενος από τον τελεστή AND και ακολουθούμενος από τον τελεστή OR. Ό,τι περικλείεται σε παρένθεση έχει την υψηλότερη προτεραιότητα και εκτελείται πρώτο.

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

ΟΧΙ (Συνθήκη 1 Ή Συνθήκη 2) ΚΑΙ Κατάσταση3 Ή Κατάσταση4
1.Αποτέλεσμα1 = (Συνθήκη1 Ή Συνθήκη2);
2. Αποτέλεσμα2 = ΟΧΙ Αποτέλεσμα1;
3. Αποτέλεσμα3 = Αποτέλεσμα2 ΚΑΙ Συνθήκη1;
4. Αποτέλεσμα = Αποτέλεσμα3 Ή Συνθήκη4;

Υπάρχει ένας κανόνας μετατροπής:

ΟΧΙ (Συνθήκη 1 Ή Συνθήκη 2) = ΟΧΙ Κατάσταση 1 ΚΑΙ ΟΧΙ Κατάσταση 2.

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

Χειριστής ανάθεσης

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

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

Μεταβλητή1 = Μεταβλητή2 = Μεταβλητή3;

Στη μεταβλητή1 εκχωρείται η τιμή ισότητας από τη λογική Boole, δηλ. Σωστό αν Μεταβλητή2 = Μεταβλητή3 ή Λάθος διαφορετικά.

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

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

Λύση #1 χρησιμοποιώντας μια προσωρινή μεταβλητή:
TemporaryVariable = Variable1;
Μεταβλητή1 = Μεταβλητή2;
Variable2 = TemporaryVariable;

Λύση #2:
Variable1 = Variable1 + Variable2;
Variable2 = Variable1 – Variable2;
Variable1 = Variable1 – Variable2;

Υπό όρους χειριστή

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

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

Εκτός από τις απλές και πολλαπλές συνθήκες, υπάρχει μια συντομευμένη μορφή του τελεστή υπό όρους: ?(Συνθήκη, Έκφραση1, Έκφραση2);

Εάν η συνθήκη είναι αληθής, τότε θα εκτελεστεί Έκφραση 1, σε διαφορετική περίπτωση - Έκφραση 2. Παράδειγμα κώδικα: ExpensiveProduct = ?(Product.Price>100000, True, False);

Στην πράξη, αντί για σύγκριση καταγράφει την τιμή Αληθής (Ψέμα) τύπος:

Αν Μεταβλητή = Αληθής Τότε
Και
Αν Μεταβλητή = Λάθος Τότε

οι ισοδύναμοι συμβολισμοί που χρησιμοποιούνται στην πραγματικότητα είναι:

Αν Μεταβλητή Τότε
Και
Αν ΟΧΙ Μεταβλητή Τότε

Κυκλικοί χειριστές

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

Βρόχο σε έναν πάγκο– κύκλος με σταθερό αριθμό επαναλήψεων. Η προϋπόθεση για την έξοδο από τον κύκλο είναι η υπέρβαση της οριακής τιμής. Παράδειγμα χρήσης για τον υπολογισμό της τιμής του Α!

A = 5;
Παραγοντικός = 1;
Για μετρητή = 1 με έναν κύκλο
Factorial = Factorial * Μετρητής;
EndCycle;

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

RemainingAmount = 1000;
Πρόσθετη τιμή προϊόντος = 243;
Ποσότητα = 0;
Ενώ υπολειπόμενο ποσό>0 κύκλος
Ποσότητα = Ποσότητα+1;
Υπόλοιπο = Υπολειπόμενο Ποσό – Ποσότητα*Τιμή πρόσθετου προϊόντος.
Τιμή πρόσθετου προϊόντος = Τιμή πρόσθετου προϊόντος * 0,8;
Τέλος Κύκλου
Ποσότητα = Ποσότητα-1;

Αυτός ο κύκλος υπολογίζει πόσες μονάδες ενός προϊόντος μπορούν να αγοραστούν για ένα δεδομένο ποσό (1000 ρούβλια) εάν, μετά την αγορά κάθε μονάδας ενός προϊόντος, η προηγούμενη τιμή του πολλαπλασιαστεί με συντελεστή 0,8. Η αρχική τιμή του προϊόντος είναι 243 ρούβλια.

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

Κάντε κύκλο στις συλλογές (άλλο όνομα για όλους).

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

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

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

Ποσό = 0;
Για κάθε στοιχείο από τον βρόχο πίνακα
Άθροισμα=Άθροισμα+Στοιχείο;
EndCycle;

Για κύκλους υπάρχουν ειδικούς χειριστές: Να συνεχίσειΚαι Αμβλώνω.

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

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

Αυτό ολοκληρώνει την πρώτη μας γνωριμία με την ανάπτυξη στην εσωτερική γλώσσα 1C.

Τι γίνεται με το Hello World; Δεν το έχουμε γράψει ακόμα, έτσι δεν είναι; Ναι, αλλά τίποτα δεν σας εμποδίζει να το κάνετε μόνοι σας, γιατί... Η γνώση είναι ΗΔΗ αρκετή. Λοιπόν, αν δεν λειτουργήσει, τότε μπορείτε να ρίξετε μια ματιά εδώ.

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

Η γλώσσα υποστηρίζει σύνταξη εντολών στα ρωσικά και τα αγγλικά. Οι ενσωματωμένες γλωσσικές διάλεκτοι για τις εκδόσεις 1C:7.0, 1C:7.5 και 1C:7.7 είναι συμβατές από κάτω προς τα πάνω με μικρές εξαιρέσεις. Οι διάλεκτοι για 1C:7x είναι συμβατές με το 1C:8x όσον αφορά τους κύριους τελεστές, αλλά διαφέρουν σημαντικά στον τρόπο με τον οποίο λειτουργούν με αντικείμενα εφαρμογής, με αποτέλεσμα να μην έχει ουσιαστικά νόημα η μεταφορά κώδικα από την πλατφόρμα 1C:7x στην Πλατφόρμα 1C: 8x.

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

  • Εγγραφο,
  • ημερολόγιο εγγράφων,
  • Συνεχής,
  • Θεραπεία,
  • Κανω ΑΝΑΦΟΡΑ,
  • ΜΕΤΑΦΟΡΑ,
  • Λογιστικό Σχέδιο,
  • Κατάλογος κ.λπ.

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

Οι τύποι αυτών των αντικειμένων μεταδεδομένων είναι Επιχειρηματικές διεργασίες, Έγγραφα, Εργασίες, Επεξεργασία, Εκθέσεις, Σχέδια τύπων και χαρακτηριστικών υπολογισμών, Λογαριασμοί, Μητρώα συσσώρευσης, υπολογισμοί και πληροφορίες, Κατάλογοι. Τα έργα που είναι γραμμένα στη γλώσσα 1C:Enterprise ονομάζονται διαμορφώσεις. Οι πωλήσεις, η υλοποίηση και η συντήρηση του 1C και των διαμορφώσεων του είναι οι κύριες εμπορικές δραστηριότητες των συνεργαζόμενων εταιρειών 1C.

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

Για παράδειγμα, το στοιχείο 1C++ επεκτείνει τη γλώσσα χρησιμοποιώντας πλήρες OOP. Η χρήση του διευρύνει τις δυνατότητες διαμόρφωσης 1C. Αυτό είναι ένα δωρεάν προϊόν που διανέμεται με την ανοιχτή άδεια GNU GPL.

Υπάρχει επίσης ένα δωρεάν έργο 2C που δεν χρησιμοποιεί ιδιόκτητες μονάδες από την 1C και άλλους κατασκευαστές λογισμικού. Αυτός είναι ένας επεκτάσιμος πυρήνας ενός συστήματος παρόμοιου με το 1C, ξαναγραμμένο από την αρχή, το οποίο διανέμεται ελεύθερα με την άδεια GNU GPL. Τα "ενσωματωμένα αντικείμενα" 1C, όπως καταχωρητές και κατάλογοι, είναι κλάσεις που μπορούν να παρακαμφθούν από τον προγραμματιστή εφαρμογών.

Αρχικά, η γλώσσα 1C είχε το όνομα εργασίας "1Sik", το οποίο προφερόταν "odynesik". Ωστόσο, γρήγορα εξαφανίστηκε από τη χρήση σε επίσημες πηγές. Όταν αυτή η ενσωματωμένη γλώσσα αναφέρεται σε έγγραφα, είναι πλέον σύνηθες να την αποκαλούμε "Γλώσσα Προγραμματισμού 1C". Επί αυτή τη στιγμήδεν έχει δικό του όνομα που να είναι βολικό για προφορική προφορά. Στο πλαίσιο της συζήτησης του πακέτου 1C:Enterprise, συχνά ονομάζεται απλώς "ενσωματωμένη γλώσσα".

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

Αναφορά ("Γεια, Κόσμος!");

Αυτός ο κωδικός θα λειτουργεί στην έκδοση 7.7 1C:Enterprise.

21.12.2010

Προηγούμενες δημοσιεύσεις:

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

1. Μια γλώσσα προγραμματισμού είναι, πρώτα απ' όλα, μια Γλώσσα.

Πριν ξεκινήσετε να μαθαίνετε μια γλώσσα, να είστε διανοητικά προετοιμασμένοι για το γεγονός ότι αυτή η διαδικασία δεν είναι γρήγορη. Για να μπορείτε να φανταστείτε συγκεκριμένα τι είναι η εκμάθηση μιας γλώσσας προγραμματισμού - είναι σχεδόν το ίδιο με την εκμάθηση μιας ξένης γλώσσας. Στο σχολείο μελετήσαμε τα πάντα ξένη γλώσσακαι όλοι καταλαβαίνουν πολύ καλά ότι η γνώση μιας γλώσσας δεν αρκεί μόνο για να μάθεις τη μετάφραση λέξεων από ένα λεξικό από μια ξένη γλώσσα στη μητρική σου γλώσσα. Για παράδειγμα, η φράση «Ξέρω Αγγλικά» μπορεί να ειπωθεί από ένα άτομο που είναι σε θέση: να διαβάσει ένα κείμενο στα αγγλικά, να μεταφράσει, να συνθέσει μια πρόταση χωρίς λάθη, να εκφραστεί προφορικά. Η μετάφραση ξένων λέξεων χωρίς τη δυνατότητα σωστής σύνταξης μιας πρότασης (διαβάστε τη σύνταξη μιας γλώσσας προγραμματισμού) σίγουρα δεν σημαίνει γνώση ξένης γλώσσας. Επομένως, Μάθημα 1 - μεταχειριστείτε την εκμάθηση μιας γλώσσας προγραμματισμού με τον ίδιο τρόπο που θα αντιμετωπίζατε την εκμάθηση μιας ξένης γλώσσας με στόχο την πλήρη κατοχή της.

2. Εξάσκηση.

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

Οποιαδήποτε επιχείρηση κινείται καλύτερα αν υπάρχει κίνητρο.Για εσάς στο μέλλον, οι δεξιότητες προγραμματισμού είναι μια χρηματική ανταμοιβή, καλή δουλειά, εύκολο κοινωνικό ασανσέρ κ.λπ. Δεν είναι μυστικό ότι το προϊόν λογισμικού 1C Enterprise είναι πολύ δημοφιλές στον μετασοβιετικό χώρο. Από τις δέκα εταιρείες, οι οκτώ χρησιμοποιούν το πρόγραμμα 1C για να καταγράφουν τις επιχειρηματικές τους δραστηριότητες. Κατά συνέπεια, χρειάζονται έναν διαχειριστή ή προγραμματιστή 1C που θα συντηρούσε και θα τροποποιούσε το πρόγραμμα. Φυσικά, μια τέτοια αγορά χρειάζεται ειδικούς 1C. Μερικές φορές οι εταιρείες είναι έτοιμες να προσλάβουν έναν όχι πολύ εξειδικευμένο υπάλληλο με δεξιότητες προγραμματισμού για έναν αξιοπρεπή μισθό με την προϋπόθεση της αυτοβελτίωσης. Και ακόμα κι αν δεν θέλετε να εργαστείτε για εμπορική εταιρεία ή franchise, ένας καλός καταρτισμένος προγραμματιστής θα μπορεί να βρει δουλειά σε ανταλλαγές ανεξάρτητων επαγγελματιών ή να πραγματοποιήσει προσαρμοσμένα έργα. Γενικά, ένας προγραμματιστής 1C δεν θα μείνει χωρίς δουλειά.

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

Σε αυτό το άρθρο θα εξετάσουμε μια τέτοια κατασκευή της γλώσσας προγραμματισμού 1C όπως Κύκλοι.

Υπάρχουν τρεις τρόποι οργάνωσης βρόχων.

  1. Βρόχοι χρησιμοποιώντας μια λογική έκφραση (εκτελείται μέχρι λογική έκφρασηαληθής)
  2. Περιήγηση στις συλλογές

Ας δούμε καθεμία από αυτές τις μεθόδους.

Βρόχοι χρησιμοποιώντας μια μεταβλητή μετρητή βρόχου

Σύνταξη:

Για< Переменная> = < НачальноеЗначение>Με< КонечноеЗначение>CycleEndCycle;

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

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

Για Μετρητής = 0 έως 1000 Κύκλος Τελικού Κύκλου.

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

Για Μετρητής = 0 έως 1000 Κύκλος Μετρητής = Μετρητής + 10 ; EndCycle ;

Βρόχοι με χρήση Boolean εκφράσεων

Σύνταξη:

Αντίο< ЛогическоеВыражение>CycleEndCycle;

Απόρριψη = Λάθος ; GeneratorRandom = NewRandomNumberGenerator(1) ; Κύκλος μέχρι αποτυχίας RandomNumber = GeneratorRank. RandomNumber(0, 10); Αν RandomNumber > 5 Τότε Failure = True ; Τέλος εαν ; EndCycle ;

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

Περιήγηση στις συλλογές

Στη γλώσσα προγραμματισμού 1C υπάρχει κάτι σαν συλλογή. Είναι ένα σύνολο στοιχείων που περιέχονται σε ένα αντικείμενο.

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

Για κάθε< ЭлементКоллекции>Από< Коллекция>CycleEndCycle;

Εδώ <ЭлементКоллекции> είναι μια μεταβλητή στην οποία τοποθετούνται διαδοχικά στοιχεία από τη συλλογή. Και μέσα στον βρόχο επεξεργάζεται ανάλογα.
Για παράδειγμα, θα σας δώσω έναν βρόχο διέλευσης των σειρών ενός πίνακα τιμών. Ας λέγεται Επιτραπέζια Προϊόντακαι μοιάζει με αυτό:

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

Για κάθε γραμμή πίνακα από Όνομα κύκλου προϊόντων πίνακα = Σειρά πίνακα. Ονομα; Τιμή = TableRow. Τιμή; Message = New MessageToUser; Μήνυμα. Κείμενο = "Όνομα προϊόντος:"

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

Αριθμός σειρών = TableProducts. Ποσότητα() ; Για Μετρητής = 0 Κατά Αριθμό Σειρών - 1 Σειρά Πίνακα Κύκλου = Πίνακα Προϊόντα[ Μετρητής] ; Όνομα = Σειρά πίνακα. Ονομα; Τιμή = TableRow. Τιμή; Message = New MessageToUser; Μήνυμα. Κείμενο = "Όνομα προϊόντος:"+ Όνομα + "; Τιμή: " + Τιμή; Μήνυμα. Να αναφέρουν() ; EndCycle ;

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

Βοηθητικούς Χειριστές

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

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

Για Μετρητής = 0 Επί 100 Κύκλος Αν Μετρητής = 0 Τότε Συνέχεια ; Τέλος εαν ; Αν Μετρητής = 4 Τότε Ακύρωση ; Τέλος εαν ; Αποτέλεσμα = 1 / Μετρητής; Message = New MessageToUser; Μήνυμα. Κείμενο = Συμβολοσειρά (Αποτέλεσμα) ; Μήνυμα. Να αναφέρουν() ; EndCycle ;

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

1. Τι είναι η γλώσσα 1C;
2. Μέθοδοι, μεταβλητές, άλλες γλωσσικές κατασκευές.

Τι είναι η γλώσσα 1C;

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

1. ενότητα εφαρμογής

2. κοινές ενότητες

3. μονάδα αντικειμένου

4. ενότητα φόρμας.

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

Μέθοδοι, μεταβλητές, γλωσσικές κατασκευές

Μεταβλητέςχρησιμοποιούνται για την αποθήκευση δεδομένων κατά τη διάρκεια μιας συνεδρίας χρήστη. Μια μεταβλητή είναι μια λέξη που ξεκινά με ένα γράμμα (ρωσικά ή αγγλικά) ή με μια υπογράμμιση «_» και αποτελείται από γράμματα, αριθμούς και υπογράμμιση.
Για παράδειγμα :

  • Αυτή είναι μια Μεταβλητή
  • _Αυτή είναι μια μεταβλητή
  • _Αυτό είναι 1_Μεταβλητή

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

Η περίπτωση των γραμμάτων στον κώδικα δεν λαμβάνεται υπόψη, δηλ. οι μεταβλητές "Variable1" και "VARIABLE1" είναι οι ίδιες κατά την εκτέλεση κώδικα για το πρόγραμμα. Είναι επιθυμητό τα ονόματα των μεταβλητών να έχουν νόημα. Αυτό βελτιώνει την αναγνωσιμότητα του κώδικα.

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

Για παράδειγμα: Αντικείμενο «Αριθμ. Απόδειξης Πώλησης 00018 με ημερομηνία 01/01/2005».
Μπορούμε να διακρίνουμε αυτήν την απόδειξη πώλησης από άλλες αποδείξεις πώλησης με βάση τα στοιχεία που περιέχει. Αυτό είναι το χαρακτηριστικό "Number" με την τιμή "00018"( τύπου string ) και το χαρακτηριστικό "Date"( τύπου ημερομηνία ) με την τιμή «01/01/2005». Το μόνο πράγμα που μπορούσαμε να προσδιορίσουμε από ένα αντικείμενο χωρίς να γνωρίζουμε τις τιμές των στοιχείων του ήταν ο τύπος του «Απόδειξη Πώλησης».
Μέθοδοιείναι μικρές και συνήθως πλήρεις οδηγίες.

Για παράδειγμα, η μέθοδος συστήματος "CurrentDate ()" Από το όνομα είναι σαφές ότι θα επιστρέψει την τρέχουσα ημερομηνία του υπολογιστή. Ή ας πούμε ότι μπορείτε να δημιουργήσετε μια μέθοδο " StringContainsNumber(Η συμβολοσειρά ελέγχεται)" που θα επιστρέψει την απάντηση Αληθήςή Ψέμα, εδώ περνάμε παραμέτρους σε αγκύλες π.χ. δεδομένα, λειτουργία στα οποία η μέθοδος πρέπει να εκτελέσει ορισμένες ενέργειες. Και οι δύο μέθοδοι που εξετάζονται είναι συναρτήσεις· η γλώσσα έχει επίσης μεθόδους διαδικασίας. Υπάρχει μία διαφορά μεταξύ τους: Η συνάρτηση πρέπει να επιστρέψει μια τιμή.

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

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

Για κάθε Στοιχείο Συλλογής Από Όνομα Συλλογής Κύκλος Τελικός Κύκλος.

Το παράδειγμα δείχνει ένα σχέδιο για επανάληψη πάνω από τα στοιχεία μιας συλλογής. Αυτό το σχέδιο ονομάζεται κύκλος . Οι περισσότεροι τύποι αντικειμένων, καθώς και οι λεπτομέρειές τους, είναι συλλογές που μπορούν να επαναληφθούν με τον παραπάνω τρόπο και να αποκτήσουν πρόσβαση σε ένα στοιχείο της συλλογής προσδιορίζοντας το ευρετήριό της (Όνομα συλλογής[0]). Όλες οι συλλογές ξεκινούν με ένα στοιχείο του οποίου ο δείκτης = 0.