Primanje podataka iz xls datoteke 1c. Što je bolje - "1C" ili "Excel"? Nekoliko riječi o mogućim pogreškama

U 1C postoje 2 načina rada s MS Excel datotekama, putem COM objekta i ugrađenih 1C alata pomoću objekta dokumenta proračunske tablice. Pogledajmo pobliže obje ove metode.

1. Rad kroz COM objekt.

Za ovu metodu mora biti instaliran MS Excel, štoviše, ako radite s datotekom na poslužitelju, onda MS Excel mora biti instaliran na poslužitelju, ako na klijentu, onda je potreban i MS Excel na strani klijenta.

Primjer (na kraju članka može se vidjeti u tekstualnom obliku):

Treba napomenuti da su svi objekti, metode i svojstva koje pruža COM objekt "Excel.Application" objekti, metode i svojstva VBA, programskog jezika MS Office.

Bilješka:

Ponekad trebate raditi s već postojećim predloškom. Tada se suočavamo s potrebom da ovaj predložak negdje pohranimo kako bi mu svi imali pristup. potrebnih korisnika... Međutim, postoji jednostavnije rješenje, spremite predložak kao binarni izgled.

2. Radite kroz tablični dokument 1C.

Dokument proračunske tablice 1C podržava format MS Excel za pisanje počevši od platforme 8, ali za otvaranje samo počevši od platforme 8.3.6. Štoviše, nakon otvaranja, svi listovi se učitavaju u jedan dokument proračunske tablice. Od verzije 8.3.10, prilikom učitavanja, različiti listovi se učitavaju kao različita područja.

Primjer snimanja je vrlo jednostavan i ne zahtijeva puno pažnje:

Međutim, ovdje imamo problem. Prilikom snimanja iz 1C u radnoj knjizi Excel, prikaz naziva listova je onemogućen prema zadanim postavkama.

Ovaj problem se može riješiti na 2 načina, 1 - u samoj knjizi, u postavkama, omogućite prikaz listova (neće svi korisnici pristati na to), 2 - to učiniti putem COM objekta (opet nam treba MS instaliran Excel).

Nakon ovog malog dodatka, prečaci lista bit će vidljivi u MS Excel datoteci.

Čitanje MS Excel-a nije tako lak zadatak, budući da je metoda čitanja dostupna samo na poslužitelju ili debelom klijentu. Da bismo to učinili, moramo prenijeti MS Excel datoteku na poslužitelj.

& OnClient

Postupak Izrada dokumenta ()

Iznimka

Kraj pokušaja;

Knjiga = Excel.WorkBooks.Add (); // Izradite novu radnu knjigu MS Excel

List = Knjiga.Radni listovi.Dodaj (); // Dodaj list

Sheet.Name = "Primjer iz 1C"; // Postavite naziv lista

Sheet.Cells (1,1) .Value = "(! LANG: Kreirajmo formulu";!}

List.Stanice (2,1) .Vrijednost = 1;

List.Stanice (2,2) .Vrijednost = 2;

List.Ćelije (2,3) .Formula = "= A2 + B2";

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

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

Knjiga.Zatvori ();

Završetak postupka

&Na poslužitelju

Funkcija GetLayoutServer ()

Vrati FormInValue ("Object"). Dobiti izgled ("TemplateOnDownload"); // Ovako dobivamo izgled vanjska obrada;

EndFunction

& OnClient

Rad na proceduri ()

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

Iznimka

Izvješće ("Neuspješan pokušaj povezivanja Excel komponente. Moguće Excel program nije instaliran na ovo računalo!");

Kraj pokušaja;

Layout = Get LayoutServer ();

Layout.Write (TemporaryFileName);

Imate pitanje, trebate pomoć konzultanta?

Knjiga = Excel.WorkBooks.Open (ime privremene datoteke);

TemplateSheet = Knjiga.Radni listovi (1);

Predložak Sheet.Cells (6,1) .Value = "(! LANG: Datum:";!}

Predložak Sheet.Cells (6,2) .Value = CurrentDate ();

Predložak Sheet.NumberFormat = "dd / mm / yy; @"; // Dajemo format datuma, ovaj format je dobiven snimanjem makronaredbe u MS Excel

TemplateLeaf.Columns ("B: B"). EntireColumn.AutoFit; // Razvucite stupac tako da datum točno odgovara

Book.SaveAs (Naziv datoteke);

Knjiga.Zatvori ();

Završetak postupka

& OnClient

Završetak postupka

& OnClient

Postupak WriteSheetDocument ()

TabularDocument = Novi TabularDocument ();

TabularDocument.Object ("R1C1"). Text = "Primjer pisanja u MS Excel iz 1C";

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

