Προσθέστε μια γραμμή στο τμήμα πίνακα του εγγράφου 1s 8.3. Πλήκτρα συντόμευσης: γενικές ενέργειες

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

Form Elements.TableField1.AddRow(); σελίδα = FormElements.TableField1.CurrentRow; p.First = 3; p.Second = "Αλεύρι"; σελ.Ποσότητα = 350;

Πώς να προσδιορίσετε τον αριθμό των σειρών σε έναν πίνακα τιμών σε 1s 8;

countRows = table.Quantity(); Αναφορά ("Αριθμός σειρών στον πίνακα τιμών πίνακα = " + αριθμός σειρών);

Αποτέλεσμα:

Αριθμός σειρών στον πίνακα τιμών του πίνακα = 3

Πώς να διαγράψετε μια σειρά σε έναν πίνακα τιμών στο 1s 8;

rowTable = πίνακας; table.Delete(rowTable);

Πώς να συμπτύξετε έναν πίνακα τιμών σε 1s 8;

Κατάρρευση:

table.Collapse("Second", "Quantity");

Λαμβάνουμε μετά τη συνέλιξη:

Πώς να ταξινομήσετε έναν πίνακα τιμών σε 1s 8;

Ταξινόμηση κατά τη δεύτερη και την τρίτη στήλη:

table.Sort("Second, Quantity");

Πώς να τοποθετήσετε ένα πεδίο πίνακα σε μια γραμμή στο 1c 8;

Στη δεύτερη γραμμή:

Form Elements.TableField1.CurrentRow = πίνακας;

Εκτυπώσιμη φόρμα σε 1s 8

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

Διαδικασία CommandPanel1Print(Button) μεταβλητή td, rs, rs1, διάταξη, κωδικός, όνομα, όνομα; κωδικός = 0; διάταξη = GetLayout("Προϊόντα"); header = layout.GetArea("Header"); header.Parameters.datta = CurrentDate(); pc = layout.GetArea("pc"); pc1 = layout.GetArea("pc1"); td = Νέο TabularDocument; td.Output(cap); nomen = Directories.Nomenclature; επιλογή = nom.SelectHierarchically(); ενώ fetch.Next() κωδικός βρόχου = κωδικός + 1; εάν sample.ThisGroup = True τότε pc1.Parameters.code = κωδικός; pc1.Parameters.name = επιλογή.Όνομα; td.Output(rs1); else rs.Parameters.code = κωδικός; rs.Parameters.name = επιλογή.Όνομα; td.Withdraw(rs); τέλος εαν; endCycle; etc.ViewOnly = True; td.Show("Κατάλογος ""Ονοματολογία"""); Τέλος Διαδικασίας

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

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

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

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

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

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

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

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

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

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

Μεταβλητή = "Hello" + Symbols.PS + "peace!";

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

    FormattedDocument = CurrentObject.Attributes.Get();
    Τέλος Διαδικασίας

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

    &Στον διακομιστή
    Διαδικασία κατά την ανάγνωση στον διακομιστή (Τρέχον αντικείμενο)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Τέλος Διαδικασίας

Υπάρχουν τμήματα πίνακα για πολλά αντικείμενα στο 1C:

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

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

Ας δούμε μερικές τεχνικές για την εργασία με πίνακες.

Πώς να παρακάμψετε το τμήμα του πίνακα

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

Για κάθε γραμμή από το Πινακοποιημένο μέρος του κύκλου

Αναφορά(Σειρά. Χαρακτηριστικό TabularPart) ;

EndCycle ;

Σε κάθε επανάληψη στη μεταβλητή Γραμμήμεταδίδεται η επόμενη σειρά της ενότητας του πίνακα. Οι τιμές των λεπτομερειών της σειράς μπορούν να ληφθούν από την έκφραση Line.AttributeName.

Πώς να λάβετε και να παρακάμψετε επιλεγμένες σειρές του πίνακα

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

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

Ένας βρόχος χρησιμοποιείται για επανάληψη στις επιλεγμένες γραμμές. Για κάθε:

SelectedRows = FormElements. Όνομα πεδίου πίνακα. Επιλεγμένες σειρές;

