1η προσθήκη χορδών. Νέες συναρτήσεις συμβολοσειράς

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

Προσθήκη χορδής

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

SELECT "Name: " + Contractors.Name AS Column1 FROM Directory.Contractors AS Contractors WHERE Contractors.Reference = &Reference

Συνάρτηση υποσυμβολοσειράς

SUBSTRING(<Строка>, <НачальнаяПозиция>, <Длина>)

Ένα ανάλογο της συνάρτησης Environment() από το μοντέλο αντικειμένου. Η συνάρτηση Substring() μπορεί να εφαρμοστεί σε δεδομένα τύπου συμβολοσειράς και σας επιτρέπει να επιλέξετε ένα τμήμα <Строки> , ξεκινώντας με έναν αριθμό χαρακτήρα <НачальнаяПозиция> (οι χαρακτήρες σε μια συμβολοσειρά αριθμούνται από το 1) και το μήκος <Длина> χαρακτήρες. Το αποτέλεσμα της αξιολόγησης συνάρτησης έχει έναν τύπο συμβολοσειράς μεταβλητού μήκους και το μήκος θα θεωρείται απεριόριστο εάν <Строка> έχει απεριόριστο μήκος και παράμετρο <Длина> δεν είναι σταθερά ή μεγαλύτερη από 1024.

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

Προσοχή!Η χρήση της συνάρτησης SUBSTRING() για τη μετατροπή συμβολοσειρών απεριόριστου μήκους σε συμβολοσειρές περιορισμένου μήκους δεν συνιστάται. Αντίθετα, είναι καλύτερο να χρησιμοποιήσετε τον τελεστή cast EXPRESS().

Λειτουργία Παρόμοια

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

SELECT Counterparties.Name AS Column1 FROM Directory.Counterparties AS Counterparties WHERE Counterparties.Name = "Gazprom"

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

LIKE - Ένας τελεστής που ελέγχει εάν μια συμβολοσειρά είναι παρόμοια με ένα μοτίβο. Αναλογικό του LIKE σε SQL.

Ο τελεστής LIKE σάς επιτρέπει να συγκρίνετε την τιμή της έκφρασης που καθορίζεται στα αριστερά της με τη συμβολοσειρά προτύπου που καθορίζεται στα δεξιά. Η τιμή της έκφρασης πρέπει να είναι τύπου string. Εάν η τιμή της παράστασης ταιριάζει με το πρότυπο, το αποτέλεσμα του τελεστή θα είναι TRUE, διαφορετικά θα είναι FALSE.

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

  • % (ποσοστό): μια ακολουθία που περιέχει οποιονδήποτε αριθμό αυθαίρετων χαρακτήρων.
  • _ (υπογράμμιση): ένας αυθαίρετος χαρακτήρας.
  • […] (ένας ή περισσότεροι χαρακτήρες μέσα σε αγκύλες): οποιοσδήποτε μεμονωμένος χαρακτήρας παρατίθεται μέσα σε αγκύλες. Μια απαρίθμηση μπορεί να περιέχει εύρη, όπως a-z, που σημαίνει οποιονδήποτε χαρακτήρα εντός του εύρους, συμπεριλαμβανομένων των άκρων του εύρους.
  • [^…] (σε αγκύλες ένα σύμβολο άρνησης ακολουθούμενο από έναν ή περισσότερους χαρακτήρες): Οποιοσδήποτε μεμονωμένος χαρακτήρας εκτός από αυτούς που αναφέρονται μετά το σύμβολο άρνησης.

Οποιοδήποτε άλλο σύμβολο σημαίνει τον εαυτό του και δεν φέρει κανένα πρόσθετο φορτίο. Εάν είναι απαραίτητο να γράψετε έναν από τους χαρακτήρες που αναφέρονται ως τον εαυτό του, τότε πρέπει να προηγείται<Спецсимвол>. Εγώ ο ίδιος<Спецсимвол>(οποιοσδήποτε κατάλληλος χαρακτήρας) ορίζεται στην ίδια πρόταση μετά λέξη-κλειδίΕΙΔΙΚΟ ΣΥΜΒΟΛΟ.

Σημειώσεις από το Looking Glass

18/08/2014 Νέες λειτουργίες για εργασία με χορδές

