Λειτουργίες αναζήτησης συμβολοσειρών σε 1s. Τι είναι η γρήγορη αναζήτηση

Αρχικές σημειώσεις από το γυαλί

02/07/2013 Αναζήτηση με συμβολοσειρά

Εφαρμόστηκε στην έκδοση 8.3.3.641.

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

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

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

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

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

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

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

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

Μπορούν επίσης να αναζητήσουν πολλές γνωστές λέξεις. Οι ημιτελείς λέξεις θα συμπληρωθούν αυτόματα με πιθανούς συνδυασμούς:

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

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

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

Μπορείτε, εάν είναι απαραίτητο, να παρακάμψετε όλες τις αναφερόμενες ιδιότητες κατά την εκτέλεση της εφαρμοζόμενης λύσης.

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

Στον διακομιστή - στη μονάδα διαχείρισης του αντικειμένου στα δεδομένα του οποίου εκτελείται η αναζήτηση. Στο χειριστή εκδηλώσεων ProcessingDataGettingChoice :

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

Οι συμβολοσειρές στο 1C 8.3 στην ενσωματωμένη γλώσσα 1C είναι τιμές πρωτόγονου τύπου Γραμμή... Οι αξίες αυτού του τύπουπεριέχει μια συμβολοσειρά Unicode αυθαίρετου μήκους. Οι μεταβλητές τύπου συμβολοσειράς είναι ένα σύνολο χαρακτήρων που περικλείονται σε εισαγωγικά.

Παράδειγμα 1. Ας δημιουργήσουμε μια μεταβλητή συμβολοσειράς με κείμενο.

StringVariable = "Γεια σου κόσμο!";

Λειτουργίες για εργασία με χορδές στο 1c 8.3

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

Str Μήκος

StrLength (<Строка>) ... Επιστρέφει τον αριθμό των χαρακτήρων που περιέχονται στη συμβολοσειρά που έχει περάσει στην παράμετρο.

Παράδειγμα 2. Ας μετρήσουμε τον αριθμό των χαρακτήρων στη συμβολοσειρά "Hello world!"

String = "Γεια σου κόσμο!"; Αριθμός χαρακτήρων = StrLength (String); Αναφορά (αριθμός χαρακτήρων);

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

Συντομογραφία

AbbrL (<Строка>) ... Περικοπεί ασήμαντους χαρακτήρες στα αριστερά του πρώτου σημαντικού χαρακτήρα στη συμβολοσειρά.
Μικροί χαρακτήρες:

  • χώρος;
  • μη σπαστικός χώρος?
  • κατάταξη εις πίνακα;
  • επιστροφή μεταφοράς?
  • μετάφραση γραμμής?
  • μετάφραση της φόρμας (σελίδα).

Παράδειγμα 3. Αφαιρέστε όλα τα κενά από την αριστερή πλευρά της γραμμής "κόσμος!" και επισυνάψτε τη συμβολοσειρά "Γεια" σε αυτήν.

String = συντομευμένο ("ειρήνη!"); String = "Hello" + String; Αναφορά (συμβολοσειρά);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η έξοδος της γραμμής "Hello world!"

Συντομογραφία

Συντομογραφία (<Строка>) ... Περικοπεί ασήμαντους χαρακτήρες στα δεξιά του πρώτου σημαντικού χαρακτήρα στη συμβολοσειρά.

Παράδειγμα 4. Φόρμα "Hello" και "World!" τη φράση "Γεια σου κόσμο!"

String = συντομευμένο ("Hello") + "" + συντομευμένο ("world!"); Αναφορά (συμβολοσειρά);

SokrLP

SocrLP (<Строка>) ... Περικοπεί ασήμαντους χαρακτήρες στα δεξιά του πρώτου σημαντικού χαρακτήρα της συμβολοσειράς και επίσης κόβει ασήμαντους χαρακτήρες στα αριστερά του πρώτου σημαντικού χαρακτήρα στη συμβολοσειρά. Αυτή η λειτουργίαχρησιμοποιείται συχνότερα από τα δύο προηγούμενα, αφού είναι πιο ευέλικτο.

