Διαφήμιση

Σπίτι - Εξυπνη τηλεόραση
1c όπου είναι ίση με τιμή ή μηδενική. Χρησιμοποιώντας τη συνάρτηση isnull()

27.06.2017

NULL, ISNULL() και IS NULL σε ερωτήματα 1C

Τι είναι το NULL

ΜΗΔΕΝΙΚΟστο αποτέλεσμα του ερωτήματος, σημαίνει ότι δεν υπάρχει τιμή (δεν είναι κενή τιμή, δεν είναι μηδενική, όχι μηδενική αναφορά).
Για παράδειγμα, ως αποτέλεσμα της σύνδεσης πινάκων ερωτημάτων, δεν βρέθηκε μια τιμή σε έναν από τους πίνακες κατά τη σύνδεση χρησιμοποιώντας πεδία σύνδεσης. Ή το αίτημα αναφέρεται σε ανύπαρκτο χαρακτηριστικό (ιδιότητα).

Το NULL δεν είναι το ίδιο με το NULL!

Εάν σε ένα αίτημα 1C θέλετε να επιβάλετε μια επιλογή (συνθήκη) με έναν έλεγχο για NULL, τότε μια κατασκευή όπως "WHERE VT.Field1 = NULL" θα επιστρέφει πάντα ΨΕΜΑ! Για να ελέγξετε θα πρέπει να χρησιμοποιήσετε έναν ειδικό χειριστή

ΥΠΑΡΧΕΙ NULL στο αίτημα 1C

Για να ελέγξετε μια τιμή (ή να εργαστείτε με τιμές) για NULL, πρέπει να χρησιμοποιήσετε την ακόλουθη κατασκευή "WHERE VT.Field1 IS NULL" Ή άλλο παράδειγμα, χρήση σε μια κατασκευή ΕΠΙΛΟΓΗ"SELECTION | WHEN VT.Field1 IS NULL | THEN" Αξίζει να σημειωθεί ότι η λειτουργία ελέγχου ενός πεδίου για NULL είναι μια από τις πιο εντατικές σε πόρους σε ερωτήματα 1C. Επομένως, εάν θέλετε να το χρησιμοποιήσετε σε κατάσταση αιτήματος, σκεφτείτε εάν είναι δυνατόν να αντικαταστήσετε μια τέτοια επιταγή εσωτερική σύνδεση(ένας τύπος σύνδεσης σε ερωτήματα στα οποία μόνο οι εγγραφές που υπάρχουν και στους δύο πίνακες παραμένουν στην επιλογή).

Η συνάρτηση ISNULL() σε αίτημα 1C

Λειτουργία ISNULL()σας επιτρέπει να αντικαταστήσετε μια τιμή που λείπει σε ένα πεδίο αιτήματος με μια καθορισμένη τιμή (τυπική τιμή, στέλεχος).
Για παράδειγμα, εάν δεν υπάρχουν πληροφορίες σχετικά με το κόστος ενός προϊόντος, τότε το υποδεικνύουμε ίσο με 0 (μηδέν) "SELECT | ISNULL(T.Price, 0) AS Price | FROM Remaining Goods AS T"

συμπέρασμα

Γράψτε τα ερωτήματα σωστά και βέλτιστα. Επειδή ένα κακό αίτημα σημαίνει φρένα και χάλια κώδικα)

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

Ο τύπος NULL είναι ένας κυριολεκτικός που μπορεί να περιέχει μόνο μία τιμή, την τιμή "NULL".
NULL — Δεν ισούται με μια μηδενική αναφορά, κενό διάστημα ή Τύπος Undefined.

Χρησιμοποιείται κατά την εργασία με μια βάση δεδομένων (κατά την ένωση πινάκων), χρησιμοποιείται για τον προσδιορισμό μιας τιμής που λείπει κατά την εργασία με μια βάση δεδομένων.
Μια τιμή NULL μπορεί να ληφθεί εκχωρώντας αυτήν την τιμή σε μια μεταβλητή:
Μεταβλητή =NULL.

Οι τιμές του τύπου NULL σχηματίζονται ως αποτέλεσμα ενώσεων όταν ένα στοιχείο από έναν πίνακα δεν έχει αντίστοιχο στοιχείο από άλλο. Μια τιμή τύπου NULL έχει συγκεκριμένα χαρακτηριστικά:
- η σύγκριση μιας τιμής NULL με οποιοδήποτε άλλο όρισμα επιστρέφει πάντα false.

Για να προσδιορίσετε την τιμή NULL, χρησιμοποιήστε την κατασκευή IS NULL (είναι NULL).
Για να μετατρέψετε τον τύπο NULL, χρησιμοποιήστε τη συνάρτηση ISNULL (είναι NULL).