Υλοποιήθηκε στην έκδοση 8.3.6.1977.

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

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

Μορφοποίηση συνάρτησης StrTemplate()

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

StrTemplate(<Шаблон>, <Значение1-Значение10>)

<Шаблон>είναι η συμβολοσειρά στην οποία θα αντικατασταθούν οι αναπαραστάσεις των παραμέτρων.

<Значение1> , ... <Значение10>- αυτές είναι οι παράμετροι (μέγιστο - δέκα), οι αναπαραστάσεις των οποίων πρέπει να αντικατασταθούν στη συμβολοσειρά.

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

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

θα υπάρχει μια γραμμή:

Σφάλμα δεδομένων στη γραμμή 2 (απαιτείται τύπος ημερομηνίας)

Συνάρτηση συμβολοσειράς StrCompare()

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

Θα μπορούσατε να εκτελέσετε την ίδια ενέργεια πριν χρησιμοποιήσετε το αντικείμενο Σύγκριση αξιών:

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

Συναρτήσεις συμβολοσειράς StrBeginsC(), StrEndsTo()

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

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

Λειτουργίες για εργασία με συμβολοσειρές StrSplit(), StrJoin()

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

Συνάρτηση εργασίας με συμβολοσειρές StrFind()

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

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

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

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

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

Γραμμή

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

String(False) // επιστρέφει "Όχι"
Το String(12345) // επιστρέφει "12 345"
String(CurrentDate()) //"21.07.2017 11:55:36"

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

Συντομογραφία LP, Συντομογραφία L, Συντομογραφία P

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

abbrl("Θα αφαιρεθούν κενά και στις δύο πλευρές") // "Θα αφαιρεθούν κενά και στις δύο πλευρές"
abbr("Θα αφαιρεθούν κενά και στις δύο πλευρές") // "Τα κενά στα αριστερά θα αφαιρεθούν"
abbr(" Τα κενά και στις δύο πλευρές θα αφαιρεθούν ") // "Τα κενά στα δεξιά θα αφαιρεθούν"

Λέων, Δεξιά, Μέση

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

Lion("String variable", 4) // επιστρέφει "Stro"
Right("String variable", 7) // επιστρέφει "variable"
avg("String variable", 2, 5)// επιστρέφει "troco"

StrLength

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

StrLength("Word") // το αποτέλεσμα της εκτέλεσης θα είναι ο αριθμός 5

Εύρημα

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

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

Εύρεση ("ένα, δύο, ένα, δύο, τρία", "δύο") // η συνάρτηση θα επιστρέψει τον αριθμό 6

Κενή γραμμή

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

EmptyString ("Vasily Ivanovich Pupkin") // η συνάρτηση θα επιστρέψει False
EmptyString(" ") // η συνάρτηση θα επιστρέψει True

VReg, NReg, Treg

Αυτές οι συναρτήσεις είναι πολύ χρήσιμες κατά τη σύγκριση και τη μετατροπή μεταβλητών συμβολοσειρών. Το "Vreg()" θα επιστρέψει την αρχική συμβολοσειρά με κεφαλαία, το "HReg()" με πεζά και το "Treg()" θα το μορφοποιήσει έτσι ώστε ο πρώτος χαρακτήρας κάθε μεμονωμένης λέξης να είναι κεφαλαίος και όλοι οι επόμενοι χαρακτήρες να είναι πεζοί.

Vreg("ΓΕΝΙΚΟΣ ΔΙΕΥΘΥΝΤΗΣ") // τιμή επιστροφής - "ΓΕΝΙΚΟΣ ΔΙΕΥΘΥΝΤΗΣ"
HReg("ΓΕΝΙΚΟΣ ΔΙΕΥΘΥΝΤΗΣ") // τιμή επιστροφής - "CEO"
Treg("ΓΕΝΙΚΟΣ ΔΙΕΥΘΥΝΤΗΣ") // τιμή επιστροφής - "Γενικός Διευθυντής"

StrReplace

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

StrReplace("κόκκινο, λευκό, κίτρινο", ",", ";") // επιστρέφει "κόκκινο; άσπρο; κίτρινος"

StrNumberRows

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

Ο βρόχος στο παρακάτω παράδειγμα θα περάσει από τρεις κύκλους επειδή η συνάρτηση StrNumberRows θα επιστρέψει την τιμή 3:

Για ind \u003d 1 κατά StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") Βρόχος
<тело цикла>
EndCycle;

StrGetString

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

StrGetString("String1" + Symbols.PS + "String2" + Symbols.PS + "String3", 2) // επιστρέφει "Γραμμή 2"

StrNumberOccurrences

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

StrNumberInstallations("a;b;c;d; ", ";") // η συνάρτηση θα επιστρέψει τον αριθμό 4

Symbol και SymbolCode

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

SymbolCode("A") // η συνάρτηση θα επιστρέψει τον αριθμό 1 040
SymbolCode(1040) // η συνάρτηση θα επιστρέψει "A"

Συχνές εργασίες κατά την εργασία με χορδές

Συνένωση χορδών

Για να συνδέσετε πολλές συμβολοσειρές (concatenate) απλώς χρησιμοποιήστε τον τελεστή πρόσθεσης.

"Γραμμή 1" + "Γραμμή 2" //το αποτέλεσμα της προσθήκης δύο γραμμών θα είναι "Γραμμή 1 Γραμμή 2"

Μετατροπή τύπου

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

Η συμβολοσειρά (1000) // θα επιστρέψει "1000"

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

StrReplace(String(1000),Characters.NPP,"") // επιστρέφει "1000"

Το String(Format(1000,"CH=")) // θα επιστρέψει "1000"

Εισαγωγικά σε μια συμβολοσειρά

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

Header = String("Horns and Hooves LLC is us!") // επιστρέφει "Roga and Hooves LLC είμαστε εμείς!"

Πολύγραμμη, αλλαγή γραμμής

Για να δημιουργήσετε ένα κείμενο πολλών γραμμών, αρκεί να προσθέσετε χαρακτήρες αλλαγής γραμμής (Symbols.PS).

MultilineText = "First Line" + Characters.PS + "Second Line"

Πώς να αφαιρέσετε κενά

Για να αφαιρέσετε κενά στα δεξιά ή στα αριστερά, μπορείτε να χρησιμοποιήσετε τη συνάρτηση "Stretch()" (καθώς και "Scrpt()" και "ScreenP()"):

StringWithoutSpaces = ShortLP (" Πολλά γράμματα ") // η συνάρτηση θα επιστρέψει την τιμή "Πολλά γράμματα"

Εάν, μετά τη μετατροπή ενός αριθμού σε συμβολοσειρά, πρέπει να αφαιρέσετε κενά που δεν διακόπτουν, χρησιμοποιήστε την ακόλουθη κατασκευή:

StringWithoutSpaces = StrReplace(String(99999),Characters.NPP,"") // επιστρέφει "99999"

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

StringWithoutSpaces = StrReplace(" hello", " ","") // επιστρέφει "γεια"

Σύγκριση χορδών μεταξύ τους

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

"hello" = "γεια" // θα επιστρέψει ψευδής
"Hello" = "Hello" // θα επιστρέψει True
"Hello" = "Αντίο" // θα επιστρέψει False

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

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

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

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

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

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

Μπορείτε να εισαγάγετε μια συμβολοσειρά και, γνωρίζοντας τον κωδικό χαρακτήρα στο Unicode:

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

Letter= Symbol(1103 ) ; // ΕΓΩ

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

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

Λειτουργίες μετατροπής πεζών κειμένου:

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

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

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

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

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

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

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

Number4 Entry= StrFind( "αμυντικότητα", "o" , Κατεύθυνση αναζήτησης. Πρώτα, 1, 4); // 7

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

StrReplace("String" , "eye" , "" ); // Σελίδα

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

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

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

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

StrPattern ( "Επιλογή 1 = %1, Επιλογή 2 = %2", "1" , "2" ) ; // Παράμετρος 1= 1, Παράμετρος 2 = 2

Συναρτήσεις μετατροπής συμβολοσειρών:

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

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

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

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

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

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

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

Αλλα χαρακτηριστικά:

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

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

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

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

StrCompare("Πρώτη σειρά" , "Δεύτερη σειρά" ); // 1

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

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

Τιμή γραμμής 1C

1. Ας ξεκινήσουμε με το πιο απλό. Η δημιουργία μιας μεταβλητής και η αντιστοίχιση μιας σταθερής τιμής συμβολοσειράς μοιάζει με αυτό στο 1C:

Μεταβλητή = "Γεια σου κόσμο!";

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

Μεταβλητή = "Γεια, "κόσμος""!";

2. Η αλλαγή γραμμής 1C μπορεί να καθοριστεί με δύο τρόπους ταυτόχρονα. Το πρώτο χρησιμοποιεί το σύμβολο |

Μεταβλητή = "Γεια σας,
| κόσμος! ";

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

Μεταβλητή = "Γεια" + Symbols.ps + "ειρήνη!";

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

Η λίστα των γλωσσών βρίσκεται στο παράθυρο διαμόρφωσης στον κλάδο General/Languages. Κάθε γλώσσα έχει ένα σύντομο αναγνωριστικό όπως enή eng.

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

Variable = "ru=""Γεια σου, κόσμο!"

Εάν χρησιμοποιείτε τη γραμμή 1C που σχηματίζεται με αυτόν τον τρόπο ως συνήθως, τότε θα είναι αυτό που γράφεται σε αυτήν. Για να το χωρίσει το σύστημα σε δύο επιλογές και να χρησιμοποιήσει την επιθυμητή, πρέπει να χρησιμοποιήσετε τη συνάρτηση NStr():

//correct για δίγλωσσες διαμορφώσεις
Αναφορά(NStr(Μεταβλητή));

Στηρίγματα με γραμμή τύπου 1C

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

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

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

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

Εργασία με γραμμές 1C

Για να εργαστείτε με χορδές, υπάρχουν πολλές ενσωματωμένες λειτουργίες της πλατφόρμας 1C.

  • AbbrLP ("Απίστευτο, αλλά αληθινό!")
    Αφαιρείται από τη γραμμή 1C επιπλέον χώρους. Μπορεί επίσης να χρησιμοποιηθεί για τη μετατροπή οποιουδήποτε τύπου σε συμβολοσειρά 1C (για παράδειγμα, αριθμούς).
  • Μεταβλητή = "Vasya" + Abbrl("συν") + "Olya"; //θα είναι "Vasya plus Olya"
    Ένα παράδειγμα άθροισης πολλών τιμών συμβολοσειράς 1C. Το αποτέλεσμα είναι μία γραμμή 1C.
  • Μεταβλητή = Lion("Music", 2); // θα είναι "Mu"
    Μεταβλητή = Μέσος ("Μουσική", 2, 2); // θα είναι "ps"
    Μεταβλητή = Δικαιώματα ("Μουσική", 2); // θα είναι "ka"
    Διάφορες επιλογές για τη λήψη μιας υποσυμβολοσειράς από μια συμβολοσειρά 1C.
  • Variable = Find("Music", "ps"); //θα είναι 3
    Αναζητήστε μια υποσυμβολοσειρά στη συμβολοσειρά 1C, ξεκινώντας με τον χαρακτήρα 1.
  • Μεταβλητή = StrLength ("Μουσική"); //θα είναι 6
    Επιστρέφει τον αριθμό των χαρακτήρων σε μια συμβολοσειρά 1C.
  • Ειδοποίηση ("Γεια") //στο πλαίσιο μηνύματος στο κάτω μέρος του παραθύρου 1C
    alert("γεια") //αναδυόμενο παράθυρο διαλόγου
    Status("Hello") //στη γραμμή εμφάνισης κατάστασης κάτω αριστερά
    .

Φέρνοντας αντικείμενα στη γραμμή 1C

Όπως γνωρίζετε, η πιο δημοφιλής μορφή για την ανταλλαγή δομημένων πληροφοριών επί του παρόντος είναι η XML. Ακόμη και τελευταία έκδοσηΚυρία Office Wordκαι το Excel αποθηκεύουν αρχεία σε αυτήν τη μορφή (docx και xlsx αντίστοιχα, αλλάξτε την επέκταση σε zip, ανοίξτε σε αρχείο αρχειοθέτησης).

Η πλατφόρμα 1C για ανταλλαγή δεδομένων παρέχει πολλές επιλογές, η κύρια από τις οποίες είναι επίσης η XML.

