1s programozás működik excel-lel. Melyik a jobb - "1C" vagy "Excel"? Kérdése van, vagy tanácsadó segítségére van szüksége?

Az 1C-ben kétféleképpen dolgozhat az MS Excel fájlokkal, egy COM objektumon és egy objektumot használó beépített 1C-eszközökön keresztül. táblázatos dokumentum. Vizsgáljuk meg mindkét módszert részletesebben.

1. Munkavégzés a COM-objektumon keresztül.

Ehhez a módszerhez az MS Excel telepítése szükséges, és ha a szerveren fájllal dolgozunk, akkor az MS Excelt kell telepíteni a szerverre, ha a kliensre, akkor a kliens oldalon is szükséges az MS Excel.

Egy példa (a cikk végén megtekinthető szöveges formában):

Megjegyzendő, hogy az "Excel.Application" COM objektum által biztosított összes objektum, metódus és tulajdonság a VBA, az MS Office programozási nyelv objektumai, metódusai és tulajdonságai.

Jegyzet:

Néha egy meglévő sablonnal kell dolgoznia. Ezután ezt a sablont el kell tárolnunk valahol, hogy minden szükséges felhasználó hozzáférhessen. Van azonban egy egyszerűbb megoldás is, a sablont bináris elrendezésként mentjük el.

2. Dolgozzon át az 1C táblázatban.

Az 1C táblázatkezelő dokumentum támogatja az MS Excel formátumot a 8-as platformtól kezdődő rögzítéshez, de csak a 8.3.6 platformtól kezdődő megnyitáshoz. Sőt, kinyitáskor az összes lap egy táblázatos dokumentumba kerül. A 8.3.10-es verziótól induláskor különböző lapok különböző területekként töltik be.

A felvételi példa nagyon egyszerű, és nem igényel különösebb figyelmet:

Itt azonban van egy probléma. Amikor 1C-ből rögzít egy Excel-munkafüzetbe, a lapnevek megjelenítése alapértelmezés szerint le van tiltva.

Ezt a problémát kétféleképpen lehet megoldani: 1 - engedélyezze a lapok megjelenítését magában a könyvben a beállításokban (nem minden felhasználó vállalja ezt), 2 - tegye ezt egy COM objektumon keresztül (ismét telepíteni kell az MS Excelt) .

Ezt a kis kiegészítést követően a lapcímkék láthatóak lesznek az MS Excel fájlban.

Az MS Excel olvasása nem olyan egyszerű feladat, mivel az olvasási módszer csak a szerveren vagy vastag kliensen érhető el. Ehhez át kell vinnünk az MS Excel fájlt a szerverre.

&AtClient

CreateDocument() eljárás

Kivétel

A kísérlet vége;

Könyv = Excel.WorkBooks.Add(); //Új MS Excel munkafüzet létrehozása

Lap = Book.WorkSheets.Add(); //Adj hozzá egy lapot

Sheet.Name = "Példa az 1C-ből"; //Állítsa be a lap nevét

Sheet.Cells (1,1).Value = "Készítsünk egy képletet";!}

Lap.Cellák(2,1).Érték = 1;

Lap.Cellák(2,2).Érték = 2;

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

Sheet.Cells(3,1).Érték = CurrentDate();

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

Book.Close();

Vége eljárás

&A szerveren

GetLayoutServer() függvény

Return FormAttributeToValue("Object").GetLayout("Feltöltési sablon"); //Így kapjuk az elrendezést külső feldolgozás;

EndFunctions

&AtClient

Eljárás Munka()

Excel = Új COMObject("Excel.Application");

Kivétel

Show("Sikertelen kísérlet az Excel komponens csatlakoztatására. Excel program nincs telepítve ez a számítógép!");

A kísérlet vége;

Layout = GetLayoutServer();

Layout.Write(TemporaryFileName);

Kérdése van, tanácsadó segítségére van szüksége?

Könyv = Excel.WorkBooks.Open(TempFileName);

SheetTemplate = Book.WorkSheets(1);

SheetTemplate.Cells (6,1).Value = "Dátum:";!}

Lapsablon.Cellák(6,2).Érték = CurrentDate();

SheetTemplate.NumberFormat = "nn/hh/éé;@"; // Adjuk meg a dátumformátumot, ezt a formátumot egy makró MS Excelben történő rögzítésével kapjuk meg

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // Nyújtsa ki az oszlopot, hogy pontosan illeszkedjen a dátumhoz

Book.SaveAs(Fájlnév);

Book.Close();

Vége eljárás

&AtClient

Vége eljárás

&AtClient

Eljárás WriteSpreadsheetDocument()

SpreadsheetDocument = Új SpreadsheetDocument();

SpreadsheetDocument.Area("R1C1").Text = "Példa egy bejegyzésre az MS Excelben az 1C-ből";

SpreadDocument.Write("C:\1\Test2.xls",SpreadDocumentFileType.XLSX);

Excel = Új 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()

Vége eljárás

BinaryData = Új Bináris Adat("C:\1\test2.xlsx");

Cím=PutToTempStorage(Bináris adatok,ThisForm.UniqueIdentifier);

SpreadsheetDocument = DownloadOnServer(Cím);

SpreadsheetDocument.Show();

Vége eljárás

&A szerveren

Funkció LoadOnServer(cím)

TempFileName = GetTemporaryFileName("xlsx");

FileData = GetFromTempStorage(Cím);

FileData.Write(IdeiglenesFileName);

SpreadsheetDocument = Új SpreadsheetDocument();

Vissza SpreadsheetDocument;

Az 1C alkalmazás hosszú ideig a legnépszerűbb program lett a könyvelők, tervezők, közgazdászok és vezetők körében. Nemcsak sokféle konfigurációval rendelkezik különféle fajták tevékenységek, hanem a számviteli standardok szerinti lokalizáció is a világ több országában. Egyre több vállalkozás tér át könyvelésre ebben a programban. De az adatok más számviteli programokból az 1C-be történő kézi átvitelének eljárása meglehetősen hosszú és unalmas feladat, amely sok időt vesz igénybe. Ha a cég Excel segítségével vezetett nyilvántartást, akkor az átviteli folyamat jelentősen automatizálható és felgyorsítható.

