Οι συνθήκες είναι σαν 1s. Παρόμοια με τις συνθήκες ερωτήματος. Παράδειγμα: επιλέξτε προϊόντα των οποίων το όνομα αρχίζει με τη λέξη "Tank"

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

Χρησιμοποιώντας τον τελεστή "LIKE".

Πριν εφαρμόσετε οποιονδήποτε τελεστή στην πράξη, πρέπει να κατανοήσετε ξεκάθαρα τον σκοπό, τους τόπους εφαρμογής και τη σύνταξη του. Ο σκοπός της χρήσης του "LIKE" στο ερώτημα 1C είναι να ελέγξει εάν ικανοποιείται η συνθήκη που παρουσιάζεται ως πρότυπο. Η τιμή επιστροφής είναι boolean, true ή false, υποδεικνύοντας εάν πληρούται η καθορισμένη συνθήκη. Ο τελεστής LIKE μπορεί να χρησιμοποιηθεί σε πολλά σημεία σε ένα ερώτημα:

  • Στο μπλοκ συνθηκών που υποδεικνύεται με τη λέξη-κλειδί "WHERE".
  • Στην κατασκευή Choice When then Else End;
  • Απευθείας στα πεδία επιλογής, ως αποτέλεσμα σύγκρισης πεδίων.

Η σύνταξη του ελέγχου είναι πάντα η ίδια και αποτελείται από 3 συνδέσμους. Στα αριστερά είναι η τιμή κειμένου που ελέγχεται, μετά ο ίδιος ο τελεστής "LIKE" και στα δεξιά είναι το πρότυπο που ελέγχεται. Για γρήγορη και εύκολη δημιουργία προτύπων, υπάρχουν Ειδικά σύμβολαδιευκόλυνση της ανάπτυξης:

  1. Το "%" είναι μια ακολουθία οποιωνδήποτε χαρακτήρων αυθαίρετου μήκους. Χρησιμοποιείται για την αναζήτηση μεμονωμένων λέξεων ή αριθμών σε μια συμβολοσειρά.
  2. Το "_" είναι οποιοσδήποτε μεμονωμένος χαρακτήρας. Σχεδιασμένο για να υποδεικνύει την παρουσία ενός χαρακτήρα.
  3. Το "[...]" είναι μια ακολουθία χαρακτήρων για σύγκριση με ένα σύμβολο στη συμβολοσειρά. Με τη βοήθεια ενός τέτοιου μοτίβου, ελέγχεται η αντιστοίχιση για οποιονδήποτε από τους χαρακτήρες που παρατίθενται σε αγκύλες. Μπορείτε επίσης να καθορίσετε μια σειρά αριθμών ή γραμμάτων ([a-g], );
  4. Το "[^…]" είναι το αντίθετο από το προηγούμενο μοτίβο. Η διαφορά μεταξύ του χαρακτήρα που καθορίζεται στη συμβολοσειρά και αυτών που αναφέρονται σε αγκύλες ελέγχεται.

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

SELECT Nomenclature.Name AS Name FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name LIKE "%CUTTER%"

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


Ας αναλύσουμε ένα πρόβλημα που μπορεί να προκαλέσει σύγχυση στους αρχάριους προγραμματιστές που δεν γνωρίζουν τη σύνταξη του ερωτήματος. Ας υποθέσουμε ότι πρέπει να βρείτε όλη την ονοματολογία, στο όνομα της οποίας υπάρχει το σύμβολο "%". Ειδικά για περιπτώσεις που χρειάζεται να αναζητήσετε δεσμευμένους χαρακτήρες, υπάρχει τελεστής "ειδικός χαρακτήρας". Ως ειδικός χαρακτήρας, μπορείτε να χρησιμοποιήσετε #, \, /, ~ και άλλους χαρακτήρες, μετά τους οποίους τυχόν δεσμευμένοι χαρακτήρες θα υποδηλώνουν απλώς έναν χαρακτήρα.

SELECT Nomenclature.Name AS Name FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name LIKE "%#%" ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ "#"

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