1. Η απλούστερη μέθοδος είναι να χρησιμοποιήσετε τη συνάρτηση ShortLP() ή String(). Μπορείτε να χρησιμοποιήσετε τη συνάρτηση REPRESENTATION() στο κείμενο του ερωτήματος. Το αποτέλεσμα της δράσης τους είναι το ίδιο - δημιουργούν μια αναπαράσταση συμβολοσειράς οποιουδήποτε αντικειμένου 1C για τον χρήστη.

Για τον προεπιλεγμένο κατάλογο, αυτό θα είναι το όνομά του. Για ένα έγγραφο, το όνομα, τον αριθμό και την ημερομηνία του εγγράφου.

2. Οποιοδήποτε αντικείμενο 1C (με περιορισμούς) μπορεί να μετατραπεί σε XML και αντίστροφα. Η διαδικασία μετατροπής ονομάζεται σειριοποίηση.

ViewStringXml = XMLString(Τιμή); //λήψη XML από την τιμή 1C
Value1С = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); //λάβετε την τιμή 1C από τη συμβολοσειρά XML, πρέπει να καθορίσετε τον τύπο 1C που πρέπει να ληφθεί

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

String = ValueInStringInt(Value1S); //λήψη συμβολοσειράς 1C από την τιμή 1C
ValueToFile("C:\MyFile.txt", Value1C); //μια άλλη επιλογή, λαμβάνουμε ένα αρχείο με μια αποθηκευμένη συμβολοσειρά από την τιμή 1C
Value1C = ValueFromStringInt(String); //πίσω από τη γραμμή 1C
Value1C = ValueFromFile("C:\MyFile.txt"); //επιστροφή από το αρχείο

Επεξεργασία γραμμών 1C στη φόρμα

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

1. Ο ευκολότερος τρόπος είναι να ζητήσετε την είσοδο της γραμμής 1C κατ' απαίτηση. Αυτή η μέθοδος χρησιμοποιείται κατά τη διδασκαλία του προγραμματισμού 1C, στη ζωή χρησιμοποιείται πολύ λιγότερο συχνά (αλλά χρησιμοποιείται!).

Μεταβλητή = "";
String = EnterValue(Μεταβλητή, "Εισαγάγετε πλήρες όνομα");

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

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

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

4. Εάν δεν σας επαρκούν όλες οι δυνατότητες του πεδίου εισαγωγής, υπάρχει ενσωματωμένος επεξεργαστής. Για να το προσθέσετε στη φόρμα, πρέπει να προσθέσετε ένα Πεδίο στο μενού Φόρμα / Έλεγχος Εισαγωγή έγγραφο κειμένου. Στις ιδιότητες του, μπορείτε να καθορίσετε τον τρόπο λειτουργίας του - την ιδιότητα Επέκταση.

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

FormElements.ElementNameTextDocumentField.SetText(StringValue); //εδώ, ValueString είναι το κείμενο που λαμβάνεται, για παράδειγμα, από το χαρακτηριστικό

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

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString εδώ είναι τα στηρίγματα όπου αποθηκεύουμε την τιμή

5. Στην έκδοση 8.2.11 1C, στο διαχειριζόμενες φόρμες, εμφανίστηκε νέα ευκαιρίααναπαράσταση γραμμής 1C - Μορφοποιημένο πεδίο εγγράφου.


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

  • Στο αντικείμενο 1C, τη μορφή του οποίου φτιάχνουμε (βιβλίο αναφοράς, έγγραφο, επεξεργασία κ.λπ.) - προσθέστε ένα χαρακτηριστικό με τον τύπο αποθήκευσης τιμής
  • Στη συνάρτηση OnReadOnServer(), ορίστε το κείμενο από το χαρακτηριστικό

    //here Requisite είναι το προστιθέμενο χαρακτηριστικό του αντικειμένου 1C
    //here FormattedDocument είναι το όνομα του πεδίου στη φόρμα επεξεργασίας
    &Στον διακομιστή

    FormattedDocument = CurrentObject.Attributes.Get();
    Διαδικασία λήξης

  • Στη συνάρτηση BeforeWriteOnServer() ή πατώντας το κουμπί, γράψτε το κείμενο από το πεδίο

    &Στον διακομιστή
    Διαδικασία OnReadingOnServer(CurrentObject)
    CurrentObject.Attributes = NewValueStorage(FormattedDocument);
    Διαδικασία λήξης



Φόρτωση...
Μπλουζα