Az adatok átvitele az Excelből az 1C-be nem csak a programmal való munka kezdeti időszakában szükséges. Néha szükség van erre, amikor a tevékenységek során meg kell adni néhány, a táblázatkezelő könyvben tárolt listát. Például, ha egy online áruházból szeretne árlistákat vagy rendeléseket átvinni. Abban az esetben, ha a listák kicsik, manuálisan is beírhatók, de mi van, ha több száz elemet tartalmaznak? Az eljárás felgyorsítása érdekében további funkciókat is igénybe vehet.

Mert automatikus letöltés szinte minden típusú dokumentumhoz alkalmas:

  • Nómenklatúra lista;
  • Vállalkozók listája;
  • Árlista;
  • Megrendelések listája;
  • Információk a vásárlásokról vagy eladásokról stb.

Azonnal meg kell jegyezni, hogy az 1C nem rendelkezik beépített eszközökkel, amelyek lehetővé tennék az adatok átvitelét az Excelből. Ebből a célból külső betöltőt kell csatlakoztatnia, amely egy formátumú fájl epf.

Adatok előkészítése

Az adatokat magában az Excel táblázatban kell elkészítenünk.


Ezen univerzális műveletek mellett az adatok Excel-könyvben történő elkészítéséhez a dokumentumot is összhangba kell hozni az általunk használt konkrét betöltő követelményeivel, de erről egy kicsit később beszélünk.

Külső rendszerbetöltő csatlakoztatása

Csatlakoztassa a külső rendszerbetöltőt kiterjesztéssel epf az 1C alkalmazáshoz az Excel fájl elkészítése előtt és után is lehetséges. A lényeg az, hogy a letöltési folyamat elejére mindkét előkészítő pont megoldódott.

Számos külső Excel táblázatbetöltő létezik az 1C-hez, amelyeket különböző fejlesztők hoznak létre. Megvizsgálunk egy példát egy információfeldolgozó eszköz használatára "Adatok betöltése táblázatos dokumentumból" 1C 8.3 verzióhoz.


Az egyik fő adatbázis, amellyel az 1C dolgozik, az áruk és szolgáltatások listája. Ezért az Excelből történő betöltési eljárás leírásához az ilyen típusú adatok átvitelének példájára összpontosítunk.

  1. Visszatérünk a feldolgozási ablakhoz. Mivel a termékválasztékot fogjuk tölteni, a paraméterben lévő kapcsolónak a pozícióban kell lennie "Könyvtár". Alapértelmezés szerint azonban így van beállítva. Csak akkor váltsa át, ha más típusú adatot kíván átvinni: táblázatos részt vagy információnyilvántartást. Tovább a mezőre "Könyvtár nézet" kattintson a hárompontos gombra. Megnyílik egy legördülő lista. Ebben ki kell választanunk az elemet "Elnevezéstan".
  2. Ezt követően a kezelő automatikusan elrendezi a program által használt mezőket az ilyen típusú könyvtárban. Azonnal meg kell jegyezni, hogy nem szükséges minden mezőt kitölteni.
  3. Most nyissa ki újra a hordozható készüléket Excel dokumentum. Ha oszlopainak neve eltér az 1C könyvtár megfelelő mezőit tartalmazó mezők nevétől, akkor ezeket az oszlopokat át kell nevezni az Excelben, hogy a nevek teljesen megegyezzenek. Ha a táblázat olyan oszlopokat tartalmaz, amelyeknek nincs analógja a könyvtárban, akkor azokat törölni kell. Esetünkben ezek az oszlopok "Mennyiség"És "Ár". Azt is hozzá kell tenni, hogy a bizonylatban az oszlopok sorrendjének szigorúan meg kell egyeznie a feldolgozás során bemutatottal. Ha a betöltőben megjelenített egyes oszlopoknál nincs adat, akkor ezek az oszlopok üresen is hagyhatók, de azoknak az oszlopoknak a számozásának meg kell egyeznie, ahol van adat. A kényelem és a szerkesztés gyorsasága érdekében az Excel speciális funkciójával gyorsan mozgathatja az oszlopokat.

    A műveletek végrehajtása után kattintson az ikonra "Megment", amely hajlékonylemez ikonként jelenik meg az ablak bal felső sarkában. Ezután zárja be a fájlt a szabványos bezárás gombra kattintva.

  4. Visszatérünk az 1C feldolgozási ablakhoz. Kattintson a gombra "Nyisd ki", amely sárga mappaként jelenik meg.
  5. Megnyílik a fájl megnyitó ablaka. Abba a könyvtárba megyünk, ahol a szükséges Excel-dokumentum található. Az alapértelmezett fájlmegjelenítési kapcsoló kiterjesztésre van állítva mxl. A szükséges fájl megjelenítéséhez át kell rendezni a pozícióba "Excel lap". Ezután válassza ki az átvitt dokumentumot, és kattintson a gombra "Nyisd ki".
  6. A tartalom ezután megnyílik a kezelőben. Az adatok kitöltésének helyességének ellenőrzéséhez kattintson a gombra "Töltésvezérlés".
  7. Amint láthatja, a kitöltésvezérlő eszköz azt jelzi, hogy nem találtunk hibát.
  8. Most menjünk a lapra. "Beállítás". BAN BEN "Keresőmező" jelölje be azt a sort, amely a nómenklatúra referenciakönyvében szereplő összes tétel esetében egyedi lesz. Leggyakrabban mezőket használnak erre. "Kereskedői kód" vagy "Név". Ezt azért kell megtenni, hogy új pozíciók felvételekor az adatok ne duplikálódjanak.
  9. Az összes adat bevitele és a beállítások elvégzése után folytathatja az információk közvetlen betöltését a könyvtárba. Ehhez kattintson a feliratra "Adat betöltés".
  10. A letöltési folyamat folyamatban van. Befejezése után lépjen a nómenklatúra referenciakönyvébe, és győződjön meg arról, hogy az összes szükséges adatot hozzáadta.

