Λήψη δεδομένων από το αρχείο xls 1c. Ποιο είναι καλύτερο - "1C" ή "Excel"; Λίγα λόγια για πιθανά λάθη

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

1. Εργασία μέσω ενός αντικειμένου COM.

Για αυτήν τη μέθοδο, πρέπει να εγκατασταθεί το MS Excel, επιπλέον, εάν εργάζεστε με ένα αρχείο στον διακομιστή, τότε το MS Excel πρέπει να εγκατασταθεί στον διακομιστή, εάν στον υπολογιστή-πελάτη, τότε απαιτείται και το MS Excel από την πλευρά του πελάτη.

Ένα παράδειγμα (στο τέλος του άρθρου μπορείτε να το δείτε σε μορφή κειμένου):

Θα πρέπει να σημειωθεί ότι όλα τα αντικείμενα, οι μέθοδοι και οι ιδιότητες που παρέχονται από το αντικείμενο COM "Excel.Application" είναι αντικείμενα, μέθοδοι και ιδιότητες της VBA, της γλώσσας προγραμματισμού MS Office.

Σημείωση:

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

2. Εργαστείτε μέσω του Πίνακα εγγράφου 1C.

Το έγγραφο υπολογιστικού φύλλου 1C υποστηρίζει τη μορφή MS Excel για γραφή ξεκινώντας από την πλατφόρμα 8, αλλά για άνοιγμα μόνο ξεκινώντας από την πλατφόρμα 8.3.6. Επιπλέον, κατά το άνοιγμα, όλα τα φύλλα φορτώνονται σε ένα έγγραφο υπολογιστικού φύλλου. Από την έκδοση 8.3.10, κατά τη φόρτωση, διαφορετικά φύλλα φορτώνονται ως διαφορετικές περιοχές.

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

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

Αυτό το πρόβλημα μπορεί να λυθεί με 2 τρόπους, 1 - στο ίδιο το βιβλίο, στις ρυθμίσεις, ενεργοποιήστε την εμφάνιση φύλλων (δεν θα συμφωνήσουν όλοι οι χρήστες να το κάνουν), 2 - για να το κάνετε μέσω ενός αντικειμένου COM (χρειαζόμαστε και πάλι MS εγκατεστημένο το Excel).

Μετά από αυτή τη μικρή προσθήκη, οι συντομεύσεις φύλλων θα είναι ορατές στο αρχείο MS Excel.

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

& OnClient

Διαδικασία Δημιουργία εγγράφου ()

Εξαίρεση

Τέλος προσπαθειών;

Βιβλίο = Excel.WorkBooks.Add (); // Δημιουργία νέου βιβλίου εργασίας MS Excel

Φύλλο = Book.WorkSheets.Add (); // Προσθήκη φύλλου

Sheet.Name = "Παράδειγμα από 1C"; // Ορίστε το όνομα του φύλλου

Sheet.Cells (1,1) .Value = "(! LANG: Ας δημιουργήσουμε έναν τύπο";!}

Φύλλο.Κελιά (2,1) .Τιμή = 1;

Φύλλο.Κελιά (2,2) .Τιμή = 2;

Φύλλο.Κελιά (2,3) .Τύπος = "= A2 + B2";

Sheet.Cells (3,1) .Value = CurrentDate ();

Book.SaveAs ("C: \ 1 \ Test.xlsx");

Book.Close ();

Τέλος Διαδικασίας

&Στον διακομιστή

Λειτουργία GetLayoutServer ()

Επιστροφή FormInValue ("Object"). Get Layout ("TemplateOnDownload"); // Έτσι παίρνουμε τη διάταξη εξωτερική επεξεργασία;

EndFunction

& OnClient

Διαδικασία Εργασίας ()

Excel = Νέο αντικείμενο COMO ("Excel.Application");

Εξαίρεση

Αναφορά ("Αποτυχημένη προσπάθεια σύνδεσης στοιχείου Excel. Πιθανώς Πρόγραμμα Excelδεν έχει εγκατασταθεί σε αυτός ο υπολογιστής!");

Τέλος προσπαθειών;

Layout = Λήψη LayoutServer ();

Layout.Write (TemporaryFileName);

Έχετε κάποια ερώτηση, χρειάζεστε τη βοήθεια ενός συμβούλου;

Βιβλίο = Excel.WorkBooks.Open (TemporaryFileName);

TemplateSheet = Book.WorkSheets (1);

Template Sheet.Cells (6,1) .Value = "(! LANG: Date:";!}

Φύλλο προτύπου.Κελιά (6,2) .Τιμή = Τρέχουσα ημερομηνία ();

Template Sheet.NumberFormat = "dd / mm / yy; @"; // Ας δώσουμε τη μορφή ημερομηνίας, αυτή η μορφή λήφθηκε με την εγγραφή μιας μακροεντολής στο MS Excel

TemplateLeaf.Columns ("B: B"). EntireColumn.AutoFit; // Τεντώστε τη στήλη έτσι ώστε η ημερομηνία να ταιριάζει ακριβώς

Book.SaveAs (Όνομα αρχείου);

Book.Close ();

Τέλος Διαδικασίας

& OnClient

Τέλος Διαδικασίας

& OnClient

Διαδικασία WriteSheetDocument ()

TabularDocument = Νέο TabularDocument ();

TabularDocument.Object ("R1C1"). Text = "Ένα παράδειγμα εγγραφής στο MS Excel από 1C";

TabularDocument.Write ("C: \ 1 \ Test2.xls", TabularDocumentFileType.XLSX);

Excel = Νέο αντικείμενο COMO ("Excel.Application");