Προκειμένου να αποκοπούν πεδία που περιέχουν τιμές NULL ως αποτέλεσμα αιτήματος, χρησιμοποιούνται οι ακόλουθες κατασκευές: - δεν είναι NULL - δεν είναι NULL

Παραδείγματα

Παράδειγμα ελέγχου μιας τιμής για NULL

ΕΠΙΛΟΓΗ καταλόγου. Ονοματολογία. Όνομα, Κατάλογος. Ονοματολογία. Κατάλογος PurchasingPrice WHERE. Ονοματολογία. Τιμή Αγοράς Ναι NULL

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

// Λάβετε το ποσό από το πεδίο ποσότητας. Εάν δεν υπάρχουν εγγραφές, πάρτε 0 SELECT ISNULL(SUM(Quantity), 0 ) AS Quantity FROM Document. Expense Inc. Χημική ένωση

Με εκτίμηση, 1C Προγραμματιστής.
Αφήστε τα σχόλιά σας, με ενδιαφέρει η γνώμη σας.

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

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

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

  • επιλέγω
  • επιτρέπεται
  • διάφορος
  • εξπρές
  • πρώτα
  • για αλλαγή
  • έννοια
  • τύπος τιμής (και τελεστής REFERENCE)
  • επιλογή
  • ομάδα από
  • έχοντας
  • ISNULL
  • Ναι NULL
  • συνδέσεις - δεξιά, αριστερά, εσωτερική, πλήρης.

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

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

Ας δούμε τους πιο σημαντικούς και ενδιαφέροντες τελεστές της γλώσσας ερωτημάτων 1C.

ΕΠΙΛΕΓΩ

Στη γλώσσα ερωτημάτων 1C Enterprise 8, κάθε ερώτημα ξεκινά με μια λέξη-κλειδί ΕΠΙΛΕΓΩ. Στη γλώσσα 1C δεν υπάρχουν κατασκευές ΕΝΗΜΕΡΩΣΗ, ΔΙΑΓΡΑΦΗ, ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ, ΕΝΙΣΧΥΤΕ· αυτοί οι χειρισμοί εκτελούνται στην τεχνολογία αντικειμένων. Ο σκοπός του είναι να διαβάζει μόνο δεδομένα.

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

ΕΠΙΛΕΓΩ
Τρέχων Κατάλογος.Όνομα
ΑΠΟ
Directory.Nomenclature AS Τρέχων Κατάλογος

Το ερώτημα θα επιστρέψει έναν πίνακα με ονόματα στοιχείων.

Κοντά στη δομή ΕΠΙΛΕΓΩμπορείτε να βρείτε λέξεις-κλειδιά ΓΙΑ ΑΛΛΑΓΗ, ΕΠΙΤΡΕΠΕΤΑΙ, ΔΙΑΦΟΡΟΣ, ΠΡΩΤΑ

ΕΠΙΤΡΕΠΕΤΑΙ— επιλέγει μόνο εγγραφές από τον πίνακα για τις οποίες έχει δικαιώματα ο τρέχων χρήστης.

ΔΙΑΦΟΡΟΣ— σημαίνει ότι το αποτέλεσμα δεν θα περιέχει διπλές γραμμές.

ΕΠΙΛΟΓΗ (ΠΕΡΙΠΤΩΣΗ)

Πολύ συχνά αυτό το σχέδιο υποτιμάται από τους προγραμματιστές. Ένα παράδειγμα χρήσης του:

Τρέχων Κατάλογος.Όνομα,

WHEN Τρέχων Κατάλογος.Υπηρεσία ΤΟΤΕ

"Υπηρεσία"

ΤΕΛΟΣ ΠΩΣ ΝΑ ΠΡΟΒΟΛΗΘΕΙ Ονοματολογία

Directory.Nomenclature AS Τρέχων Κατάλογος

Το παράδειγμα θα επιστρέψει μια τιμή κειμένου στο πεδίο "Τύπος Στοιχείου" - "Προϊόν" ή "Υπηρεσία".

ΟΠΟΥ

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

ΕΠΙΛΕΓΩ
Κατάλογος.Όνομα
ΑΠΟ
Τρέχων Κατάλογος.Ονοματολογία AS Τρέχων Κατάλογος
WHERE CurrentDirectory.Service = TRUE

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

"ΠΟΥ ΕΙΝΑΙ Η ΥΠΗΡΕΣΙΑ"

Ουσιαστικά, επιλέγουμε σειρές όπου η έκφραση μετά τη λέξη-κλειδί είναι ίση με "True".

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

WHERE Κωδικός = "005215"