Az 1C 8.3 programban a nómenklatúra referenciakönyvéhez való adatok hozzáadásának eljárását követtük. Más könyvtárak és dokumentumok esetében a letöltés ugyanazon elv szerint történik, de néhány olyan árnyalattal, amelyet a felhasználó önállóan kitalálhat. Azt is meg kell jegyezni, hogy az eljárás eltérő lehet a különböző külső betöltők esetében, de az általános megközelítés mindenkinél ugyanaz: először a kezelő betölti az információkat a fájlból a szerkesztési ablakba, és csak ezután veszi fel azokat. közvetlenül az 1C adatbázisba.

  • a szerződő felek közötti információcsere (árlisták, egyeztetési aktusok stb.) végrehajtása során;
  • Az operátorok munkájának megkönnyítése olyan esetekben, amikor a fő könyvelést 1C-ben vezetik, és egy részét Excel táblákban végzik;
  • Az adatbázis kezdeti feltöltése során.

Ennek a műveletnek a végrehajtásához használhatja az informatikai támogatás (ITS) előfizetéssel elérhető szabványos funkcionalitást és az ezen keresztül megvalósított saját írásos feldolgozást. különféle lehetőségeket kapcsolatokat. Cikkünkben megpróbáljuk a lehető legteljesebb mértékben elemezni az összes lehetséges esetet, és megválaszolni a legtöbb meglévő kérdést az adatok Excelből az 1C-be való betöltésével kapcsolatban.

Univerzális mozgás

Az ITS-lemezeken, valamint az 1C portálon a „Technológiai támogatás” -> „Univerzális jelentések és feldolgozás” menüben az „Adatok betöltése táblázatos dokumentumból” mappában a megfelelő feldolgozás történik.

Amikor elindul, megnyílik egy űrlap (1. ábra):

Amint az az űrlapon látható, lehetővé teszi az információk átvitelét a következő konfigurációs objektumokhoz:

  1. Könyvtár;
  2. táblázatos rész dokumentum vagy útmutató;
  3. Információk nyilvántartása.

A kapcsoló helyzetétől függően változik az objektum kiválasztási mező.

A feldolgozás táblázatos űrlapja a feltöltött fájl megnyitásakor töltődik ki.

A típusfeldolgozás támogatja a feltöltéseket:

  • Az 1C cég szakemberei által kifejlesztett formátumú fájlokmxl;
  • Lisztxls formátumban mentveExcel 97-2003;
  • szöveges fájltxt;
  • táblázatokdbf.

A nagy volumenű Excel fájlok betöltése sokáig tarthat, ezért ha feltételezzük, hogy az adatbetöltés több szakaszban is megtörténhet, vagy biztosan tudja, hogy egy meglévő fájlt többször kell megnyitnia, jobb, ha menti az információkat. mxl-ben az idegek és az időkímélő formátum érdekében. Ezt közvetlenül a feldolgozási űrlapról teheti meg.

Fontos megérteni, hogy ha forrás fájl vannak sorcsoportok, alcímek és megjegyzések, ezeket manuálisan kell eltávolítani.

Most menjünk tovább a "Beállítások" fülre (2. ábra):

2. ábra

Az Excel táblázatok gyakran tartalmaznak egy fejlécet mindenféle részlettel és adattal (a nyomtatott űrlap neve, a partner adatai, a bejövő dokumentum dátuma és száma, oszlopok neve stb.), hogy kizárják azok feldolgozását a program az űrlapon a "Táblázatfüzet dokumentum első sora" attribútumban meg kell adni az első sort az átvitt információkkal

Miután kiválasztotta azt a metaadat-objektumot, amelybe az információ beírásra kerül, a „Beállítások” lap táblázatos része automatikusan feltöltődik az attribútumok nevével, típusának leírásával és egyebekkel. fontos információ. Figyelembe kell venni a "Beállítások" fül táblázatos részének oszlopait külön szakasz.

Beállítások oszlopok

Jelölés - a sorban lévő négyzet bejelölésével vagy kijelölésével megállapítható, hogy a megfelelő attribútum kitöltésre kerül-e.

Az attribútum ábrázolása - a metaadat attribútum szinonimája (neve) ide van írva, a konfigurátorban megadott módon.

Keresőmező – ha bejelöli ezt a jelölőnégyzetet, a feldolgozás a megfelelő attribútum alapján keres elemeket, és ha sikeres, módosítja a meglévő adatokat, kiegészítő funkció ez a mező - védelem a másolatok megjelenése ellen.

Típusok leírása – megjeleníti azt az adattípust, amely rendelkezik egy vagy másik metaadatattribútummal.

Letöltési mód – három lehetőség közül választhat (3. ábra):

3. ábra

  • Keresés - a megfelelő elemet keresi, hiánya esetén újat lehet létrehozni;
  • Beállítás - egy bizonyos érték alárendelt módon van beállítva;
  • Számítás – ebben az esetben a "Kapcsolat feltétele/Értékkifejezés" oszlopban megadott kifejezés számításának eredménye a létrehozandó elem mezőjében lesz beállítva.

Ez utóbbi esetben a Kifejezés mező aktiválásával megnyílik az űrlap (4. ábra).

4. ábra

Oszlopszám - egy mező, amely jelzi, hogy az Excel táblázat melyik oszlopából kell adatokat venni a kitöltéshez.

Alapértelmezett érték – gyakran előfordul olyan helyzet, amikor a feltöltött fájl nem tartalmazza az összes elem rögzítéséhez szükséges adatot, ebben az esetben az ebben a mezőben található információk kerülnek kitöltésre.

Kapcsolódási feltétel / Értékkifejezés - ezt a mezőt már részben érintettük, amikor számított mezőket vettünk figyelembe, ezen kívül megadhatja, hogy milyen feltétel szerint kerüljön szinkronizálásra a forrásadatok.

Itt elvileg minden információ található, amely a "Beállítások" fülön elérhető.

Annak érdekében, hogy ne veszítsen sok időt a betöltésre, a megfelelések és kifejezések felírására, a fejlesztők lehetőséget biztosítottak arra, hogy a beállításokat elmentsék egy mxlz kiterjesztésű fájlba.

Az átvitt adatok helyességét a "Kitöltés vezérlése" gombra kattintva ellenőrizheti (1. ábra). Ezt követően elindíthatja a letöltési folyamatot. Az eljárás sikeres befejezéséről vagy a nem szabványos helyzetekről külön értesítést kap.

Adatok feltöltéséhez Excelből ide információs bázisok"Irányítás és kereskedelem" van egy másik mechanizmus. Ez kevésbé univerzális, mint a fenti módszer, azonban nem igényel ITS-előfizetést, és a standard szállítás tartalmazza.