Excel.WorkBooks.Open ("C: \ 1 \ Test2.xls");

Excel.Visible = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0,6;

Excel.ActiveWorkbook.Save ();

Excel.Application.Quit ()

Τέλος Διαδικασίας

BinaryData = New BinaryData ("C: \ 1 \ test2.xlsx");

Διεύθυνση = PlaceTemporaryStorage (BinaryData, EtaForm.UniqueIdentifier);

TabularDocument = LoadOnServer (Διεύθυνση);

TabularDocument.Show ();

Τέλος Διαδικασίας

&Στον διακομιστή

Λειτουργία LoadOnServer (Διεύθυνση)

TempFileName = GetTempFileName ("xlsx");

FileData = GetFrom TemporaryStorage (Διεύθυνση);

FileData.Write (TemporaryFileName);

TabularDocument = Νέο TabularDocument ();

Επιστρέφοντας TabularDocument.

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

  • Σημειωσε (< ИмяФайла>, < ТипФайлаТаблицы >) για να ανεβάσετε δεδομένα σε ένα αρχείο.
  • Ανάγνωση (< ИмяФайла>, < СпособЧтенияЗначений >) για να φορτώσετε δεδομένα από ένα αρχείο.

Προσοχή!

Η μέθοδος Write () είναι διαθέσιμη τόσο στον πελάτη όσο και στον διακομιστή. Η μέθοδος Read () είναι διαθέσιμη μόνο από την πλευρά του διακομιστή. Να το θυμασαι
κατά τον σχεδιασμό της αλληλεπίδρασης πελάτη-διακομιστή.

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

TabDoc ... Εγγραφή (FilePath, TabularDocumentFileType. XLSX);

Εδώ TabDoc- δημιουργημένο έγγραφο υπολογιστικού φύλλου, Η διαδρομή προς το αρχείο- το όνομα του αρχείου προς αποστολή, Πίνακας Τύπος αρχείου εγγράφου.XLSX- μορφή δημιουργημένο αρχείο... Υποστηρίζεται παρακάτω μορφέςΠροέχω:

  • XLS95 - Μορφή Excel 95.
  • XLS97 - Μορφή Excel 97.
  • Μορφή XLSX - Excel 2007.

TabDoc = Νέο TabularDocument;
TabDoc ... Ανάγνωση (Διαδρομή προς το αρχείο, Πώς να διαβάσετε τις τιμές εγγράφου σε πίνακα.);

Εδώ Η διαδρομή προς το αρχείο- τη διαδρομή προς το ληφθέν αρχείο Excel. Μέθοδος Ανάγνωσης Πίνακας Τιμών Εγγράφων.καθορίζει τον τρόπο ερμηνείας των δεδομένων που διαβάζονται από το έγγραφο προέλευσης. Οι επιλογές είναι:

  • Εννοια;
  • Κείμενο.

Ανταλλαγή μέσω OLE

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

  • Στον υπολογιστή του τελικού χρήστη, εάν η ανταλλαγή πραγματοποιείται από την πλευρά του πελάτη.
  • Στον υπολογιστή 1C: Enterprise διακομιστή, εάν η ανταλλαγή πραγματοποιείται από την πλευρά του διακομιστή.

Παράδειγμα εκφόρτωση:

// Δημιουργία αντικειμένου COM
Excel = Νέο αντικείμενο COMO ("Excel.Application");
// Απενεργοποίηση εμφάνισης προειδοποιήσεων και ερωτήσεων
Προέχω ... DisplayAlerts = False;
// Δημιουργία νέου βιβλίου
Βιβλίο = Excel. Βιβλία Εργασίας. Προσθήκη ();
// Τοποθέτηση στο πρώτο φύλλο
Σεντόνι = Βιβλίο. Φύλλα εργασίας (1);

// Γράψτε τιμή στο κελί
Σεντόνι ... Κελιά (LineNumber, ColumnNumber). Τιμή = Τιμή κελιού.

// Αποθηκεύστε το αρχείο
Βιβλίο ... SaveAs (Όνομα αρχείου);


Προέχω ... Έξοδος ();
Excel = 0;

Παραδείγματα του ΑΝΑΓΝΩΣΗ:

// -- ΕΠΙΛΟΓΗ 1 --

// Δημιουργία αντικειμένου COM
Excel = Νέο αντικείμενο COMO ("Excel.Application");
// Ανοιξε το βιβλίο
Βιβλίο = Excel. Τετράδια εργασιών. Ανοιξε ( Η διαδρομή προς το αρχείο );

Σεντόνι = Βιβλίο. Φύλλα εργασίας (1);

// Κλείσε το βιβλίο
Βιβλίο ... Κλείσιμο (0);

// Κλείστε το Excel και ελευθερώστε τη μνήμη
Προέχω ... Έξοδος ();
Excel = 0;

// —— ΕΠΙΛΟΓΗ 2 ——

// Ανοιξε το βιβλίο
Βιβλίο = GetCOMObject ( Η διαδρομή προς το αρχείο );
// Τοποθέτηση στο επιθυμητό φύλλο
Σεντόνι = Βιβλίο. Φύλλα εργασίας (1);

// Διαβάστε την τιμή του κελιού, συνήθως αυτός είναι ο βρόχος για τη διέλευση των κελιών
Τιμή κελιού = Φύλλο. Κελιά (LineNumber, ColumnNumber). Αξία;

// Κλείσε το βιβλίο
Βιβλίο ... Εφαρμογή. Qui t ();

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