Παράδειγμα 5. Αφαιρέστε ασήμαντους χαρακτήρες αριστερά και δεξιά στο όνομα του αντισυμβαλλομένου.

Counterparty = Directories.Contractors.NaytiPoRequisite ("INN", "0777121211"); CounterpartyObject = Counterparty.GetObject (); CounterpartyObject.Name = ShortLP (CounterpartyObject.Name); CounterpartyObject.Write ();

ένα λιοντάρι

Ενα λιοντάρι(<Строка>, <ЧислоСимволов>) ... Λαμβάνει τους πρώτους χαρακτήρες μιας συμβολοσειράς, ο αριθμός των χαρακτήρων καθορίζεται στην παράμετρο Αριθμός χαρακτήρων.

Παράδειγμα 6. Αφήστε τη δομή Υπάλληλοςπεριέχει το όνομα, το επώνυμο και το πατρώνυμο του υπαλλήλου. Λάβετε μια συμβολοσειρά με το επώνυμο και τα αρχικά.

InitialName = Leo (Όνομα εργαζομένου, 1); Patronymic Initial = Leo (Employee, Patronymic, 1); FullName = Employee.LastName + "" + InitialName + "." + Αρχική του Πατρώνυμου + ".";

σωστά

Σωστά (<Строка>, <ЧислоСимволов>) ... Λαμβάνει τους τελευταίους χαρακτήρες μιας συμβολοσειράς, ο αριθμός των χαρακτήρων καθορίζεται στην παράμετρο Αριθμός χαρακτήρων.Εάν ο καθορισμένος αριθμός χαρακτήρων υπερβαίνει το μήκος της συμβολοσειράς, τότε επιστρέφεται ολόκληρη η συμβολοσειρά.

Παράδειγμα 7. Ας υποθέσουμε ότι το τέλος μιας μεταβλητής συμβολοσειράς περιέχει μια ημερομηνία με τη μορφή "yyyymmdd", λάβετε μια συμβολοσειρά με ημερομηνία και μετατρέψτε την στον τύπο ημερομηνία.

String = "Τρέχουσα ημερομηνία: 20170910"; StringDate = Δεξιά (String, 8); Ημερομηνία = Ημερομηνία (StringDate)?

Τετάρτη

Τετάρτη (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) ... Παίρνει μια υπο -συμβολοσειρά από μια συμβολοσειρά που έχει περάσει ως παράμετρος Γραμμή, ξεκινώντας από τον χαρακτήρα του οποίου ο αριθμός καθορίζεται στην παράμετρο StartNumberκαι το μήκος πέρασε στην παράμετρο Αριθμός χαρακτήρων.Η αρίθμηση των χαρακτήρων στη γραμμή ξεκινά από 1. Αν η παράμετρος StartNumberκαθορίζεται μια τιμή μικρότερη ή ίση με μηδέν, τότε η παράμετρος παίρνει την τιμή 1. Εάν η παράμετρος Αριθμός συμβόλωνδεν καθορίζεται, τότε επιλέγονται χαρακτήρες μέχρι το τέλος της γραμμής.

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

Line = "Περιοχή: 99 Μόσχα"; Περιοχή = Τετ (Γραμμή, 9, 2);

Αναζήτηση

Εύρημα (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) ... Αναζητά τον καθορισμένο υποσύμβολο σε μια συμβολοσειρά, επιστρέφει τον αριθμό θέσης του πρώτου χαρακτήρα της υπο -συμβολοσειράς που βρέθηκε. Εξετάστε τις παραμέτρους αυτής της συνάρτησης:

  • Γραμμή... Συμβολοσειρά πηγής;
  • SubstringSearch... Το υπό συμβολοσειρά προς αναζήτηση.
  • Κατεύθυνση αναζήτησης... Καθορίζει την κατεύθυνση αναζήτησης μιας υποσύμβασης σε μια συμβολοσειρά. Μπορεί να λάβει τιμές:
    • Αναζήτηση κατεύθυνσης. Από την αρχή;
    • Αναζήτηση κατεύθυνσης.;
  • Αρχική θέση... Καθορίζει τη θέση στη συμβολοσειρά από την οποία ξεκινά η αναζήτηση.
  • Αριθμός καταχωρήσεων... Καθορίζει τον αριθμό εμφανίσεων της επιθυμητής υποσύμβασης στην αρχική συμβολοσειρά.