Ez a feldolgozás a „Vásárlások” fülön, a „Szolgáltatás” menüben található, „Szállítói árak betöltése fájlokból” néven (5. ábra)

5. ábra

A feldolgozási űrlap a következőket tartalmazza:

  1. Dátumválasztó mező, amely jelzi, hogy ez az ár mikorra vonatkozik;
  2. Az árlistáját küldő partner kiválasztására szolgáló mező;
  3. Egy gomb, amely lehetővé teszi a beállítandó árak típusának kiválasztását;
  4. Feltöltött adatokkal kitölthető táblázatos rész.

Ez a forma a 6. ábrán látható

6. ábra

Az űrlap tetején található jelmagyarázat elmagyarázza, hogyan kell használni az űrlap első lapját.

A partner kiválasztása után (attól függően, hogy beszállítóként, bizományosként vagy eladóként jár el), minden ártípushoz további oszlopok válnak elérhetővé a táblázatban.

A webes felületen keresztüli munka során egyes böngészők böngészőbővítmény telepítését tehetik szükségessé (7. ábra). A "Telepítés indítása" gombra kell kattintanunk, és újra kell indítanunk a kapcsolatunkat.

7. ábra

Ezt követően a vágólap segítségével tudunk majd információkat átvinni egyik táblázatból a másikba. Amikor a számunkra szükséges oszlopokat („Cikk”, „Név”, „Ár”) kitöltöttük, megnyomjuk a „Tovább” gombot, és továbblépünk a második oldalra (8. ábra)

8. ábra

A program automatikusan megkeresi az egyezéseket az adatbázison belül, és ha nincsenek, felajánlja a hiba elhárításának lehetőségeit. Kinézet táblázatos rész kapcsolóval vezérelhető. Emellett a felhasználó önállóan is össze tudja hasonlítani a feltöltött fájl elemeit az adatbázisban lévőkkel.

  • Regisztráljon mindent;
  • Csak azokat regisztrálja, amelyek az adatbázisban már szereplőkhöz képest megváltoztak.

A szövegmezőbe írhat be egy megjegyzést, amely rögzítésre kerül a dokumentumban (9. ábra):

9. ábra

Feldolgozás után:

  • Egy megfelelő elem jön létre a "Beszállítói nómenklatúra" könyvtárban (ha nem volt ott);
  • A „Nómenklatúra” című kézikönyv egy eleméhez illeszkedik;
  • Létrejön és feladásra kerül a "Cikkárak beállítása" dokumentum, amelyen feltüntetik: szállító, ártípus és adatrögzítés dátuma.

Hasonló módon működik az "Áruk betöltése külső fájlokból" feldolgozása is.

DIY transzfer feldolgozási lehetőségek

A fő probléma az adatok Excel-fájlból való kinyerésében az, hogy az 1C-nek nincs beépített, egyértelmű mechanizmusa a megnyitáshoz. Számos lehetőség van az Excel és az 1C csatlakoztatására:

  • Microsoft ADODB-n keresztül - Elég gyors út, amely főszabály szerint mind a fájlra, mind a kliens-szerver verzió alaptároló;
  • Használaton keresztül Microsoft iroda- egy módszer, amely néha meghibásodik az SQL-adatbázisokkal végzett munka során, általában valamivel lassabban működik, mint az első módszer, emellett Office-ra van szükség;
  • A Libre Office-on keresztül - az előző módszerrel ellentétben ingyenes, az xls és xlsx formátumok mellett saját táblákat is támogat, de ehhez szükséges telepített csomag LibreOffice és a feltöltött fájl némi előkészítése (a táblázat első sorában az oszlopok nevei szerepeljenek).

Nézzük meg közelebbről különböző módokonés opciók.

Az ADODB.Connectionen keresztül

Az ADO általában az ActiveX Data Object rövidítése, és különféle adatbázisokhoz való programozott hozzáférésre szolgál. Harmadik féltől származó fájlokkal (beleértve az Excelt is) való bármilyen kapcsolat létrehozása során a legnagyobb probléma a kapcsolati karakterlánc helyes összeállítása.

Három lehetőség van az Excel-fájlokhoz:

Csatlakozási karakterlánc opciók:

  • Szolgáltató – itt van meghatározva a használt illesztőprogram;
  • Adatforrás - meghatározza a megnyitni kívánt fájl nevét;
  • Extended Properties - itt adhatja meg, hogy kell-e fejléc sor a táblázathoz (HDR = IGEN azt jelzi, hogy az adatok az első sorból, HDR = NEM - a második sorból kerülnek kiolvasásra), hogy a fájl csak olvashatóan legyen megnyitva ( Csak olvasható) és néhány további lehetőség.

A kapcsolati karakterlánc létrehozása után csatlakozhatunk a letöltött fájlhoz (13. ábra)

13. ábra

Most egy egyszerű lekérdezéssel (14. ábra) elkezdhetjük az információk lekérését a feltöltött fájlból.

Ebben az esetben a "Sheet" paraméter határozza meg, hogy az Excel munkafüzetből melyik lappal kell dolgoznunk.

A lapon tárolt rekordok halmaza a Recordset objektum segítségével olvasható. Ebben az esetben a lap első rekordja a BOF (fájl eleje) paraméterrel, az utolsó EOF (fájl vége) paraméterrel érhető el.

Excel alkalmazáson keresztül

A fő különbség az előző módszerhez képest, hogy az adatbázis-illesztőprogramok mellett az Excelt is telepíteni kell arra a számítógépre, ahol a kapcsolat létrejön. Csak ebben az esetben tudjuk inicializálni az alkalmazást adatok kiolvasására a táblázatból (16. ábra).

Ennek a COM objektumnak több gyermekparamétere is van, de a fő számunkra a feladat jelenlegi feltételei között a WorkBooks paraméter (17. ábra).

A könyv inicializálása után meg kell határozni azt a lapot, amelyről az adatok ki lesznek olvasva (18. ábra).

Ezt követően a megnyitott fájl táblázatának soraiban és oszlopaiban ismételgethet.

Néhány szó a lehetséges hibákról