Χρησιμοποιώντας τον τελεστή "VALUE()" στις συνθήκες, χρησιμοποιήστε την πρόσβαση σε προκαθορισμένα στοιχεία και απαριθμήσεις σε ένα αίτημα 1C:

WHERE Τύπος αντικειμένου = Τιμή (Απαρίθμηση. Τύποι στοιχείων. Προϊόν)

Οι τιμές χρόνου μπορούν να καθοριστούν ως εξής:

WHERE Ημερομηνία παραλαβής > DATETIME(2012,01,01):

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

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

WHERE NomenclatureGroup= &NomenclatureGroup

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

Εάν πρέπει να περιορίσετε την επιλογή από μια λίστα τιμών ή έναν πίνακα, μπορείτε να κάνετε τα εξής:

ΠΟΥ είναι το Μητρώο Συσσώρευσης. Γραμματέας Β (&Κατάλογος Εγγράφων για Επιλογή)

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

WHERE Ημερομηνία παραλαβής > DATETIME(2012,01,01) AND NomenclatureGroup= &NomenclatureGroup AND NOT Service

ΟΜΑΔΑ ΑΠΟ

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

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

ΕΠΙΛΕΓΩ
Παραλαβή Αγαθών και Υπηρεσιών Αγαθών.
SUM(Παραλαβή αγαθώνΥπηρεσίεςGoods.Quantity) ΩΣ Ποσότητα,
ΠΟΣΟ (Παραλαβή ΑγαθώνΥπηρεσίες Αγαθά.Ποσό) ΩΣ Ποσό
ΑΠΟ
Έγγραφο Παραλαβή Αγαθών και Υπηρεσιών Αγαθά ΠΩΣ Παραλαβή Αγαθών και Υπηρεσιών Αγαθά

ΟΜΑΔΑ ΑΠΟ
Παραλαβή ΑγαθώνΥπηρεσίεςΕμπορεύματα.Εμπορεύματα

Αυτό το αίτημα θα συνοψίζει όλες τις αποδείξεις ανά ποσότητα και ποσότητα ανά είδος.

Εκτός από τη λέξη-κλειδί ΑΘΡΟΙΣΜΑΜπορείτε να χρησιμοποιήσετε άλλες αθροιστικές συναρτήσεις: ΠΟΣΟΤΗΤΑ, ΑΡΙΘΜΟΣ ΔΙΑΦΟΡΕΤΙΚΩΝ, ΑΝΩΤΑΤΟ ΟΡΙΟ, ΕΛΑΧΙΣΤΟ, ΜΕΣΗ ΤΙΜΗ.

ΕΧΟΝΤΑΣ

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

Παράδειγμα χρήσης HAVING σε αίτημα 1C:

ΕΠΙΛΕΓΩ
Παραλαβή Αγαθών και Υπηρεσιών Αγαθών.
SUM(Παραλαβή αγαθώνΥπηρεσίεςGoods.Quantity) ΩΣ Ποσότητα,
ΠΟΣΟ (Παραλαβή ΑγαθώνΥπηρεσίες Αγαθά.Ποσό) ΩΣ Ποσό
ΑΠΟ
Έγγραφο Παραλαβή Αγαθών και Υπηρεσιών Αγαθά ΠΩΣ Παραλαβή Αγαθών και Υπηρεσιών Αγαθά

ΟΜΑΔΑ ΑΠΟ
Παραλαβή Αγαθών και Υπηρεσιών Αγαθών

SUM(Παραλαβή αγαθώνΥπηρεσίεςΠοσότητα αγαθών) > 5

Έτσι θα επιλέξουμε τον αριθμό των προϊόντων που έφτασαν περισσότερα από 5 τεμάχια.

ΕΝΝΟΙΑ()

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

WHERE Bank = Value(Directory.Banks.EmptyLink)

WHERE Τύπος ονοματολογίας = Τιμή (Κατάλογος. Τύποι ονοματολογίας. Προϊόν)

WHERE Τύπος αντικειμένου = Τιμή (Enumeration.Item Types.Service)

TYPE κατόπιν αιτήματος

Ο τύπος δεδομένων μπορεί να ελεγχθεί χρησιμοποιώντας τις συναρτήσεις TYPE() και VALUETYPE() ή χρησιμοποιώντας τον λογικό τελεστή REFERENCE.

ΕΞΠΡΕΣ()

Ο τελεστής Express σε ερωτήματα 1C χρησιμοποιείται για τη μετατροπή τύπων δεδομένων.

Σύνταξη: ΕΞΠΡΕΣ(<Выражение>ΠΩΣ<Тип значения>)

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

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

