Primirea datelor din fișierul xls 1c. Care este mai bun - „1C” sau „Excel”? Câteva cuvinte despre posibile greșeli

În 1C, există 2 moduri de a lucra cu fișiere MS Excel, printr-un obiect COM și instrumente 1C încorporate folosind un obiect document foaie de calcul. Să aruncăm o privire mai atentă la ambele metode.

1. Lucrul printr-un obiect COM.

Pentru această metodă, MS Excel trebuie instalat, în plus, dacă lucrați cu un fișier pe server, atunci MS Excel trebuie instalat pe server, dacă pe client, atunci MS Excel este necesar și pe partea client.

Un exemplu (la sfârșitul articolului poate fi vizualizat sub formă de text):

Trebuie remarcat faptul că toate obiectele, metodele și proprietățile furnizate de obiectul COM „Excel.Application” sunt obiecte, metode și proprietăți ale VBA, limbajul de programare MS Office.

Notă:

Uneori trebuie să lucrați cu un șablon deja existent. Apoi ne confruntăm cu necesitatea de a stoca acest șablon undeva, astfel încât toată lumea să aibă acces la el. utilizatorii necesari... Cu toate acestea, există o soluție mai simplă, salvați șablonul ca aspect binar.

2. Lucrați prin documentul tabelar 1C.

Documentul foaie de calcul 1C acceptă formatul MS Excel pentru scriere începând de la platforma 8, dar pentru deschidere doar începând de la platforma 8.3.6. Mai mult, la deschidere, toate foile sunt încărcate într-un singur document foaie de calcul. Începând cu versiunea 8.3.10, la încărcare, diferite foi sunt încărcate ca zone diferite.

Exemplul de înregistrare este foarte simplu și nu necesită multă atenție:

Totuși, aici avem o problemă. Când înregistrați din 1C într-un registru de lucru Excel, afișarea numelor foilor este dezactivată în mod implicit.

Această problemă poate fi rezolvată în 2 moduri, 1 - în carte în sine, în setări, activați afișarea foilor (nu toți utilizatorii vor fi de acord să facă acest lucru), 2 - să o faceți printr-un obiect COM (avem din nou nevoie de MS Excel instalat).

După această mică adăugare, comenzile rapide pentru foi vor fi vizibile în fișierul MS Excel.

Citirea MS Excel nu este o sarcină atât de ușoară, deoarece metoda de citire este disponibilă numai pe server sau client gros. Pentru a face acest lucru, trebuie să transferăm fișierul MS Excel pe server.

& OnClient

Procedura Creare document ()

Excepție

Sfârșitul încercărilor;

Carte = Excel.WorkBooks.Add (); // Creați un nou registru de lucru MS Excel

Sheet = Book.WorkSheets.Add (); // Adăugați o foaie

Sheet.Name = "Exemplu de la 1C"; // Setați numele foii

Sheet.Cells (1,1) .Value = "(! LANG: Să creăm o formulă";!}

Foaie.Celule (2,1) .Valoare = 1;

Frunză.Celule (2,2) .Valoare = 2;

Foaie.Celule (2,3) .Formula = "= A2 + B2";

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

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

Carte.Închidere ();

Sfârșitul procedurii

&Pe server

Funcția GetLayoutServer ()

Returnează FormInValue ("Obiect"). Obține aspect ("TemplateOnDownload"); // Acesta este modul în care obținem aspectul prelucrare externă;

EndFunction

& OnClient

Lucru de procedură ()

Excel = New COMObject ("Excel.Application");

Excepție