A fájlokhoz való kapcsolódás során előforduló hibák oroszlánrésze abból adódik, hogy a fájlt egy másik alkalmazás már használja. Jó, ha a tálcán látja, hogy az Excel fut a számítógépen, de ha Ön vagy egy másik felhasználó nyitotta meg külső feldolgozásból, ezt csak vizuálisan lehet meghatározni a "Feladatkezelőn" keresztül, ezért ne felejtse el bezárni a kapcsolatot az átviteli eljárás befejezése előtt:

Az ADO-n keresztül történő munkavégzés esetén (19. ábra);

19. ábra

  • Az alkalmazással való munkavégzés esetén (20. ábra).

Rizs. 20.

A kapcsolat és az adatokkal végzett munka folyamata legjobban a Kísérlet-Kivétel-Kísérlet vége konstrukcióba szervezhető, kivételes helyzetben hibaleírást okozva. Ez ugyan néha lelassítja a munkát, de nagyban leegyszerűsíti a hiba okának meghatározását és végső soron a kiküszöbölésének módjait.

Bevezetés.

Sokan tudják, hogy az Excel sokkal régebbi, mint az 1C. Véleményem szerint ez egy nagyon sikeres termék, és nem hallottam rá panaszt. Az Excel egyszerű és sokoldalú. Nemcsak egyszerű aritmetikai műveletek elvégzésére képes, hanem összetett számítások, grafikonok stb. Ismerek olyan példákat, amikor a szervezetek az 1C-re váltás előtt a könyvelés egy részét Excelben vezették. Sokan és most párhuzamosan két programot használnak. Ebben a cikkben megvizsgáljuk az 1C és az Excel közötti adatcserét.

1C és Excel táblázatok.

A kényelem érdekében sok felhasználó menti az 1C táblázatokat ( nyomtatványok) Excel (*.xls) formátumban. Ezt követően a keletkezett fájlban különféle csoportosítások, rendezések, számítások stb. Ez annak a ténynek köszönhető, hogy az 1C táblázatokban nincs olyan hatalmas funkcionalitás, mint az Excel táblázatokban. Az 1C 8.0 verzióban azonban vannak olyan újítások, amelyek kényelmesebbé teszik az asztalokkal való munkát.