ΕΠΙΛΕΓΩ
ContactInformation.Object,
EXPRESS(ContactInfo.View AS ROW(150)) AS View
ΑΠΟ
Μητρώο Πληροφοριών Στοιχεία Επικοινωνίας ΠΩΣ Στοιχεία Επικοινωνίας

ΟΜΑΔΑ ΑΠΟ
EXPRESS(ContactInfo.Representation AS ROW(150)),
ContactInformation.Object

ISNULL (ISNULL)

Πολύ χρήσιμη συνάρτηση της γλώσσας ερωτήματος 1C που ελέγχει την τιμή στην εγγραφή και αν είναι ίση ΜΗΔΕΝΙΚΟ,Αυτό σας επιτρέπει να το αντικαταστήσετε με τη δική σας αξία. Συχνά χρησιμοποιείται κατά τη λήψη εικονικών πινάκων υπολοίπων και τζίρου για απόκρυψη ΜΗΔΕΝΙΚΟκαι βάλε καθαρό 0 (μηδέν).

ISNULL(Φόροι πριν από τον μήνα. Επίδομα AppliedFSS, 0)

Μια τέτοια συνάρτηση της γλώσσας ερωτήματος 1C ISNULL θα επιστρέψει μηδέν εάν δεν υπάρχει τιμή, γεγονός που θα αποφύγει ένα σφάλμα.

ΣΥΜΜΕΤΟΧΗ

Υπάρχουν 4 τύποι συνδέσεων: ΑΡΙΣΤΕΡΑ, ΣΩΣΤΑ, ΠΛΗΡΕΣ, ΕΣΩΤΕΡΙΚΟ.

ΑΡΙΣΤΕΡΑ ΚΑΙ ΔΕΞΙΑ ΣΥΝΔΕΣΗ

Οι συνδέσεις χρησιμοποιούνται για τη σύνδεση δύο πινάκων με βάση μια συγκεκριμένη συνθήκη. Χαρακτηριστικό όταν ΑΡΙΣΤΕΡΑ ΣΥΜΜΕΤΟΧΗείναι ότι παίρνουμε τον πρώτο καθορισμένο πίνακα στο σύνολό του και δεσμεύουμε υπό όρους τον δεύτερο πίνακα. Τα πεδία του δεύτερου πίνακα που δεν μπορούσαν να δεσμευτούν από συνθήκη συμπληρώνονται με την τιμή ΜΗΔΕΝΙΚΟ.

Ένα παράδειγμα αριστερής σύνδεσης σε αίτημα 1C:

Θα επιστρέψει ολόκληρο τον πίνακα και θα συμπληρώσει το πεδίο «Τράπεζα» μόνο σε εκείνα τα μέρη όπου πληρούται η προϋπόθεση «Αντισυμβαλλόμενοι.Όνομα = Τράπεζες.Όνομα». Εάν δεν πληρούται η προϋπόθεση, το πεδίο Τράπεζα θα οριστεί σε ΜΗΔΕΝΙΚΟ.

ΔΕΞΙΑ ΣΥΝΔΕΣΗ σε γλώσσα 1C 8.3απολύτως παρόμοια ΑΡΙΣΤΕΡΑ σύνδεση, με εξαίρεση μια διαφορά: στο ΔΙΚΑΙΩΜΑ ΣΥΝΔΕΣΗΣΟ «κύριος» πίνακας είναι ο δεύτερος, όχι ο πρώτος.

ΠΛΗΡΗΣ ΣΥΝΔΕΣΗ

ΠΛΗΡΗΣ ΣΥΝΔΕΣΗδιαφέρει από τα αριστερά και τα δεξιά στο ότι εμφανίζει όλες τις εγγραφές από δύο πίνακες και συνδέει μόνο αυτές που μπορεί να συνδέσει κατά συνθήκη.

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

ΠΛΗΡΗΣ ΣΥΝΔΕΣΗ
Κατάλογος.Τράπεζες ΠΩΣ Τράπεζες

ΜΕ

Η γλώσσα ερωτήματος θα επιστρέψει πλήρως και τους δύο πίνακες μόνο εάν πληρούται η συνθήκη Join records. Σε αντίθεση με την αριστερή/δεξιά ένωση, είναι δυνατό το NULL να εμφανίζεται σε δύο πεδία.

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗδιαφέρει από το πλήρες στο ότι εμφανίζει μόνο εκείνες τις εγγραφές που θα μπορούσαν να συνδεθούν σύμφωνα με μια δεδομένη συνθήκη.

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

ΑΠΟ
Κατάλογος Αντισυμβαλλόμενοι AS Πελάτες