SELECT Nomenclature.Name AS Name FROM Directory.Nomenclature AS Nomenclature WHERE Nomenclature.Name LIKE "%" + &name + "%"

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

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

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

  • Σύμβολο "%" τοις εκατό: υποδηλώνει την παρουσία οποιουδήποτε αριθμού αυθαίρετων χαρακτήρων στη συμβολοσειρά
  • "[...]" ένας ή περισσότεροι χαρακτήρες σε αγκύλες: υποδηλώνει την παρουσία οποιουδήποτε (μονού) από τους αναφερόμενους χαρακτήρες. Επίσης, μπορεί να καθοριστεί μια σειρά χαρακτήρων (για παράδειγμα )
  • "_" χαρακτήρας υπογράμμισης: υποδηλώνει την παρουσία οποιουδήποτε αυθαίρετου χαρακτήρα
  • "[^...]" χαρακτήρας άρνησης: υποδηλώνει την παρουσία οποιουδήποτε μεμονωμένου χαρακτήρα εκτός από αυτούς σε αγκύλες
Εάν πρέπει να καθορίσετε έναν από τους παραπάνω ειδικούς χαρακτήρες για σύγκριση, πρέπει να χρησιμοποιήσετε τη λέξη-κλειδί "ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ"

Δυνατότητες χρήσης με διάφορα DBMS

IBM DB2"Στα δεξιά του τελεστή LIKE, μπορεί να εντοπιστεί μόνο μια παράμετρος. Οι χαρακτήρες του προτύπου είναι μόνο "_" (υπογράμμιση που σημαίνει οποιοσδήποτε χαρακτήρας) και "%" (το ποσοστό που σημαίνει μια ακολουθία οποιωνδήποτε χαρακτήρων).
Στην περίπτωση χρήσης DBMS " PostgreSQL" ή " Βάση δεδομένων Oracle"οι ειδικοί χαρακτήρες "αγκύλες [...]" γίνονται αποδεκτοί μόνο εάν καθορίζονται από το κείμενο στο αίτημα και ΔΕΝ μεταβιβάζονται ως παράμετρος στο αίτημα.

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

Παράδειγμα: επιλέξτε προϊόντα που περιέχουν το σύμβολο "%" στο όνομα

ΕΠΙΛΟΓΗ | Σύνδεσμος αναφοράς | ΑΠΟ | Spravochnik.Ονοματολογία ΠΩΣ ref | ΠΟΥ | Αναφ. Όνομα LIKE "%\%" ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ "\"

Παράδειγμα: επιλέξτε προϊόντα των οποίων το όνομα αρχίζει με τη λέξη "Tank"

ΕΠΙΛΟΓΗ | Σύνδεσμος αναφοράς | ΑΠΟ | Spravochnik.Ονοματολογία ΠΩΣ ref | ΠΟΥ | Αναφ. Όνομα LIKE "Buck%"

Παράδειγμα: επιλέξτε προϊόντα των οποίων το όνομα τελειώνει με έναν αριθμό

ΕΠΙΛΟΓΗ | Σύνδεσμος αναφοράς | ΑΠΟ | Spravochnik.Ονοματολογία ΠΩΣ ref | ΠΟΥ | Αναφ. Όνομα LIKE "%"

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

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

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

Οι υπόλοιποι χαρακτήρες χρησιμοποιούνται για τον προορισμό τους.
Εάν είναι απαραίτητο να μεταφέρετε έναν από τους παραπάνω χαρακτήρες υπηρεσίας ως χαρακτήρα, τότε πρέπει να προηγείται<Спецсимвол>. Εγώ ο ίδιος<Спецсимвол>(οποιοσδήποτε κατάλληλος χαρακτήρας) ορίζεται στην ίδια πρόταση μετά λέξη-κλειδίΕΙΔΙΚΟ ΣΥΜΒΟΛΟ.
Για παράδειγμα, το μοτίβο "%ABC[abc]\_abc%" ΕΙΔΙΚΟΣ ΧΑΡΑΚΤΗΡΑΣ "\" σημαίνει μια υποσυμβολοσειρά που αποτελείται από μια ακολουθία χαρακτήρων:
γράμματα Α; γράμματα Β; γράμματα Β; ένα ψηφίο? ένα από τα γράμματα a, b, c ή d. χαρακτήρας υπογράμμισης? γράμματα α; γράμματα β? γράμματα μέσα.
Επιπλέον, αυτή η ακολουθία μπορεί να προηγείται από ένα αυθαίρετο σύνολο χαρακτήρων.