Για κάθε σειρά από τον βρόχο επιλεγμένων γραμμών

//περιεχόμενα βρόχου

EndCycle ;

Πώς να επιλέξετε μέσω προγραμματισμού σειρές ενός τμήματος πίνακα (πεδίο πίνακα) και να τις αποεπιλέξετε

Για να αποεπιλέξετε μέσω προγραμματισμού σειρές ενός πεδίου πίνακα:

Στοιχεία Μορφής. Όνομα πεδίου πίνακα. Επιλεγμένες σειρές. Σαφή() ;

Για να επιλέξετε μέσω προγραμματισμού όλες τις σειρές ενός πεδίου πίνακα:

Για κάθε CurrentRow From TabularPart Loop
Στοιχεία Μορφής. Όνομα πεδίου πίνακα. Επιλεγμένες Γραμμές. Add(CurrentRow) ;
EndCycle ;

Πώς να καθαρίσετε το τμήμα του πίνακα

Πίνακας Μέρος. Σαφή() ;

Πώς να αποκτήσετε την τρέχουσα σειρά μιας ενότητας πίνακα

Η τρέχουσα γραμμή είναι η γραμμή χρόνου στην οποία ο χρήστης έχει αυτήν τη στιγμή τον κέρσορα. Για να το αποκτήσετε, πρέπει να αποκτήσετε πρόσβαση στο στοιχείο ελέγχου στη φόρμα που σχετίζεται με το τμήμα πίνακα.

Για κανονικές φόρμες ο κώδικας θα μοιάζει με αυτό:

Στοιχεία Μορφής. Όνομα πεδίου πίνακα. Τρέχοντα Δεδομένα;

Για διαχειριζόμενες φόρμες:

Στοιχεία. Όνομα πεδίου πίνακα. Τρέχοντα Δεδομένα;

Πώς να προσθέσετε μια νέα σειρά σε μια ενότητα πίνακα

Προσθήκη νέας γραμμής στο τέλος του τμήματος του πίνακα:

NewRow = TablePart. Προσθήκη() ;

Προσθήκη νέας γραμμής οπουδήποτε στην ενότητα του πίνακα (οι επόμενες γραμμές θα μετατοπιστούν):

NewRow = TablePart. Εισαγωγή (Ευρετήριο)
//Ευρετήριο - αριθμός της γραμμής που προστέθηκε. Η αρίθμηση γραμμών ξεκινά από το μηδέν.

Νέα γραμμή. Props1 = "Αξία" ;

Πώς να συμπληρώσετε μέσω προγραμματισμού τα στοιχεία μιας σειράς πίνακα

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

Η διαδικασία που δημιουργείται από τον χειριστή έχει τρεις παραμέτρους:

  • Στοιχείο- περιέχει ένα στοιχείο ελέγχου TabularField.
  • Νέα γραμμή- boolean. Περιέχει αξία Αληθής, εάν προστεθεί μια νέα σειρά πίνακα και Ψέμα,εάν ο χρήστης άρχισε να επεξεργάζεται μια ήδη υπάρχουσα γραμμή.
  • αντίγραφο- boolean. Περιέχει αξία Αληθής, εάν ο χρήστης αντιγράψει τη γραμμή και Ψέμασε άλλες περιπτώσεις.

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

Διαδικασία TabularPartAtStartEditing (Στοιχείο, Νέα Γραμμή, Αντιγραφή)

//Εάν ο χρήστης επεξεργαστεί μια υπάρχουσα γραμμή, τότε δεν κάνουμε τίποτα
Αν ΟΧΙ NewRow Τότε
ΕΠΙΣΤΡΟΦΗ;
Τέλος εαν ;

//Εάν η γραμμή είναι νέα, ορίστε τον λογιστικό λογαριασμό
TechString = Στοιχείο. Τρέχοντα Δεδομένα; //Λάβετε την τρέχουσα σειρά του τμήματος πίνακα
TechString. Λογιστικά = Λογιστικά Σχέδια. Αυτοϋποστήριξη. Απαιτούμενος Λογαριασμός;
Τέλος Διαδικασίας