ΕΣΩΤΕΡΙΚΗ ΣΥΝΔΕΣΗ
Κατάλογος.Τράπεζες ΠΩΣ Τράπεζες

ΜΕ
Πελάτες.Όνομα = Τράπεζες.Όνομα

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

συμπέρασμα

Αυτό είναι μόνο ένα μικρό μέρος της σύνταξης από τη γλώσσα ερωτημάτων 1C 8· στο μέλλον θα προσπαθήσω να εξετάσω ορισμένα σημεία με περισσότερες λεπτομέρειες, να δείξω και πολλά άλλα!

ΜΗΔΕΝΙΚΟ– λείπουν τιμές.
Δεν πρέπει να συγχέεται με τη μηδενική αξία! Το NULL δεν είναι αριθμός, δεν ισούται με κενό, κενή αναφορά ή Ακαθόριστο.

Το NULL είναι μια τιμή σχηματισμού τύπου, δηλ. υπάρχει ένας τύπος NULL και μια ενιαία τιμή αυτού του τύπου.

Οι τιμές NULL εμφανίζονται στο ερώτημα στις ακόλουθες περιπτώσεις:
α) Εξωτερική ένωση στην οποία δεν βρέθηκε αντίστοιχη εγγραφή σε άλλο πίνακα (με αριστερό - στον δεύτερο πίνακα, με δεξί - στον πρώτο, με πλήρη - και στους δύο)
β) Πρόσβαση στις λεπτομέρειες στοιχείων για μια ομάδα και αντίστροφα.
γ) NULL στη λίστα πεδίων επιλογής (ΕΠΙΛΟΓΗ)
δ) Πρόσβαση στις λεπτομέρειες για έναν κατεστραμμένο σύνδεσμο

ΕΙΝΑΙ ΜΗΧΑΝΟχρησιμοποιείται στον τελεστή SELECT (σαν να ελέγχεται ότι η τιμή είναι κενή (Η τιμή είναι NULL)):
Κωδικός 1C v 8.χ
ΕΠΙΛΟΓΗ
ΟΤΑΝ η τιμή είναι NULL ΤΟΤΕ ResultIfNULL
ΑΛΛΟ Σημασία
ΤΕΛΟΣ

ένα άλλο παράδειγμα:
Κωδικός 1C v 8.x ΕΠΙΛΟΓΗ

ΕΠΙΛΟΓΗ ΟΤΑΝ Παραμένουν Λογιστικά Στοιχεία. Η Ποσότητα που Απομένει ΕΙΝΑΙ ΜΗΧΑΝΗ ΤΟΤΕ 0
ΑΛΛΙΩΣ Λογιστική για την ονοματολογία που απομένει Ποσότητα που απομένει ως ποσότητα που απομένει
ΑΠΟ



ΟΠΟΥ

Λειτουργία ISNULL(τιμή, ResultIfNULL)επιστρέφει την τιμή της πρώτης παραμέτρου εάν δεν είναι NULL και την τιμή της δεύτερης παραμέτρου διαφορετικά
Συμπτυγμένο SELECT...END, αλλά προτιμάται το ISNULL.
Κωδικός 1C v 8.χ
ΕΠΙΛΕΓΩ
ISNULL(Directory.Nomenclature.Article, "---") AS άρθρο,
Directory.Nomenclature.Presentation AS Nomenclature

ένα άλλο παράδειγμα:
Κωδικός 1C v 8.χ
ΕΠΙΛΕΓΩ
Κατάλογος Ονοματολογίας.
ISNULL(AccountingItemRemaining.QuantityRemaining, 0) AS QuantityRemaining
ΑΠΟ
Directory.Nomenclature AS DirectoryNomenclatures
ΑΡΙΣΤΕΡΑ ΣΥΝΔΕΣΗ Καταχωρήστε συσσωρεύσεις.
Στοιχείο λογισμικού AccountingRemains.Nomenclature = Κατάλογος Ονοματολογίας.Σύνδεσμος
ΟΠΟΥ
Κατάλογος Ονοματολογίας.ThisGroup = FALSE
Σε αυτό το παράδειγμα, λαμβάνονται όλα τα στοιχεία του καταλόγου στοιχείων, μετά τα οποία, για κάθε στοιχείο, λαμβάνονται τα τρέχοντα υπόλοιπα από τον καταχωρητή συσσώρευσης. Επειδή για ένα είδος για το οποίο δεν υπάρχουν υπόλοιπα, ο εικονικός πίνακας υπολοίπων δεν θα επιστρέψει εγγραφή, στη συνέχεια ως αποτέλεσμα της σύνδεσης στο πεδίο "Λογιστικής ύλης. δεν υπήρχαν ισορροπίες. Για να διασφαλίσουμε ότι αντί για την τιμή NULL, το αποτέλεσμα της αίτησης περιέχει την τιμή 0, χρησιμοποιήσαμε τη συνάρτηση ISNULL(), η οποία θα πραγματοποιήσει την επιθυμητή αντικατάσταση.