Az 1C webhelyen (http://www.1c.ru/) található egy hasznos program, amely lehetővé teszi az 1C táblázatok megnyitását az Excelben, és egy Excel-lapot 1C táblázatként menthet. Ez akkor hasznos, ha az 1C táblázatot nem Excel formátumban mentette, és az 1C nincs telepítve arra a számítógépre, amelyen meg kell nyitnia ezt a táblát. Igen, és folyamatosan emlékezzen arra, hogy az 1C táblázatot Excel formátumban kell mentenie, nem lesz szükség rá.

A programról teljes információ itt található.
A programot innen tudod letölteni ( zip archívum 682 739 bájt).

Megjegyzés: Az Excelben a decimális elválasztó a ",". Ezért az 1C táblázat Excel formátumban történő mentése előtt cseréljen ki benne egy másik elválasztót (például ".") ","-re. Ellenkező esetben az Excel nem tud ezekkel a számokkal számításokat végezni, vagy egyáltalán nem jelennek meg számként. Például az 1C táblázatban a „15.2” az Excelben „február 15.”-ként jelenik meg.

Adatok lekérése Excelből.

Az 1C-ből az Excelbe való hozzáférés az OLE-n keresztül történik. Például kód
Kísérlet
Kivétel
Értesítés(Hiba leírása() +
);
Visszatérés;
A kísérlet vége;
lehetővé teszi számunkra, hogy az "Excel" változón keresztül hozzáférjünk a futóhoz Excel alkalmazás. És akkor már elérheti az adatokkal ellátott könyvet (fájlt), lapot és cellát. Az alábbiakban kódpéldák találhatók.

Könyv (fájl) megnyitása:
Könyv = Excel. munkafüzetek. Open(PathToFile);
A fájl elérési útja - teljes útvonal egy Excel-munkafüzetfájlba.

A munkalap kiválasztása:
vagy
Lap = Könyv. Munkalapok(Lapnév);
A SheetNumber a könyvben lévő lap száma, a SheetName pedig a lap neve a könyvben.

Egy lapcella értékének lekérése:
Érték = Lap. Cellák (LineNumber , ColumnNumber ). érték;

Fontos: ne felejtse el Excel kódot hozzáadni a mezőhöz a szükséges műveletek végrehajtásához. Kilépés(); , ellenkező esetben a futó folyamat befejezetlen marad, és lefoglalja a számítógép memóriáját és processzorát.

Adatok kiadása Excelbe.

Az adatok Excelbe történő kiadásához (feltöltéséhez) meg kell nyitnia egy meglévő munkafüzetet, vagy létre kell hoznia egy újat, és ki kell választania egy munkalapot az adatkimenethez. Meglévő könyv megnyitását fent leírtuk, de új könyv létrehozásához a következő kódot kell használnia:
Kísérlet
Excel = CreateObject("Excel.Application" );
Kivétel
Értesítés(Hiba leírása() +
"Az Excel nincs telepítve erre a számítógépre!");
Visszatérés;
A kísérlet vége;
Könyv = Excel. munkafüzetek. add();

Mivel a munkafüzet Excelben történő létrehozásakor a munkalapok automatikusan létrejönnek (Eszközök->Beállítások->Általános->Táblázatok egy új munkafüzetben), csak ki kell választania azt a lapot, amellyel dolgozni szeretne:
Lap = Könyv. Munkalapok(Lapszám);
vagy ha szükséges, adjon hozzá új lapot a könyvhöz:
Lap = Könyv. Ágynemű. add();
A következő lépés a cella értékének beállítása:
Lap. Cellák (LineNumber , ColumnNumber ). érték = érték;
RowNumber, ColumnNumber - sorszám és oszlopszám, amelynek metszéspontjában a cella található.
És a végén rögzítenie kell a létrehozott könyvet:
Kísérlet
Könyv . SaveAs(PathToFile);
Kivétel
Értesítés (hiba leírása()
+ "A fájl nem mentve!");
Visszatérés;
A kísérlet vége;
PathToFile – az Excel-munkafüzetfájl teljes elérési útja (a névvel együtt).
Fontos: ne feledje, hogy a fájlnevek nem tartalmazhatják a \ / : * karaktert? " >< |.

Általánosan használt módszerek az értékek beolvasására/beállítására Excelben.

Excel = CreateObject("Excel.Application" ); Hozzáférés megszerzése az Excel alkalmazáshoz.
Excel. Látható = Láthatóság ; 0 - Az Excel nem látható, 1 - látható.
Könyv = Excel. munkafüzetek. add(); Új munkafüzet (fájl) készítése Excel.
Könyv . SaveAs(Fájlnév); Excel munkafüzet mentése.
Lap = Könyv. Munkalapok. add(); Új lap hozzáadása a könyvhöz.
Könyv = Excel. munkafüzetek. Megnyitás(fájlnév); Meglévő munkafüzet (fájl) Excel megnyitása.
Lap = Könyv. Munkalapok(Lapszám); Lap beállítása munkalapként számlapszámmal.
Lap. Név = Lapnév ; Munkalap elnevezéseSheetName
Lap. Oldal beállítása . Nagyítás = Scale ; Megadja az Oldal méretezése beállítást (10 és 400 között).
Lap. Oldal beállítása . Orientation = Orientation ; Tájolás: 1 - álló, 2 - fekvő.
Lap. Oldal beállítása . LeftMargin = Excel . CentimetersToPoints (centiméter); Beállítja a bal oldali szegélyt (centiméterben).
Lap. Oldal beállítása . TopMargin = Excel . CentimetersToPoints (centiméter); Megadja a felső határt (centiméterben).
Lap. Oldal beállítása . RightMargin = Excel . CentimetersToPoints (centiméter); Megadja a jobb oldali szegélyt (centiméterben).
Lap. Oldal beállítása . BottomMargin = Excel . CentimetersToPoints (centiméter); Beállítja az alsó határt (centiméterben).
Lap. Oszlopok (ColumnNumber) . ColumnWidth = Szélesség ; Állítsa be az oszlop szélességét.
Lap. Cellák (LineNumber , ColumnNumber ) . érték = érték; Adatok bevitele egy cellába.
Lap. Cellák (LineNumber , ColumnNumber ) . betűtípus. Név = FontName ; Betűtípus beállítása egy cellában.
Lap. Cellák (LineNumber , ColumnNumber ) . betűtípus. Méret = FontSize ; Állítsa be a betűméretet egy cellában.
Lap. Cellák (LineNumber , ColumnNumber ) . betűtípus. Félkövér = Bold ; 1 - félkövér, 0 - normál.
Lap. Cellák (LineNumber , ColumnNumber ) . betűtípus. Dőlt = Italic ; 1 - ferde betűtípus, 0 - normál.
Lap. Cellák (LineNumber , ColumnNumber ) . betűtípus. Aláhúzás = Aláhúzott ; 2 - aláhúzva, 1 - nem.
Lap. Cellák (LineNumber , ColumnNumber ) . NumberFormat = Formátum ; Állítsa be a cella adatformátumát.
Lap. Cellák (LineNumber , ColumnNumber ) . Határok. Vonalstílus = Vonaltípus ; Állítsa be a cellaszegélyeket. 1 - vékony szilárd anyag.

Ez a módszer egyszerű. Lényege, hogy a tárgy SpreadsheetDocument módszerei vannak:

  • éget (< ИмяФайла>, < ТипФайлаТаблицы >) adatok fájlba feltöltése;
  • Olvas (< ИмяФайла>, < СпособЧтенияЗначений >) adatok betöltéséhez egy fájlból.

Figyelem!

A Write() metódus elérhető mind a kliensen, mind a szerveren. A Read() metódus csak a szerver oldalon érhető el. Ezt emlékezni kell
a kliens-szerver interakció tervezésekor.

Vegyünk egy példát egy táblázatkezelő dokumentum fájlba mentésére. A TableDocument objektumot bármilyen módon létre kell hozni és kitölteni, ill kirakodás A fájl csak egy sorból készül:

TabDoc . Write(FilePath, SpreadsheetDocumentFileType.XLSX);

Itt TabDoc- generált táblázat, A fájl elérési útja- a feltöltendő fájl neve, SpreadsheetDocumentFileType.XLSX— a generált fájl formátuma. A következő Excel formátumok támogatottak:

  • XLS95- excel formátumban 95;
  • XLS97 - Excel 97 formátum;
  • Az XLSX egy Excel 2007 formátum.

TabDoc = New SpreadsheetDocument;
TabDoc . Read(PathToFile, WayToReadSpreadsheetDocumentValues.Value);

Itt A fájl elérési útja- A letöltött Excel fájl elérési útja. WayToReadValuesSpreadDocument.Value meghatározza, hogyan kell értelmezni a forrásdokumentumból kiolvasott adatokat. Választható lehetőségek:

  • Jelentés;
  • Szöveg.

Csere OLE-n keresztül

Az OLE automatizálási technológián keresztüli csere talán a leggyakoribb lehetőség programmunka Val vel Excel fájlok. Lehetővé teszi az Excel által biztosított összes funkció használatát, de lassabb, mint más módszerek. Az OLE-n keresztüli cseréhez az MS Excel telepítése szükséges:

  • A végfelhasználó számítógépén, ha a csere a kliens oldalon történik;
  • Az 1C:Enterprise szerver számítógépen, ha a csere a szerver oldalon történik.

Példa kirakodás:

// Hozzon létre egy COM objektumot
Excel = Új COMObject("Excel.Application");
// Figyelmeztetések és kérdések letiltása
Excel . displayalerts = false;
// Hozzon létre egy új könyvet
Könyv = Excel. munkafüzetek. add();
// Elhelyezés az első lapon
Lap = Könyv. Munkalapok (1);

// Érték írása a cellába
Lap . Cellák (Sorszám, Oszlopszám). Érték = CellValue;

// Mentse el a fájlt
Könyv . SaveAs(Fájlnév);


Excel . Kilépés();
Excel = 0;

Példák olvasás:

// -- 1.OPCIÓ --

// Hozzon létre egy COM objektumot
Excel = Új COMObject("Excel.Application");
// Nyitott könyv
Könyv = Excel. munkafüzetek. Nyisd ki( a fájl elérési útja );

Lap = Könyv. Munkalapok (1);

// Bezárni a könyvet
Könyv . Bezárás(0);

// Az Excel bezárása és a memória felszabadítása
Excel . Kilépés();
Excel = 0 ;

// —— 2. LEHETŐSÉG ——

// Nyitott könyv
Könyv = GetCOMObject( a fájl elérési útja );
// Elhelyezés a kívánt lapon
Lap = Könyv. Munkalapok (1);

// Olvassa el a cella értékét, általában itt található a cella bypass hurok
CellValue = Lap. Cellák (Sorszám, Oszlopszám). érték;

// Bezárni a könyvet
Könyv . Alkalmazás. Qui t();

Mert kitérő Az Excel munkalap összes kitöltött sorában a következő trükköket használhatja:

// -- 1.OPCIÓ --
Sorok száma = Lap. Sejtek (1, 1). SpecialCells(11 ). Sor;
For RowNumber = 1 Sorok száma szerint Hurok
CellValue = Lap. Cellák (Sorszám, Oszlopszám). érték;
EndCycle;

// —— 2. LEHETŐSÉG ——
Sorszám = 0 ;
Míg a True Loop
LineNumber = Sorszám + 1 ;
CellValue = Lap. Cellák (Sorszám, Oszlopszám). érték;
Ha NEM ValueFilled(CellValue) Akkor
elvetél;
EndIf;
EndCycle;

Ahelyett, hogy egymás után végigmenne a lap összes vonalán, megteheti kiírja az összes adatot egy tömbbeés dolgozz vele. Ez a megközelítés gyorsabb lesz, ha nagy mennyiségű adatot olvas:

TotalColumns = Lap. Sejtek (1, 1). SpecialCells(11 ). Oszlop;
TotalRows = Lap. Sejtek (1, 1). SpecialCells(11 ). Sor;

Vidék = Lap. Tartomány(Lap. Cellák(1 , 1 ), List. Cells(Összes sor, Összes oszlop));
Adat = Terület. érték. kirak();

Az alábbi táblázat felsorolja a legkeresettebb tulajdonságokat és módszereket az Excel OLE-n keresztüli használatához:

Akció Kód Egy komment
Munka az alkalmazással
Alkalmazásablak láthatóságának beállítása Excel . látható= hamis;
A figyelmeztetés megjelenítési módjának beállítása (megjelenítés/nem kijelzés) Excel . Display Alerts= hamis;
Az alkalmazás bezárása Excel . Kilépés();
Munka könyvvel
Hozzon létre egy új könyvet Könyv = Excel. munkafüzetek. Hozzáadás();
Meglévő munkafüzet megnyitása Könyv = Excel. munkafüzetek. Open(Fájlnév);
Könyv mentése Könyv . Mentés másként (Fájlnév);
könyvzárás Könyv . Bezárás(0);
Lappal dolgozni
Az aktuális lap beállítása Lap = Könyv. Munkalapok (SheetNumber);
Névbeállítás Lap . Név = Név;
Védelem beállítása Lap . Védje();
Védelem eltávolítása Lap . Védelem megszüntetése();
Az oldal tájolásának beállítása Lap . Oldal beállítása. Tájolás = 2; 1 - álló, 2 - fekvő
A bal oldali szegély beállítása Lap . Oldal beállítása. LeftMargin = Excel. Centimeters To Points (centiméter);
A felső határ beállítása Lap . Oldal beállítása. TopMargin = Excel. Centimeters To Points (centiméter);
A megfelelő szegély beállítása Lap . Oldal beállítása. RightMargin = Excel. Centimeters To Points (centiméter);
Az alsó határ beállítása Lap . Oldal beállítása. BottomMargin = Excel. Centimeters To Points (centiméter);
Munka sorokkal, oszlopokkal, cellákkal
Az oszlop szélességének beállítása Lap . Oszlopok(Oszlopszám). ColumnWidth = Szélesség;
Egy vonal eltávolítása Lap . Sorok(RowNumber). Töröl();
Oszlop törlése Lap . Oszlopok(Oszlopszám). töröl();
Egy cella törlése Lap . Cellák (Sorszám, Oszlopszám). Töröl();
Érték beállítása Lap . Cellák (Sorszám, Oszlopszám). Érték = Érték;
Cellák egyesítése Lap . Tartomány(Lap. Cellák(Sorszám, Oszlopszám), Lap. Cellák(Sorszám1, Oszlopszám1)). Összeolvad();
A betűtípus telepítése Lap . Cellák (Sorszám, Oszlopszám). Betűtípus. Név = FontName;
A betűméret beállítása Lap . Cellák (Sorszám, Oszlopszám). Betűtípus. Méret = FontSize;
Félkövér betűtípus beállítása Lap . Cellák (Sorszám, Oszlopszám). Betűtípus. Bátor = 1 ; 1 - félkövér, 0 - normál
Dőlt betű beállítása Lap . Cellák (Sorszám, Oszlopszám). Betűtípus. Dőlt = 1 ; 1 - dőlt, 0 - normál
Aláhúzott betűtípus beállítása Lap . Cellák (Sorszám, Oszlopszám). Betűtípus. Aláhúzás = 2 ; 2 - aláhúzva, 1 - nem

Annak érdekében, hogy megtudja, melyik tulajdonságot kell megváltoztatni, vagy melyik metódust kell meghívni, használhatja makrók Excel. Ha rögzít egy makrót a szükséges műveletekkel, akkor láthatja programozási kód VBA rögzített makrón.

COMSafeArray használata

Ha nagy mennyiségű adatot tölt ki az 1C-ből az Excelbe, az objektumot felgyorsíthatja COMSafeArray. A szintaktikai segéd meghatározása szerint a COMSafeArray egy többdimenziós tömbön lévő objektumburkoló SafeArray a COM-tól. Lehetővé teszi a SafeArray létrehozását és használatát a COM-objektumok közötti adatcseréhez. Egyszerűen fogalmazva, ez egy olyan értéktömb, amely az OLE technológiát használó alkalmazások közötti cserére használható.

// COMSafeArray létrehozása
ArrayCom = Új COMSafeArray("VT_Variant", TotalColumns, TotalRows);
// A COMSafeArray feltöltése
Mert Str = 0 sor összesen – 1 hurok
Mert Szám = 0 összesen oszlop – 1 ciklus
ArrayCom . SetValue(szám, Str, érték);
EndCycle;
EndCycle;
// Lapterület hozzárendelése excel értékeket a COMSafeArray-ből
Lap . Tartomány(Lap. Cellák(1 , 1 ), List. Cells(Összes sor, Összes oszlop)). Érték = ArrayCom;

Csere ADO-n keresztül

Az ADO-n keresztül cserélt Excel-fájl egy olyan adatbázis, amely SQL-lekérdezésekkel érhető el. Az MS Excel telepítése nem szükséges, de egy ODBC illesztőprogram szükséges, amelyen keresztül történik a hozzáférés. A használt ODBC illesztőprogramot a fájl kapcsolati karakterláncának megadása határozza meg. Általában a szükséges illesztőprogram már telepítve van a számítógépen.

Az ADO-n keresztüli csere észrevehetően gyorsabb, mint az OLE-n keresztüli csere, de kirakodáskor nincs mód az Excel funkcionalitására cellák díszítésére, oldalak jelölésére, képletek beállítására stb.

Példa kirakodás:


Kapcsolat = Új COMObject("ADODB.Kapcsolat");


Összetett . ConnectionString="

|DataSource=" + Fájlnév + ";
;
Összetett . nyisd ki(); // Kapcsolat megnyitása

// Hozzon létre egy COM objektumot a parancshoz
Parancs = Új COMObject("ADODB.Command");
Csapat

// Parancsszöveg hozzárendelése táblázat létrehozásához
Csapat . parancsszöveg= "TÁBLÁZAT LÉTREHOZÁSA [1. lap] (1. oszlop char(255), 2. oszlop dátuma, 3. oszlop int, 4. oszlop lebegés)";
Csapat . végrehajt(); // Parancsvégrehajtás

// Parancsszöveg hozzárendelése táblázatsor hozzáadásához
Csapat . parancsszöveg= "INSERT INTO [Sheet1] (1. oszlop, 2. oszlop, 3. oszlop, 4. oszlop) értékek ('abvgdeo', '2017-08-11', '12345', '12345,6789')";
Command.Execute(); // Parancsvégrehajtás

// A parancs törlése és a kapcsolat bezárása
parancs = undefined;
Összetett . Bezárás();
Kapcsolat = Undefined;

Új lap létrehozásához és szerkezetének kialakításához használhatja az objektumokat ADOX.KatalógusÉs ADOX.Táblázat. Ebben az esetben a kód így fog kinézni:

// Hozzon létre egy COM objektumot a könyvvel való együttműködéshez
Könyv = Új COMObject("ADOX.Katalógus");
Könyv . ActiveConnection = Kapcsolat;

// Hozzon létre egy COM-objektumot, amely a munkalap adatstruktúrájával működik
Táblázat = Új COMObject("ADOX.Tábla");
asztal . Név = "1. lap" ;
asztal . Oszlopok. Append("Oszlop1" , 202 );
asztal . Oszlopok. Append("2. oszlop" , 7 );
asztal . Oszlopok. Append("Oszlop3" , 5 );
asztal . Oszlopok. Append("4. oszlop" , 5 );

// Hozzon létre egy lapot a könyvben a leírt szerkezettel
Könyv . táblázatok. hozzáfűz(tábla);
táblázat = undefined;
könyv = undefined;

A fenti példában a módszerben

asztal . Oszlopok. Mellékel("1. oszlop", 202);

a második paraméter az oszlop típusát adja meg. A paraméter nem kötelező, itt van néhány oszloptípus érték:

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

Példa olvasás:

// Hozzon létre egy COM objektumot a kapcsolathoz
Kapcsolat = Új COMObject("ADODB.Kapcsolat");

// Kapcsolódási karakterlánc beállítása
Összetett . ConnectionString="
|Provider=Microsoft.ACE.OLEDB.12.0;
|DataSource=" + Fájlnév + ";
|Extended Properties=""Excel 12.0 XML;HDR=IGEN"";";
Összetett . nyisd ki(); // Kapcsolat megnyitása

// Hozzon létre egy COM objektumot a kijelölés fogadásához
Kijelölés = Új COMObject("ADODB.Rekordkészlet");
RequestText = "SELECT * FROM [Sheet1$]";

// Hajtsa végre a kérést
Minta . Open(QueryText, Connection);

// A kijelölés eredményének megkerülése
Miközben NEM mintavétel. EOF() Hurok
ColumnValue1 = Kijelölés. mezőket. Item ("1. oszlop"). érték ; // Hivatkozás oszlopnév szerint
2. oszlop értéke = kijelölés. mezőket. Tétel(0 ). érték; // Lekérés oszlopindex alapján
Minta . MoveNext();
EndCycle;

Minta . Bezárás();
Minta = undefined;
Összetett . Bezárás();
Kapcsolat = undefined;

A kapcsolati karakterláncban a paraméter HDR meghatározza, hogy a lap első sora hogyan lesz érzékelve. Lehetséges opciók:

  • IGEN – az első sort az oszlopok neveként érzékeli. Az értékek név és oszlopindex alapján érhetők el.
  • NEM – Az első sor adatnak minősül. Az értékek csak oszlopindex segítségével érhetők el.

A megadott példákban csak néhány ADO objektumot vettünk figyelembe. Az ADO objektummodell a következő objektumokból áll:

  • kapcsolat;
  • parancs;
  • rekordkészlet;
  • rekord;
  • mezők;
  • Folyam;
  • hibák;
  • paraméterek;
  • tulajdonságait.

Feltöltés programozás nélkül

Az adatok 1C-ből Excelbe történő mentéséhez nem mindig tanácsos programozáshoz folyamodni. Ha Vállalati módban a felhasználó meg tudja jeleníteni a feltöltéshez szükséges adatokat, akkor ezek programozás nélkül is elmenthetők Excelbe.

Táblázat-dokumentum (például egy jelentés eredményének) mentéséhez meghívhatja a parancsot Megment vagy Mentés másként… főmenü.

A megnyíló ablakban ki kell választani a mentett fájl könyvtárát, nevét és formátumát.

Az adatok mentéséhez dinamikus listák(például egy cikklista) a következőket kell tennie:

  1. Az adatokat a paranccsal egy táblázatba írja ki Tovább ⇒ Lista megjelenítése...;
  2. Mentse el a táblázatkezelő dokumentumot a kívánt formátumban.



Betöltés...
Top