// -- ΕΠΙΛΟΓΗ 1 --
Αριθμός Γραμμών = Φύλλο. Κύτταρα (1, 1). SpecialCells (11). Σειρά;
Για τον αριθμό γραμμής = 1 κατά αριθμό γραμμών Βρόχος
Τιμή κελιού = Φύλλο. Κελιά (LineNumber, ColumnNumber). αξία;
Τέλος Κύκλου;

// —— ΕΠΙΛΟΓΗ 2 ——
Αριθμός γραμμής = 0;
Ενώ Κύκλος Αλήθειας
LineNumber = LineNumber + 1;
Τιμή κελιού = Φύλλο. Κελιά (LineNumber, ColumnNumber). Αξία;
Εάν ΔΕΝ έχει συμπληρωθεί η τιμή (CellValue) Τότε
Κάνω αποβολή;
Τέλος εαν;
Τέλος Κύκλου;

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

Σύνολο στηλών = Φύλλο. Κύτταρα (1, 1). SpecialCells (11). Στήλη;
Σύνολο σειρών = Φύλλο. Κύτταρα (1, 1). SpecialCells (11). Σειρά;

Περιοχή = Φύλλο. Εύρος (Φύλλο. Κελιά (1, 1), Φύλλο. Κελιά (Σύνολο Γραμμές, ΣύνολοΣτήλες));
Δεδομένα = Περιφέρεια. Αξία. Ξεφορτώνω();

Ο παρακάτω πίνακας δείχνει τις πιο δημοφιλείς ιδιότητες και μεθόδους εργασίας με το Excel μέσω OLE:

Δράση Κώδικας Ενα σχόλιο
Εργασία με την εφαρμογή
Ρύθμιση της ορατότητας του παραθύρου της εφαρμογής Προέχω ... Ορατός= Λάθος;
Ρύθμιση της λειτουργίας εμφάνισης προειδοποιήσεων (εμφάνιση / μη εμφάνιση) Προέχω ... DisplayAlerts= Λάθος;
Κλείσιμο της εφαρμογής Προέχω ... Έξοδος ();
Εργασία με ένα βιβλίο
Δημιουργία νέου βιβλίου Βιβλίο = Excel. Βιβλία Εργασίας. Προσθήκη();
Άνοιγμα υπάρχοντος βιβλίου Βιβλίο = Excel. Βιβλία Εργασίας. Άνοιγμα (Όνομα αρχείου);
Αποθήκευση βιβλίου Βιβλίο ... SaveAs (Όνομα αρχείου);
Κλείσιμο του βιβλίου Βιβλίο ... Κλείσιμο (0);
Εργασία με ένα φύλλο
Ρύθμιση του τρέχοντος φύλλου Σεντόνι = Βιβλίο. Φύλλα εργασίας (Αριθμός φύλλου);
Ρύθμιση του ονόματος Σεντόνι ... Όνομα = Όνομα;
Ρύθμιση προστασίας Σεντόνι ... Προστατεύω();
Αφαίρεση προστασίας Σεντόνι ... UnProtect();
Ρύθμιση προσανατολισμού σελίδας Σεντόνι ... Εγκατάσταση σελίδας. Προσανατολισμός = 2; 1 - πορτραίτο, 2 - τοπίο
Ρύθμιση του αριστερού περιγράμματος Σεντόνι ... Εγκατάσταση σελίδας. LeftMargin = Excel. CentimetersToPoints (CentimetersToPoints);
Ρύθμιση του άνω ορίου Σεντόνι ... Εγκατάσταση σελίδας. TopMargin = Excel. CentimetersToPoints (CentimetersToPoints);
Ρύθμιση του δεξιού περιγράμματος Σεντόνι ... Εγκατάσταση σελίδας. RightMargin = Excel. CentimetersToPoints (CentimetersToPoints);
Ρύθμιση του κάτω περιγράμματος Σεντόνι ... Εγκατάσταση σελίδας. BottomMargin = Excel. CentimetersToPoints (CentimetersToPoints);
Εργασία με γραμμές, στήλες, κελιά
Ρύθμιση του πλάτους της στήλης Σεντόνι ... Στήλες. ColumnWidth = Πλάτος;
Διαγραφή γραμμής Σεντόνι ... Σειρές. Διαγράφω();
Διαγραφή στήλης Σεντόνι ... Στήλες. Διαγραφή ();
Διαγραφή κελιού Σεντόνι ... Κελιά (LineNumber, ColumnNumber). Διαγράφω();
Ρύθμιση της τιμής Σεντόνι ... Κελιά (LineNumber, ColumnNumber). Αξία = Αξία;
Συγχώνευση κυττάρων Σεντόνι ... Εύρος (Φύλλο. Κελιά (Αριθμός γραμμής, Αριθμός στήλης), Φύλλο.Κελιά (Αριθμός γραμμής1 ,Αριθμός στήλης1)). Συγχώνευση();
Εγκατάσταση της γραμματοσειράς Σεντόνι ... Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Όνομα = Όνομα γραμματοσειράς;
Ρύθμιση του μεγέθους της γραμματοσειράς Σεντόνι ... Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Μέγεθος = Μέγεθος γραμματοσειράς;
Ρύθμιση της έντονης γραμματοσειράς Σεντόνι ... Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Τολμηρός = 1 ; 1 - έντονη, 0 - κανονική
Ρύθμιση πλάγιας γραφής Σεντόνι ... Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Πλάγια γραφή = 1 ; 1 - πλάγιο, 0 - κανονικό
Ρύθμιση της υπογραμμισμένης γραμματοσειράς Σεντόνι ... Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Υπογραμμίζω = 2 ; 2 - υπογραμμισμένο, 1 - όχι

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