ISNULLδιαφέρει από το CHOICE για τους εξής λόγους:
α) Εάν ISNULL, το ερώτημα είναι καλύτερα ευανάγνωστο (απλότερο)
β) Εάν ISNULL, εάν έχει επιλεγεί μια σύνθετη παράσταση, λειτουργεί πιο γρήγορα αφού υπολογίζεται μία φορά
γ) Εάν ISNULL, η έκφραση αντικατάστασης μετατρέπεται στον τύπο της έκφρασης που ελέγχεται εάν είναι τύπου String (μήκος) ή Number (βάθος bit).

Δεν μπορείτε να ελέγξετε τις τιμές για NULL χρησιμοποιώντας τη συνήθη ισότητα, επειδή η SQL χρησιμοποιεί λογική τριών τιμών - True, False, NULL, και το αποτέλεσμα μιας τέτοιας σύγκρισης θα είναι ΑΓΝΩΣΤΟ, το οποίο στο 1C 8.0 είναι παρόμοιο με το FALSE.
ΜΗΔΕΝΙΚΟ<>0, οπότε για τις αριστερές εξωτερικές συνδέσεις, ανατρέξτε. Ονοματολογία με πίνακες υπολοίπων, τιμών, Αντισυμβαλλόμενους με αμοιβαίους διακανονισμούς, ελλείψει τέτοιων εγγραφών θα υπάρχει NULL, που δεν ισούται με 0. Η καλύτερη λύση είναι το ISNULL

Προσοχή! Αυτή είναι μια εισαγωγική έκδοση του μαθήματος, τα υλικά του οποίου μπορεί να είναι ελλιπή.

Συνδεθείτε στον ιστότοπο ως φοιτητής

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

Γλώσσα ερωτήματος 1C 8.3 για αρχάριους προγραμματιστές: συναρτήσεις και τελεστές για εργασία με τύπους (ΤΥΠΟΣ ΤΙΜΗΣ, TYPE, REFERENCE, ISNULL, EXPRESS)

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

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

Λειτουργία VALUE TYPE

Αυτή η συνάρτηση παίρνει μία παράμετρο (τιμή) και επιστρέφει τον τύπο της. Για τα στηρίγματα που περιγράφονται στην εικόνα (πάνω) ΓεύσηΕυρετήριο Τροφήθα επιστραφούν τα εξής:

Τώρα ας δούμε τα στηρίγματα Διακριτικό χαρακτηριστικόστον κατάλογο πόλεις:

Βλέπετε ότι αυτό το στήριγμα μπορεί να είναι ένας από τους διάφορους τύπους: Γραμμή, Κατάλογος.Γεύσεις, Κατάλογος.Χρώματα. Αυτός ο τύπος λεπτομερειών ονομάζεται ΣΥΝΘΕΤΑ.

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

Και μόνο μετά την επιλογή μας θα μας επιτρέψει να εισάγουμε την τιμή του επιλεγμένου τύπου.

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

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

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

Εδώ είναι η γραμμή:

Και εδώ είναι γενικά ένα στοιχείο του βιβλίου αναφοράς Χρωματιστά:

Αυτές είναι οι δυνατότητες που μας ανοίγει ένας σύνθετος τύπος δεδομένων!

Αναρωτιέμαι πώς θα συμπεριφερθεί η λειτουργία ΤΙΜΕΣ ΤΥΠΟΥστα στηρίγματα Διακριτικό Στοιχείο, με σύνθετο τύπο δεδομένων:

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

Ο τύπος της τιμής του διακριτικού χαρακτηριστικού για το στοιχείο Ρωσία είναι ίσος με ΜΗΔΕΝΙΚΟ. Είναι η πρώτη φορά που συναντάμε αυτό το είδος. Οι τιμές αυτού του τύπου χρησιμοποιούνται αποκλειστικά για τον προσδιορισμό της τιμής που λείπει κατά την εργασία με τη βάση δεδομένων.

Αυτό ισχύει, επειδή το στοιχείο Ρωσία είναι μια ομάδα και όχι ένα συνηθισμένο στοιχείο καταλόγου πόλεις, άρα δεν έχει πεδίο Διακριτικό χαρακτηριστικό. Και ο τύπος μιας τιμής που λείπει, όπως διαβάσαμε παραπάνω, είναι πάντα ίσος με ΜΗΔΕΝΙΚΟ.

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

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

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

