1s programiranje radi sa Excelom. Što je bolje - "1C" ili "Excel"? Imate li pitanja ili vam je potrebna pomoć konsultanta?

U 1C postoje 2 načina rada sa MS Excel datotekama, preko COM objekta i ugrađenih 1C alata pomoću objekta tabelarni dokument. Hajde da detaljnije ispitamo obje ove metode.

1. Rad preko COM-objekta.

Ova metoda zahtijeva instalaciju MS Excel-a, a ako radite sa fajlom na serveru, onda MS Excel mora biti instaliran na serveru, ako je na klijentu, onda je potreban i MS Excel na strani klijenta.

Primjer (na kraju članka možete pogledati u tekstualnom obliku):

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

Bilješka:

Ponekad je potrebno da radite sa postojećim šablonom. Zatim trebamo pohraniti ovaj predložak negdje tako da svi potrebni korisnici imaju pristup njemu. Međutim, postoji lakše rješenje, šablon spremamo kao binarni izgled.

2. Radite kroz tabelarni dokument 1C.

1C tabelarni dokument podržava MS Excel format za snimanje počevši od platforme 8, ali za otvaranje samo počevši od platforme 8.3.6. Štaviše, prilikom otvaranja, svi listovi se učitavaju u jedan tabelarni dokument. Od verzije 8.3.10 pri pokretanju različiti listovi učitane kao različite oblasti.

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

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

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

Nakon ovog malog dodatka, oznake listova će biti vidljive u MS Excel datoteci.

Čitanje MS Excel-a nije tako jednostavan zadatak, jer je metoda čitanja dostupna samo na serveru ili debelom klijentu. Da bismo to uradili, moramo prenijeti MS Excel datoteku na server.

&AtClient

CreateDocument() Procedura

Izuzetak

Kraj pokušaja;

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

List = Book.WorkSheets.Add(); //Dodaj list

Sheet.Name = "Primjer iz 1C"; //Podesite ime lista

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

Sheet.Cells(2,1).Vrijednost = 1;

Sheet.Cells(2,2).Value = 2;

Sheet.Cells(2,3).Formula = "=A2+B2";

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

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

Book.Close();

EndProcedure

&Na serveru

Funkcija GetLayoutServer().

Vrati FormAttributeToValue("Object").GetLayout("Upload Template"); //Ovako dobijamo raspored eksterna obrada;

EndFunctions

&AtClient

Procedura Rad()

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

Izuzetak

Prikaži("Neuspješan pokušaj povezivanja Excel komponente. Excel program nije instaliran na ovaj računar!");

Kraj pokušaja;

Layout = GetLayoutServer();

Layout.Write(TemporaryFileName);

Imate pitanje, treba li vam pomoć konsultanta?

Knjiga = Excel.WorkBooks.Open(TempFileName);

SheetTemplate = Book.WorkSheets(1);

SheetTemplate.Cells (6,1).Value = "Datum:";!}

SheetTemplate.Cells(6,2).Value = CurrentDate();

SheetTemplate.NumberFormat = "dd/mm/yy;@"; // Dajemo format datuma, ovaj format se dobija snimanjem makroa u MS Excel

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // Proširite kolonu tako da tačno odgovara datumu

Book.SaveAs(FileName);

Book.Close();

EndProcedure

&AtClient

EndProcedure

&AtClient

Procedura WriteSpreadsheetDocument()

SpreadsheetDocument = New SpreadsheetDocument();

SpreadsheetDocument.Area("R1C1").Text = "Primer unosa u MS Excel iz 1C";