Παράδειγμα 9. Στη γραμμή "Γεια σου κόσμο!" καθορίστε τη θέση της τελευταίας εμφάνισης του συμβόλου "και".

PositionNumber = StrNayti ("Hello world!", "And", DirectionSearch.End); Αναφορά (Αριθμός θέσης).

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση του αριθμού της τελευταίας εμφάνισης του συμβόλου "και": 9.

VReg

BReg (<Строка>) ... Μετατρέπει όλους τους χαρακτήρες της καθορισμένης συμβολοσειράς στο 1s 8 σε κεφαλαία.

Παράδειγμα 10. Μετατρέψτε τη συμβολοσειρά "γεια σου κόσμο!" σε κεφαλαία γράμματα.

StringBreg = BReg ("γεια σου κόσμο!"); Αναφορά (StringVreg);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "HELLO WORLD!"

Nreg

HPreg (<Строка>) ... Μετατρέπει όλους τους χαρακτήρες της καθορισμένης συμβολοσειράς στο 1s 8 σε πεζά.

Παράδειγμα 11. Μετατρέψτε τη συμβολοσειρά "HELLO WORLD!" για πεζά.

StringNreg = НReg ("ΓΕΙΑ ΣΑΣ ΚΟΣΜΟΣ!"); Αναφορά (StringVreg);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η έξοδος της γραμμής "γεια σου κόσμο!"

Τρεγκ

Treg (<Строка>) ... Μετατρέπει μια συμβολοσειρά ως εξής: ο πρώτος χαρακτήρας κάθε λέξης μετατρέπεται σε κεφαλαίο, οι υπόλοιποι χαρακτήρες της λέξης μετατρέπονται σε πεζά.

Παράδειγμα 12. Με κεφαλαία γράμματα τα πρώτα γράμματα των λέξεων στη συμβολοσειρά "γεια σου κόσμο!"

StringTreg = Treg ("γεια σου κόσμο!"); Αναφορά (StringTreg);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "Hello World!"

Σύμβολο

Σύμβολο(<КодСимвола>) ... Παίρνει έναν χαρακτήρα με τον κώδικα Unicod.

Παράδειγμα 13. Ας προσθέσουμε αριστερά και δεξιά στη γραμμή "Hello World!" σύμβολο

StringWithStars = Σύμβολο ("9733") + "Hello World!" + Σύμβολο ("9733"); Αναφορά (StringWithStars);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η έξοδος της γραμμής "★ Hello World! ★"

Κωδικός συμβόλου

SymbolCode (<Строка>, <НомерСимвола>) ... Παίρνει τον κωδικό χαρακτήρα Unicode από τη συμβολοσειρά που καθορίζεται στην πρώτη παράμετρο, και βρίσκεται στη θέση που καθορίζεται στη δεύτερη παράμετρο.

Παράδειγμα 14. Μάθετε τον κωδικό του τελευταίου χαρακτήρα στο "Hello World!"

String = "Hello World!"; CharacterCode = CharacterCode (String, StrLength (String)); Αναφορά (SymbolCode);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση του κωδικού συμβόλου "!" - 33.

Κενή γραμμή

Κενή γραμμή (<Строка>) ... Ελέγχει εάν μια συμβολοσειρά περιέχει μόνο ασήμαντους χαρακτήρες, δηλαδή αν είναι κενή.

Παράδειγμα 15. Ελέγξτε εάν μια συμβολοσειρά που αποτελείται από τρία κενά είναι κενή.

Empty = EmptyString (""); Αναφορά (Άδειο);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της λέξης "Ναι" (έκφραση συμβολοσειράς της λογικής τιμής Αληθής).