Η Ινδία είναι πάλι μια ομάδα, οπότε δεν υπάρχει καμία σημασία. Και ο τύπος της τιμής που λείπει, όπως θυμόμαστε, είναι ίσος με ΜΗΔΕΝΙΚΟ.

Εδώ είναι το θέμα. Εάν μεταβείτε στο στοιχείο καταλόγου πόλειςμε όνομα Σάο Πάολο, τότε θα δείτε ότι το πεδίο Διακριτικό χαρακτηριστικόδεν έχει συμπληρωθεί καθόλου. Είναι άδειο. ΕΝΑ όλα τα κενά πεδία ενός σύνθετου τύπου έχουν ιδιαίτερη σημασίαΑΟΡΙΣΤΟΣ .

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

Λειτουργία TYPE

Χρειάζεται μόνο μία παράμετρος - το όνομα του πρωτόγονου τύπου ( ΓΡΑΜΜΗ, ΑΡΙΘΜΟΣ, ΗΜΕΡΟΜΗΝΙΑ, BOOLEAN), ή το όνομα του πίνακα του οποίου τον τύπο συνδέσμου θέλετε να λάβετε.

Το αποτέλεσμα αυτής της κατασκευής θα είναι μια τιμή τύπου Type για τον καθορισμένο τύπο.

Ακούγεται ασαφές, έτσι δεν είναι;

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

Ας υποθέσουμε ότι πρέπει να επιλέξουμε όλες τις καταχωρήσεις καταλόγου πόλεις, τα οποία έχουν σύνθετα στηρίγματα Διακριτικό χαρακτηριστικόέχει μια τιμή τύπου ΓΡΑΜΜΗ:

Τώρα ας επιλέξουμε όλες τις εγγραφές που έχουν τιμές χαρακτηριστικών Διακριτικό χαρακτηριστικόείναι σύνδεσμοι προς στοιχεία καταλόγου Χρωματιστά(τραπέζι Κατάλογος.Χρώματα):

Υποχώρηση

Όπως θυμάστε, ορισμένα στοιχεία του καταλόγου πόλειςδεν έχουν στηρίγματα Διακριτικό χαρακτηριστικό. Λειτουργία ΤΙΜΕΣ ΤΥΠΟΥγια τέτοια στοιχεία παράγει ΜΗΔΕΝΙΚΟ.

Πώς μπορείτε να επιλέξετε τέτοια στοιχεία σε ένα ερώτημα; Για αυτό παρέχεται ειδικός λογικός τελεστής ΕΙΝΑΙ ΜΗΧΑΝΟ(δεν πρέπει να συγχέεται με τη λειτουργία ISNULL, που θα δούμε παρακάτω). Διαβάζετε μια δοκιμαστική έκδοση του μαθήματος, είναι διαθέσιμα πλήρη μαθήματα.

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

Εξαιρετική. Αλλά προσέξατε ότι δεν υπάρχει στοιχείο του Σάο Πάολο, τύπου props value Διακριτικό χαρακτηριστικόπου έδωσε και αυτός ΜΗΔΕΝΙΚΟ. Γιατί συνέβη?

Αλλά το θέμα είναι ότι η κατάσταση για τις ομάδες (Ρωσία, Ινδία, Βραζιλία), για τις οποίες συμπληρώνονται οι λεπτομέρειες Διακριτικό χαρακτηριστικόαδύνατο κατ' αρχήν, αφού δεν το έχουν καθόλου, διαφέρει από την κατάσταση για το στοιχείο του Σάο Πάολο, για το οποίο είναι δυνατή η συμπλήρωση των στηρίξεων, αλλά απλά δεν συμπληρώνεται και ισοδυναμεί, όπως θυμόμαστε, με ένα ειδική αξία ΑΠΡΟΣΔΙΟΡΙΣΤΟΣ.

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

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

Παρεμπιπτόντως, ο λογικός τελεστής IS NULL έχει μια μορφή άρνησης που μοιάζει με αυτό:

Λογικός τελεστής LINK

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

Όπως θυμάστε, θα μπορούσαμε να λύσουμε το ίδιο πρόβλημα χρησιμοποιώντας ΤΙΜΕΣ ΤΥΠΟΥΚαι ΤΥΠΟΣ:

Λειτουργία ISNULL

Η συνάρτηση έχει σχεδιαστεί για να αντικαταστήσει μια τιμή ΜΗΔΕΝΙΚΟμε διαφορετικό νόημα.

Θυμόμαστε ότι το νόημα ΜΗΔΕΝΙΚΟεπιστρέφεται εάν το ζητούμενο χαρακτηριστικό (πεδίο, ιδιότητα) δεν υπάρχει.