Χρησιμοποιώντας το COMSafeArray

Κατά την εκφόρτωση μεγάλων ποσοτήτων δεδομένων από το 1C στο Excel, μπορείτε να χρησιμοποιήσετε το αντικείμενο για να επιταχύνετε COMSafeArray... Σύμφωνα με τον ορισμό από τον βοηθό σύνταξης, το COMSafeArray είναι ένα περιτύλιγμα αντικειμένων πάνω από έναν πολυδιάστατο πίνακα SafeArrayαπό την COM. Σας επιτρέπει να δημιουργείτε και να χρησιμοποιείτε το SafeArray για την ανταλλαγή δεδομένων μεταξύ αντικειμένων COM. Με απλά λόγια, είναι μια σειρά τιμών που μπορεί να χρησιμοποιηθεί για ανταλλαγή μεταξύ εφαρμογών χρησιμοποιώντας τεχνολογία OLE.

// Δημιουργία COMSafeArray
ArrayCom = Νέο COMSafeArray ("VT_Variant", TotalColumns, TotalStrings);
// Συμπληρώστε το COMSafeArray
Για Γραμμές = 0 Κατά Σύνολο Γραμμών - 1 Κύκλος
Για Αριθμός = 0 Σύνολο στηλών - 1 Κύκλος
ArrayCom ... SetValue (Αριθμός, Σελίδα, Τιμή);
Τέλος Κύκλου;
Τέλος Κύκλου;
// Εκχωρήστε τιμές από το COMSafeArray στην περιοχή του φύλλου εργασίας του Excel
Σεντόνι ... Εύρος (Φύλλο. Κελιά (1, 1), Φύλλο. Κελιά (Σύνολο σειρές, Σύνολο στηλών)). Τιμή = ArrayCom;

Ανταλλαγή μέσω ADO

Ένα αρχείο Excel που ανταλλάσσεται μέσω του ADO είναι μια βάση δεδομένων στην οποία μπορείτε να προσπελάσετε χρησιμοποιώντας ερωτήματα SQL. Δεν χρειάζεται να εγκαταστήσετε το MS Excel, αλλά πρέπει να υπάρχει ένα πρόγραμμα οδήγησης ODBC, το οποίο θα χρησιμοποιηθεί για πρόσβαση. Το πρόγραμμα οδήγησης ODBC που θα χρησιμοποιηθεί καθορίζεται με τον καθορισμό μιας συμβολοσειράς σύνδεσης στο αρχείο. Συνήθως το απαιτούμενο πρόγραμμα οδήγησης είναι ήδη εγκατεστημένο στον υπολογιστή.

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

Παράδειγμα εκφόρτωση:


Σύνδεση = Νέο αντικείμενο COMO ("ADODB.Connection");


Χημική ένωση ... ConnectionString = "

| Πηγή δεδομένων = " + Όνομα αρχείου + ";
;
Χημική ένωση ... Ανοιξε (); // Άνοιγμα σύνδεσης

// Δημιουργήστε ένα αντικείμενο COM για την εντολή
Command = Νέο αντικείμενο COMO ("ADODB.Command");
Εντολή

// Αντιστοιχίστε το κείμενο της εντολής για τη δημιουργία του πίνακα
Εντολή ... CommandText = "ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑ [Φύλλο1] (Στήλη 1 χαρακτήρες (255), Ημερομηνία στήλης 2, Στήλη 3 int, Στήλη 4 float)";
Εντολή ... Εκτέλεση (); // Εκτελέστε την εντολή

// Εκχωρήστε το κείμενο της εντολής για την προσθήκη μιας γραμμής πίνακα
Εντολή ... CommandText = "INSERT INTO [Φύλλο1] (Στήλη 1, Στήλη 2, Στήλη3, Στήλη 4) τιμές (‘ ‘‘ ‘’ ’,‘ 8/11/2017 ‘”, ‘12345’, ‘12345.6789’);
Command.Execute (); // Εκτελέστε την εντολή

// Διαγράψτε την εντολή και κλείστε τη σύνδεση
Εντολή = Απροσδιόριστο;
Χημική ένωση ... Κλείσε();
Σύνδεση = Απροσδιόριστη;

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

// Δημιουργία αντικειμένου COM για εργασία με το βιβλίο
Βιβλίο = Νέο αντικείμενο COMO ("ADOX.Catalog");
Βιβλίο ... ActiveConnection = Σύνδεση;

// Δημιουργήστε ένα αντικείμενο COM για εργασία με τη δομή δεδομένων στο φύλλο
Πίνακας = Νέο αντικείμενο COMO ("ADOX.Table");
τραπέζι ... Όνομα = "Φύλλο1";
τραπέζι ... Στήλες. Προσάρτημα ("Στήλη 1", 202);
τραπέζι ... Στήλες. Προσάρτημα ("Στήλη 2", 7);
τραπέζι ... Στήλες. Προσάρτημα ("Στήλη 3", 5);
τραπέζι ... Στήλες. Προσάρτημα ("Στήλη 4", 5);

// Δημιουργήστε ένα φύλλο με την περιγραφόμενη δομή στο βιβλίο
Βιβλίο ... Πίνακες. Προσάρτημα (Πίνακας);
Πίνακας = Απροσδιόριστο;
Βιβλίο = Απροσδιόριστο;

Στο παραπάνω παράδειγμα, στη μέθοδο

τραπέζι ... Στήλες. Προσαρτώ("Στήλη 1", 202);

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

  • 5 - adDouble;
  • 6 - AdCorrency;
  • 7 - addDate;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

Παράδειγμα ΑΝΑΓΝΩΣΗ:

// Δημιουργήστε ένα αντικείμενο COM για τη σύνδεση
Σύνδεση = Νέο αντικείμενο COMO ("ADODB.Connection");

// Ορίστε τη συμβολοσειρά σύνδεσης
Χημική ένωση ... ConnectionString = "
| Πάροχος = Microsoft.ACE.OLEDB.12.0;
| Πηγή δεδομένων = " + Όνομα αρχείου + ";
| Εκτεταμένες ιδιότητες = "" Excel 12.0 XML; HDR = ΝΑΙ ""; ";
Χημική ένωση ... Ανοιξε (); // Άνοιγμα σύνδεσης

// Δημιουργήστε ένα αντικείμενο COM για να λάβετε την επιλογή
Επιλογή = Νέο αντικείμενο COMO ("ADODB.Recordset");
Κείμενο Αίτησης = "ΕΠΙΛΟΓΗ * ΑΠΟ [Φύλλο1 $]";

// Εκτελέστε το αίτημα
Δείγμα ... Άνοιγμα (QueryText, Connection);

// Παράκαμψη του αποτελέσματος επιλογής
ΔΕΝ γίνεται ακόμη δειγματοληψία. ΕΟΦ () Βρόχος
Τιμή στήλης 1 = Δείγμα. Πεδία. Στοιχείο ("Στήλη 1"). αξία ; // Αναφορά με όνομα στήλης
Στήλη2-Τιμή = Δείγμα. Πεδία. Στοιχείο (0). Αξία; // Αναφερόμενος στο ευρετήριο της στήλης
Δείγμα ... MoveNext ();
Τέλος Κύκλου;

Δείγμα ... Κλείσε ();
Δείγμα = Απροσδιόριστο;
Χημική ένωση ... Κλείσε ();
Σύνδεση = Απροσδιόριστη;

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

  • ΝΑΙ - η πρώτη γραμμή ερμηνεύεται ως τα ονόματα των στηλών. Οι τιμές είναι προσβάσιμες με βάση το όνομα και το ευρετήριο στήλης.
  • ΟΧΙ - η πρώτη γραμμή αντιμετωπίζεται ως δεδομένα. Οι τιμές είναι προσβάσιμες μόνο από το ευρετήριο στήλης.

Στα παραδείγματα που παρέχονται, έχουν συζητηθεί μόνο μερικά αντικείμενα ADO. Το μοντέλο αντικειμένου ADO αποτελείται από τα ακόλουθα αντικείμενα:

  • Σύνδεση;
  • Εντολή;
  • Recordset;
  • Ρεκόρ;
  • Πεδία;
  • Ρεύμα;
  • Σφάλματα;
  • Παράμετροι;
  • Ιδιότητες.

Μεταφόρτωση χωρίς προγραμματισμό

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

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

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

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

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

  • Κατά την ανταλλαγή πληροφοριών μεταξύ αντισυμβαλλομένων (τιμοκαταλόγους, δηλώσεις συμφωνίας κ.λπ.)·
  • Για τη διευκόλυνση του έργου των χειριστών σε περιπτώσεις όπου η κύρια λογιστική πραγματοποιείται στο 1C και μερικά από αυτά εκτελούνται σε Υπολογιστικά φύλλα Excel;
  • Κατά την αρχική συμπλήρωση της βάσης δεδομένων.

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

Universal μηχανισμός

Στους δίσκους ITS, καθώς και στην πύλη 1C, μεταβαίνοντας στο μενού "Τεχνολογική υποστήριξη" -> "Καθολικές αναφορές και επεξεργασία", στο φάκελο "Φόρτωση δεδομένων από έγγραφο υπολογιστικού φύλλου" υπάρχει μια αντίστοιχη επεξεργασία.

Όταν ξεκινά, ανοίγει μια φόρμα (Εικ. 1):

Όπως μπορείτε να δείτε από τη φόρμα, σας επιτρέπει να μεταφέρετε πληροφορίες στα ακόλουθα αντικείμενα διαμόρφωσης:

  1. Ευρετήριο;
  2. Πινακοποιημένο μέροςέγγραφο ή βιβλίο αναφοράς·
  3. Μητρώο πληροφοριών.

Το πεδίο επιλογής αντικειμένου αλλάζει ανάλογα με τη θέση του διακόπτη.

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

Η τυπική επεξεργασία υποστηρίζει την εκφόρτωση από:

  • Αναπτύχθηκε από ειδικούς της 1C, μορφή αρχείουmxl;
  • Λιστxls αποθηκευμένο στη μορφήExcel 97-2003;
  • Αρχείο κειμένουκείμενο;
  • Πίνακεςdbf.

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

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

Τώρα ας πάμε στην καρτέλα "Ρυθμίσεις" (Εικ. 2):

Εικ. 2

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

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

Στήλες "Ρυθμίσεις"

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

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

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

Περιγραφή τύπων - εμφανίζει τον τύπο δεδομένων που έχει ένα συγκεκριμένο χαρακτηριστικό μεταδεδομένων.

Λειτουργία λήψης - προσφέρει τρεις επιλογές για να διαλέξετε (Εικ. 3):

Εικ. 3

  • Αναζήτηση - θα πραγματοποιηθεί η αναζήτηση για το αντίστοιχο στοιχείο, εάν απουσιάζει, μπορεί να δημιουργηθεί ένα νέο.
  • Σύνολο - μια ορισμένη τιμή ορίζεται με δευτερεύοντα τρόπο.
  • Υπολογισμός - σε αυτήν την περίπτωση, το αποτέλεσμα του υπολογισμού της έκφρασης που καθορίζεται στη στήλη "Συνθήκη σύνδεσης / Έκφραση για τιμή" θα οριστεί στο πεδίο του στοιχείου που δημιουργείται.