PageReplace

PageReplace (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) ... Βρίσκει όλες τις εμφανίσεις της δευτερεύουσας συμβολοσειράς αναζήτησης στην αρχική συμβολοσειρά και την αντικαθιστά με την υποκατηγορία αντικατάστασης.

Παράδειγμα 16. Στη γραμμή "Hello World!" αντικαταστήστε τη λέξη "Ειρήνη" με τη λέξη "Φίλοι".

String = StrReplace ("Hello World!", "World", "Friends"); Αναφορά (συμβολοσειρά);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση της γραμμής "Γεια σας φίλοι!"

StrNumberStrings

StrNumber of Lines (<Строка>) ... Μετράει τον αριθμό των γραμμών σε μια συμβολοσειρά πολλαπλών γραμμών. Να παω σε νέα γραμμήστο 1s 8 χρησιμοποιείται το σύμβολο ΥΣΤΕΡΟΓΡΑΦΟ(χαρακτήρας ροής γραμμής).

Παράδειγμα 17. Προσδιορίστε τον αριθμό των γραμμών στο κείμενο:
"Πρώτη γραμμή
Δεύτερη γραμμή
Τρίτη γραμμή "

Number = StrNumberStrings ("First line" + Symbols.PS + "Second line" + Symbols.PS + "Third line"); Αναφορά (αριθμός);

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

StrGetString

StrGetString (<Строка>, <НомерСтроки>) ... Παίρνει μια συμβολοσειρά σε μια συμβολοσειρά πολλαπλών γραμμών κατά τον αριθμό της. Η αρίθμηση γραμμών ξεκινά από το 1.

Παράδειγμα 18. Λάβετε την τελευταία γραμμή στο κείμενο:
"Πρώτη γραμμή
Δεύτερη γραμμή
Τρίτη γραμμή "

Text = "First line" + Symbols.PS + "Second line" + Symbols.PS + "Third line"? LastString = StrGetString (Κείμενο, StnNumberLines (Κείμενο)); Αναφορά (LastLine);

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

StrNumber of Occurrences

StrNumber of Occurrences (<Строка>, <ПодстрокаПоиска>) ... Επιστρέφει τον αριθμό εμφανίσεων της καθορισμένης υποσύμβασης σε μια συμβολοσειρά. Η λειτουργία έχει διάκριση πεζών -κεφαλαίων.

Παράδειγμα 19. Καθορίστε πόσες φορές το γράμμα "c" εμφανίζεται στη γραμμή "Γραμμές σε 1s 8.3 και 8.2", ανεξάρτητα από την περίπτωσή του.

Γραμμή = "Γραμμές σε 1s 8.3 και 8.2"; Αριθμός Συμβάντων = StrNumber of Occurrences (Vreg (String), "S"); Αναφορά (Αριθμός Συμβάντων);

Το αποτέλεσμα της εκτέλεσης αυτού του κώδικα θα είναι η εμφάνιση του αριθμού των εμφανίσεων: 2.

PageStarts With

PageStarts With (<Строка>, <СтрокаПоиска>) ... Ελέγχει εάν η συμβολοσειρά που πέρασε στην πρώτη παράμετρο ξεκινά με τη συμβολοσειρά στη δεύτερη παράμετρο.

Παράδειγμα 20. Προσδιορίστε εάν ο ΑΦΜ του επιλεγμένου αντισυμβαλλομένου ξεκινά με τον αριθμό 1. Αφήστε τη μεταβλητή Αντισυμβαλλόμενο Εργολάβοι.

ΑΦΜ = Counterparty.INN; Ξεκινά μεUnits = StrStarts with (INN, "1"); If BeginsUnits Then // Your Code EndIf;

PageEnds With

PageEnds With (<Строка>, <СтрокаПоиска>) ... Ελέγχει εάν η συμβολοσειρά που πέρασε στην πρώτη παράμετρο τελειώνει με τη συμβολοσειρά στη δεύτερη παράμετρο.

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