Για παράδειγμα, στηρίγματα Διακριτικό χαρακτηριστικόγια ομάδες καταλόγου πόλεις:

Λειτουργία ISNULLθα μας βοηθήσει να εξάγουμε μια διαφορετική τιμή εάν αυτή η τιμή είναι ίση με ΜΗΔΕΝΙΚΟ. Διαβάζετε μια δοκιμαστική έκδοση του μαθήματος, είναι διαθέσιμα πλήρη μαθήματα. Έστω σε αυτήν την περίπτωση η γραμμή "Δεν υπάρχει τέτοιο στήριγμα!":

Αποδεικνύεται ότι αν η πρώτη παράμετρος της συνάρτησης ISNULLόχι ίσα ΜΗΔΕΝΙΚΟ, μετά επιστρέφει. Εάν είναι NULL, τότε επιστρέφεται η δεύτερη παράμετρος.

Λειτουργία EXPRESS

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

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

Για χωράφι Διακριτικό χαρακτηριστικότέτοιοι έγκυροι τύποι είναι ΓΡΑΜΜΗ, Κατάλογος.ΧρώματαΚαι Κατάλογος.Γεύσεις.

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

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

Ως αποτέλεσμα, όλες οι τιμές στοιχείων που ήταν του τύπου Directory.Colors,παρέμειναν γεμάτα και μετατράπηκαν στον καθορισμένο τύπο. Όλες οι τιμές άλλων τύπων ( ΓΡΑΜΜΗ, Κατάλογος.Γεύσεις) είναι πλέον ίσες ΜΗΔΕΝΙΚΟ. Αυτή είναι η ιδιαιτερότητα του τύπου χύτευσης με χρήση της συνάρτησης ΕΞΠΡΕΣ.

Μπορείτε να ρίξετε έναν τύπο είτε σε έναν πρωτόγονο τύπο ( BOOLEAN, ΑΡΙΘΜΟΣ, ΓΡΑΜΜΗ, ΗΜΕΡΟΜΗΝΙΑ) ή σε έναν τύπο αναφοράς. Διαβάζετε μια δοκιμαστική έκδοση του μαθήματος, είναι διαθέσιμα πλήρη μαθήματα. Αλλά ο τύπος στον οποίο γίνεται η χύτευση πρέπει να περιλαμβάνεται στη λίστα τύπων για αυτό το σύνθετο πεδίο, διαφορετικά το σύστημα θα προκαλέσει σφάλμα.

Κανε το τεστ

Έναρξη δοκιμής

1. Επιλέξτε την πιο σωστή πρόταση

2. Οι λεπτομέρειες που μπορούν να λάβουν τιμές ενός από διάφορους τύπους ονομάζονται

3. Για να προσδιορίσετε τον τύπο της τιμής του χαρακτηριστικού, χρησιμοποιήστε τη συνάρτηση

4. Οι κενές λεπτομέρειες ενός σύνθετου τύπου είναι σημαντικές



 


Ανάγνωση:


Νέος

Πώς να αποκαταστήσετε τον εμμηνορροϊκό κύκλο μετά τον τοκετό:

Υπέρθεση Συναρτήσεων Λογικής Άλγεβρας Μονοτονικές Συναρτήσεις Boolean

Υπέρθεση Συναρτήσεων Λογικής Άλγεβρας Μονοτονικές Συναρτήσεις Boolean

Μια αντιστοιχία G μεταξύ των συνόλων Α και Β ονομάζεται υποσύνολο. Αν , τότε το b λέγεται ότι αντιστοιχεί στο a. Πολλά σχετικά...

Τι είναι ένα πληροφοριακό σύστημα;

Τι είναι ένα πληροφοριακό σύστημα;

Κρατικές πύλες, ιστοσελίδες ΜΠΚΕ. Ενιαίο σύστημα αναγνώρισης και ελέγχου ταυτότητας - esia.gosuslugi.ru EPGU. Ενιαία πύλη δημοσίων υπηρεσιών...

Μετάβαση από μια λογική έκφραση σε ένα λογικό κύκλωμα και αντίστροφα

Μετάβαση από μια λογική έκφραση σε ένα λογικό κύκλωμα και αντίστροφα

Εργαστηριακή εργασία Νο 4. Υλοποίηση κυκλώματος λογικών στοιχείων. Κατασκευή λογικών κυκλωμάτων. Θεωρητικό μέρος. Η επεξεργασία βασίζεται...

Νίζνι Νόβγκοροντ αμηχανία των Russian Post

Νίζνι Νόβγκοροντ αμηχανία των Russian Post

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

ζωοτροφή-εικόνα RSS