Raport („Încercare nereușită de conectare a componentei Excel. Posibil programul Excel neinstalat pe acest calculator!");

Sfârșitul încercărilor;

Layout = Obține LayoutServer ();

Layout.Write (TemporaryFileName);

Ai o întrebare, ai nevoie de ajutorul unui consultant?

Carte = Excel.WorkBooks.Open (TemporaryFileName);

Template Sheet = Book.WorkSheets (1);

Foaie șablon.Celele (6,1) .Valoare = „(! LANG: Data:";!}

Model Sheet.Cells (6,2) .Value = CurrentDate ();

Model Sheet.NumberFormat = "zz / mm / aa; @"; // Să dăm formatul datei, acest format a fost obținut prin înregistrarea unui macro în MS Excel

TemplateLeaf.Columns ("B: B"). EntireColumn.AutoFit; // Întinde coloana astfel încât data să se potrivească exact

Book.SaveAs (FileName);

Carte.Închidere ();

Sfârșitul procedurii

& OnClient

Sfârșitul procedurii

& OnClient

Procedura WriteTableDocument ()

TabularDocument = Nou TabularDocument ();

TabularDocument.Object ("R1C1"). Text = "Un exemplu de scriere în MS Excel din 1C";

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

Excel = New COMObject ("Excel.Application");

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

Excel.Vizibil = 0;

Excel.ActiveWindow.DisplayWorkbookTabs = 1;

Excel.ActiveWindow.TabRatio = 0,6;

Excel.ActiveWorkbook.Save ();

Excel.Application.Quit ()

Sfârșitul procedurii

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

Adresă = PutToTemporaryStore (BinaryData, EtaForm.UniqueIdentifier);

TabularDocument = LoadOnServer (Adresă);

TabularDocument.Show ();

Sfârșitul procedurii

&Pe server

Funcția LoadOnServer (adresă)

TempFileName = GetTempFileName ("xlsx");

FileData = GetFrom TemporaryStorage (Adresă);

FileData.Write (TemporaryFileName);

TabularDocument = Nou TabularDocument ();

Returnează TabularDocument;

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

  • Scrie (< ИмяФайла>, < ТипФайлаТаблицы >) pentru a încărca date într-un fișier;
  • Citit (< ИмяФайла>, < СпособЧтенияЗначений >) 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. Tine minte asta
atunci când planificați interacțiunea client-server.

Să ne uităm la un exemplu de economisire document foaie de calcul la dosar. Este necesar să creați și să completați obiectul TabularDocument în orice mod și descărcare la fișier se realizează cu o singură linie:

TabDoc ... Scriere (FilePath, TabularDocumentFileType. XLSX);

Aici TabDoc- document foaie de calcul generat, Calea către fișier- numele fișierului de încărcat, Tabular Document File Type.XLSX- format fișierul generat... Sprijinit următoarele formate Excela:

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

TabDoc = New TabularDocument;
TabDoc ... Citiți (Cale către fișier, Cum să citiți valorile documentului tabelar.);

Aici Calea către fișier- calea către fișierul Excel descărcat. Metoda de citire a valorilor documentului tabelar. determină modul de interpretare a datelor citite din documentul sursă. Opțiunile sunt:

  • Sens;
  • Text.

Schimb prin OLE

Schimbul prin tehnologia de automatizare OLE este poate cea mai comună opțiune munca programatică cu fișiere Excel. Vă permite să utilizați toate funcționalitățile oferite de Excel, dar este mai lent decât alte metode. Pentru schimbul prin OLE, trebuie să instalați MS Excel:

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

Exemplu descărcare:

// Creați un obiect COM
Excel = New COMObject ("Excel.Application");
// Dezactivează afișarea avertismentelor și întrebărilor
excela ... DisplayAlerts = Fals;
// Creați o carte nouă
Carte = Excel. Cărți de lucru. Adăuga ();
// Poziţionarea pe prima foaie
Foaie = Cartea. Fișe de lucru (1);

// Scrieți o valoare într-o celulă
Foaie ... Celule (LineNumber, ColumnNumber). Valoare = Valoarea celulei;

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


excela ... Părăsi ();
Excel = 0;

Exemple de citind:

// -- OPȚIUNEA 1 --

// Creați un obiect COM
Excel = New COMObject ("Excel.Application");
// Deschide cartea
Carte = Excel. Caiete de lucru. Deschis ( Calea către fișier);

Foaie = Cartea. Fișe de lucru (1);

// Inchide cartea
Carte ... Închidere (0);

// Închideți Excel și eliberați memoria
excela ... Părăsi ();
Excel = 0;

// —— OPȚIUNEA 2 ——

// Deschide cartea
Carte = GetCOMObject ( Calea către fișier);
// Poziţionarea pe foaia dorită
Foaie = Cartea. Fișe de lucru (1);

// Citiți valoarea celulei, de obicei aceasta este bucla pentru parcurgerea celulelor
Valoarea celulei = foaie. Celule (LineNumber, ColumnNumber). Valoare;

// Inchide cartea
Carte ... Aplicație. Qui t ();

Pentru ocolire dintre toate rândurile completate ale unei foi Excel, puteți utiliza următoarele tehnici:

// -- OPȚIUNEA 1 --
Număr de linii = foaie. Celulele (1, 1). SpecialCells (11). Rând;
Pentru numărul de linii = 1 după numărul de linii buclă
Valoarea celulei = foaie. Celule (LineNumber, ColumnNumber). Valoare;
Sfârșitul ciclului;

// —— OPȚIUNEA 2 ——
LineNumber = 0;
În timp ce ciclul adevărului
LineNumber = LineNumber + 1;
Valoarea celulei = foaie. Celule (LineNumber, ColumnNumber). Valoare;
Dacă NU este completată cu valoare (Valoarea celulei) Atunci
Avorta;
EndIf;
Sfârșitul ciclului;

Î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 cantități mari de date:

Total coloane = foaie. Celulele (1, 1). SpecialCells (11). Coloană;
Total de rânduri = Foaie. Celulele (1, 1). SpecialCells (11). Rând;

Regiune = Foaie. Interval (Sheet. Cells (1, 1), Sheet. Cells (TotalLines, 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 Un comentariu
Lucrul cu aplicația
Setarea vizibilității ferestrei aplicației excela ... Vizibil= fals;
Setarea modului de afișare a avertismentelor (afișează / nu afișează) excela ... Afișează Alerte= fals;
Închiderea aplicației excela ... Părăsi ();
Lucrul cu o carte
Crearea unei cărți noi Carte = Excel. Cărți de lucru. Adăuga();
Deschiderea unei cărți existente Carte = Excel. Cărți de lucru. Deschide (FileName);
Salvarea unei cărți Carte ... Salvare ca (FileName);
Închiderea cărții Carte ... Închidere (0);
Lucrul cu o foaie
Setarea foii curente Foaie = Cartea. Fișe de lucru (Numărul foii);
Setarea numelui Foaie ... Nume = Nume;
Setarea protecției Foaie ... Proteja();
Îndepărtarea protecției Foaie ... Dezprotejează();
Setarea orientării paginii Foaie ... Configurare pagina. Orientare = 2; 1 - portret, 2 - peisaj
Setarea marginii din stânga Foaie ... Configurare pagina. LeftMargin = Excel. CentimetersToPoints (Centimetri);
Stabilirea limitei superioare Foaie ... Configurare pagina. TopMargin = Excel. CentimetersToPoints (Centimetri);
Setarea chenarului drept Foaie ... Configurare pagina. RightMargin = Excel. CentimetersToPoints (Centimetri);
Setarea marginii de jos Foaie ... Configurare pagina. BottomMargin = Excel. CentimetersToPoints (Centimetri);
Lucrul cu rânduri, coloane, celule
Setarea lățimii coloanei Foaie ... Coloane. ColumnWidth = Lățime;
Ștergerea unei linii Foaie ... Rânduri. Șterge();
Ștergerea coloanei Foaie ... Coloane. Șterge ();
Ștergerea unei celule Foaie ... Celule (LineNumber, ColumnNumber). Șterge();
Setarea valorii Foaie ... Celule (LineNumber, ColumnNumber). Valoare = Valoare;
Unirea celulelor Foaie ... Interval (Foaie. Celule (RowNumber, ColumnNumber), Sheet.Cells (RowNumber1 ,ColumnNumber1)). Combina();
Instalarea fontului Foaie ... Celule (LineNumber, ColumnNumber). Font. Nume = Nume font;
Setarea dimensiunii fontului Foaie ... Celule (LineNumber, ColumnNumber). Font. Dimensiune = Dimensiunea fontului;
Setarea fontului aldine Foaie ... Celule (LineNumber, ColumnNumber). Font. Îndrăzneţ = 1 ; 1 - bold, 0 - normal
Setarea cursiv Foaie ... Celule (LineNumber, ColumnNumber). Font. Cursiv = 1 ; 1 - cursiv, 0 - normal
Setarea fontului subliniat Foaie ... Celule (LineNumber, 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 de program 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 obiect peste o matrice multidimensională SafeArray de la COM. Vă permite să creați și să utilizați SafeArray pentru a face schimb de date între obiectele COM. În termeni simpli, este o serie de valori care pot fi folosite pentru a face schimb între aplicații care utilizează tehnologia OLE.

// Creați COMSafeArray
ArrayCom = COMSafeArray nou ("VT_Variant", TotalColumns, TotalStrings);
// Populați COMSafeArray
Pentru Linii = 0 prin total linii - 1 ciclu
Pentru Număr = 0 total coloane - 1 ciclu
ArrayCom ... SetValue (număr, pagină, valoare);
Sfârșitul ciclului;
Sfârșitul ciclului;
// Atribuiți valori din COMSafeArray în zona foii de lucru Excel
Foaie ... Interval (Sheet. Cells (1, 1), Sheet. Cells (TotalRows, TotalColumns)). Valoare = ArrayCom;

Schimb prin ADO

Un fișier Excel 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ă fie prezent un driver ODBC, cu care se va efectua accesul. Driverul ODBC de utilizat este determinat prin specificarea unui șir 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 descărcare, nu există nicio modalitate de a utiliza funcționalitatea Excel pentru a proiecta celule, pagini de marcare, setare formule etc.

Exemplu descărcare:


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


Compus ... ConnectionString = "

| Sursa datelor = " + FileName + „;
;
Compus ... Deschis (); // Deschide conexiunea

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

// Atribuiți textul comenzii pentru a crea tabelul
Comanda ... CommandText = „CREATE TABLE [Sheet1] (Column1 char (255), Column2 date, Column3 int, Column4 float)”;
Comanda ... A executa (); // Executați comanda

// Atribuiți un text de comandă pentru a adăuga un rând de tabel
Comanda ... CommandText = „INSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) valori (‘ ‘‘ ‘’ ’,‘ 8/11/2017 ’”, ‘12345’, ‘12345.6789’) ”;
Command.Execute (); // Executați comanda

// Ștergeți comanda și închideți conexiunea
Comanda = nedefinit;
Compus ... Închide();
Conexiune = nedefinit;

Pentru a crea o foaie nouă și a-i forma structura, puteți folosi obiectele ADOX.Catalogși ADOX.Tabel... În acest caz, codul va lua forma:

// Creați un obiect COM pentru a lucra cu cartea
Carte = Nou COMObject ("ADOX.Catalog");
Carte ... ActiveConnection = Conexiune;

// Creați un obiect COM pentru a lucra cu structura de date de pe foaie
Tabel = Nou COMObject ("ADOX.Table");
masa ... Nume = „Foaie1”;
masa ... Coloane. Anexează („Coloana 1”, 202);
masa ... Coloane. Adăugați („Coloana 2”, 7);
masa ... Coloane. Adăugați („Coloana 3”, 5);
masa ... Coloane. Adăugați („Coloana4”, 5);

// Creați o foaie cu structura descrisă în carte
Carte ... Mese. Adăugați (Tabel);
Tabel = nedefinit;
Carte = nedefinit;

În exemplul de mai sus, în metoda

masa ... Coloane. Adăuga(„Coloana 1”, 202);

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

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

Exemplu citind:

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

// Setați șirul de conexiune
Compus ... ConnectionString = "
| Furnizor = Microsoft.ACE.OLEDB.12.0;
| Sursa datelor = " + FileName + „;
| Proprietăți extinse = "" Excel 12.0 XML; HDR = YES ""; ";
Compus ... Deschis (); // Deschide conexiunea

// Creați un obiect COM pentru a obține selecția
Selecție = Nou COMObject ("ADODB.Recordset");
Text de solicitare = „SELECTARE * DIN [Sheet1 $]”;

// Executarea cererii
Probă ... Deschide (QueryText, Connection);

// Omite rezultatul selecției
NU eșantionează încă. EOF () Buclă
Valoarea coloanei 1 = Eșantion. Câmpuri. Element („Coloana1”). Valoare ; // Referire după numele coloanei
Column2-Value = Probă. Câmpuri. Punctul (0). Valoare; // Referitor la indexul coloanei
Probă ... Mutați Următorul ();
Sfârșitul ciclului;

Probă ... Închide ();
Eșantion = nedefinit;
Compus ... Închide ();
Conexiune = nedefinit;

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

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

Doar câteva dintre obiectele ADO au fost discutate în exemplele oferite. Modelul obiect ADO constă din următoarele obiecte:

  • Conexiune;
  • Comanda;
  • Set de înregistrări;
  • Record;
  • Câmpuri;
  • Curent;
  • erori;
  • Parametrii;
  • Proprietăți.

Încărcați fără programare

Pentru a salva datele din 1C în Excel, nu este întotdeauna recomandabil să apelezi la programare. Dacă în modul Enterprise utilizatorul poate afișa datele necesare pentru încărcare, atunci este posibil să le salveze în Excel fără programare.

Pentru a salva un document de foaie de calcul (de exemplu, un rezultat al unui raport), puteți apela comanda Salvați sau Salvează ca… meniu 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 ⇒ Afișează lista...;
  2. Salvați documentul foaie de calcul în formatul necesar.

  • La efectuarea schimbului de informații între contrapărți (liste de prețuri, situații de reconciliere etc.);
  • Pentru a facilita munca operatorilor în cazurile în care contabilitatea principală se efectuează în 1C, iar o parte din aceasta este efectuată în Foi de calcul Excel;
  • În timpul umplerii inițiale a bazei de date.

Pentru a efectua această operațiune, puteți utiliza atât funcționalitatea standard disponibilă cu un abonament la suport pentru tehnologia informației (ITS), cât și procesarea autoscrisă, implementată prin diferite opțiuni de conectare. În articolul nostru, vom încerca să analizăm pe deplin toate cazurile posibile și să răspundem la majoritatea întrebărilor existente cu privire 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”, în folderul „Încărcarea datelor dintr-un document de foaie de calcul” există o prelucrare corespunzătoare.

Când începe, se deschide un formular (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 tabulară document sau carte de referință;
  3. Registrul de informații.

Câmpul de selecție a obiectelor se modifică în funcție de poziția comutatorului.

Formularul de procesare tabelar este completat când deschideți fișierul descărcat.

Procesarea tipică acceptă descărcarea din:

  • Dezvoltat de specialiști 1C, format fișiermxl;
  • Frunzexls salvat în formatExcel 97-2003;
  • Fisier texttxt;
  • Mesedbf.

Încărcarea fișierelor Excel de dimensiuni mari poate dura mult timp, 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ă în fișier sursă există grupări de linii, subtitluri și note, acestea vor trebui eliminate manual.

Acum să mergem 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 imprimabil, detaliile contrapartidei, data și numărul documentului primit, numele coloanelor și așa mai departe), pentru a exclude procesarea acestora de către program pe formularul, în atributul „Primul rând al documentului tabelar” trebuie să specificați primul rând cu informații portabile

După selectarea unui obiect de metadate pentru care vor fi înregistrate informații, secțiunea tabelară a filei „Setări” va fi completată automat cu numele atributelor, o descriere a tipurilor acestora și alte Informații importante... O secțiune separată ar trebui să fie dedicată luării în considerare a coloanelor din secțiunea 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 această casetă, procesarea va căuta articole după atributul corespunzător și, dacă reușește, va modifica datele existente, functie suplimentara din acest domeniu - protecție împotriva duplicatelor.

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

Modul de descărcare - oferă trei opțiuni din care să alegeți (Fig. 3):

Fig. 3

  • Căutare - se va efectua căutarea elementului corespunzător; dacă acesta lipsește, se poate crea unul nou;
  • Set - o anumită valoare este stabilită în mod subordonat;
  • Calculați - în acest caz, rezultatul calculării expresiei specificate în coloana „Condiție link / 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 din ce coloană a tabelului Excel datele ar trebui să fie preluate pentru completare.

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

Condiție link / Expresie pentru valoare - am atins deja parțial acest câmp când am luat în considerare câmpurile calculate; în plus, puteți specifica o condiție în conformitate cu care datele sursă vor fi sincronizate.

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

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

Puteți verifica corectitudinea datelor transferate făcând clic pe butonul „Umplere control” (Fig. 1). După aceea, puteți începe procesul de descărcare. Despre implementare cu succes proceduri sau situații neobișnuite veți fi notificat separat.

Mai există un mecanism de încărcare a datelor din Excel în bazele de informații „Management și comerț”. Este mai puțin versatil decât metoda de mai sus, însă nu necesită abonament ITS și este inclus în livrarea standard.

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

Fig. 5

Formularul de procesare contine:

  1. Câmp de selecție a datei, care va indica pentru ce oră este relevant acest preț;
  2. Câmp de selecție pentru antreprenorul 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 secțiune tabelară care poate fi completată cu date descărcabile.

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ă din formular.

După alegerea unei contrapartide (în funcție de faptul că aceasta acționează ca 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ă aceea, 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ț”), apăsăm 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 a rezolva eroarea. Aspect secțiunea tabelară poate fi controlată cu un comutator. În plus, utilizatorul poate potrivi independent elementele fișierului încărcat cu cele din baza de date.

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

În câmpul de text, puteți adăuga un comentariu care va fi scris în document (Fig. 9):

Fig. 9

După procesare:

  • Un articol corespunzător va fi creat în cartea de referință „Nomenclatorul furnizorului” (dacă nu era prezent);
  • Articolul din catalog „Nomenclatură” va fi corelat cu acesta;
  • Documentul „Setarea prețurilor articolelor” va fi creat și postat, indicând: furnizor, tipul prețului și data fixării datelor.

Procesarea „Încărcarea mărfurilor din fișiere externe” funcționează în același mod.

Opțiuni de manipulare 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 - suficient cale rapidă, care, de regulă, este aplicabilă atât pentru versiunile de fișiere, cât și pentru versiunile client-server ale stocării bazei de date;
  • Prin utilizare Microsoft Office- metoda 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ă, în plus, este necesară instalat Office;
  • Prin Libre Office - spre deosebire de metoda anterioară, este gratuit, pe lângă formatele xls și xlsx, suportă și tabele proprii, dar necesită pachetul LibreOffice instalat și o anumită pregătire a fișierului descărcat (primul rând al tabelului trebuie să conțină numele coloanelor).

Să luăm în considerare mai detaliat căi diferiteși opțiuni.

Prin ADODB.Connection

În general, ADO înseamnă ActiveX Data Object și servește la acces 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șiere Excel trei variante sunt posibile aici:

Parametrii șirului 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ă aveți nevoie de un rând de antet pentru tabel (HDR = YES indică faptul că datele vor fi citite din prima linie, HDR = NU - cea din a doua), dacă fișierul este deschis doar pentru citire (ReadOnly) și alți parametri opționali.

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

Fig. 13

Acum putem folosi cerere simplă(Fig. 14) începeți preluarea informațiilor din fișierul descărcat.

În acest caz, parametrul „Foaie” determină cu ce foaie din cartea Excel trebuie să lucrăm.

Setul de înregistrări stocate într-o foaie poate fi citit folosind obiectul Recordset. În acest caz, prima înregistrare a foii poate fi obținută prin parametrul BOF (începutul fișierului), și ultima EOF (sfârșitul fișierului).

Prin aplicația Excel

Principala diferență față de metoda anterioară este că, pe lângă driverele pentru lucrul cu bazele de date, pe computerul unde se realizează conexiunea trebuie instalat și Excel. Doar în acest caz putem inițializa aplicația pentru a citi datele din tabel (Fig. 16).

Acest obiect COM Există mai mulți parametri copii, dar principalul pentru noi, în condițiile actuale de activitate, este parametrul WorkBooks (Fig. 17).

După inițializarea cărții, este necesar să se determine foaia din care vor fi citite datele (Fig. 18).

După aceea, puteți itera rândurile și coloanele din tabelul fișierului care este deschis în interiorul buclelor.

Câteva cuvinte despre posibile greșeli

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 computerul dvs., dar dacă dvs. sau alt utilizator l-ați deschis din procesare externă, puteți determina vizual acest lucru doar prin Task Manager, așa că nu uitați să închideți conexiunea înainte de a termina procedura de transfer:

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

Fig. 19

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

Orez. douăzeci.

Cel mai bine este să organizați conexiunea și procedura de finalizare a lucrului cu date din construcția Attempt-Exception-EndTry, provocând o descriere a erorii într-o excepție. 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 remediezi.

Introducere.

Mulți oameni știu că Excel este mult mai vechi decât 1C. După părerea mea, acesta este un produs de mare succes și nu am auzit nicio plângere în legătură cu acesta. Excel este simplu și versatil. Este capabil să efectueze nu numai operații aritmetice simple, ci și calcule complexe, grafice etc. Cunosc exemple când organizațiile, înainte de a trece la 1C, și-au făcut o parte din contabilitatea în Excel. Mulți oameni încă folosesc două programe în paralel. În acest articol, vom lua în considerare modalități de schimb de date între 1C și Excel.

Tabelele 1C și Excel.

Pentru comoditate, mulți utilizatori salvează tabele 1C ( formulare tipărite) în format Excel (* .xls). După aceea, în fișierul rezultat se fac diverse grupări, sortări, calcule etc. Acest lucru se datorează faptului că tabelele 1C nu au o funcționalitate atât de mare ca în tabelele Excel. Dar în versiunea 1C 8.0 există inovații care fac lucrul cu mesele mai confortabil.

Pe site-ul web 1C (http://www.1c.ru/) există un program util care face posibilă deschiderea tabelelor 1C în Excel și salvarea unei foi Excel ca tabel 1C. Acest lucru este util dacă tabelul 1C nu a fost salvat în format Excel și 1C nu este instalat pe computerul pe care trebuie să deschideți acest tabel. Și nu va fi nevoie să vă amintiți în mod constant că trebuie să salvați tabelul 1C în format Excel.

Informații complete despre program pot fi găsite aici.
Puteți descărca programul de aici ( arhiva zip 682.739 octeți).

Cometariu:În Excel, separatorul zecimal este ",". Prin urmare, înainte de a salva tabelul 1C în format Excel, înlocuiți un alt separator în el (de exemplu „.”) Cu ",". În caz contrar, Excel nu va putea efectua calcule cu aceste numere sau nu vor fi afișate deloc ca numere. De exemplu, în tabelul 1C „15.2” va fi afișat în Excel ca „15 februarie”.

Obținerea datelor din Excel.

Accesul de la 1C la Excel se face prin OLE. De exemplu codul
Atentat, încercare
Excepție
Raport (DescriereErori () +
);
Întoarcere;
Sfârșitul încercărilor;
ne va permite să accesăm prin variabila „Excel” la rulare aplicație Excel... Și apoi puteți accesa deja cartea (fișierul), foaia și celula cu date. Mai jos sunt câteva exemple de cod.

Deschiderea unei cărți (fișier):
Carte = Excel. Cărți de lucru. Deschide (Cale către fișier);
FilePath este calea completă către fișierul registrului de lucru Excel.

Selectarea unei foi a cărții cu care să lucrați:
sau
Foaie = Carte. Worksheets (SheetName);
SheetNumber este numărul foii din carte, SheetName este numele foii din carte.

Obținerea valorii unei celule de foaie:
Valoare = Foaie. Celule (LineNumber, ColumnNumber). Valoare;

Important: nu uitați să adăugați codul Excel în câmpul de efectuare a acțiunilor necesare. Părăsi (); , altfel procesul de rulare va rămâne incomplet și va ocupa memoria și procesorul computerului.

Ieșirea datelor în Excel.

Pentru a scoate (încărca) date în Excel, trebuie fie să deschideți un registru de lucru existent, fie să creați unul nou și să selectați o foaie de lucru pentru ieșirea datelor. Deschiderea unei cărți existente este descrisă mai sus și pentru a crea o carte nouă, trebuie să utilizați următorul cod:
Atentat, încercare
Excel = CreateObject ("Excel.Application");
Excepție
Raport (DescriereErori () +
„Excel nu este instalat pe acest computer!”);
Întoarcere;
Sfârșitul încercărilor;
Carte = Excel. Cărți de lucru. Adăuga ();

Deoarece atunci când creați un registru de lucru în Excel, foile sunt create automat (Instrumente-> Opțiuni-> General-> Foi într-un registru de lucru nou), trebuie doar să selectați o foaie cu care să lucrați:
Foaie = Carte. Worksheets (Numărul foii);
sau adăugați o foaie nouă în carte, dacă este necesar:
Foaie = Carte. Foi. Adăuga ();
Urmatorul pas va seta valoarea celulei:
Foaie. Celule (LineNumber, ColumnNumber). Valoare = Valoare;
RowNumber, ColumnNumber - numărul rândului și numărul coloanei, la intersecția cărora se află celula.
Și la sfârșit, trebuie să înregistrați cartea creată:
Atentat, încercare
Carte . SaveAs (Cale către fișier);
Excepție
Raport (DescriereErori ()
+ „Fișierul nu a fost salvat!”);
Întoarcere;
Sfârșitul încercărilor;
FilePath este calea completă către fișierul registrului de lucru Excel (inclusiv numele).
Important: nu uitați că numele fișierelor nu trebuie să conțină \ /: *? „>< |.

Metode frecvent utilizate pentru citirea/setarea valorilor în Excel.

Excel = CreateObject ("Excel.Application"); Obținerea accesului la aplicația Excel.
Excela. Vizibil = Vizibilitate; 0 - Excel nu este vizibil, 1 - vizibil.
Carte = Excel. Cărți de lucru. Adăuga (); Creați un nou registru de lucru Excel (fișier).
Carte . Salvare ca (FileName); Salvați registrul de lucru Excel.
Foaie = Carte. Fișe de lucru. Adăuga (); Adăugarea unei noi foi la carte.
Carte = Excel. Cărți de lucru. Deschide (FileName); Deschiderea unui registru de lucru Excel existent (fișier).
Foaie = Carte. Worksheets (Numărul foii); Setarea unei foi ca muncitor cu numărul Sheet Number.
Foaie. Nume = Numele foii; Dați unei foi de lucru un nume SheetName
Foaie. Configurare pagina. Zoom = Scară; Setează parametrul de pagină „Scale” (de la 10 la 400).
Foaie. Configurare pagina. Orientare = Orientare; Orientare: 1 - portret, 2 - peisaj.
Foaie. Configurare pagina. LeftMargin = Excel. CentimetersToPoints (Centimetri); Setarea marginii din stânga (în centimetri).
Foaie. Configurare pagina. TopMargin = Excel. CentimetersToPoints (Centimetri); Setarea limitei superioare (în centimetri).
Foaie. Configurare pagina. RightMargin = Excel. CentimetersToPoints (Centimetri); Setarea chenarului drept (în centimetri).
Foaie. Configurare pagina. BottomMargin = Excel. CentimetersToPoints (Centimetri); Setarea limitei inferioare (în centimetri).
Foaie. Coloane. ColumnWidth = Lățime; Setarea lățimii coloanei.
Foaie. Celule (LineNumber, ColumnNumber). Valoare = Valoare; Introducerea datelor într-o celulă.
Foaie. Celule (LineNumber, ColumnNumber). Font. Nume = Nume font; Setarea fontului în celulă.
Foaie. Celule (LineNumber, ColumnNumber). Font. Dimensiune = Dimensiunea fontului; Setează dimensiunea fontului în celulă.
Foaie. Celule (LineNumber, ColumnNumber). Font. Bold = Bold; 1 este aldine, 0 este normal.
Foaie. Celule (LineNumber, ColumnNumber). Font. Italic = Italic; 1 este font italic, 0 este normal.
Foaie. Celule (LineNumber, ColumnNumber). Font. Subliniere = Subliniere; 2 este subliniat, 1 nu.
Foaie. Celule (LineNumber, ColumnNumber). NumberFormat = Format; Setarea formatului de date al celulei.
Foaie. Celule (LineNumber, ColumnNumber). Frontiere. Stil de linie = Tip de linie; Setarea marginilor celulelor. 1 - solid subțire.