Care este mai bine - 1C sau Excel? Primirea datelor din fișierul xls 1c

Această metodă este simplă. Esența sa este că obiectul TabularDocument are metode:

  • Scrieți (< ИмяФайла>, < ТипФайлаТаблицы >) pentru a încărca date într-un fișier;
  • Citire (< ИмяФайла>, < СпособЧтенияЗначений >) pentru a încărca date dintr-un fișier.

Atenţie!

Metoda Write() este disponibilă atât pe client, cât și pe server. Metoda Read() este disponibilă numai pe partea serverului. Trebuie să ne amintim asta
atunci când planificați interacțiunea client-server.

Să ne uităm la un exemplu de salvare a unui document de foaie de calcul într-un fișier. Este necesar să creați și să completați obiectul TabularDocument în orice mod și descărcare la fișier se face doar cu o singură linie:

TabDoc . Scriere(FilePath, TabularDocumentFileType. XLSX);

Aici TabDoc- document foaie de calcul generat, PathToFile— numele fișierului de încărcat, TabularDocumentFileType.XLSX— formatul fișierului creat. Sunt acceptate următoarele formate Excel:

  • XLS95 - format Excel 95;
  • XLS97 - format Excel 97;
  • XLSX este un format Excel 2007.

TabDoc = New TabularDocument;
TabDoc . Read(PathToFile, Metoda de citireTabularDocumentValues.Value);

Aici PathToFile— calea către fișierul Excel descărcat. Metoda de citire a valorilor unui document tabelar.Valoare determină modul în care ar trebui interpretate datele citite dintr-un document sursă. Opțiuni disponibile:

  • Sens;
  • Text.

Schimb prin OLE

Schimbul prin tehnologia de automatizare OLE este poate cea mai comună opțiune pentru lucrul programatic cu fișiere Excel. Vă permite să utilizați toate funcționalitățile oferite de Excel, dar este mai lent în comparație cu alte metode. Pentru a schimba prin OLE, este necesară instalarea MS Excel:

  • Pe computerul utilizatorului final, dacă schimbul are loc pe partea clientului;
  • Pe computerul server 1C:Enterprise, dacă schimbul are loc pe partea de server.

Exemplu descărcare:

// Creați un obiect COM
Excel = New COMObject ("Excel.Application");
// Dezactivează avertismentele și întrebările
Excela . DisplayAlerts = Fals;
// Creați o carte nouă
Carte = Excel. Cărți de lucru. Adăuga();
// Poziție pe prima foaie
foaie = Carte. Fișe de lucru(1);

// Scrieți o valoare într-o celulă
foaie . Celule (RowNumber, ColumnNumber). Valoare = CellValue;

// Salvați fișierul
Carte . Salvare ca(FileName);


Excela . Ieșire();
Excel = 0;

Exemple lectură:

// —— OPȚIUNEA 1 ——

// Creați un obiect COM
Excel = New COMObject ("Excel.Application");
// Deschide o carte
Carte = Excel. Caiete de lucru. Deschide( PathKFile);

foaie = Carte. Fișe de lucru(1);

// Închiderea cărții
Carte . Închidere(0);

// Închideți Excel și eliberați memorie
Excela . Ieșire();
Excel = 0;

// —— OPȚIUNEA 2 ——

// Deschide o carte
Carte = GetCOMObject( PathKFile);
// Poziţionarea pe foaia dorită
foaie = Carte. Fișe de lucru(1);

// Citiți valoarea celulei, de obicei bucla de traversare a celulei este localizată aici
CellValue = Foaie. Celule (RowNumber, ColumnNumber). Valoare;

// Închiderea cărții
Carte . Aplicație. Qui t();

Pentru ocolire Pentru toate rândurile completate ale foii de lucru Excel, puteți utiliza următoarele tehnici:

// —— OPȚIUNEA 1 ——
Număr de rânduri = foaie. Celule (1, 1). SpecialCells(11). Rând;
Pentru RowNumber = 1 după ciclul numărului de rânduri
CellValue = Foaie. Celule (RowNumber, ColumnNumber). Valoare;
EndCycle;

// —— OPȚIUNEA 2 ——
RowNumber = 0 ;
În timp ce Ciclul Adevărului
RowNumber = RowNumber + 1 ;
CellValue = Foaie. Celule (RowNumber, ColumnNumber). Valoare;
Dacă NU este completată Valoare(ValoareCelulă) Atunci
Avorta;
endIf;
EndCycle;

În loc să parcurgeți secvențial toate rândurile foii, puteți aruncați toate datele într-o matriceși lucrează cu el. Această abordare va fi mai rapidă atunci când citiți o cantitate mare de date:

TotalColumns = Foaie. Celule (1, 1). SpecialCells(11). Coloană;
TotalRows = Frunza. Celule (1, 1). SpecialCells(11). Rând;

Regiune = Frunza. Interval(Sheet. Cells(1, 1), Sheet. Cells(TotalRows,TotalColumns));
Date = Regiunea. Valoare. Descărca();

Tabelul de mai jos prezintă cele mai populare proprietăți și metode de lucru cu Excel prin OLE:

Acţiune Cod Comentariu
Lucrul cu aplicația
Setarea vizibilității ferestrei aplicației Excela . Vizibil= fals;
Setarea modului de ieșire de avertizare (afișare/nu afișare) Excela . Afișează Alerte= fals;
Închiderea aplicației Excela . Ieșire();
Lucrul cu o carte
Crearea unei cărți noi Carte = Excel. Cărți de lucru. Adăuga();
Deschiderea unui registru de lucru existent Carte = Excel. Cărți de lucru. Deschide (Nume fișier);
Salvarea unei cărți Carte . Salvare ca (FileName);
Închiderea cărții Carte . Închidere(0);
Lucrul cu o foaie
Setarea foii curente foaie = Carte. Foi de lucru (SheetNumber);
Setarea numelui foaie . Nume = Nume;
Configurarea protecției foaie . Proteja();
Îndepărtarea protecției foaie . Dezprotejează();
Setarea orientării paginii foaie . PageSetup. Orientare = 2; 1 - portret, 2 - peisaj
Setarea marginii din stânga foaie . PageSetup. LeftMargin = Excel. CentimetersToPoints(Centimetri);
Stabilirea limitei superioare foaie . PageSetup. TopMargin = Excel. CentimetersToPoints(Centimetri);
Setarea chenarului drept foaie . PageSetup. RightMargin = Excel. CentimetersToPoints(Centimetri);
Setarea limitei inferioare foaie . PageSetup. BottomMargin = Excel. CentimetersToPoints(Centimetri);
Lucrul cu rânduri, coloane, celule
Setarea lățimii coloanei foaie . Coloane(ColumnNumber). ColumnWidth = Lățime;
Ștergeți o linie foaie . Rânduri (RowNumber). Şterge();
Eliminarea unei coloane foaie . Coloane(ColumnNumber). Şterge();
Șterge o celulă foaie . Celule (RowNumber, ColumnNumber). Şterge();
Setarea valorii foaie . Celule (RowNumber, ColumnNumber). Valoare = Valoare;
Unirea celulelor foaie . Interval(Sheet. Cells(RowNumber, ColumnNumber), Sheet. Cells(RowNumber1, ColumnNumber1)). Îmbinați();
Setarea fontului foaie . Celule (RowNumber, ColumnNumber). Font. Nume = FontName;
Setarea dimensiunii fontului foaie . Celule (RowNumber, ColumnNumber). Font. Dimensiune = Dimensiunea fontului;
Setarea fontului aldine foaie . Celule (RowNumber, ColumnNumber). Font. Îndrăzneţ = 1 ; 1 - bold, 0 - normal
Setarea cursivelor foaie . Celule (RowNumber, ColumnNumber). Font. Cursiv = 1 ; 1 - cursiv, 0 - normal
Setarea fontului subliniat foaie . Celule (RowNumber, ColumnNumber). Font. Subliniați = 2 ; 2 - subliniat, 1 - nu

Pentru a afla ce proprietate trebuie schimbată sau ce metodă să apelați, puteți utiliza macro-uri Excela. Dacă înregistrați o macrocomandă cu acțiunile necesare, atunci puteți consulta codul VBA al macrocomenzii înregistrate.

Folosind COMSafeArray

Când descărcați cantități mari de date din 1C în Excel, puteți utiliza obiectul pentru a accelera COMSafeArray. Conform definiției din asistentul de sintaxă, COMSafeArray este un înveliș de obiecte peste o matrice multidimensională SafeArray de la COM. Vă permite să creați și să utilizați SafeArray pentru schimbul de date între obiectele COM. Mai simplu spus, este o serie de valori care pot fi folosite pentru a face schimb între aplicații care utilizează tehnologia OLE.

// Creați COMSafeArray
ArrayCom = New COMSafeArray ("VT_Variant", TotalColumns, TotalRows);
// Completați COMSafeArray
Pentru Pagina = 0 prin TotalLines - 1 ciclu
Pentru Număr = 0 total coloane - 1 ciclu
ArrayCom . SetValue(Număr, Pagina, Valoare);
EndCycle;
EndCycle;
// Atribuirea unei zone de foi de lucru Excel la valorile din COMSafeArray
foaie . Interval(Foaie. Celule(1, 1), Foaia. Celule(TotalRânduri,TotalColumns)). Valoare = ArrayCom;

Schimb prin ADO

Un fișier Excel, atunci când este schimbat prin ADO, este o bază de date care poate fi accesată folosind interogări SQL. Instalarea MS Excel nu este necesară, dar trebuie să aveți un driver ODBC cu care va fi asigurat accesul. Driverul ODBC utilizat este determinat prin specificarea șirului de conexiune la fișier. De obicei, driverul necesar este deja instalat pe computer.

Schimbul prin ADO este considerabil mai rapid decât schimbul prin OLE, dar la încărcare, nu este posibil să utilizați funcționalitatea Excel pentru proiectarea celulelor, aranjarea paginilor, setarea formulelor etc.

Exemplu descărcare:


Conexiune = New COMObject("ADODB.Connection");


Compus . ConnectionString = "

|Sursa de date=" + FileName + ";
;
Compus . Deschide(); // Deschide o conexiune

// Creați un obiect COM pentru comandă
Comanda = New COMObject("ADODB.Command");
Echipă

// Atribuirea textului comenzii pentru a crea un tabel
Echipă . CommandText = „CREATE TABLE [Sheet1] (Column1 char(255), Column2 date, Column3 int, Column4 float)”;
Echipă . Executa(); // Executați comanda

// Atribuirea textului de comandă pentru a adăuga un rând de tabel
Echipă . CommandText = „INSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) valori ('abvwhere', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // Executați comanda

// Eliminați comanda și închideți conexiunea
Comanda = nedefinit;
Compus . Aproape();
Conexiune = nedefinit;

Pentru a crea o foaie nouă și a-i forma structura, puteți folosi obiecte ADOX.CatalogŞi ADOX.Tabel. În acest caz, codul va arăta astfel:

// Crearea unui obiect COM pentru lucrul cu cartea
Carte = New COMObject("ADOX.Catalog");
Carte . ActiveConnection = Conexiune;

// Creați un obiect COM pentru a lucra cu structura de date de pe foaie
Table = New COMObject("ADOX.Table");
Masă . Nume = "Foaie1" ;
Masă . Coloane. Append(„Coloana1”, 202);
Masă . Coloane. Append(„Coloana2”, 7);
Masă . Coloane. Append(„Coloana3”, 5);
Masă . Coloane. Append(„Coloana4”, 5);

// Creați o foaie cu structura descrisă în registrul de lucru
Carte . Mesele. Adăugați(Tabel);
Tabel = nedefinit;
Carte = nedefinit;

În exemplul de mai sus, în metoda

Masă . Coloane. Adăuga(„Coloana1”, 202);

al doilea parametru specifică tipul coloanei. Parametrul este opțional, iată câteva valori ale tipului de coloană:

  • 5 - adubla;
  • 6 - adCurrency;
  • 7 - adDate;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

Exemplu lectură:

// Creați un obiect COM pentru conexiune
Conexiune = New COMObject("ADODB.Connection");

// Setați șirul de conexiune
Compus . ConnectionString = "
|Furnizor=Microsoft.ACE.OLEDB.12.0;
|Sursa de date=" + FileName + ";
|Extended Properties=""Excel 12.0 XML;HDR=YES"";";
Compus . Deschide(); // Deschide o conexiune

// Creați un obiect COM pentru a primi selecția
Select = New COMObject("ADODB.Recordset");
RequestText = „SELECTARE * DIN [Sheet1$]”;

// Executați cererea
Eşantion . Deschide (Text Interogare, Conexiune);

// Ocoliți rezultatul eșantionului
Nu este încă o selecție. Bucla EOF().
Valoarea coloanei 1 = Selecție. Câmpuri. Item(„Coloana1”). Valoare ; // Acces după numele coloanei
Column2Value = Selecție. Câmpuri. Articol(0). Valoare; // Acces prin index de coloană
Eşantion . MoveNext();
EndCycle;

Eşantion . Aproape();
Eșantion = nedefinit;
Compus . Aproape();
Conexiune = nedefinit;

În șirul de conexiune parametrul HDR determină modul în care va fi percepută prima linie de pe foaie. Opțiuni posibile:

  • DA - prima linie este tratată ca nume de coloane. Valorile pot fi accesate după nume și indexul coloanei.
  • NU - prima linie este tratată ca date. Valorile pot fi accesate numai prin indexul coloanei.

Aceste exemple acoperă doar câteva obiecte ADO. Modelul obiect ADO constă din următoarele obiecte:

  • conexiune;
  • Comanda;
  • set de înregistrări;
  • Înregistra;
  • Câmpuri;
  • Flux;
  • erori;
  • parametrii;
  • Proprietăți.

Încărcați fără programare

Pentru a salva datele din 1C în Excel, nu este întotdeauna recomandabil să recurgeți la programare. Dacă în modul Enterprise utilizatorul poate afișa datele necesare pentru descărcare, atunci acestea pot fi salvate în Excel fără programare.

Pentru a salva un document de foaie de calcul (de exemplu, rezultatul unui raport), puteți apela comanda Salva sau Salvați ca... meniul principal.

În fereastra care se deschide, trebuie să selectați directorul, numele și formatul fișierului salvat.

Pentru a salva date din liste dinamice (de exemplu, o listă de articole), trebuie să:

  1. Trimiteți date într-un document de foaie de calcul folosind comanda Mai multe ⇒ Lista...;
  2. Salvați documentul foaie de calcul în formatul necesar.

  • La schimbul de informații între contrapărți (liste de prețuri, rapoarte de reconciliere etc.);
  • Pentru a facilita munca operatorilor în cazurile în care contabilitatea principală este efectuată în 1C, iar o parte din aceasta este efectuată în tabele Excel;
  • La completarea bazei de date pentru prima dată.

Pentru a efectua această operațiune, puteți utiliza atât funcționalitatea standard, disponibilă cu abonament la suport pentru tehnologia informației (ITS), cât și procesarea scrisă independentă, implementată prin diferite opțiuni de conectare. În articolul nostru vom încerca să analizăm cât mai complet posibil toate cazurile posibile și să răspundem la majoritatea întrebărilor existente referitoare la încărcarea datelor din Excel în 1C.

Mecanism universal

Pe discurile ITS, precum și pe portalul 1C, accesând meniul „Suport tehnologic” -> „Rapoarte și procesare universale”, procesarea corespunzătoare se află în folderul „Încărcarea datelor dintr-un document de foaie de calcul”.

Când îl lansați, se deschide formularul (Fig. 1):

După cum puteți vedea din formular, vă permite să transferați informații către următoarele obiecte de configurare:

  1. Director;
  2. Parte tabelară a unui document sau a cărții de referință;
  3. Registrul de informații.

În funcție de poziția în care este setat comutatorul, câmpul de selecție a obiectelor se modifică.

Formularul tabelar de procesare este completat la deschiderea fișierului descărcat.

Procesarea tipică acceptă descărcări de la:

  • Dezvoltat de specialiști din 1C, format de fișiermxl;
  • Lisztxls salvat în formatExcel 97-2003;
  • Fișier textTXT;
  • Meseledbf.

Încărcarea fișierelor Excel de dimensiuni mari poate dura destul de mult, așa că dacă se presupune că încărcarea datelor poate avea loc în mai multe etape sau știți sigur că va trebui să deschideți de mai multe ori un fișier existent, pentru a economisi nervi și timp, este mai bine să salvați informațiile din acesta în format mxl. Acest lucru se poate face direct din formularul de procesare.

Este important să înțelegeți că, dacă există grupări de linii, subtitluri și note în fișierul sursă, acestea vor trebui eliminate manual.

Acum să trecem la fila „Setări” (Fig. 2):

Fig.2

Destul de des, tabelele Excel conțin un antet cu tot felul de detalii și date (numele formularului tipărit, detaliile contrapărții, data și numărul documentului primit, numele coloanelor și așa mai departe). programul de pe formular, trebuie să specificați în atributul „Prima linie a documentului tabelar” prima linie cu informațiile transferate

După selectarea unui obiect de metadate în care vor fi scrise informații, partea tabelară a filei „Setări” va fi completată automat cu numele detaliilor, descrierile tipurilor acestora și alte informații importante. O secțiune separată ar trebui să fie dedicată luării în considerare a coloanelor din partea tabelară a filei „Setări”.

Coloanele „Setări”

Marcare – prin bifarea sau debifarea unei casete de selectare dintr-o linie, se stabilește dacă atributul corespunzător va fi completat.

Reprezentare atribut – aici este scris sinonimul (numele) atributului metadatelor, așa cum este specificat în configurator.

Câmp de căutare - dacă bifați acest câmp, procesarea va căuta elemente folosind detaliile corespunzătoare și, dacă reușește, va modifica datele existente o funcție suplimentară a acestui câmp este protecția împotriva dublurilor;

Descrierea tipurilor – afișează tipul de date pe care îl are un anumit atribut de metadate.

Modul de pornire – oferă trei opțiuni din care să alegeți (Fig. 3):

Fig.3

  • Căutare – se va efectua o căutare pentru elementul corespunzător dacă acesta lipsește, se poate crea unul nou;
  • Set – o anumită valoare este setată subordonat;
  • Calculați – în acest caz, rezultatul calculării expresiei specificate în coloana „Conexiune condiție/Expresie pentru valoare” va fi setat în câmpul elementului creat.

În acest din urmă caz, activarea câmpului Expresie va deschide formularul (Fig. 4).

Fig.4

Numărul coloanei este un câmp folosit pentru a indica ce coloană a tabelului Excel trebuie completată cu date.

Valoare implicită – destul de des apare o situație când fișierul descărcat nu conține toate datele necesare înregistrării unui element, în acest caz se vor completa informațiile conținute în acest câmp;

Condiție de legătură/Expresie pentru o valoare - am atins deja parțial acest câmp când ne-am uitat la câmpurile calculate în plus, puteți specifica o condiție în conformitate cu care datele sursă vor fi sincronizate;

Acestea sunt, în principiu, toate informațiile disponibile în fila „Setări”.

Pentru a nu pierde mult timp de fiecare dată când se încarcă, scrie corespondență și expresii, dezvoltatorii au oferit posibilitatea de a salva opțiunea de configurare într-un fișier cu extensia mxlz.

Puteți verifica corectitudinea datelor transferate făcând clic pe butonul „Filling Control” (Fig. 1). După aceasta, puteți începe procesul de descărcare. Veți fi anunțat separat despre finalizarea cu succes a procedurii sau situații neobișnuite.

Există un alt mecanism de încărcare a datelor din Excel în bazele de date de informații de management și comerț. Este mai puțin universală decât metoda de mai sus, dar nu necesită abonament ITS și este inclusă în livrarea standard.

Această prelucrare poate fi găsită în fila „Achiziții”, în meniul „Servicii”, se numește „Încărcare prețuri furnizori din fișiere” (Fig. 5)

Fig.5

Formularul de procesare conține:

  1. Un câmp de selecție a datei care va indica pentru ce oră este relevant acest preț;
  2. Câmp pentru selectarea contrapartidei care și-a trimis lista de prețuri;
  3. Un buton care vă permite să selectați tipul de prețuri care trebuie setate;
  4. O parte tabelară care poate fi completată cu date descărcate.

Această formă poate fi văzută în Fig. 6

Fig.6

Explicația din partea de sus a formularului explică cum se utilizează prima filă a formularului.

După selectarea unei contrapartide (în funcție de faptul că acesta este furnizor, comisionar sau vânzător), în tabel vor deveni disponibile coloane suplimentare pentru fiecare tip de preț.

Când lucrați prin interfața web, unele browsere pot necesita instalarea unui add-on de browser (Fig. 7). Trebuie să facem clic pe butonul „Începe instalarea” și să ne repornim conexiunea.

Fig.7

După aceasta, folosind clipboard-ul, vom putea transfera informații de la un tabel la altul. Când sunt completate coloanele de care avem nevoie („Articol”, „Nume”, „Preț”), facem clic pe butonul „Următorul” și mergem la a doua pagină (Fig. 8)

Fig.8

Programul va căuta automat potriviri în baza de date și, dacă nu sunt găsite, va oferi opțiuni pentru eliminarea erorii. Aspectul părții tabulare poate fi controlat cu ajutorul unui comutator. În plus, utilizatorul poate compara în mod independent elementele fișierului descărcat cu datele disponibile în baza de date.

  • Înregistrați totul;
  • Înregistrați-le doar pe cele care s-au modificat în comparație cu cele aflate deja în baza de date.

În câmpul de text puteți introduce un comentariu care va fi înregistrat în document (Fig. 9):

Fig.9

După finalizarea procesării:

  • Elementul corespunzător va fi creat în directorul „Nomenclator furnizor” (dacă nu a existat);
  • Elementul de director „Nomenclatură” va fi asociat cu acesta;
  • Documentul „Setarea prețurilor articolelor” va fi creat și afișat, indicând: furnizor, tipul prețurilor și data înregistrării datelor.

Procesarea „Încărcarea produselor din fișiere externe” funcționează într-un mod similar.

Opțiuni de procesare a transferului DIY

Principala problemă în extragerea datelor dintr-un fișier Excel este că 1C nu are încorporat un mecanism clar pentru deschiderea acestuia. Există mai multe opțiuni pentru conectarea Excel la 1C:

  • Prin Microsoft ADODB - o metodă destul de rapidă, care, de regulă, este aplicabilă atât pentru opțiunile de stocare a bazei de date fișier, cât și client-server;
  • Prin utilizarea Microsoft Office - o metodă care uneori eșuează atunci când se lucrează cu baze de date SQL, de regulă, funcționează oarecum mai lent decât prima metodă și, de asemenea, necesită instalarea Office;
  • Via Libre Office - spre deosebire de metoda anterioară, este gratuit, pe lângă formatele xls și xlsx, suportă și propriile tabele, dar necesită pachetul LibreOffice instalat și o anumită pregătire a fișierului descărcat (prima linie a tabelului trebuie să conțină numele coloanelor).

Să aruncăm o privire mai atentă asupra diferitelor metode și opțiuni.

Prin ADODB.Connection

În general, ADO înseamnă ActiveX Data Object și este folosit pentru accesul programatic la diferite baze de date. Cea mai mare problemă atunci când creați orice conexiune la un fișier terță parte (inclusiv Excel) este să compuneți corect șirul de conexiune.

Pentru fișierele Excel există trei opțiuni:

Opțiuni de șir de conexiune:

  • Furnizor – driverul utilizat este definit aici;
  • Sursa de date – definește numele fișierului pe care îl vom deschide;
  • Proprietăți extinse – aici puteți specifica dacă este necesară o linie de antet pentru tabel (HDR = YES indică faptul că datele vor fi citite din prima linie, HDR = NU - ce din a doua), dacă fișierul este deschis doar în citire (ReadOnly) și alți parametri suplimentari.

După ce am creat un șir de conexiune, ne putem conecta la fișierul descărcat (Fig. 13)

Fig.13

Acum putem folosi o cerere simplă (Fig. 14) pentru a începe recuperarea informațiilor din fișierul descărcat.

În acest caz, parametrul „Foaie” determină cu ce foaie din registrul de lucru Excel vom lucra.

Setul de înregistrări stocate într-o foaie de lucru poate fi citit folosind un obiect Recordset. În acest caz, prima înregistrare a foii poate fi obținută cu parametrul BOF (început de fișier), iar ultima EOF (sfârșitul fișierului).

Prin aplicația Excel

Principala diferență față de metoda anterioară este că, pe lângă driverele de baze de date, Excel trebuie să fie instalat pe computerul unde se face conexiunea. Numai în acest caz putem inițializa aplicația pentru a citi datele din tabel (Figura 16).

Acest obiect COM are mai mulți parametri fii, dar principalul pentru noi, având în vedere condițiile actuale ale sarcinii, este parametrul WorkBooks (Fig. 17).

După inițializarea registrului de lucru, este necesar să se determine foaia din care vor fi citite datele (Fig. 18).

După aceasta, puteți parcurge rândurile și coloanele din tabelul fișierului care se deschide.

Câteva cuvinte despre posibile erori

Cea mai mare parte a erorilor la conectarea la un fișier apare din cauza faptului că fișierul este deja ocupat de o altă aplicație. Este bine dacă puteți vedea în bara de activități că Excel rulează pe computer, dar dacă dvs. sau un alt utilizator l-ați deschis din procesare externă, acest lucru poate fi determinat doar vizual prin „Managerul de activități”, așa că nu uitați să închideți conexiunea înainte de finalizarea procedurii de transfer:

În cazul lucrului prin ADO (Fig. 19);

Fig.19

  • În cazul lucrului cu aplicația (Fig. 20).

Orez. 20.

Cel mai bine este să organizați conexiunea și procedura de finalizare a lucrului cu date în cadrul constructului Attempt-Exception-EndAttempt, apelând o descriere a erorii într-o situație excepțională. Deși uneori acest lucru încetinește activitatea, este mult mai ușor să se determine cauza erorii și, în cele din urmă, cum să o elimine.

Există diferite moduri de a deschide un fișier Excel în 1C și invers. Utilizatorii începători vor prefera operațiuni mai simple prin salvarea documentului într-un format diferit sau folosind programe speciale. Dar merită să cheltuiți puțin efort și să învățați cum să lucrați cu instrumente software pentru a vizualiza și procesa datele de la un program la altul. Aceste abilități de programare de bază vă vor ajuta să evitați sarcinile de rutină în viitor.

Cum să deschideți documente Excel în 1C și invers

Editorul de foi de calcul Microsoft Excel este superior ca funcționalitate față de produsele software de contabilitate 1C. Prin urmare, utilizatorii 1C preferă să efectueze unele operații într-un editor de foi de calcul și apoi să returneze datele programului de contabilitate. Și acest lucru nu este surprinzător, deoarece anterior contabilitatea multor companii era efectuată exclusiv folosind programe Microsoft. Dar, odată cu nivelul actual de automatizare a proceselor de afaceri ale întreprinderilor, este imposibil să abandonați programele specializate. Pentru a stabili interacțiunea între diferite aplicații, există următoarele moduri simple:

    Când trebuie să vă ocupați de fișiere de produse software care nu sunt instalate pe computerul dvs. actual, cel mai simplu mod este să utilizați o aplicație specială pentru conversia tabelelor Excel în format 1C și invers. Poate fi găsit pe site-ul produsului 1C.

    Dacă computerul dvs. are atât 1C, cât și Excel, puteți deschide manual fișierul în aplicația sa „nativă” și apoi îl puteți salva în formatul altui program. Această opțiune este de obicei disponibilă atunci când salvați un formular sau un aspect imprimabil.

    Utilizatorii 1C 7.7 pot face upgrade la versiunea 1C 8, care are un editor de tabel îmbunătățit.

Cum pot interacționa 1C și Excel în mod programatic

Interacțiunea dintre 1C și Excel poate fi realizată la nivel de program folosind tehnologia OLE Automation dezvoltată de Microsoft. Vă permite să accesați obiecte COM direct de la interpreții de script ai diferitelor programe. Mai simplu spus, OLE vă permite să transferați o bucată de lucru de la un program la altul și apoi să returnați lucrarea la aplicația originală. Acesta este exact ceea ce au nevoie contabilii de la editorul de foi de calcul Microsoft.

Nu trebuie să fii programator pentru a utiliza instrumentele OLE. Deși prima cunoaștere a liniilor de cod va fi însoțită de erori, verificarea va ajuta la identificarea acestora, iar experiența dobândită va ajuta la evitarea lor în viitor. Mai jos sunt cele mai populare comenzi (se numesc liste) pentru lucrul cu datele Excel în programele de contabilitate și invers.

Cum să deschideți un fișier Excel în 1C în mod programatic

Deci, dacă pe computerul tău sunt instalate ambele programe, între care vrei să faci schimb de date, atunci poți organiza interacțiunea în mod programatic. Pentru a face acest lucru, trebuie să lansați ambele aplicații și apoi să utilizați OLE pentru a stabili accesul de la 1C la Excel:

  • Excepţie

    Report(ErrorDescription() + "Excel nu este instalat pe acest computer!");

  • Sfârșitul încercării.

Accesul la editorul de tabel este instalat, acum folosind următoarele comenzi la care trebuie să obțineți acces:

    document specific:

    • Carte = Excel.WorkBooks.Open(FilePath)

    • Sheet = Book.WorkSheets(SheetNumber);

  • inclusiv cu un număr specific de fișă:

    inclusiv cu un nume de fișă specific:

    • Sheet = Book.WorkSheets(SheetName);

    • Valoare = Sheet.Cells(RowNumber, ColumnNumber).Value;

Pentru a citi datele de pe prima pagină a unui fișier, utilizați următoarele liste:

    Excel = CreateObject("Excel.Application");

    Carte = Excel.WorkBooks.Open(FilePath);

    Sheet = Book.WorkSheets(1);

    TotalColumns = Sheet.Cells(1,1).SpecialCells(11).Column;

    TotalRows = Sheet.Cells(1,1).SpecialCells(11).Row;

    Pentru Row = 1 By TotalRows Loop

    • Pentru coloană = 1 prin ciclu total de coloane

      Valoare = Abbr(Sheet.Cells(Row,Column).Value);

      EndCycle;

    EndCycle;

Rețineți că calea către fișier trebuie specificată în întregime. Când salvați un nume de document, nu puteți include caractere precum \, /, :, *, ?, ", >,< и |.

Cum să deschideți un fișier 1C prin Excel în mod programatic

Pentru a înregistra date în Excel trebuie:

    sau deschideți un document existent:

    • Book = Excel.WorkBooks.Open(Path to File) - prin analogie cu citirea unui fișier Excel din 1C;

    sau adauga unul nou:

    • Caiet de lucru = Excel.WorkBooks.Add();

    Puteți crea o foaie nouă într-un document nou:

    • Sheet = Book.Sheets.Add();

    și adăugați o nouă valoare celulei:

    • Sheet.Cells(RowNumber, ColumnNumber).Value = Value; (metodele de scriere a valorilor folosind OLE sunt descrise în detaliu pe Internet).

  • Book.SaveAs(FilePath);

    Excepţie

    Raport(ErorDescription()+"Fișierul nu a fost salvat!");

    Sfârșitul încercării.

Când terminați de lucrat cu editorul de foi de calcul, părăsiți folosind comanda specială (Excel.Application.Quit();). Această metodă va ajuta la economisirea resurselor computerului în timpul lucrărilor ulterioare.

Pericole la schimbul de date între 1C și Excel

1C și Excel au fost dezvoltate de diferite companii și folosesc diferite moduri de manipulare a datelor. Prin urmare, atunci când transferați tabele de la un program la altul, amintiți-vă următoarele capcane:

    Diferiți separatori în numere fracționale. Microsoft separă numerele zecimale folosind virgulă. Prin urmare, atunci când transferați tabele dintr-un program de contabilitate, nu fiți surprinși de abundența de date și alte confuzii. Doar că într-un program de contabilitate se poate folosi o perioadă în scrierea fracțiilor, pe care editorul de foi de calcul Microsoft le va interpreta ca un separator de dată, iar 15.5 se va transforma în 15 mai. Pentru a procesa datele contabile într-un editor de foi de calcul, separatorul va trebui înlocuit cu o virgulă.

    La transferul datelor din Excel în 1C, acele constante Excel care nu sunt în programul de contabilitate pot fi afișate incorect. Pentru a le descifra, trebuie să accesați Ajutorul editorului de foi de calcul sau în modul de depanare și să verificați expresia numerică a diferitelor constante.

Dacă trebuie să faceți schimb de cantități mari de date sau nu puteți scăpa de erori, contactați profesioniștii companiei Setby pentru ajutor. Vă vom ajuta să vă rezolvați problemele la nivel de program și să înțelegeți comenzile necesare pentru munca dvs.

Aplicația 1C a fost mult timp cel mai popular program printre contabili, planificatori, economiști și manageri. Are nu numai un număr divers de configurații pentru diverse tipuri de activități, ci și localizare la standardele de contabilitate din mai multe țări din lume. Din ce în ce mai multe întreprinderi trec la contabilitate în acest program. Dar procedura de transfer manual a datelor din alte programe de contabilitate în 1C este o sarcină destul de lungă și plictisitoare, care necesită mult timp. Dacă întreprinderea a păstrat înregistrări folosind Excel, atunci procesul de transfer poate fi automatizat și accelerat semnificativ.

Transferul datelor din Excel în 1C este necesar nu numai în perioada inițială de lucru cu acest program. Uneori este nevoie de așa ceva atunci când, în cursul unei activități, trebuie să introduceți niște liste stocate în cartea de calcul. De exemplu, dacă trebuie să transferați liste de prețuri sau comenzi dintr-un magazin online. Dacă listele sunt mici, le puteți introduce manual, dar dacă conțin sute de articole? Pentru a accelera procedura, puteți recurge la câteva opțiuni suplimentare.

Aproape toate tipurile de documente sunt potrivite pentru descărcarea automată:

  • Lista nomenclaturii;
  • Lista contrapartidelor;
  • Lista de preturi;
  • Lista comenzilor;
  • Informații despre achiziții sau vânzări etc.

Trebuie remarcat imediat că 1C nu are instrumente încorporate care să vă permită să transferați date din Excel. În aceste scopuri, trebuie să conectați un bootloader extern, care este un fișier în format epf.

Pregătirea datelor

Va trebui să pregătim datele în tabelul Excel în sine.


Pe lângă aceste acțiuni universale pentru pregătirea datelor într-o carte Excel, va trebui și să aduceți documentul în conformitate cu cerințele încărctorului specific pe care îl vom folosi, dar despre asta vom vorbi puțin mai jos.

Conectarea unui bootloader extern

Conectați un bootloader extern cu extensie epf aplicația 1C se poate face atât înainte, cât și după pregătirea fișierului Excel. Principalul lucru este că ambele aceste probleme pregătitoare au fost rezolvate înainte de începerea procesului de încărcare.

Există mai multe încărcătoare externe de tabele Excel pentru 1C, care au fost create de diverși dezvoltatori. Vom lua în considerare un exemplu de utilizare a unui instrument de procesare a informațiilor „Încărcarea datelor dintr-un document de foaie de calcul” pentru versiunea 1C 8.3.


Una dintre principalele baze de date cu care lucrează 1C este o listă de produse și servicii. Prin urmare, pentru a descrie procedura de încărcare din Excel, ne vom concentra pe exemplul de transfer al acestui tip particular de date.

  1. Revenim la fereastra de procesare. Deoarece vom încărca gama de produse, comutatorul din parametru ar trebui să fie în poziție "Director". Cu toate acestea, este instalat în acest fel în mod implicit. Ar trebui să-l comutați numai atunci când aveți de gând să transferați un alt tip de date: o secțiune tabelară sau un registru de informații. Următorul pe teren „Vizualizare director” Faceți clic pe butonul cu punctele de suspensie pe el. Se deschide o listă derulantă. În el ar trebui să selectăm elementul "Nomenclatură".
  2. După aceasta, handlerul plasează automat câmpurile pe care programul le folosește în acest tip de carte de referință. Trebuie remarcat imediat că nu este deloc necesar să completați toate câmpurile.
  3. Acum deschideți din nou documentul portabil Excel. Dacă numele coloanelor sale diferă de numele câmpurilor directorului 1C care le conțin pe cele corespunzătoare, atunci trebuie să redenumiți aceste coloane în Excel, astfel încât numele să se potrivească complet. Dacă tabelul conține coloane pentru care nu există analogi în director, atunci acestea ar trebui șterse. În cazul nostru, aceste coloane sunt "Cantitate"Şi "Preţ". De asemenea, trebuie adăugat că ordinea coloanelor din document trebuie să coincidă strict cu cea prezentată în procesare. Dacă nu aveți date pentru unele dintre coloanele care sunt afișate în încărcător, atunci aceste coloane pot fi lăsate goale, dar numerotarea acelor coloane în care există date trebuie să se potrivească. Pentru confort și viteza de editare, puteți utiliza o funcție specială Excel pentru a muta rapid coloanele în anumite locuri.

    După ce acești pași au fost finalizați, faceți clic pe pictogramă "Salva", care este reprezentată de o pictogramă care înfățișează o dischetă în colțul din stânga sus al ferestrei. Apoi închideți fișierul făcând clic pe butonul de închidere standard.

  4. Revenim la fereastra de procesare 1C. Faceți clic pe butonul "Deschide", care este afișat ca un folder galben.
  5. Se deschide fereastra de deschidere a fișierului. Să mergem la directorul în care se află documentul Excel de care avem nevoie. Comutatorul implicit de afișare a fișierelor este setat la extensie mxl. Pentru a afișa fișierul de care avem nevoie, trebuie să-l mutăm în poziția „Foaie Excel”. După aceea, selectați documentul de transferat și faceți clic pe butonul "Deschide".
  6. Conținutul este apoi deschis în handler. Pentru a verifica dacă datele sunt completate corect, faceți clic pe butonul "Control de umplere".
  7. După cum putem vedea, instrumentul de control al umplerii ne spune că nu au fost găsite erori.
  8. Acum să trecem la filă „Setări”. ÎN „Câmp de căutare” Punem o bifă în linie care va fi unică pentru toate numele introduse în directorul nomenclatorului. Câmpurile cel mai des folosite pentru aceasta sunt "Articol" sau "Nume". Acest lucru trebuie făcut astfel încât, atunci când adăugați elemente noi în listă, datele să nu fie duplicate.
  9. După ce toate datele au fost introduse și setările au fost finalizate, puteți continua la încărcarea directă a informațiilor în director. Pentru a face acest lucru, faceți clic pe inscripție „Încărcați date”.
  10. Procesul de descărcare este în curs. După finalizarea acestuia, puteți merge la cartea de referință a articolului și vă asigurați că toate datele necesare au fost adăugate acolo.

Am urmat procedura de adăugare a datelor în directorul de nomenclatură din programul 1C 8.3. Pentru alte directoare și documente, descărcarea se va efectua după același principiu, dar cu unele nuanțe pe care utilizatorul le poate da seama singur. De asemenea, trebuie remarcat faptul că procedura poate diferi pentru diferite încărcătoare terță parte, dar abordarea generală rămâne aceeași pentru toți: mai întâi, procesorul încarcă informațiile din fișier în fereastra în care este editat și abia apoi este adăugată. direct în baza de date 1C.