ΑΦΜ = Counterparty.INN; Τελειώνει με δύο = Str Τελειώνει με (INN, "2"); If Ends WithDouble Τότε // Ο κωδικός σας EndIf;

PageSplit

StrSplit (<Строка>, <Разделитель>, <ВключатьПустые>) ... Χωρίζει μια συμβολοσειρά σε μέρη χρησιμοποιώντας τους καθορισμένους χαρακτήρες οριοθέτησης και γράφει τις συμβολοσειρές που προκύπτουν σε έναν πίνακα. Η πρώτη παράμετρος αποθηκεύει την αρχική συμβολοσειρά, η δεύτερη περιέχει τη συμβολοσειρά που περιέχει το διαχωριστικό, η τρίτη καθορίζει αν θα γραφτούν κενές συμβολοσειρές στον πίνακα (από προεπιλογή Αληθής).

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

String = "1; 2; 3"; Array = StrSplit (String, ";"); Για RV = 0 By Array.Quantity () - 1 Cycle Attempt Array [Rd] = Number (AbbrLP (Array [Rd])); Πίνακας εξαίρεσης [Сч] = 0; Τέλος απόπειρων Τέλος βρόχου.

Ως αποτέλεσμα της εκτέλεσης, θα ληφθεί ένας πίνακας με αριθμούς από 1 έως 3.

StrConnect

StrConnect (<Строки>, <Разделитель>) ... Μετατρέπει έναν πίνακα συμβολοσειρών από την πρώτη παράμετρο σε μια συμβολοσειρά που περιέχει όλα τα στοιχεία του πίνακα, χωρισμένα με τον οριοθέτη που καθορίζεται στη δεύτερη παράμετρο.

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

Για Rd = 0 By Array.Quantity () - 1 Loop Array [Rd] = String (Array [Rb]); Τέλος κύκλου. String = StrConnect (Array, ";");

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

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

Per1 = "Λέξη 1";
Per2 = "Λέξη 2";
Per3 = Per1 + "" + Per2;

Τελικά Per3θα σημάνει " Λέξη 1 Λέξη 2.

Επιπλέον, τα συστήματα 1C: Enterprise 8 παρέχουν λειτουργίες για εργασία με χορδές. Ας εξετάσουμε τα κυριότερα:

Εισαγωγή συμβολοσειράς (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — η συνάρτηση προορίζεται να εμφανίσει ένα παράθυρο διαλόγου στο οποίο ο χρήστης μπορεί να καθορίσει την τιμή μιας μεταβλητής του τύπου Γραμμή... Παράμετρος <Строка> απαιτείται και περιέχει το όνομα της μεταβλητής στην οποία θα γραφτεί η συμβολοσειρά που έχει εισαχθεί. Παράμετρος <Подсказка> προαιρετικός είναι ο τίτλος του πλαισίου διαλόγου. Παράμετρος <Длина> προαιρετικό, υποδεικνύει το μέγιστο μήκος της συμβολοσειράς εισόδου. Η προεπιλογή είναι μηδέν, που σημαίνει απεριόριστο μήκος. Παράμετρος <Многострочность> προαιρετικός. Καθορίζει τη λειτουργία εισαγωγής για κείμενο πολλαπλών γραμμών: True-εισαγωγή κειμένου πολλών γραμμών με διαχωριστές γραμμών. Λάθος - εισαγωγή μιας απλής συμβολοσειράς.

Η συμβολοσειρά μπορεί να εισαχθεί και να λάβει τον κωδικό χαρακτήρα Unicode:

Σύμβολο(<КодСимвола>) — ο κωδικός εισάγεται ως αριθμός.

Γράμμα = Σύμβολο (1103); // ΕΙΜΑΙ

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

SymbolCode (<Строка>, <НомерСимвола>) — επιστρέφει τον καθορισμένο αριθμό χαρακτήρων Unicode ως αριθμό.

Λειτουργίες μετατροπής περιπτώσεων:

BReg (<Строка>) - μετατρέπει όλους τους χαρακτήρες της συμβολοσειράς σε κεφαλαία.

HPreg (<Строка>) - μετατρέπει όλους τους χαρακτήρες της συμβολοσειράς σε πεζά.

Treg (<Строка>) - μετατρέπει όλους τους χαρακτήρες σε μια συμβολοσειρά σε κεφαλαία. Δηλαδή, τα πρώτα γράμματα σε όλες τις λέξεις μετατρέπονται σε κεφαλαία και τα υπόλοιπα γράμματα σε πεζά.

Λειτουργίες για αναζήτηση και αντικατάσταση χαρακτήρων σε μια συμβολοσειρά:

Εύρημα(<Строка>, <ПодстрокаПоиска>) - βρίσκει τον αριθμό χαρακτήρων της εμφάνισης του υποτομέα αναζήτησης. Για παράδειγμα:

Εύρεση ("String", "Oka"); // 4

Εύρημα (<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) - βρίσκει τον αριθμό του χαρακτήρα της εμφάνισης της υποσύμβασης αναζήτησης, ο αριθμός της εμφάνισης υποδεικνύεται στην αντίστοιχη παράμετρο. Σε αυτήν την περίπτωση, η αναζήτηση ξεκινά με έναν χαρακτήρα του οποίου ο αριθμός καθορίζεται στην παράμετρο Αρχική θέση.Η αναζήτηση είναι δυνατή από την αρχή ή από το τέλος της συμβολοσειράς. Για παράδειγμα:

Number4 Occurrences = StrFind ( «Αμυντική ικανότητα», "o", Κατεύθυνση αναζήτησης. Από την αρχή, 1, 4); // 7

PageReplace (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - βρίσκει όλες τις εμφανίσεις της υποσύμβασης αναζήτησης στην αρχική συμβολοσειρά και την αντικαθιστά με την υποκατηγορία αντικατάστασης.

StrReplace ("String", "Oka", ""); // σελίδα

Κενή γραμμή (<Строка>) - ελέγχει τη συμβολοσειρά για σημαντικούς χαρακτήρες. Εάν δεν υπάρχουν σημαντικοί χαρακτήρες ή καθόλου χαρακτήρες, τότε η τιμή επιστρέφεται Αληθής... Σε διαφορετική περίπτωση - Ψέμα.

StrNumber of Occurrences (<Строка>, <ПодстрокаПоиска>) - υπολογίζει τον αριθμό των εμφανίσεων της υποσύμβασης αναζήτησης στην αρχική συμβολοσειρά.

StrNumber of Occurrences ( "Μελέτη, μελέτη και μελέτη ξανά", "μελέτη" , "" ) ; // 3

Πρότυπο σελίδας (<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — αντικαθιστά τις παραμέτρους στη συμβολοσειρά κατά αριθμό. Η γραμμή πρέπει να περιέχει δείκτες υποκατάστασης της φόρμας: "% 1 ..% N". Οι δείκτες αριθμούνται ξεκινώντας από το 1. Εάν η τιμή της παραμέτρου Απροσδιόριστος, αντικαθίσταται μια κενή συμβολοσειρά.

Πρότυπο σελίδας ( "Παράμετρος 1 =% 1, παράμετρος 2 =% 2", "1" , "2" ) ; // Παράμετρος 1 = 1, Παράμετρος 2 = 2

Λειτουργίες μετατροπής συμβολοσειράς:

Ενα λιοντάρι(<Строка>, <ЧислоСимволов>) - επιστρέφει πρώτα τους πρώτους χαρακτήρες της συμβολοσειράς.

Σωστά (<Строка>, <ЧислоСимволов>) - επιστρέφει τους τελευταίους χαρακτήρες της συμβολοσειράς.

Τετάρτη (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - επιστρέφει μια συμβολοσειρά μήκους<ЧислоСимволов>ξεκινώντας από τον χαρακτήρα<НачальныйНомер>.

AbbrL (<Строка>) περικόπτει ασήμαντους χαρακτήρες στα αριστερά του πρώτου σημαντικού χαρακτήρα στη συμβολοσειρά.

Συντομογραφία (<Строка>) - κόβει ασήμαντους χαρακτήρες στα δεξιά του τελευταίου σημαντικού χαρακτήρα στη συμβολοσειρά.

SocrLP (<Строка>) - κόβει ασήμαντους χαρακτήρες στα αριστερά του πρώτου σημαντικού χαρακτήρα στη γραμμή και στα δεξιά του τελευταίου σημαντικού χαρακτήρα στη γραμμή.

StrGetString (<Строка>, <НомерСтроки>) - παίρνει μια συμβολοσειρά από μια σειρά πολλαπλών γραμμών κατά αριθμό.

Άλλες λειτουργίες:

StrLength (<Строка>) - επιστρέφει τον αριθμό των χαρακτήρων σε μια συμβολοσειρά.

StrNumber of Lines (<Строка>) - επιστρέφει τον αριθμό των γραμμών σε μια συμβολοσειρά πολλαπλών γραμμών. Μια γραμμή θεωρείται νέα αν διαχωρίζεται από την προηγούμενη γραμμή με έναν χαρακτήρα νέας γραμμής.

Συγκρίνω (<Строка1>, <Строка2> ) - συγκρίνει δύο συμβολοσειρές, χωρίς διάκριση πεζών -κεφαλαίων. Η συνάρτηση λειτουργεί με τον ίδιο τρόπο όπως ένα αντικείμενο Σύγκριση Αξιών... Επιστροφές:

  • 1 - εάν η πρώτη γραμμή είναι μεγαλύτερη από τη δεύτερη
  • -1 - εάν η δεύτερη γραμμή είναι μεγαλύτερη από την πρώτη
  • 0 - εάν οι συμβολοσειρές είναι ίσες

Σύγκριση ("Πρώτη γραμμή", "Δεύτερη γραμμή"). // 1

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

PageReplace (Number, Leo (Number, 3), "");

Όταν κοίταξα τον βοηθό σύνταξης, μου άρεσε τόσο πολύ που ήθελα να γράψω εργασία με συμβολοσειρές στο 1C: Enterprise.

Μια συμβολοσειρά στο 1C αναφέρεται σε έναν πρωτόγονο τύπο δεδομένων.

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

Καθορισμός συμβολοσειράς
Call = "Γεια σας επιβάτη";

Χορδές πολλαπλών γραμμών τυπικές διαμορφώσειςδημιουργούνται συχνότερα χρησιμοποιώντας τον κατακόρυφο διαχωριστή "|":
String = "Multiline
| συμβολοσειρά
| γράφω
| κείμενο ";

Το εισαγωγικό μέσα στη συμβολοσειρά καθορίζεται με διπλά εισαγωγικά.
String = "" Κείμενο σε εισαγωγικά "";

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

Λειτουργίες συμβολοσειράς

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

BReg (<Строка>) - Η συνάρτηση μετατρέπει όλους τους χαρακτήρες της συμβολοσειράς σε κεφαλαία.

SymbolCode (<Строка>, <НомерСимвола>) - Η συνάρτηση λαμβάνει τον κωδικό του χαρακτήρα που βρίσκεται στη συμβολοσειρά που έχει περάσει στη θέση με τον καθορισμένο αριθμό.

Ενα λιοντάρι(<Строка>, <ЧислоСимволов>) - Η συνάρτηση επιλέγει τους πρώτους χαρακτήρες της συμβολοσειράς από αριστερά.

Εύρημα(<Строка>, <ПодстрокаПоиска>) - Η συνάρτηση βρίσκει την εμφάνιση της συμβολοσειράς αναζήτησης ως υπο -συμβολοσειρά στην αρχική συμβολοσειρά.

HPreg (<Строка>) - Η συνάρτηση μετατρέπει όλους τους χαρακτήρες της συμβολοσειράς σε πεζά.

Σωστά (<Строка>, <ЧислоСимволов>) - Αυτή η λειτουργία διαφέρει από τις λειτουργίες Αριστερά στο ότι επιλέγει τους τελευταίους χαρακτήρες της συμβολοσειράς στα δεξιά.

Κενή γραμμή (<Строка>) - Η συνάρτηση ελέγχει τη συμβολοσειρά για σημαντικούς χαρακτήρες.

Σύμβολο(<КодСимвола>) - Η συνάρτηση μετατρέπει τον κώδικα χαρακτήρων σε μια συμβολοσειρά που περιέχει τον χαρακτήρα.

AbbrL (<Строка>) - Η συνάρτηση κόβει ασήμαντους χαρακτήρες στα αριστερά του πρώτου σημαντικού χαρακτήρα στη συμβολοσειρά.

SocrLP (<Строка>) - Η συνάρτηση αφαιρεί ασήμαντους χαρακτήρες στα αριστερά του πρώτου σημαντικού χαρακτήρα στη γραμμή και κενά στα δεξιά του τελευταίου σημαντικού χαρακτήρα στη γραμμή.

Συντομογραφία (<Строка>) - Η συνάρτηση κόβει ασήμαντους χαρακτήρες στα δεξιά του τελευταίου σημαντικού χαρακτήρα της συμβολοσειράς.

Τετάρτη (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - Η συνάρτηση επιλέγει μια συμβολοσειρά χαρακτήρων ξεκινώντας από έναν χαρακτήρα<НачальныйНомер>, συνολικά<ЧислоСимволов>.

StrLength (<Строка>) - Η συνάρτηση παίρνει τον αριθμό των χαρακτήρων σε μια συμβολοσειρά.

PageReplace (<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - Η συνάρτηση βρίσκει όλες τις εμφανίσεις της υπο -συμβολοσειράς αναζήτησης στην αρχική συμβολοσειρά και την αντικαθιστά με την υποκατηγορία αντικατάστασης.

StrGetString (<Строка>, <НомерСтроки>) - Η συνάρτηση λαμβάνει μια συμβολοσειρά πολλών γραμμών με αριθμό.

StrNumber of Occurrences (<Строка>, <ПодстрокаПоиска>) - Η συνάρτηση υπολογίζει τον αριθμό των εμφανίσεων της υποσύμβασης αναζήτησης στην αρχική συμβολοσειρά.

StrNumber of Lines (<Строка>) - Η συνάρτηση μετρά τον αριθμό των γραμμών σε μια συμβολοσειρά πολλαπλών γραμμών. Σε μια συμβολοσειρά πολλαπλών γραμμών, οι γραμμές χωρίζονται με χαρακτήρες ροής γραμμών.

Treg (<Строка>) - Η συνάρτηση μετατρέπει τη συμβολοσειρά στην περίπτωση τίτλου. Αυτό σημαίνει ότι για κάθε λέξη, ο πρώτος χαρακτήρας μετατρέπεται σε κεφαλαίο τίτλο ή σε κεφαλαίο, εάν δεν έχει οριστεί κεφαλαία για τον χαρακτήρα. Οι υπόλοιποι χαρακτήρες μετατρέπονται σε πεζά.

Πληκτρολογήστε μετατροπές
Για ρητή μετατροπή τύπων δεδομένων, υπάρχουν συναρτήσεις με το ίδιο όνομα με τον τύπο δεδομένων στον οποίο πραγματοποιείται η μετατροπή: String (<Значение>)

StringOfNumbers = String (Number);

Όλες αυτές οι λειτουργίες περιγράφονται λεπτομερώς στο Syntax Assistant, πώς ο Syntax Assistant μπορεί να βοηθήσει έναν αρχάριο προγραμματιστή, περιέγραψα στο άρθρο.

Παραδείγματα εργασίας με χορδές

Μετατρέψτε έναν αριθμό σε συμβολοσειρά και πίσω.

Για να λάβετε μια παράσταση συμβολοσειράς του έτους, χρησιμοποιήστε τη συνάρτηση Μορφοποίηση.

Έτος = Μορφή (CurrentDate (), "DF = εεεε") // Έτος = "2012"

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

Αριθμός = 2012 String = Format (Number, "CHG = 0"); // String = "2012"

Συμβολοσειρά Χωρίς κενά.