Excel = Novi COMObject ("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 ()

Završetak postupka

Binarni podaci = Novi binarni podaci ("C: \ 1 \ test2.xlsx");

Adresa = MjestoTemporaryStorage (BinaryData, EtaForm.UniqueIdentifier);

TabularDocument = LoadOnServer (Adresa);

TabličniDokument.Prikaži ();

Završetak postupka

&Na poslužitelju

Funkcija LoadOnServer (adresa)

TempFileName = GetTempFileName ("xlsx");

FileData = GetFrom TemporaryStorage (Adresa);

FileData.Write (TemporaryFileName);

TabularDocument = Novi TabularDocument ();

Vraćanje tabelarnog dokumenta;

Ova metoda je jednostavna. Njegova bit leži u činjenici da je objekt Tablični dokument ima metode:

  • Zapiši (< ИмяФайла>, < ТипФайлаТаблицы >) za prijenos podataka u datoteku;
  • Čitati (< ИмяФайла>, < СпособЧтенияЗначений >) za učitavanje podataka iz datoteke.

Pažnja!

Metoda Write () dostupna je i na klijentu i na poslužitelju. Metoda Read () dostupna je samo na strani poslužitelja. Zapamtite ovo
pri planiranju interakcije klijent-poslužitelj.

Razmotrimo primjer štednje dokument proračunske tablice u datoteku. Potrebno je kreirati i ispuniti objekt TabularDocument na bilo koji način, i istovar na datoteku vrši se samo jednim redkom:

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

Ovdje TabDoc- generirani dokument proračunske tablice, Put do datoteke- naziv datoteke za učitavanje, Tablični dokument Vrsta datoteke.XLSX- format generirana datoteka... Podržano sljedeće formate Excel:

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

TabDoc = Novi tablični dokument;
TabDoc ... Čitanje (put do datoteke, kako čitati tablične vrijednosti dokumenta.);

Ovdje Put do datoteke- put do preuzete Excel datoteke. Metoda čitanja tabličnih vrijednosti dokumenta. određuje kako interpretirati podatke pročitane iz izvornog dokumenta. Opcije su:

  • Značenje;
  • Tekst.

Razmjena preko OLE

Razmjena putem tehnologije OLE automatizacije je možda najčešća opcija programski rad s Excel datotekama. Omogućuje vam korištenje svih funkcija koje pruža Excel, ali je sporiji od ostalih metoda. Za razmjenu putem OLE-a potrebno je instalirati MS Excel:

  • Na računalu krajnjeg korisnika, ako se razmjena odvija na strani klijenta;
  • Na poslužiteljskom računalu 1C: Enterprise, ako se razmjena odvija na strani poslužitelja.

Primjer istovar:

// Stvaranje COM objekta
Excel = Novi COMObject ("Excel.Application");
// Onemogući prikaz upozorenja i pitanja
Excel ... DisplayAlerts = False;
// Napravite novu knjigu
Knjiga = Excel. Radne knjige. Dodati ();
// Pozicioniranje na prvom listu
List = Knjiga. Radni listovi (1);

// Upisuje vrijednost u ćeliju
List ... Ćelije (broj reda, broj stupca). Vrijednost = Vrijednost ćelije;

// Spremi datoteku
Knjiga ... Spremi kao (naziv datoteke);


Excel ... Prestati ();
Excel = 0;

Primjeri za čitanje:

// -- OPCIJA 1 --

// Stvaranje COM objekta
Excel = Novi COMObject ("Excel.Application");
// Otvori knjigu
Knjiga = Excel. Radne bilježnice. Otvorena ( Put do datoteke);

List = Knjiga. Radni listovi (1);

// Zatvori knjigu
Knjiga ... Zatvori (0);

// Zatvorite Excel i oslobodite memoriju
Excel ... Prestati ();
Excel = 0;

// —— OPCIJA 2 ——

// Otvori knjigu
Knjiga = GetCOMObject ( Put do datoteke);
// Pozicioniranje na željeni list
List = Knjiga. Radni listovi (1);

// Čitanje vrijednosti ćelije, obično je ovo petlja za prelazak preko ćelija
Vrijednost ćelije = List. Ćelije (broj reda, broj stupca). Vrijednost;

// Zatvori knjigu
Knjiga ... Primjena. Qui t ();

Za zaobići od svih popunjenih redaka Excel lista, možete koristiti sljedeće tehnike:

// -- OPCIJA 1 --
Broj redaka = list. Stanice (1, 1). Posebne ćelije (11). Red;
Za broj redaka = 1 Petlja po broju redaka
Vrijednost ćelije = List. Ćelije (broj reda, broj stupca). Vrijednost;
Kraj ciklusa;

// —— OPCIJA 2 ——
Broj reda = 0;
Dok je ciklus istine
Broj reda = Broj reda + 1;
Vrijednost ćelije = List. Ćelije (broj reda, broj stupca). Vrijednost;
Ako NIJE ValueFilled (CellValue) Onda
Prekid;
Završi ako;
Kraj ciklusa;

Umjesto da uzastopno prelazite sve retke lista, možete izbaciti sve podatke u niz i raditi s njim. Ovaj pristup bit će brži kada čitate velike količine podataka:

Ukupno stupaca = list. Stanice (1, 1). Posebne ćelije (11). Stupac;
Ukupno redaka = List. Stanice (1, 1). Posebne ćelije (11). Red;

Regija = List. Raspon (Sheet. Cells (1, 1), Sheet. Cells (TotalLines, TotalColumns));
Podaci = Regija. Vrijednost. Istovariti();

Tablica u nastavku prikazuje najpopularnija svojstva i metode za rad s Excelom kroz OLE:

Akcijski Kodirati Komentar
Rad s aplikacijom
Postavljanje vidljivosti prozora aplikacije Excel ... Vidljivo= Netočno;
Podešavanje načina prikaza upozorenja (prikaz / ne prikaz) Excel ... DisplayAlerts= Netočno;
Zatvaranje aplikacije Excel ... Prestati ();
Rad s knjigom
Stvaranje nove knjige Knjiga = Excel. Radne knjige. Dodati();
Otvaranje postojeće knjige Knjiga = Excel. Radne knjige. Otvori (Naziv datoteke);
Spremanje knjige Knjiga ... Spremi kao (ime datoteke);
Zatvaranje knjige Knjiga ... Zatvori (0);
Rad s listom
Postavljanje trenutnog lista List = Knjiga. Radni listovi (broj lista);
Postavljanje imena List ... Ime = Ime;
Postavljanje zaštite List ... Zaštititi();
Uklanjanje zaštite List ... Poništi zaštitu();
Postavljanje orijentacije stranice List ... Podešavanje stranice. Orijentacija = 2; 1 - portret, 2 - pejzaž
Postavljanje lijeve granice List ... Podešavanje stranice. Lijeva margina = Excel. CentimetersToPoints (Centimetri);
Postavljanje gornje granice List ... Podešavanje stranice. Gornja margina = Excel. CentimetersToPoints (Centimetri);
Postavljanje desne granice List ... Podešavanje stranice. Desna margina = Excel. CentimetersToPoints (Centimetri);
Postavljanje donje granice List ... Podešavanje stranice. BottomMargin = Excel. CentimetersToPoints (Centimetri);
Rad s recima, stupcima, ćelijama
Postavljanje širine stupca List ... Kolumne. Širina stupca = širina;
Brisanje linije List ... Redovi. Izbrisati();
Brisanje stupca List ... Kolumne. Izbriši ();
Brisanje ćelije List ... Ćelije (broj reda, broj stupca). Izbrisati();
Postavljanje vrijednosti List ... Ćelije (broj reda, broj stupca). Vrijednost = Vrijednost;
Spajanje stanica List ... Raspon (Sheet. Cells (RowNumber, ColumnNumber), Sheet.Cells (RowNumber1, ColumnNumber1)). Sjediniti();
Instaliranje fonta List ... Ćelije (broj reda, broj stupca). Font. Naziv = Naziv fonta;
Postavljanje veličine fonta List ... Ćelije (broj reda, broj stupca). Font. Veličina = Veličina fonta;
Postavljanje podebljanog fonta List ... Ćelije (broj reda, broj stupca). Font. Podebljano = 1 ; 1 - podebljano, 0 - normalno
Postavljanje kurzivom List ... Ćelije (broj reda, broj stupca). Font. Kurziv = 1 ; 1 - kurziv, 0 - normalno
Postavljanje podcrtanog fonta List ... Ćelije (broj reda, broj stupca). Font. Naglasiti = 2 ; 2 - podvučeno, 1 - ne

Da biste saznali koje svojstvo treba promijeniti ili koju metodu pozvati, možete koristiti makronaredbe Excel. Ako snimite makronaredbu s potrebnim radnjama, tada možete pogledati VBA programski kod snimljene makronaredbe.

Korištenje COMSafeArray

Prilikom iskrcavanja velikih količina podataka iz 1C u Excel, objekt možete koristiti za ubrzanje COMSafeArray... Prema definiciji sintaksnog pomoćnika, COMSafeArray je omotač objekta preko višedimenzionalnog niza SafeArray od COM. Omogućuje stvaranje i korištenje SafeArraya za razmjenu podataka između COM objekata. Jednostavno rečeno, to je niz vrijednosti koje se mogu koristiti za razmjenu između aplikacija koje koriste OLE tehnologiju.

// Kreiraj COMSafeArray
ArrayCom = Novi COMSafeArray ("VT_Variant", TotalColumns, TotalStrings);
// Popuni COMSafeArray
Za Linije = 0 prema ukupnom broju linija - 1 ciklus
Za Broj = 0 ukupno stupaca - 1 ciklus
ArrayCom ... SetValue (broj, stranica, vrijednost);
Kraj ciklusa;
Kraj ciklusa;
// Dodijelite vrijednosti iz COMSafeArray području radnog lista Excel
List ... Raspon (Sheet. Cells (1, 1), Sheet. Cells (TotalRows, TotalColumns)). Vrijednost = ArrayCom;

Zamjena putem ADO-a

Excel datoteka koja se razmjenjuje putem ADO je baza podataka kojoj se može pristupiti pomoću SQL upita. Nije potrebno instalirati MS Excel, ali mora biti prisutan ODBC drajver koji će se koristiti za pristup. ODBC upravljački program koji će se koristiti određuje se navođenjem niza povezivanja na datoteku. Obično je potrebni upravljački program već instaliran na računalu.

Razmjena putem ADO-a osjetno je brža od razmjene putem OLE-a, ali pri istovaru ne postoji način da se koristi Excel funkcionalnost za oblikovanje ćelija, označavanje stranica, postavljanje formula itd.

Primjer istovar:


Veza = Novi COMObjekt ("ADODB.Connection");


Spoj ... ConnectionString = "

| Izvor podataka = " + Naziv datoteke + “;
;
Spoj ... Otvorena (); // Otvorena veza

// Kreirajte COM objekt za naredbu
Naredba = Novi COMObjekt ("ADODB.Command");
Naredba

// Dodijelite tekst naredbe za izradu tablice
Naredba ... Tekst naredbe = "STVORI TABLICU [Sheet1] (kolona1 znak (255), stupac2 datum, stupac3 int, stupac4 float)";
Naredba ... Izvrši (); // Izvrši naredbu

// Dodijelite tekst naredbe za dodavanje reda tablice
Naredba ... Tekst naredbe = "INSERT INTO [Sheet1] (Stupac1, Stupac2, Stupac3, Column4) vrijednosti (‘ ‘’ ‘’,‘ 8/11/2017 ’”, ‘12345’, ‘12345.6789’)”;
Command.Execute (); // Izvrši naredbu

// Izbrišite naredbu i zatvorite vezu
Naredba = Nedefinirano;
Spoj ... Zatvoriti();
Veza = Nedefinirano;

Da biste stvorili novi list i oblikovali njegovu strukturu, možete koristiti objekte ADOX.Katalog i ADOX.Stol... U ovom slučaju, kod će imati oblik:

// Napravite COM objekt za rad s knjigom
Knjiga = Novi COMObject ("ADOX.Katalog");
Knjiga ... ActiveConnection = Veza;

// Kreirajte COM objekt za rad sa strukturom podataka na listu
Tablica = Novi COMObjekt ("ADOX.Table");
stol ... Naziv = "List1";
stol ... Kolumne. Dodati ("Stupac1", 202);
stol ... Kolumne. Dodati ("Stupac2", 7);
stol ... Kolumne. Dodati ("Stupac3", 5);
stol ... Kolumne. Dodati ("Stupac4", 5);

// Izradite list s opisanom strukturom u knjizi
Knjiga ... Tablice. Dodati (Tablica);
Tablica = Nedefinirano;
Knjiga = Nedefinirano;

U gornjem primjeru, u metodi

stol ... Kolumne. Dodati("Kolona1", 202);

drugi parametar specificira tip stupca. Parametar nije obavezan, evo nekih vrijednosti tipa stupca:

  • 5 - adDouble;
  • 6 - adValuta;
  • 7 - datum dodavanja;
  • 11 - adBoolean;
  • 202 - adVarWChar;
  • 203 - adLongVarWChar.

Primjer čitanje:

// Kreirajte COM objekt za vezu
Veza = Novi COMObjekt ("ADODB.Connection");

// Postavljanje niza veze
Spoj ... ConnectionString = "
| Dobavljač = Microsoft.ACE.OLEDB.12.0;
| Izvor podataka = " + Naziv datoteke + “;
| Proširena svojstva = "" Excel 12.0 XML; HDR = DA ""; ";
Spoj ... Otvorena (); // Otvorena veza

// Kreirajte COM objekt da biste dobili odabir
Odabir = Novi COMObject ("ADODB.Recordset");
Tekst zahtjeva = "ODABIR * IZ [Sheet1 $]";

// Izvrši zahtjev
Uzorak ... Otvori (Tekst upita, Veza);

// Zaobići rezultat odabira
Još NE Uzorkovanje. EOF () Petlja
Vrijednost stupca 1 = Uzorak. Polja. Stavka ("Stupac1"). Vrijednost ; // Referenca prema nazivu stupca
Stupac2-Vrijednost = Uzorak. Polja. Stavka (0). Vrijednost; // Pozivajući se na indeks stupca
Uzorak ... PremjestiSljedeći ();
Kraj ciklusa;

Uzorak ... Zatvoriti ();
Uzorak = Nedefinirano;
Spoj ... Zatvoriti ();
Veza = Nedefinirano;

U nizu veze parametar HDR određuje kako će se percipirati prvi redak na listu. Opcije su:

  • DA - prvi redak se tumači kao nazivi stupaca. Vrijednostima se može pristupiti po imenu i indeksu stupca.
  • NE - prvi redak se tretira kao podatak. Vrijednosti se može pristupiti samo indeksom stupca.

U navedenim primjerima raspravljalo se o samo nekoliko ADO objekata. ADO objektni model sastoji se od sljedećih objekata:

  • Povezivanje;
  • Naredba;
  • Recordset;
  • Snimiti;
  • Polja;
  • Stream;
  • Pogreške;
  • Parametri;
  • Svojstva.

Prijenos bez programiranja

Za spremanje podataka iz 1C u Excel nije uvijek preporučljivo pribjeći programiranju. Ako u Enterprise modu korisnik može prikazati podatke potrebne za upload, tada ih je moguće spremiti u Excel bez programiranja.

Da biste spremili dokument proračunske tablice (na primjer, rezultat izvješća), možete pozvati naredbu Uštedjeti ili Spremi kao… glavni izbornik.

U prozoru koji se otvori trebate odabrati imenik, naziv i format spremljene datoteke.

Za spremanje podataka s dinamičkih popisa (na primjer, popisa stavki), morate:

  1. Iznesite podatke u dokument proračunske tablice pomoću naredbe Više ⇒ Prikaži popis...;
  2. Spremite dokument proračunske tablice u potrebnom formatu.

  • Prilikom obavljanja razmjene informacija između ugovornih strana (cjenici, izjave o usklađivanju i sl.);
  • Kako bi se olakšao rad operatera u slučajevima kada se glavno računovodstvo provodi u 1C, a dio se obavlja u Excel proračunske tablice;
  • Tijekom početnog popunjavanja baze podataka.

Za izvođenje ove operacije možete koristiti i standardnu ​​funkcionalnost dostupnu uz pretplatu na podršku informacijske tehnologije (ITS) i samopisnu obradu, implementiranu kroz različite mogućnosti povezivanja. U našem članku pokušat ćemo u potpunosti analizirati sve moguće slučajeve i odgovoriti na većinu postojećih pitanja o učitavanju podataka iz Excela u 1C.

Univerzalni mehanizam

Na ITS diskovima, kao i na portalu 1C, odlaskom na izbornik "Tehnološka podrška" -> "Univerzalna izvješća i obrada", odgovarajuća obrada nalazi se u mapi "Učitavanje podataka iz dokumenta proračunske tablice".

Kada se pokrene, otvara se obrazac (slika 1):

Kao što možete vidjeti iz obrasca, omogućuje vam prijenos informacija na sljedeće konfiguracijske objekte:

  1. Imenik;
  2. Tablični dio dokument ili referentna knjiga;
  3. Registar informacija.

Polje za odabir objekta mijenja se ovisno o položaju prekidača.

Obrazac za tabličnu obradu popunjava se kada otvorite preuzetu datoteku.

Tipična obrada podržava istovar iz:

  • Razvili su ga stručnjaci za 1C, format datotekemxl;
  • Lisztxls spremljen u formatuExcel 97-2003;
  • Tekstualna datotekatxt;
  • Tablicedbf.

Excel datoteke velike veličine mogu se dugo učitavati, pa ako se pretpostavi da se učitavanje podataka može odvijati u nekoliko faza ili sigurno znate da ćete morati otvoriti postojeću datoteku nekoliko puta kako biste uštedjeli živce i vrijeme, bolje je spremiti podatke iz njega u mxl formatu. To se može učiniti izravno iz obrasca za obradu.

Važno je razumjeti da ako u izvorna datoteka postoje grupiranja redaka, podnaslovi i bilješke, morat ćete ih ukloniti ručno.

Sada idemo na karticu "Postavke" (slika 2):

sl. 2

Vrlo često Excel tablice sadrže zaglavlje sa svim vrstama pojedinosti i podataka (naziv obrasca za ispis, podaci o drugoj strani, datum i broj dolaznog dokumenta, nazivi stupaca i tako dalje), kako bi se isključila njihova obrada od strane programa na obrazac, u atributu "Prvi redak dokumenta proračunske tablice" morate navesti prvi redak s prijenosnim informacijama

Nakon odabira objekta metapodataka na koji će se bilježiti podaci, tabelarni dio kartice "Postavke" automatski će se popuniti nazivima atributa, opisom njihovih vrsta i drugim važna informacija... Poseban odjeljak trebao bi biti posvećen razmatranju stupaca tabelarnog dijela kartice "Postavke".

Stupci "Postavke"

Oznaka za kvačicu - označavanjem ili poništavanjem potvrdnog okvira u retku određuje se hoće li se popuniti odgovarajući atribut.

Prikaz atributa - ovdje je napisan sinonim (ime) atributa metapodataka, kako je navedeno u konfiguratoru.

Polje za pretraživanje - ako označite ovaj okvir, obrada će tražiti elemente prema odgovarajućem atributu i, ako je uspješna, promijeniti postojeće podatke, dodatna funkcija ovog područja - zaštita od duplikata.

Opis tipova - prikazuje vrstu podataka koju ima određeni atribut metapodataka.

Način preuzimanja - nudi tri opcije za odabir (slika 3):

Slika 3

  • Pretraživanje - izvršit će se traženje odgovarajućeg elementa; ako ga nema, može se stvoriti novi;
  • Postavi - određena vrijednost se postavlja na podređen način;
  • Izračunaj - u ovom slučaju, rezultat izračuna izraza navedenog u stupcu "Uvjet veze / Izraz za vrijednost" bit će postavljen u polje elementa koji se kreira.

U potonjem slučaju, aktiviranjem polja Expression otvorit će se obrazac (slika 4).

Slika 4

Broj stupca je polje koje označava iz kojeg stupca Excel tablice treba uzeti podatke za popunjavanje.

Zadana vrijednost - vrlo često dolazi do situacije kada učitana datoteka ne sadrži sve podatke potrebne za pisanje elementa, u tom slučaju će se ispuniti podaci sadržani u ovom polju.

Uvjet veze / Izraz za vrijednost - već smo djelomično dotaknuli ovo polje kada smo razmatrali izračunata polja; osim toga, u njemu možete odrediti uvjet prema kojem će se izvorni podaci sinkronizirati.

To su, u principu, sve informacije koje su dostupne na kartici "Postavke".

Kako ne bi gubili puno vremena prilikom svakog učitavanja, pisanja korespondencija i izraza, programeri su omogućili mogućnost spremanja opcije postavke u datoteku s ekstenzijom mxlz.

Ispravnost prenesenih podataka možete provjeriti klikom na gumb "Kontrola popunjavanja" (slika 1). Nakon toga možete započeti proces preuzimanja. Oko uspješna implementacija postupcima ili neuobičajenim situacijama bit ćete posebno obaviješteni.

Postoji još jedan mehanizam za učitavanje podataka iz Excela u infobaze "Upravljanje i trgovina". Manje je svestran od gornje metode, no ne zahtijeva ITS pretplatu i uključen je u standardnu ​​isporuku.

Ovu obradu možete pronaći na kartici "Kupnje", u izborniku "Usluga", zove se "Učitavanje cijena dobavljača iz datoteka" (slika 5)

Slika 5

Obrazac za obradu sadrži:

  1. Polje za odabir datuma, koje će naznačiti za koje vrijeme je ova cijena relevantna;
  2. Polje za odabir izvođača koji je poslao svoj cjenik;
  3. Gumb koji vam omogućuje odabir vrste cijena koje želite postaviti;
  4. Tablični dio koji se može ispuniti učitanim podacima.

Ovaj oblik se može vidjeti na slici 6

Slika 6

Objašnjenje na vrhu obrasca objašnjava kako koristiti prvu karticu na obrascu.

Nakon odabira druge ugovorne strane (ovisno o tome djeluje li kao dobavljač, komisionar ili prodavač), u tablici će biti dostupni dodatni stupci za svaku vrstu cijena.

Prilikom rada preko web sučelja, u nekim preglednicima može biti potrebno instalirati dodatak pregledniku (slika 7.). Moramo kliknuti gumb "Pokreni instalaciju" i ponovno pokrenuti našu vezu.

Slika 7

Nakon toga ćemo pomoću međuspremnika moći prenositi informacije s jedne tablice na drugu. Kada su stupci koji su nam potrebni ("Artikal", "Naziv", "Cijena") popunjeni, pritisnemo gumb "Dalje" i idemo na drugu stranicu (slika 8)

Slika 8

Program će automatski tražiti podudaranja unutar baze podataka i, ako ih ne pronađe, ponudit će opcije za rješavanje pogreške. Izgled tabelarni dio se može kontrolirati prekidačem. Osim toga, korisnik može samostalno uskladiti elemente učitane datoteke s onima u bazi podataka.

  • Registrirajte sve;
  • Registrirajte samo one koji su se promijenili u odnosu na one koji su već dostupni u bazi podataka.

U tekstualno polje možete dodati komentar koji će biti napisan u dokumentu (slika 9):

Slika 9

Nakon obrade:

  • U referentnoj knjizi "Nomenklatura dobavljača" stvorit će se odgovarajuća stavka (ako nije bila prisutna);
  • Stavka kataloga "Nomenklatura" će biti usklađena s njim;
  • Izradit će se i objaviti dokument "Postavljanje cijena artikala" s naznakom: dobavljača, vrste cijene i datuma fiksiranja podataka.

Obrada "Učitavanje robe iz vanjskih datoteka" radi na isti način.

DIY mogućnosti rukovanja prijenosom

Glavni problem u povlačenju podataka iz Excel datoteke je taj što 1C nema ugrađeni nedvosmislen mehanizam za otvaranje. Postoji nekoliko opcija za povezivanje Excela s 1C:

  • Preko Microsoft ADODB - dosta brz način, koji je u pravilu primjenjiv i za datotečne i klijent-poslužiteljske verzije pohrane baze podataka;
  • Kroz korištenje Microsoft Office- metoda koja ponekad ne uspije pri radu sa SQL bazama podataka, u pravilu radi nešto sporije od prve metode, štoviše, zahtijeva instaliran Office;
  • Putem Libre Officea - za razliku od prethodne metode, besplatna je, osim xls i xlsx formata, podržava i vlastite tablice, ali zahtijeva instalirani paket LibreOffice i određenu pripremu učitane datoteke (prvi red tablice mora sadržavati nazivi stupaca).

Razmotrimo detaljnije različiti putevi i opcije.

Putem ADODB.Connection

Općenito ADO je kratica za ActiveX Data Object i služi za programski pristup na razne baze podataka. Najveći problem pri stvaranju veze s datotekom treće strane (uključujući Excel) je ispravno sastavljanje niza veze.

Za Excel datoteke ovdje su moguće tri opcije:

Parametri niza veze:

  • Provider - ovdje je definiran korišteni upravljački program;
  • Izvor podataka - definira naziv datoteke koju ćemo otvoriti;
  • Proširena svojstva - ovdje možete odrediti: treba li vam red zaglavlja za tablicu (HDR = YES označava da će se podaci čitati iz prvog retka, HDR = NE - oni iz drugog), da li je datoteka otvorena samo za čitanje (Samo za čitanje) i neki drugi izborni parametri.

Nakon što smo kreirali povezni niz, možemo se spojiti na preuzetu datoteku (slika 13)

Slika 13

Sada možemo koristiti jednostavan zahtjev(slika 14) počnite dohvaćati informacije iz preuzete datoteke.

U ovom slučaju parametar "Sheet" određuje s kojim listom iz Excel knjige moramo raditi.

Skup zapisa pohranjenih na listu može se čitati pomoću objekta Recordset. U tom slučaju, prvi zapis lista može se dobiti s BOF parametrom (početak datoteke), a posljednji EOF (kraj datoteke).

Preko Excel aplikacije

Glavna razlika u odnosu na prethodnu metodu je u tome što osim drajvera za rad s bazama podataka, na računalu na kojem se uspostavlja veza mora biti instaliran Excel. Samo u tom slučaju možemo inicijalizirati aplikaciju da čita podatke iz tablice (slika 16).

Ovaj COM objekt Postoji nekoliko podređenih parametara, ali glavni za nas, u trenutnim uvjetima zadatka, je parametar WorkBooks (slika 17).

Nakon inicijalizacije knjige potrebno je odrediti list s kojeg će se čitati podaci (slika 18).

Nakon toga možete iterirati kroz retke i stupce tablice datoteke koja se otvara unutar petlji.

Nekoliko riječi o mogućim pogreškama

Lavovski udio pogrešaka pri povezivanju s datotekom nastaje zbog činjenice da je datoteka već zauzeta drugom aplikacijom. Dobro je ako na programskoj traci vidite da je Excel pokrenut na vašem računalu, ali ako ste ga vi ili drugi korisnik otvorili iz vanjske obrade, to možete vizualno utvrditi samo kroz "Task Manager", stoga ne zaboravite zatvoriti vezu prije završetka postupka prijenosa:

U slučaju rada kroz ADO (slika 19);

Slika 19

  • U slučaju rada s aplikacijom (slika 20).

Riža. dvadeset.

Najbolje je organizirati postupak povezivanja i prekida za rad s podacima unutar konstrukcije Attempt-Exception-EndTry, uzrokujući opis pogreške u iznimci. Iako to ponekad usporava rad, znatno olakšava utvrđivanje uzroka pogreške i, u konačnici, kako je popraviti.

Uvod.

Mnogi ljudi znaju da je Excel puno stariji od 1C. Po meni je ovo vrlo uspješan proizvod i nisam čuo zamjerke na njega. Excel je jednostavan i svestran. U stanju je izvoditi ne samo jednostavne aritmetičke operacije, već i složene izračune, crtanje grafikona itd. Znam primjere kada su organizacije, prije prelaska na 1C, neke svoje računovodstvo radile u Excelu. Mnogi ljudi još uvijek koriste dva programa paralelno. U ovom članku razmotrit ćemo načine razmjene podataka između 1C i Excela.

Tablice 1C i Excel.

Radi praktičnosti, mnogi korisnici spremaju 1C tablice ( tiskani obrasci) u Excel formatu (* .xls). Nakon toga se u rezultirajućoj datoteci vrše razna grupiranja, sortiranja, proračuni itd. To je zbog činjenice da tablice 1C nemaju tako veliku funkcionalnost kao u tablicama Excel. Ali u verziji 1C 8.0 postoje inovacije koje rad sa tablicama čine ugodnijim.

Na web stranici 1C (http://www.1c.ru/) nalazi se koristan program koji omogućuje otvaranje 1C tablica u Excelu i spremanje Excelovog lista kao 1C tablice. Ovo je korisno ako tablica 1C nije spremljena u Excel formatu, a 1C nije instaliran na računalu na kojem trebate otvoriti ovu tablicu. I neće se morati stalno sjećati da trebate spremiti tablicu 1C u formatu Excel.

Cijele informacije o programu možete pronaći ovdje.
Program možete preuzeti ovdje ( zip arhiva 682 739 bajtova).

Komentar: U Excelu je decimalni separator ",". Stoga, prije spremanja tablice 1C u formatu Excel, zamijenite drugi razdjelnik u njoj (na primjer ".") sa ",". Inače, Excel neće moći izvršiti izračune s tim brojevima ili se oni uopće neće prikazati kao brojevi. Na primjer, u tablici 1C "15.2" će se u Excelu prikazati kao "15. veljače".

Dobivanje podataka iz Excela.

Pristup iz 1C u Excel vrši se putem OLE. Na primjer kod
Pokušaj
Iznimka
Izvješće (DescriptionErrors () +
);
Povratak;
Kraj pokušaja;
omogućit će nam pristup pokrenutom varijable "Excel". Excel aplikacija... I tada već možete pristupiti knjizi (datoteci), listu i ćeliji s podacima. U nastavku su neki primjeri koda.

Otvaranje knjige (datoteke):
Knjiga = Excel. Radne knjige. Otvori (put do datoteke);
FilePath je puni put do datoteke u radnoj knjizi programa Excel.

Odabir lista knjige za rad:
ili
List = knjiga. Radni listovi (Naziv lista);
SheetNumber je broj lista u knjizi, SheetName je naziv lista u knjizi.

Dobivanje vrijednosti ćelije lista:
Vrijednost = List. Ćelije (broj reda, broj stupca). Vrijednost;

Važno: ne zaboravite dodati Excel kod u polje za izvođenje potrebnih radnji. Prestati (); , inače će proces pokretanja ostati nepotpun i zauzet će memoriju i procesor računala.

Izlaz podataka u Excel.

Za izlaz (prenos) podataka u Excel, morate otvoriti postojeću radnu knjigu ili stvoriti novu i odabrati radni list za izlaz podataka. Otvaranje postojeće knjige opisano je gore, ali da biste stvorili novu knjigu, trebate koristiti sljedeći kod:
Pokušaj
Excel = CreateObject ("Excel.Application");
Iznimka
Izvješće (DescriptionErrors () +
"Excel nije instaliran na ovom računalu!");
Povratak;
Kraj pokušaja;
Knjiga = Excel. Radne knjige. Dodati ();

Budući da kada izradite radnu knjigu u Excelu, automatski se stvaraju listovi (Alati-> Opcije-> Općenito-> Listovi u novoj radnoj knjizi), samo trebate odabrati list za rad:
List = knjiga. Radni listovi (broj lista);
ili dodajte novi list u knjigu, ako je potrebno:
List = knjiga. plahte. Dodati ();
Sljedeći korakće postaviti vrijednost ćelije:
List. Ćelije (broj reda, broj stupca). Vrijednost = Vrijednost;
RowNumber, ColumnNumber - broj retka i broj stupca na čijem se sjecištu nalazi ćelija.
I na kraju, trebate snimiti stvorenu knjigu:
Pokušaj
Knjiga . SaveAs (put do datoteke);
Iznimka
Izvješće (DescriptionErrors ()
+ "Datoteka nije spremljena!");
Povratak;
Kraj pokušaja;
FilePath je puni put do datoteke Excel radne knjige (uključujući naziv).
Važno: ne zaboravite da nazivi datoteka ne smiju sadržavati \ /: *? ">< |.

Često korištene metode za čitanje / postavljanje vrijednosti u Excelu.

Excel = CreateObject ("Excel.Application"); Dobivanje pristupa Excel aplikaciji.
Excel. Vidljivo = Vidljivost; 0 - Excel nije vidljiv, 1 - vidljiv.
Knjiga = Excel. Radne knjige. Dodati (); Izradite novu Excel radnu knjigu (datoteku).
Knjiga . Spremi kao (naziv datoteke); Spremi Excel radnu knjigu.
List = knjiga. Radni listovi. Dodati (); Dodavanje novog lista u knjigu.
Knjiga = Excel. Radne knjige. Otvori (Naziv datoteke); Otvaranje postojeće Excel radne knjige (datoteke).
List = knjiga. Radni listovi (broj lista); Postavljanje lista kao radnika s brojem Broj lista.
List. Naziv = Naziv lista; Dajte radnom listu ime SheetName
List. Podešavanje stranice. Zoom = Skala; Postavlja parametar stranice "Scale" (od 10 do 400).
List. Podešavanje stranice. Orijentacija = Orijentacija; Orijentacija: 1 - portret, 2 - pejzaž.
List. Podešavanje stranice. Lijeva margina = Excel. CentimetersToPoints (Centimetri); Postavljanje lijeve granice (u centimetrima).
List. Podešavanje stranice. Gornja margina = Excel. CentimetersToPoints (Centimetri); Postavljanje gornje granice (u centimetrima).
List. Podešavanje stranice. Desna margina = Excel. CentimetersToPoints (Centimetri); Postavljanje desne granice (u centimetrima).
List. Podešavanje stranice. BottomMargin = Excel. CentimetersToPoints (Centimetri); Postavljanje donje granice (u centimetrima).
List. Kolumne. Širina stupca = širina; Postavlja širinu stupca.
List. Ćelije (broj reda, broj stupca). Vrijednost = Vrijednost; Unos podataka u ćeliju.
List. Ćelije (broj reda, broj stupca). Font. Naziv = Naziv fonta; Postavljanje fonta u ćeliji.
List. Ćelije (broj reda, broj stupca). Font. Veličina = Veličina fonta; Postavlja veličinu fonta u ćeliji.
List. Ćelije (broj reda, broj stupca). Font. Bold = Bold; 1 je podebljano, 0 je normalno.
List. Ćelije (broj reda, broj stupca). Font. Kurziv = Kurziv; 1 je kurziv font, 0 je normalan.
List. Ćelije (broj reda, broj stupca). Font. Podcrtaj = Podcrtaj; 2 je podvučeno, 1 nije.
List. Ćelije (broj reda, broj stupca). NumberFormat = Format; Postavlja format podataka ćelije.
List. Ćelije (broj reda, broj stupca). Granice. Stil linije = Vrsta linije; Postavljanje granica ćelije. 1 - tanka čvrsta.