Στην τελευταία περίπτωση, η ενεργοποίηση του πεδίου Έκφραση θα ανοίξει τη φόρμα (Εικ. 4).

Εικ. 4

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

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

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

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

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

Μπορείτε να ελέγξετε την ορθότητα των δεδομένων που μεταφέρθηκαν κάνοντας κλικ στο κουμπί «Έλεγχος πλήρωσης» (Εικ. 1). Μετά από αυτό, μπορείτε να ξεκινήσετε τη διαδικασία λήψης. Σχετικά με επιτυχής υλοποίησηδιαδικασίες ή ασυνήθιστες καταστάσεις θα ενημερωθείτε ξεχωριστά.

Υπάρχει ένας ακόμη μηχανισμός για τη φόρτωση δεδομένων από το Excel στις βάσεις πληροφοριών "Διαχείριση και Εμπορία". Είναι λιγότερο ευέλικτο από την παραπάνω μέθοδο, ωστόσο, δεν απαιτεί συνδρομή ITS και περιλαμβάνεται στην τυπική παράδοση.

Αυτή η επεξεργασία βρίσκεται στην καρτέλα "Αγορές", στο μενού "Υπηρεσία", ονομάζεται "Φόρτωση τιμών προμηθευτή από αρχεία" (Εικ. 5)

Εικ. 5

Το έντυπο επεξεργασίας περιέχει:

  1. Πεδίο επιλογής ημερομηνίας, το οποίο θα υποδεικνύει για ποιο χρονικό διάστημα είναι σχετική αυτή η τιμή.
  2. Πεδίο επιλογής για τον ανάδοχο που έστειλε τον τιμοκατάλογό του.
  3. Ένα κουμπί που σας επιτρέπει να επιλέξετε τον τύπο των τιμών που θα ορίσετε.
  4. Μια ενότητα πίνακα που μπορεί να γεμίσει με φορτωμένα δεδομένα.

Αυτό το σχήμα φαίνεται στο Σχ. 6

Εικ. 6

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

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

Όταν εργάζεστε μέσω της διεπαφής web, σε ορισμένα προγράμματα περιήγησης μπορεί να είναι απαραίτητο να εγκαταστήσετε ένα πρόσθετο προγράμματος περιήγησης (Εικ. 7). Πρέπει να κάνουμε κλικ στο κουμπί "Έναρξη εγκατάστασης" και να επανεκκινήσουμε τη σύνδεσή μας.

Εικ. 7

Μετά από αυτό, χρησιμοποιώντας το πρόχειρο, θα μπορούμε να μεταφέρουμε πληροφορίες από τον έναν πίνακα στον άλλο. Όταν συμπληρωθούν οι στήλες που χρειαζόμαστε («Άρθρο», «Όνομα», «Τιμή») πατάμε το κουμπί «Επόμενο» και πηγαίνουμε στη δεύτερη σελίδα (Εικ. 8)

Εικ. 8

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

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

Στο πεδίο κειμένου, μπορείτε να προσθέσετε ένα σχόλιο που θα γραφτεί στο έγγραφο (Εικ. 9):

Εικ. 9

Μετά την επεξεργασία:

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

Η επεξεργασία "Φόρτωση αγαθών από εξωτερικά αρχεία" λειτουργεί με τον ίδιο τρόπο.

Επιλογές χειρισμού μεταφοράς DIY

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

  • Μέσω του Microsoft ADODB - αρκετά γρήγορος τρόπος, το οποίο, κατά κανόνα, ισχύει τόσο για τις εκδόσεις αρχείων όσο και για τις εκδόσεις πελάτη-διακομιστή της αποθήκευσης της βάσης δεδομένων.
  • Μέσω της χρήσης το γραφείο της Microsoft- μια μέθοδος που μερικές φορές αποτυγχάνει όταν εργάζεστε με βάσεις δεδομένων SQL, κατά κανόνα, λειτουργεί κάπως πιο αργά από την πρώτη μέθοδο, επιπλέον, απαιτεί εγκατεστημένο Office;
  • Μέσω του Libre Office - σε αντίθεση με την προηγούμενη μέθοδο, είναι δωρεάν, εκτός από τις μορφές xls και xlsx, υποστηρίζει επίσης τους δικούς του πίνακες, αλλά απαιτεί το εγκατεστημένο πακέτο LibreOffice και κάποια προετοιμασία του ληφθέντος αρχείου (η πρώτη σειρά του πίνακα πρέπει να περιέχει τα ονόματα των στηλών).

Ας εξετάσουμε λεπτομερέστερα διαφορετικοί τρόποικαι επιλογές.

Μέσω ADODB.Σύνδεση

Γενικά το ADO σημαίνει ActiveX Data Object και εξυπηρετεί προγραμματική πρόσβασησε διάφορες βάσεις δεδομένων. Το μεγαλύτερο πρόβλημα κατά τη δημιουργία οποιασδήποτε σύνδεσης σε αρχείο τρίτου κατασκευαστή (συμπεριλαμβανομένου του Excel) είναι η σωστή σύνθεση της συμβολοσειράς σύνδεσης.

Για αρχεία Excelτρεις επιλογές είναι δυνατές εδώ:

Παράμετροι συμβολοσειράς σύνδεσης:

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

Έχοντας δημιουργήσει τη συμβολοσειρά σύνδεσης, μπορούμε να συνδεθούμε στο αρχείο που κατεβάσατε (Εικ. 13)