Διαδικασία SelectContractContainingInNameText(mText)
//Στο αίτημα, θα χρησιμοποιήσουμε ένα πρότυπο όπως "%" + mText + "%" Request = New Request; Query.SetParameter("Όνομα", "%" + Κείμενο + "%"); Query.Text = "ΕΠΙΛΟΓΗ | Συμφωνίες. Αναφορά, | Συμφωνίες. Ιδιοκτήτης | ΑΠΟ | Κατάλογος. Συμφωνίες Αντισυμβαλλομένων ΩΣ Συμφωνίες | | ΠΟΥ | Συμφωνίες. Όνομα LIKE &Όνομα"; Αποτέλεσμα = Request.Run(); Selection = Result.Select(); Report("Συμφωνίες που περιέχουν στο όνομα: " + mText + " έχουν τους ακόλουθους αντισυμβαλλόμενους"); Ενώ Selection.Next() Loop Report("Λογαριασμός: " + Selection.Owner + "; Contract: " + Selection.Reference EndIf; EndProcedure

Μερικές φορές προκύπτει μια κατάσταση όταν στο 1C 8.3 ή 8.2 πρέπει να κάνετε μια επιλογή, για παράδειγμα, από έναν κατάλογο όλων των στοιχείων που έχουν τη λέξη "glaze" στα ονόματά τους. Ή, από τον κατάλογο, επιλέξτε όλους τους αντισυμβαλλομένους των οποίων τα επώνυμα περιέχουν τη λέξη "Ivan". Γενικά, ελέγξτε κάποια τιμή συμβολοσειράς.

Για αυτό, υπάρχει ένας χειριστής στα αιτήματα 1C 8.3 και 8.2 - "Like". Χρησιμοποιείται, αντίστοιχα, στις συνθήκες:

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

Πώς να χρησιμοποιήσετε πρότυπα σε αιτήματα 1C;

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

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

Υπάρχουν και άλλοι ειδικοί χαρακτήρες:

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

43
NULL - λείπουν τιμές. Δεν πρέπει να συγχέεται με το μηδενικό! Το NULL δεν είναι αριθμός, δεν είναι ίσος με κενό, μηδενική αναφορά, απροσδιόριστος. Το NULL είναι μια τιμή σχηματισμού τύπου, δηλ. υπάρχει ένας τύπος NULL και μια ενιαία τιμή αυτού του τύπου. ΜΗΔΕΝΙΚΟ... 26
Για τη διαμόρφωση και την εκτέλεση ερωτημάτων σε πίνακες βάσεων δεδομένων στην πλατφόρμα 1C, χρησιμοποιείται ένα ειδικό αντικείμενο της γλώσσας προγραμματισμού Request. Αυτό το αντικείμενο δημιουργείται καλώντας την κατασκευή New Request. Βολικό αίτημα... 18
Το άρθρο περιέχει χρήσιμα κόλπαόταν εργάζεστε με ερωτήματα 1C v.8.2, καθώς και πληροφορίες που δεν είναι τόσο γνωστές για τη γλώσσα ερωτημάτων. Δεν επιδιώκω να δώσω μια πλήρη περιγραφή της γλώσσας ερωτήματος, αλλά θέλω να εστιάσω μόνο σε ... 12
Μπροστά στην εργασία, ήταν απαραίτητο να επιλέξετε όλα τα έγγραφα για την πληρωμή και να τα ομαδοποιήσετε ανά τύπο παραστατικού! Κοιτάζοντας όλες τις στεγαστικές και κοινοτικές υπηρεσίες και το Διαδίκτυο, το συνειδητοποίησα εύκολος τρόποςλάβετε τύπο εγγράφου στο αίτημα αριθ.: (Έπρεπε να...