SpreadDocument.Write("C:\1\Test2.xls",SpreadDocumentFileType.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()

EndProcedure

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

Adresa=PutToTempStorage(BinaryData,ThisForm.UniqueIdentifier) ​​;

SpreadsheetDocument = DownloadOnServer(Adresa);

SpreadsheetDocument.Show();

EndProcedure

&Na serveru

Funkcija LoadOnServer(Adresa)

TempFileName = GetTemporaryFileName("xlsx");

FileData = GetFromTempStorage(Adresa);

FileData.Write(TemporaryFileName);

SpreadsheetDocument = New SpreadsheetDocument();

Return SpreadsheetDocument;

1C aplikacija je dugo vremena postala najpopularniji program među računovođama, planerima, ekonomistima i menadžerima. Ima ne samo raznolik broj konfiguracija za razne vrste aktivnosti, ali i lokalizacija po računovodstvenim standardima u nekoliko zemalja svijeta. Sve više preduzeća prelazi na računovodstvo u ovom programu. Ali postupak ručnog prijenosa podataka iz drugih računovodstvenih programa u 1C prilično je dug i dosadan zadatak koji oduzima puno vremena. Ako je kompanija vodila evidenciju koristeći Excel, tada se proces prijenosa može značajno automatizirati i ubrzati.

Prijenos podataka iz Excela u 1C potreban je ne samo u početnom periodu rada s ovim programom. Ponekad postoji potreba za tim kada u toku aktivnosti treba da unesete neke liste pohranjene u tabelarnoj knjizi. Na primjer, ako želite prenijeti cjenovnike ili narudžbe iz online trgovine. U slučaju kada su liste male, mogu se unositi ručno, ali šta ako sadrže stotine stavki? Kako biste ubrzali postupak, možete pribjeći nekim dodatnim funkcijama.

Za automatsko preuzimanje pogodan za gotovo sve vrste dokumenata:

  • Nomenklaturna lista;
  • Spisak izvođača radova;
  • Lista cijena;
  • Spisak naloga;
  • Informacije o kupovini ili prodaji itd.

Odmah treba napomenuti da 1C nema ugrađene alate koji bi vam omogućili prijenos podataka iz Excela. Za ove svrhe morate povezati eksterni loader, koji je datoteka u formatu epf.

Priprema podataka

Trebat ćemo pripremiti podatke u samoj Excel tabeli.


Osim ovih univerzalnih radnji za pripremu podataka u Excel knjizi, morat ćete dokument uskladiti i sa zahtjevima specifičnog loadera koji ćemo koristiti, ali o tome ćemo nešto kasnije.

Povezivanje eksternog bootloadera

Povežite vanjski bootloader sa ekstenzijom epf 1C aplikacija je moguća, kako prije pripreme Excel datoteke, tako i nakon. Glavna stvar je da su do početka procesa preuzimanja obje ove pripremne tačke riješene.

Postoji nekoliko eksternih učitavača proračunskih tablica Excel za 1C, koje su kreirali različiti programeri. Razmotrit ćemo primjer koristeći alat za obradu informacija "Učitavanje podataka iz tabelarnog dokumenta" za verziju 1C 8.3.


Jedna od glavnih baza podataka sa kojima 1C radi je lista roba i usluga. Stoga, da bismo opisali proceduru učitavanja iz Excela, fokusirat ćemo se na primjer prijenosa ove određene vrste podataka.

  1. Vraćamo se na prozor za obradu. Pošto ćemo učitavati asortiman proizvoda, prekidač u parametru bi trebao biti u položaju "imenik". Međutim, tako je podešeno prema zadanim postavkama. Prebacite ga samo kada ćete prenijeti drugu vrstu podataka: tabelarni dio ili registar informacija. Dalje u polje "Pregled imenika" kliknite na dugme sa trotočkom. Otvara se padajuća lista. U njemu bismo trebali odabrati stavku "nomenklatura".
  2. Nakon toga, rukovalac automatski raspoređuje polja koja program koristi u ovoj vrsti direktorija. Odmah treba napomenuti da nije potrebno popuniti sva polja.
  3. Sada ponovo otvorite portabl Excel dokument. Ako se naziv njegovih stupaca razlikuje od imena polja 1C direktorija koja sadrže odgovarajuće, tada morate preimenovati ove stupce u Excelu tako da se imena potpuno podudaraju. Ako tablica sadrži stupce za koje u direktoriju nema analoga, onda ih treba izbrisati. U našem slučaju, ove kolone jesu "Količina" I "Cijena". Također treba dodati da redoslijed kolona u dokumentu mora striktno odgovarati onom prikazanom u obradi. Ako za neke kolone koje su prikazane u loaderu nemate podatke, onda ove kolone možete ostaviti prazne, ali se numeracija onih kolona u kojima postoje podaci moraju podudarati. Za praktičnost i brzinu uređivanja, možete koristiti specijalnu funkciju Excel za brzo pomicanje stupaca na mjesta.

    Nakon što su ove radnje izvršene, kliknite na ikonu "Sačuvaj", koji je predstavljen kao ikona diskete u gornjem lijevom uglu prozora. Zatim zatvorite datoteku klikom na standardno dugme za zatvaranje.

  4. Vraćamo se na prozor za obradu 1C. Kliknite na dugme "otvoreno", koji je prikazan kao žuti folder.
  5. Pokreće se prozor za otvaranje datoteke. Idemo u direktorij u kojem se nalazi Excel dokument koji nam je potreban. Zadani preklopnik prikaza datoteka postavljen na ekstenziju mxl. Da bismo prikazali fajl koji nam je potreban, potrebno ga je preurediti na poziciju "Excel list". Nakon toga odaberite preneseni dokument i kliknite na dugme "otvoreno".
  6. Sadržaj se zatim otvara u rukovaocu. Da biste provjerili ispravnost popunjavanja podataka, kliknite na dugme "Kontrola punjenja".
  7. Kao što vidite, alat za kontrolu punjenja nam govori da greške nisu pronađene.
  8. Sada idemo na karticu. "Podešavanje". IN "polje za pretragu" stavite kvačicu u red koji će biti jedinstven za sve stavke unesene u referentnu knjigu nomenklature. Najčešće se za to koriste polja. "Šifra dobavljača" ili "ime". To se mora učiniti kako se prilikom dodavanja novih pozicija na listu podaci ne bi duplirali.
  9. Nakon što su svi podaci uneseni i izvršena podešavanja, možete nastaviti s direktnim učitavanjem informacija u direktorij. Da biste to učinili, kliknite na natpis "Učitaj podatke".
  10. Proces preuzimanja je u toku. Nakon njegovog završetka, možete otići do referentne knjige nomenklature i provjeriti jesu li tamo dodati svi potrebni podaci.

Pratili smo proceduru dodavanja podataka u referentnu knjigu nomenklature u programu 1C 8.3. Za druge direktorije i dokumente, preuzimanje će se vršiti po istom principu, ali s nekim nijansama koje korisnik može sam shvatiti. Također treba napomenuti da se postupak može razlikovati za različite učitavače trećih strana, ali opći pristup ostaje isti za sve: prvo, rukovalac učitava informacije iz datoteke u prozor gdje se uređuju, a tek onda se dodaju direktno u 1C bazu podataka.

  • Prilikom obavljanja razmjene informacija između ugovornih strana (cjenovnici, akti usaglašavanja, itd.);
  • Olakšati rad operatera u slučajevima kada se glavno računovodstvo vodi u 1C, a dio se obavlja u Excel tabelama;
  • Prilikom početnog popunjavanja baze podataka.

Da biste izvršili ovu operaciju, možete koristiti i standardnu ​​funkcionalnost dostupnu uz pretplatu na podršku informatičke tehnologije (ITS) i samopisnu obradu implementiranu putem razne opcije veze. U našem članku pokušat ćemo što potpunije analizirati sve moguće slučajeve i odgovoriti na većinu postojećih pitanja o učitavanju podataka iz Excela u 1C.

Univerzalni pokret

Na ITS diskovima, kao i na portalu 1C, ulaskom u meni "Tehnološka podrška" -> "Univerzalni izvještaji i obrada", u folderu "Učitavanje podataka iz tabelarnog dokumenta" vrši se odgovarajuća obrada.

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

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

  1. Imenik;
  2. tabelarni dio dokument ili vodič;
  3. Registar informacija.

Ovisno o položaju prekidača, mijenja se polje za odabir objekta.

Tabelarni obrazac za obradu se popunjava kada otvorite učitani fajl.

Obrada tipa podržava prijenose sa:

  • Razvili su stručnjaci kompanije 1C, datoteke u formatumxl;
  • Listxls sačuvan u formatuExcel 97-2003;
  • tekstualnu datotekuporuka;
  • stolovidbf.

Učitavanje Excel datoteka velikog volumena može potrajati dugo, pa ako se pretpostavlja da se učitavanje podataka može odvijati u nekoliko faza ili ste sigurni da ćete morati otvoriti postojeću datoteku nekoliko puta, bolje je sačuvati informacije iz nje u mxl radi uštede živaca i formata vremena. To možete učiniti direktno iz obrasca za obradu.

Važno je razumjeti da ako izvorni fajl postoje grupisanja redova, podnaslovi i bilješke, morat ćete ih ukloniti ručno.

Sada pređimo na karticu "Postavke" (slika 2):

Fig.2

Vrlo često, Excel tabele sadrže zaglavlje sa svim vrstama detalja i podataka (naziv štampanog obrasca, detalji druge strane, datum i broj pristiglog dokumenta, nazivi kolona i sl.), kako bi se isključila njihova obrada od strane program na obrascu, u atributu "Prvi red dokumenta tabele" morate navesti prvi red sa prenetim informacijama

Nakon odabira objekta metapodataka u koji će biti upisane informacije, tabelarni dio kartice „Postavke“ će se automatski popuniti nazivima atributa, opisima njihovih tipova i drugim važna informacija. Treba se posvetiti razmatranju kolona tabelarnog dijela kartice "Postavke". poseban odjeljak.

Kolone postavki

Oznaka - označavanjem ili poništavanjem kvadratića u retku određuje se da li će se odgovarajući atribut popuniti.

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

Polje za pretragu - ako označite ovo polje, obrada će tražiti elemente prema odgovarajućem atributu i, ako je uspješna, mijenjati postojeće podatke, dodatna funkcija ovo polje - zaštita od pojave duplikata.

Opis tipova - prikazuje tip podataka koji ima jedan ili drugi atribut metapodataka.

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

Fig.3

  • Pretraga - tražiće se odgovarajući element, u slučaju njegovog odsustva, može se kreirati novi;
  • Set - određena vrijednost se postavlja na podređen način;
  • Izračunaj – u ovom slučaju, rezultat izračunavanja izraza navedenog u koloni „Uslov veze/Izraz za vrijednost“ biće postavljen u polje elementa koji se kreira.

U drugom slučaju, aktiviranjem polja Expression otvoriće se obrazac (Sl.4).

Fig.4

Broj kolone - polje koje se koristi za označavanje iz koje kolone Excel tabele treba da preuzmete podatke za popunjavanje.

Podrazumevana vrijednost – vrlo često dolazi do situacije kada učitana datoteka ne sadrži sve podatke potrebne za snimanje elementa, u tom slučaju će se podaci sadržani u ovom polju popuniti za popunjavanje.

Uslov veze / Izraz za vrijednost - ovo polje smo već djelomično dotakli kada smo razmatrali izračunata polja, osim toga, možete odrediti uvjet u skladu s kojim će se izvorni podaci sinkronizirati.

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

Kako ne bi svaki put gubili puno vremena za učitavanje, propisivanje korespondencija i izraza, programeri su omogućili mogućnost spremanja opcije postavki u datoteku sa ekstenzijom mxlz.

Ispravnost prenesenih podataka možete provjeriti klikom na dugme "Kontrola popunjavanja" (slika 1). Nakon toga možete započeti proces preuzimanja. O uspješno završenom postupku ili nestandardnim situacijama bit ćete posebno obaviješteni.

Za prijenos podataka iz Excela u informacione baze"Upravljanje i trgovina" postoji još jedan mehanizam. Manje je univerzalan od gornje metode, međutim, ne zahtijeva ITS pretplatu i uključen je u standardnu ​​isporuku.

Ova obrada se može naći na kartici "Kupovine", u meniju "Usluga", zove se "Učitavanje cijena dobavljača iz datoteka" (slika 5)

Sl.5

Obrazac za obradu sadrži:

  1. Polje za odabir datuma koje će pokazati za koje vrijeme je ova cijena relevantna;
  2. Polje za izbor druge ugovorne strane koja je poslala svoj cjenovnik;
  3. Dugme koje vam omogućava da odaberete vrstu cijena koje želite postaviti;
  4. Tabelarni dio koji se može popuniti prenesenim podacima.

Ovaj oblik se može vidjeti na sl.6

Fig.6

Legenda na vrhu obrasca objašnjava kako koristiti prvu karticu obrasca.

Nakon odabira druge ugovorne strane (ovisno o tome da li djeluje kao dobavljač, komisionar ili prodavač), u tabeli će biti dostupne dodatne kolone za svaku vrstu cijene.

Kada radite preko web interfejsa, neki pretraživači mogu zahtevati instalaciju dodatka za pretraživač (slika 7). Moramo kliknuti na dugme "Pokreni instalaciju" i ponovo pokrenuti našu vezu.

Fig.7

Nakon toga, koristeći međuspremnik, moći ćemo da prenosimo informacije iz jedne tabele u drugu. Kada su kolone koje su nam potrebne (“Artikal”, “Naziv”, “Cijena”) popunjene, pritisnemo dugme “Dalje” i idemo na drugu stranicu (Sl. 8)

Fig.8

Program će automatski tražiti podudaranja unutar baze podataka i, ako ih nema, ponudit će opcije za rješavanje greške. Izgled tabelarni dio se može kontrolisati prekidačem. Osim toga, korisnik može samostalno uporediti elemente prenesene datoteke sa onima u bazi podataka.

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

U tekstualno polje možete uneti komentar koji će biti zabeležen u dokumentu (slika 9):

Fig.9

Nakon obrade:

  • Odgovarajući element će biti kreiran u direktorijumu "Nomenklatura dobavljača" (ako ga nije bilo);
  • Biće uparen sa elementom referentne knjige "Nomenklatura";
  • Kreiraće se i knjižiti dokument "Određivanje cijena artikala" sa naznakom: dobavljača, vrste cijene i datuma fiksiranja podataka.

Obrada "Učitavanje robe iz vanjskih datoteka" funkcionira na sličan način.

DIY opcije obrade prijenosa

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

  • Preko Microsoft ADODB - Dosta brz način, koji je po pravilu primjenjiv i za fajl i za verzija klijent-server baza za skladištenje;
  • Kroz upotrebu Microsoft office- metoda koja ponekad ne uspije pri radu sa SQL bazama podataka, po pravilu radi nešto sporije od prve metode, osim toga, potreban je Office;
  • Preko Libre Officea - za razliku od prethodne metode, besplatna je, osim xls i xlsx formata, podržava i vlastite tabele, ali zahtijeva instalirani paket LibreOffice i neka priprema učitanog fajla (prvi red tabele treba da sadrži nazive kolona).

Pogledajmo izbliza razne načine i opcije.

Preko ADODB.Connection

Generalno, ADO je skraćenica od ActiveX Data Object i koristi se za programski pristup različitim bazama podataka. Najveći problem pri kreiranju bilo koje veze s datotekom treće strane (uključujući Excel) je ispravno sastavljanje niza veze.

Postoje tri opcije za Excel fajlove:

Opcije niza veze:

  • Provajder - ovdje se određuje upravljački program koji se koristi;
  • Izvor podataka - definiše ime datoteke koju ćemo otvoriti;
  • Proširena svojstva - ovdje možete odrediti da li je za tabelu potreban red zaglavlja (HDR = YES označava da će se podaci čitati iz prvog reda, HDR = NE - iz drugog), da li se datoteka otvara samo za čitanje ( ReadOnly) i neke druge dodatne opcije.

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

Fig.13

Sada možemo koristiti jednostavan upit (slika 14) da započnemo dohvaćanje informacija iz učitane datoteke.

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

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

Preko Excel aplikacije

Glavna razlika u odnosu na prethodnu metodu je u tome što pored drajvera baze podataka, Excel mora biti instaliran na računaru na kojem se uspostavlja veza. Samo u ovom slučaju možemo inicijalizirati aplikaciju za čitanje podataka iz tabele (slika 16).

Ovaj COM objekat ima nekoliko podređenih parametara, ali je glavni za nas, pod trenutnim uslovima zadatka, parametar WorkBooks (slika 17).

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

Nakon toga, možete iterirati unutar ciklusa redova i kolona tabele datoteke koja se otvara.

Nekoliko riječi o mogućim greškama

Lavovski udio grešaka pri povezivanju s datotekom nastaje zbog činjenice da je datoteka već u upotrebi od strane druge aplikacije. Dobro je ako na traci zadataka vidite da je Excel pokrenut na računaru, ali ako ste ga vi ili drugi korisnik otvorili iz eksterne obrade, to se može samo vizuelno utvrditi kroz "Task Manager", tako da ne zaboravite da zatvorite vezu prije završetka postupka prijenosa:

U slučaju rada kroz ADO (Sl.19);

Fig.19

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

Rice. 20.

Veza i procedura za završetak rada s podacima najbolje su organizirani unutar konstrukcije Pokušaj-izuzetak-Kraj pokušaja, što uzrokuje opis greške u izuzetnoj situaciji. Iako to ponekad usporava rad, uvelike pojednostavljuje utvrđivanje uzroka greške i, u konačnici, načine za njeno otklanjanje.

Uvod.

Mnogi ljudi znaju da je Excel mnogo stariji od 1C. Po mom mišljenju, ovo je vrlo uspješan proizvod i nisam čuo nikakve zamjerke na njega. Excel je jednostavan i svestran. U stanju je da izvodi ne samo jednostavne aritmetičke operacije, već i složena izračunavanja, crtanje grafikona itd. Znam primjere kada su organizacije prije prelaska na 1C držale dio računovodstva u Excelu. Mnogi i sada paralelno koriste dva programa. U ovom članku ćemo razmotriti načine za razmjenu podataka između 1C i Excela.

Tabele 1C i Excel.

Radi praktičnosti, mnogi korisnici spremaju 1C tablice ( štamparske forme) u Excel (*.xls) formatu. Nakon toga se u rezultujućoj datoteci vrše razna grupisanja, sortiranja, proračuni itd. To je zbog činjenice da u 1C tablicama nema tako velike funkcionalnosti kao u Excel tablicama. Ali u verziji 1C 8.0 postoje inovacije koje rad sa tablicama čine ugodnijim.

1C web stranica (http://www.1c.ru/) ima koristan program koji vam omogućava da otvorite 1C tablice u Excelu i spremite Excel list kao 1C tablicu. Ovo je korisno ako tabela 1C nije sačuvana u Excel formatu, a 1C nije instaliran na računaru na kojem treba da otvorite ovu tabelu. Da, i stalno zapamtite da trebate spremiti tablicu 1C u Excel formatu, neće biti potrebe.

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

komentar: U Excelu, decimalni separator je ",". Stoga, prije spremanja 1C tablice u Excel formatu, zamijenite drugi separator u njoj (na primjer, ".") sa ",". U suprotnom, Excel neće moći izvršiti proračune s ovim brojevima ili se oni uopće neće prikazati kao brojevi. Na primjer, u tabeli 1C "15.2" će biti prikazano u Excelu kao "15. februar".

Preuzimanje podataka iz Excel-a.

Pristup iz 1C u Excel se vrši preko OLE. Na primjer, kod
Pokušaj
Izuzetak
Obavijesti (opis greške() +
);
Povratak;
Kraj pokušaja;
će nam omogućiti da preko varijable "Excel" pristupimo pokrenutom Excel aplikacija. I tada već možete pristupiti knjizi (datoteci), listu i ćeliji sa podacima. Ispod su primjeri koda.

Otvaranje knjige (fajla):
Knjiga = Excel. radne sveske. Otvori (putanja do datoteke);
Put do fajla - puni put u Excel datoteku radne knjige.

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

Dobivanje vrijednosti ćelije lista:
Vrijednost = List. Ćelije (LineNumber, ColumnNumber). vrijednost;

Bitan: ne zaboravite dodati Excel kod u polje za obavljanje potrebnih radnji. Quit(); , inače će pokrenuti proces ostati nepotpun i zauzet će memoriju i procesor računara.

Izlaz podataka u Excel.

Da biste objavili (uploadali) podatke u Excel, morate ili otvoriti postojeću radnu knjigu ili kreirati novu i odabrati radni list za izlaz podataka. Otvaranje postojeće knjige opisano je gore, ali da biste kreirali novu knjigu, morate koristiti sljedeći kod:
Pokušaj
Excel = CreateObject("Excel.Application" );
Izuzetak
Obavijesti (opis greške() +
"Excel nije instaliran na ovom računaru!");
Povratak;
Kraj pokušaja;
Knjiga = Excel. radne sveske. dodati();

Budući da se prilikom kreiranja radne knjige u Excelu automatski kreiraju listovi (Alati->Opcije->Općenito->Listovi u novoj radnoj knjizi), potrebno je samo odabrati list za rad:
List = knjiga. Radni listovi(Broj lista);
ili dodajte novi list u knjigu, ako je potrebno:
List = knjiga. Listovi. dodati();
Sljedeći korak je postavljanje vrijednosti ćelije:
List. Ćelije (LineNumber, ColumnNumber). vrijednost = vrijednost;
RowNumber, ColumnNumber - broj reda i kolone na čijem se presjeku ćelija nalazi.
I na kraju, potrebno je da snimite kreiranu knjigu:
Pokušaj
Book . Sačuvaj kao (putanja do datoteke);
Izuzetak
Obavijesti (opis greške()
+ "Datoteka nije sačuvana!");
Povratak;
Kraj pokušaja;
PathToFile - puna putanja do datoteke Excel radne knjige (uključujući ime).
Bitan: zapamtite 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 sveske. dodati(); Kreiranje nove radne sveske (datoteke) Excel.
Book . Sačuvaj kao (ime datoteke); Čuvanje Excel radne knjige.
List = knjiga. Radni listovi. dodati(); Dodavanje novog lista u knjigu.
Knjiga = Excel. radne sveske. Otvori (ime datoteke); Otvaranje postojeće radne knjige (datoteke) Excel.
List = knjiga. Radni listovi(Broj lista); Postavljanje lista kao radnog lista sa brojemSheetNumber.
List. Ime = Ime lista; Imenovanje radnog listaSheetName
List. Postavljanje stranice . Zoom = Skala; Određuje opciju Scale page (od 10 do 400).
List. Postavljanje stranice . Orijentacija = Orijentacija; Orijentacija: 1 - portret, 2 - pejzaž.
List. Postavljanje stranice . Lijeva margina = Excel . CentimetersToPoints (Centimetri); Postavlja lijevu granicu (u centimetrima).
List. Postavljanje stranice . TopMargin = Excel . CentimetersToPoints (Centimetri); Određuje gornju granicu (u centimetrima).
List. Postavljanje stranice . Desna margina = Excel. CentimetersToPoints (Centimetri); Određuje desnu ivicu (u centimetrima).
List. Postavljanje stranice . BottomMargin = Excel . CentimetersToPoints (Centimetri); Postavlja donju granicu (u centimetrima).
List. Kolone (Broj kolone) . ColumnWidth = Širina; Postavite širinu kolone.
List. Ćelije (LineNumber, ColumnNumber) . vrijednost = vrijednost; Unos podataka u ćeliju.
List. Ćelije (LineNumber, ColumnNumber) . font. Ime = Ime fonta ; Postavljanje fonta u ćeliju.
List. Ćelije (LineNumber, ColumnNumber) . font. Veličina = Veličina fonta; Postavite veličinu fonta u ćeliju.
List. Ćelije (LineNumber, ColumnNumber) . font. Bold = Bold ; 1 - podebljano, 0 - normalno.
List. Ćelije (LineNumber, ColumnNumber) . font. Kurziv = Kurziv ; 1 - kosi font, 0 - normalan.
List. Ćelije (LineNumber, ColumnNumber) . font. Podvučeno = Podvučeno ; 2 - podvučeno, 1 - ne.
List. Ćelije (LineNumber, ColumnNumber) . NumberFormat = Format ; Postavite format podataka u ćeliji.
List. Ćelije (LineNumber, ColumnNumber) . Granice. Stil linije = Vrsta linije; Postavite granice ćelije. 1 - tanka čvrsta.

Ova metoda je jednostavna. Njegova suština je da objekat SpreadsheetDocument ima metode:

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

Pažnja!

Metoda Write() dostupna je i na klijentu i na serveru. Metoda Read() dostupna je samo na strani servera. Treba zapamtiti ovo
prilikom planiranja interakcije klijent-server.

Razmotrite primjer spremanja dokumenta proračunske tablice u datoteku. Potrebno je kreirati i popuniti objekat TableDocument na bilo koji način, i istovar fajl se radi sa samo jednom linijom:

TabDoc . Write(Putanja datoteke, SpreadsheetDocumentFileType.XLSX);

Evo TabDoc- generisana tabela, Put do datoteke- naziv fajla za upload, SpreadsheetDocumentFileType.XLSX— format generisane datoteke. Podržani su sljedeći Excel formati:

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

TabDoc = Novi dokument tabele;
TabDoc . Read(PathToFile, WayToReadSpreadsheetDocumentValues.Value);

Evo Put do datoteke- Put do preuzete Excel datoteke. WayToReadValuesSpreadDocument.Value određuje kako interpretirati podatke pročitane iz izvornog dokumenta. Dostupne opcije:

  • Značenje;
  • Tekst.

Razmjena putem OLE

Razmjena putem tehnologije OLE automatizacije je možda najčešća opcija programski rad With Excel fajlovi. Omogućava vam korištenje svih funkcionalnosti koje pruža Excel, ali je sporiji od drugih metoda. Za razmjenu putem OLE-a potrebno je instalirati MS Excel:

  • Na računaru krajnjeg korisnika, ako se razmena odvija na strani klijenta;
  • Na serverskom računaru 1C:Enterprise, ako se razmjena odvija na strani servera.

Primjer istovar:

// Kreiranje COM objekta
Excel = Novi COMObject("Excel.Application");
// Onemogući upozorenja i pitanja
Excel . displayalerts = false;
// Kreirajte novu knjigu
Book = Excel. radne sveske. dodati();
// Pozicioniranje na prvom listu
List = Knjiga. Radni listovi(1);

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

// Sačuvajte datoteku
Book . Sačuvaj kao (ime datoteke);


Excel . Quit();
Excel = 0;

Primjeri čitanje:

// -- OPCIJA 1 --

// Kreiranje COM objekta
Excel = Novi COMObject("Excel.Application");
// Otvori knjigu
Book = Excel. radne sveske. Otvori( Put do datoteke );

List = Knjiga. Radni listovi(1);

// Zatvorite knjigu
Book . Zatvori(0);

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

// —— OPCIJA 2 ——

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

// Čitanje vrijednosti ćelije, ovdje se obično nalazi petlja zaobilaženja ćelije
CellValue = List. Ćelije (broj reda, broj kolone). vrijednost;

// Zatvorite knjigu
Book . aplikacija. Qui t();

Za zaobići sve popunjene redove Excel lista, možete koristiti sljedeće trikove:

// -- OPCIJA 1 --
Broj redova = list. Ćelije(1, 1). Specijalne ćelije(11 ). Red;
Za Broj reda = 1 Po broju redova petlja
CellValue = List. Ćelije (broj reda, broj kolone). vrijednost;
EndCycle;

// —— OPCIJA 2 ——
Broj reda = 0;
Dok True Loop
Broj reda = Broj reda + 1 ;
CellValue = List. Ćelije (broj reda, broj kolone). vrijednost;
Ako NIJE ValueFilled(CellValue) Onda
prekinuti;
EndIf;
EndCycle;

Umjesto da uzastopno prelazite sve redove lista, možete dump sve podatke u niz i raditi sa njim. Ovaj pristup će biti brži kada čitate veliku količinu podataka:

Total Columns = List. Ćelije(1, 1). Specijalne ćelije(11 ). Kolona;
TotalRows = List. Ćelije(1, 1). Specijalne ćelije(11 ). Red;

Region = List. Opseg(list. Ćelije(1, 1), Lista. Ćelije(Ukupni redovi, Ukupno kolone));
Podaci = Površina. vrijednost. istovariti();

U tabeli ispod su navedena najtraženija svojstva i metode za rad sa Excelom preko OLE-a:

Akcija Kod Komentar
Rad sa aplikacijom
Postavljanje vidljivosti prozora aplikacije Excel . vidljivo= false;
Podešavanje načina prikaza upozorenja (prikaz/ne prikaz) Excel . DisplayAlerts= false;
Zatvaranje aplikacije Excel . Quit();
Rad sa knjigom
Kreirajte novu knjigu Book = Excel. radne sveske. Dodati();
Otvaranje postojeće radne sveske Book = Excel. radne sveske. Otvori (ime datoteke);
Čuvanje knjige Book . Sačuvaj kao (ime datoteke);
zatvaranje knjige Book . Zatvori(0);
Rad sa listom
Postavljanje trenutnog lista List = Knjiga. Radni listovi(Broj lista);
Podešavanje imena List . Ime = Ime;
Postavljanje zaštite List . Zaštiti();
Uklanjanje zaštite List . UnProtect();
Podešavanje orijentacije stranice List . Postavljanje stranice. Orijentacija = 2; 1 - portret, 2 - pejzaž
Postavljanje lijeve granice List . Postavljanje stranice. Lijeva margina = Excel. CentimetersToPoints(Centimetri);
Postavljanje gornje granice List . Postavljanje stranice. TopMargin = Excel. CentimetersToPoints(Centimetri);
Postavljanje desne granice List . Postavljanje stranice. Desna margina = Excel. CentimetersToPoints(Centimetri);
Postavljanje donje granice List . Postavljanje stranice. BottomMargin = Excel. CentimetersToPoints(Centimetri);
Rad sa redovima, kolonama, ćelijama
Podešavanje širine kolone List . Kolone (Broj kolone). ColumnWidth = Širina;
Uklanjanje linije List . Redovi (Broj reda). Izbriši();
Brisanje kolone List . Kolone (Broj kolone). delete();
Brisanje ćelije List . Ćelije (broj reda, broj kolone). Izbriši();
Postavljanje vrijednosti List . Ćelije (broj reda, broj kolone). Vrijednost = Vrijednost;
Spajanje ćelija List . Opseg(Liste. Ćelije(Broj reda, Broj kolone), List. Ćelije(Broj reda1, Broj kolone1)). Spoji();
Instaliranje fonta List . Ćelije (broj reda, broj kolone). Font. Ime = Ime fonta;
Podešavanje veličine fonta List . Ćelije (broj reda, broj kolone). Font. Veličina = Veličina fonta;
Podešavanje podebljanog fonta List . Ćelije (broj reda, broj kolone). Font. Bold = 1 ; 1 - podebljano, 0 - normalno
Postavljanje kurziva List . Ćelije (broj reda, broj kolone). Font. Kurziv = 1 ; 1 - kurziv, 0 - normalno
Postavljanje podvučenog fonta List . Ćelije (broj reda, broj kolone). Font. Podvući = 2 ; 2 - podvučeno, 1 - ne

Da biste saznali koje svojstvo treba promijeniti ili koju metodu pozvati, možete koristiti macros Excel. Ako snimite makro sa potrebnim radnjama, onda možete vidjeti programski kod na VBA snimljenom makrou.

Korištenje COMSafeArray

Kada učitavate velike količine podataka iz 1C u Excel, možete koristiti objekt za ubrzanje COMSafeArray. Kako je definirao pomoćnik sintakse, COMSafeArray je omotač objekta preko višedimenzionalnog niza SafeArray od COM. Omogućava vam da kreirate i koristite SafeArray za razmjenu podataka između COM objekata. Jednostavno rečeno, ovo je niz vrijednosti koje se mogu koristiti za razmjenu između aplikacija koje koriste OLE tehnologiju.

// Kreiraj COMSafeArray
ArrayCom = Novi COMSafeArray("VT_Variant", TotalColumns, TotalRows);
// Popuni COMSafeArray
Za Str = 0 ukupno redova - 1 petlja
Za Broj = 0 ukupno kolona - 1 ciklus
ArrayCom . SetValue(Broj, Str, Vrijednost);
EndCycle;
EndCycle;
// Dodijeli područje lista excel vrijednosti iz COMSafeArray
List . Opseg(list. Ćelije(1, 1), Lista. Ćelije(Ukupno redova, Ukupno kolona)). Vrijednost = ArrayCom;

Razmjena putem ADO-a

Excel datoteka, kada se razmjenjuje putem ADO-a, je baza podataka kojoj se može pristupiti pomoću SQL upita. Instalacija MS Excel-a nije potrebna, ali je potreban ODBC drajver preko kojeg će se pristupiti. Korišteni ODBC drajver se određuje specificiranjem niza povezivanja na datoteku. Obično je potreban drajver već instaliran na računaru.

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

Primjer istovar:


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


Compound . ConnectionString="

|DataSource=" + Ime datoteke + ";
;
Compound . open(); // Otvorena veza

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

// Dodijeli tekst naredbe za kreiranje tablice
Tim . commandtext= "KREIRAJ TABELU [Sheet1] (Kolona1 znak (255), Kolona2 datum, Stupac3 int, Kolona4 float)";
Tim . izvršiti(); // Izvršenje naredbe

// Dodjela teksta naredbe za dodavanje reda tablice
Tim . commandtext= "INSERT INTO [Sheet1] (kolona1, stupac2, stupac3, stupac4) vrijednosti ('abvgdeo', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // Izvršenje naredbe

// Brisanje naredbe i zatvaranje veze
komanda = nedefinisano;
Compound . zatvori();
Veza = Nedefinirano;

Da biste kreirali novi list i formirali njegovu strukturu, možete koristiti objekte ADOX.Catalog I ADOX.Table. U ovom slučaju, kod će izgledati ovako:

// Kreirajte COM objekat za rad s knjigom
Book = Novi COMObject("ADOX.Catalog");
Book . ActiveConnection = Veza;

// Kreirajte COM objekt za rad sa strukturom podataka na listu
Tabela = Novi COMObject("ADOX.Table");
Table . Ime = "List1" ;
Table . Kolone. Dodati("Kolona1" , 202 );
Table . Kolone. Dodati("Kolona2" , 7 );
Table . Kolone. Dodati("Kolona3" , 5 );
Table . Kolone. Dodati("Kolona4" , 5 );

// Kreirajte list u knjizi s opisanom strukturom
Book . stolovi. dodatak (tabela);
tabela = nedefinisano;
knjiga = nedefinisano;

U gornjem primjeru, u metodi

Table . Kolone. Dodati("Kolona 1", 202);

drugi parametar specificira tip stupca. Parametar je opcionalan, evo nekih vrijednosti tipa stupca:

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

Primjer čitanje:

// Kreirajte COM objekt za vezu
Connection = New COMObject("ADODB.Connection");

// Postavi niz veze
Compound . ConnectionString="
|Provider=Microsoft.ACE.OLEDB.12.0;
|DataSource=" + Ime datoteke + ";
|Extended Properties=""Excel 12.0 XML;HDR=DA"";";
Compound . open(); // Otvorena veza

// Kreirajte COM objekt za primanje odabira
Izbor = Novi COMObject("ADODB.Recordset");
RequestText = "ODABIR * IZ [Sheet1$]";

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

// Zaobići rezultat odabira
Dok NE Uzorkovanje. EOF() petlja
ColumnValue1 = Izbor. polja. Stavka("Kolona1"). vrijednost ; // Referenca po imenu kolone
Vrijednost stupca2 = odabir. polja. Stavka(0). vrijednost; // Dohvaćanje po indeksu stupca
Uzorak . MoveNext();
EndCycle;

Uzorak . zatvori();
Uzorak = nedefinisan;
Compound . zatvori();
Veza = nedefinisano;

U nizu veze, parametar HDR određuje kako će se percipirati prvi red na listu. Moguće opcije:

  • DA - prvi red se percipira kao nazivi kolona. Vrijednostima se može pristupiti po imenu i indeksu stupca.
  • NE - Prvi red se uzima kao podatak. Vrijednostima se može pristupiti samo putem indeksa stupca.

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

  • veza;
  • komanda;
  • recordset;
  • zapis;
  • polja;
  • Potok;
  • greške;
  • parametri;
  • svojstva.

Upload bez programiranja

Da biste spremili podatke iz 1C u Excel, nije uvijek preporučljivo pribjeći programiranju. Ako u Enterprise modu korisnik može prikazati podatke potrebne za upload, onda ih je moguće pohraniti u Excel bez programiranja.

Da biste sačuvali dokument tabele (na primer, rezultat izveštaja), možete pozvati naredbu Sačuvaj ili Sačuvaj kao… glavni meni.

U prozoru koji se otvori potrebno je odabrati direktorij, naziv i format spremljene datoteke.

Da sačuvate podatke dinamičke liste(na primjer, lista stavki) morate:

  1. Iznesite podatke u tabelu pomoću naredbe Više ⇒ Prikaži listu...;
  2. Sačuvajte tabelarni dokument u potrebnom formatu.



Učitavanje...
Top