Εικ. 13

Τώρα μπορούμε να χρησιμοποιήσουμε απλό αίτημα(Εικ. 14) ξεκινήστε τη λήψη πληροφοριών από το ληφθέν αρχείο.

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

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

Μέσω εφαρμογής Excel

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

Αυτό αντικείμενο COMΥπάρχουν πολλές θυγατρικές παράμετροι, αλλά η κύρια για εμάς, υπό τις τρέχουσες συνθήκες εργασίας, είναι η παράμετρος WorkBooks (Εικ. 17).

Μετά την προετοιμασία του βιβλίου, είναι απαραίτητο να προσδιοριστεί το φύλλο από το οποίο θα διαβαστούν τα δεδομένα (Εικ. 18).

Μετά από αυτό, μπορείτε να κάνετε επανάληψη μέσα από τις γραμμές και τις στήλες του πίνακα του αρχείου που ανοίγει μέσα στους βρόχους.

Λίγα λόγια για πιθανά λάθη

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

Στην περίπτωση εργασίας μέσω ADO (Εικ. 19).

Εικ. 19

  • Στην περίπτωση εργασίας με την εφαρμογή (Εικ. 20).

Ρύζι. είκοσι.

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

Εισαγωγή.

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

Πίνακες 1C και Excel.

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

Στον ιστότοπο 1C (http://www.1c.ru/) υπάρχει ένα χρήσιμο πρόγραμμα που καθιστά δυνατό το άνοιγμα πινάκων 1C στο Excel και την αποθήκευση ενός φύλλου Excel ως πίνακα 1C. Αυτό είναι χρήσιμο εάν ο πίνακας 1C δεν αποθηκεύτηκε σε μορφή Excel και το 1C δεν είναι εγκατεστημένο στον υπολογιστή όπου πρέπει να ανοίξετε αυτόν τον πίνακα. Και δεν θα χρειάζεται να θυμάστε συνεχώς ότι πρέπει να αποθηκεύσετε τον πίνακα 1C σε μορφή Excel.

Πλήρεις πληροφορίες για το πρόγραμμα μπορείτε να βρείτε εδώ.
Μπορείτε να κατεβάσετε το πρόγραμμα εδώ ( αρχείο zip 682.739 byte).

Σχόλιο:Στο Excel, το διαχωριστικό δεκαδικών είναι ","". Επομένως, πριν αποθηκεύσετε τον πίνακα 1C σε μορφή Excel, αντικαταστήστε ένα άλλο διαχωριστικό σε αυτό (για παράδειγμα ".") με ","". Διαφορετικά, το Excel δεν θα μπορεί να εκτελέσει υπολογισμούς με αυτούς τους αριθμούς ή δεν θα εμφανίζονται καθόλου ως αριθμοί. Για παράδειγμα, στον πίνακα 1C το "15.2" θα εμφανίζεται στο Excel ως "15 Φεβρουαρίου".

Λήψη δεδομένων από το Excel.

Η πρόσβαση από το 1C στο Excel πραγματοποιείται μέσω OLE. Για παράδειγμα ο κωδικός
Απόπειρα
Εξαίρεση
Αναφορά (DescriptionErrors () +
);
ΕΠΙΣΤΡΟΦΗ;
Τέλος προσπαθειών;
θα μας επιτρέψει να έχουμε πρόσβαση μέσω της μεταβλητής "Excel" στο τρέξιμο εφαρμογή Excel... Και τότε μπορείτε ήδη να έχετε πρόσβαση στο βιβλίο (αρχείο), το φύλλο και το κελί με δεδομένα. Παρακάτω είναι μερικά παραδείγματα κώδικα.

Άνοιγμα βιβλίου (αρχείο):
Βιβλίο = Excel. Βιβλία Εργασίας. Άνοιγμα (Διαδρομή προς αρχείο).
Το FilePath είναι η πλήρης διαδρομή προς το αρχείο στο βιβλίο εργασίας του Excel.

Επιλέγοντας ένα φύλλο του βιβλίου για εργασία:
ή
Φύλλο = Βιβλίο. Φύλλα εργασίας (Όνομα φύλλου);
SheetNumber είναι ο αριθμός του φύλλου στο βιβλίο, SheetName είναι το όνομα του φύλλου στο βιβλίο.

Λήψη της τιμής ενός κελιού φύλλου:
Αξία = Φύλλο. Κελιά (LineNumber, ColumnNumber). Αξία;

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

Έξοδος δεδομένων στο Excel.

Για να εξάγετε (ανεβάσετε) δεδομένα στο Excel, πρέπει είτε να ανοίξετε ένα υπάρχον βιβλίο εργασίας είτε να δημιουργήσετε ένα νέο και να επιλέξετε ένα φύλλο εργασίας για έξοδο δεδομένων. Το άνοιγμα ενός υπάρχοντος βιβλίου περιγράφεται παραπάνω, αλλά για να δημιουργήσετε ένα νέο βιβλίο, πρέπει να χρησιμοποιήσετε τον ακόλουθο κώδικα:
Απόπειρα
Excel = CreateObject ("Excel.Application");
Εξαίρεση
Αναφορά (DescriptionErrors () +
"Το Excel δεν είναι εγκατεστημένο σε αυτόν τον υπολογιστή!");
ΕΠΙΣΤΡΟΦΗ;
Τέλος προσπαθειών;
Βιβλίο = Excel. Βιβλία Εργασίας. Προσθήκη ();

Δεδομένου ότι όταν δημιουργείτε ένα βιβλίο εργασίας στο Excel, δημιουργούνται αυτόματα φύλλα (Εργαλεία-> Επιλογές-> Γενικά-> Φύλλα σε ένα νέο βιβλίο εργασίας), απλά πρέπει να επιλέξετε ένα φύλλο για να εργαστείτε:
Φύλλο = Βιβλίο. Φύλλα εργασίας (Αριθμός φύλλου);
ή προσθέστε ένα νέο φύλλο στο βιβλίο, εάν χρειάζεται:
Φύλλο = Βιβλίο. Φύλλα. Προσθήκη ();
Επόμενο βήμαθα ορίσει την τιμή του κελιού:
Σεντόνι. Κελιά (LineNumber, ColumnNumber). Αξία = Αξία;
RowNumber, ColumnNumber - αριθμός σειράς και αριθμός στήλης στη διασταύρωση των οποίων βρίσκεται το κελί.
Και στο τέλος, πρέπει να καταγράψετε το δημιουργημένο βιβλίο:
Απόπειρα
Βιβλίο . SaveAs (Διαδρομή στο αρχείο).
Εξαίρεση
Αναφορά (DescriptionErrors ()
+ "Το αρχείο δεν αποθηκεύτηκε!");
ΕΠΙΣΤΡΟΦΗ;
Τέλος προσπαθειών;
Το FilePath είναι η πλήρης διαδρομή προς το αρχείο βιβλίου εργασίας του Excel (συμπεριλαμβανομένου του ονόματος).
Σπουδαίος:μην ξεχνάτε ότι τα ονόματα αρχείων δεν πρέπει να περιέχουν \ /: *? ">< |.

Συχνά χρησιμοποιούμενες μέθοδοι για ανάγνωση / ρύθμιση τιμών στο Excel.

Excel = CreateObject ("Excel.Application"); Απόκτηση πρόσβασης στην εφαρμογή Excel.
Προέχω. Visible = Ορατότητα; 0 - Το Excel δεν είναι ορατό, 1 - ορατό.
Βιβλίο = Excel. Βιβλία Εργασίας. Προσθήκη (); Δημιουργήστε ένα νέο βιβλίο εργασίας του Excel (αρχείο).
Βιβλίο . SaveAs (Όνομα αρχείου); Αποθήκευση βιβλίου εργασίας του Excel.
Φύλλο = Βιβλίο. Φύλλα εργασίας. Προσθήκη (); Προσθήκη νέου φύλλου στο βιβλίο.
Βιβλίο = Excel. Βιβλία Εργασίας. Άνοιγμα (Όνομα αρχείου); Άνοιγμα ενός υπάρχοντος βιβλίου εργασίας (αρχείου) του Excel.
Φύλλο = Βιβλίο. Φύλλα εργασίας (Αριθμός φύλλου); Ορισμός φύλλου ως εργαζόμενος με τον αριθμό Αριθμός φύλλου.
Σεντόνι. Όνομα = Όνομα φύλλου. Δώστε σε ένα φύλλο εργασίας ένα όνομα SheetName
Σεντόνι. Εγκατάσταση σελίδας. Ζουμ = Κλίμακα; Ορίζει την παράμετρο σελίδας "Κλίμακα" (από 10 έως 400).
Σεντόνι. Εγκατάσταση σελίδας. Orientation = Προσανατολισμός; Προσανατολισμός: 1 - πορτραίτο, 2 - τοπίο.
Σεντόνι. Εγκατάσταση σελίδας. LeftMargin = Excel. CentimetersToPoints (CentimetersToPoints); Ρύθμιση του αριστερού περιγράμματος (σε εκατοστά).
Σεντόνι. Εγκατάσταση σελίδας. TopMargin = Excel. CentimetersToPoints (CentimetersToPoints); Ρύθμιση του ανώτατου ορίου (σε εκατοστά).
Σεντόνι. Εγκατάσταση σελίδας. RightMargin = Excel. CentimetersToPoints (CentimetersToPoints); Ρύθμιση του δεξιού περιγράμματος (σε εκατοστά).
Σεντόνι. Εγκατάσταση σελίδας. BottomMargin = Excel. CentimetersToPoints (CentimetersToPoints); Ρύθμιση του κάτω ορίου (σε εκατοστά).
Σεντόνι. Στήλες. ColumnWidth = Πλάτος; Ορίζει το πλάτος της στήλης.
Σεντόνι. Κελιά (LineNumber, ColumnNumber). Αξία = Αξία; Εισαγωγή δεδομένων σε ένα κελί.
Σεντόνι. Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Όνομα = Όνομα γραμματοσειράς; Ρύθμιση της γραμματοσειράς στο κελί.
Σεντόνι. Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Μέγεθος = Μέγεθος γραμματοσειράς; Ορίζει το μέγεθος της γραμματοσειράς στο κελί.
Σεντόνι. Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Έντονη = Έντονη; Το 1 είναι έντονη, το 0 είναι κανονικό.
Σεντόνι. Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Πλάγια = Πλάγια; Το 1 είναι πλάγια γραμματοσειρά, το 0 είναι κανονικό.
Σεντόνι. Κελιά (LineNumber, ColumnNumber). Γραμματοσειρά. Υπογράμμιση = Υπογράμμιση; Το 2 είναι υπογραμμισμένο, το 1 όχι.
Σεντόνι. Κελιά (LineNumber, ColumnNumber). NumberFormat = Μορφή; Ορίζει τη μορφή δεδομένων κυψέλης.
Σεντόνι. Κελιά (LineNumber, ColumnNumber). σύνορα. Linestyle = Τύπος γραμμής; Ρύθμιση περιγραμμάτων κελιών. 1 - λεπτό στερεό.