Vad heter programmet för excel i 1c. Vilket är bättre - 1C eller Excel? Ladda upp utan programmering

Det finns olika sätt att öppna en Excel-fil i 1C och vice versa. Nybörjare föredrar enklare operationer genom att spara dokumentet i ett annat format eller använda speciella program. Men det är värt att lägga ner lite ansträngning och lära sig hur man arbetar med mjukvaruverktyg för att visa och bearbeta data från ett program till ett annat. Dessa grundläggande programmeringsfärdigheter hjälper dig att undvika rutinuppgifter i framtiden.

Hur man öppnar Excel-dokument i 1C och vice versa

Microsoft Excel-kalkylarksredigeraren är överlägsen i funktionalitet jämfört med 1C-produkter för bokföringsprogram. Därför föredrar 1C-användare att utföra vissa operationer i en kalkylbladsredigerare och sedan returnera data till redovisningsprogrammet. Och detta är inte förvånande, för tidigare utfördes redovisningen av många företag uteslutande med hjälp av Microsoft-program. Men med den nuvarande nivån av automatisering av företags affärsprocesser är det omöjligt att överge specialiserade program. För att etablera interaktion mellan olika applikationer finns det följande enkla sätt:

    När du har att göra med filer av mjukvaruprodukter som inte är installerade på din nuvarande dator är det enklaste sättet att använda en speciell applikation för att konvertera Excel-tabeller till 1C-format och vice versa. Den finns på 1C-produktwebbplatsen.

    Om din dator har både 1C och Excel kan du manuellt öppna filen i dess "inhemska" applikation och sedan spara den i formatet av ett annat program. Vanligtvis är det här alternativet tillgängligt när du sparar en utskrivbar layout eller layout.

    Användare av 1C 7.7 kan uppgradera till version 1C 8, som har en förbättrad tabellredigerare.

Hur 1C och Excel kan interagera programmatiskt

Interaktion mellan 1C och Excel kan utföras på programnivå med hjälp av OLE Automation-teknik utvecklad av Microsoft. Det låter dig komma åt COM-objekt direkt från skripttolkare av olika program. Enkelt uttryckt låter OLE dig överföra ett arbete från ett program till ett annat, och sedan återställa verket till den ursprungliga applikationen. Detta är precis vad revisorer behöver från Microsofts kalkylbladsredigerare.

Du behöver inte vara programmerare för att använda OLE-verktyg. Även om den första bekantskapen med kodrader kommer att åtföljas av fel, kommer kontrollen att hjälpa till att identifiera dem, och erfarenheten kommer att hjälpa till att undvika dem i framtiden. Nedan finns de mest populära kommandona (de kallas listor) för att arbeta med Excel-data i redovisningsprogram och vice versa.

Hur man öppnar en Excel-fil i 1C programmatiskt

Så om båda programmen är installerade på din dator, mellan vilka du vill utbyta data, kan du organisera interaktionen programmatiskt. För att göra detta måste du starta båda programmen och sedan använda OLE för att etablera åtkomst från 1C till Excel:

  • Undantag

    Report(ErrorDescription() + "Excel är inte installerat på den här datorn!");

  • Slut på försök.

Åtkomst till tabellredigeraren är installerad, nu använder du följande kommandon som du behöver få tillgång till:

    specifikt dokument:

    • Bok = Excel.WorkBooks.Open(FilePath)

    • Sheet = Book.WorkSheets(SheetNumber);

  • inklusive med ett specifikt bladnummer:

    inklusive med ett specifikt arknamn:

    • Sheet = Book.WorkSheets(SheetName);

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

För att läsa data från första sidan i en fil, använd följande listor:

    Excel = CreateObject("Excel.Application");

    Bok = Excel.WorkBooks.Open(FilePath);

    Sheet = Book.WorkSheets(1);

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

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

    För rad = 1 av TotalRows loop

    • För kolumn = 1 efter totalkolumncykel

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

      EndCycle;

    EndCycle;

Kom ihåg att sökvägen till filen måste anges i sin helhet. När du sparar ett dokumentnamn kan du inte inkludera tecken som \, /, :, *, ?, ", >,< и |.

Hur man öppnar en 1C-fil via Excel programmatiskt

För att registrera data i Excel måste du:

    eller öppna ett befintligt dokument:

    • Bok = Excel.WorkBooks.Open(Path to File) - analogt med att läsa en Excel-fil från 1C;

    eller lägg till en ny:

    • Workbook = Excel.WorkBooks.Add();

    Du kan skapa ett nytt ark i ett nytt dokument:

    • Sheet = Book.Sheets.Add();

    och lägg till ett nytt värde i cellen:

    • Sheet.Cells(RowNumber, ColumnNumber).Value = Value; (metoder för att skriva värden med OLE beskrivs i detalj på Internet).

  • Book.SaveAs(FilePath);

    Undantag

    Report(ErrorDescription()+"Filen har inte sparats!");

    Slut på försök.

När du har arbetat klart med kalkylarksredigeraren avslutar du med specialkommandot (Excel.Application.Quit();). Denna metod hjälper till att spara datorresurser under fortsatt arbete.

Faror vid utbyte av data mellan 1C och Excel

1C och Excel har utvecklats av olika företag och använder olika sätt att hantera data. Därför, när du överför tabeller från ett program till ett annat, kom ihåg följande fallgropar:

    Olika separatorer i bråktal. Microsoft separerar decimaltal med kommatecken. Därför, när du överför tabeller från ett redovisningsprogram, bli inte förvånad över överflöd av datum och annan förvirring. Det är bara det att i ett redovisningsprogram kan en period användas för att skriva bråk, som Microsofts kalkylbladsredigerare kommer att tolka som en datumavgränsare, och 15.5 kommer att förvandlas till 15 maj. För att bearbeta redovisningsdata i en kalkylbladsredigerare måste avgränsaren ersättas med ett kommatecken.

    Vid överföring av data från Excel till 1C kan de Excel-konstanter som inte finns i redovisningsprogrammet visas felaktigt. För att dechiffrera dem måste du gå till hjälpen för kalkylbladsredigeraren eller in i felsökningsläge och kontrollera det numeriska uttrycket för olika konstanter.

Om du behöver utbyta stora mängder data eller inte kan bli av med fel, kontakta Setby-företagets professionella för hjälp. Vi hjälper dig att lösa dina problem på programnivå och förstå de kommandon som krävs för ditt arbete.

Ganska ofta, när jag kommunicerar med potentiella kunder, hör jag att tabellfunktionaliteten från kontorspaketet är tillräckligt för dem, och de ser inte poängen med 1C-program. Detta beror på att vissa människor fortfarande associerar denna lösning endast med program för revisorer, vilket inte är sant.

Excel är en universell och massproducerad produkt, det kan du inte argumentera mot. Nästan alla kan använda detta program, till skillnad från 1C-utvecklingar, som riktar sig till smala specialister. Med hjälp av "gröna" tabeller kan du fritt implementera den nödvändiga funktionaliteten, vilket kommer att vara bekvämt: här är den ekonomiska modellen för organisationen med alla ömsesidiga uppgörelser, förvaltningsredovisning, även reglerade, ett stort urval av datavisualisering, förmågan att självständigt utöka programmets möjligheter med hjälp av olika tillägg - allt är i dina händer, allt från grunden...

Det är bra om du precis har startat ditt företag, gradvis tar hänsyn till de nödvändiga uppgifterna i tabellen om relationer med kunder, leverantörer, tillsynsmyndigheter, bygger din egen godtyckliga struktur, men vad du ska göra härnäst när databasen blir voluminös och antalet anställda i dussintal? Räkna fortfarande enligt dina egna parametrar? Jag är för att inte blanda ihop bekvämlighet med vana, som ofta stör systematiseringen av verksamheten och följaktligen dess optimering.

För tydlighetens skull, låt oss föreställa oss vilka behov som kan uppstå för redovisningsautomatisering, till exempel för handel:

1. Analys av försäljning inom en viss period.

Chefen för försäljningsavdelningen kan analysera försäljningsdata. Det är viktigt för honom att förstå om planen genomförs, hur effektiva hans strategier är, så att han i händelse av ineffektivitet kan göra snabba justeringar av arbetet.

2. Lagerbokföring.
Behöver jag förklara att det för försäljning också är viktigt att förstå tillgången på varor i lager, vilka varor som kan reserveras och vilka som är slut och vad som behöver beställas? Jag tror att allt är klart här.

3. Upprätthålla en databas över motparter.
Även om ägaren bara säljer det som kan köpas här och nu, vilket är typiskt för B2C-sektorn, så har han ett lite annorlunda förhållande till leverantörsbasen - kontrakt, primär... Föreställ dig hur bekvämt det är när allt kopplat till leverantör är automatiskt Visas den omedelbart i en enda databas? Den ansvariga för lagret ser omedelbart tillgången på varor i lagret, en annan anställd som är ansvarig för dokument övervakar information om deras tillgänglighet, om alla skyldigheter enligt avtalsförhållanden uppfylls, vem är skyldig vem och hur mycket. Och i händelse av avvikelser kan du stämma av data för en viss period, vilket genererar ett resultat på mindre än en minut.

4. Organisationens vinst.
Att generera en vinstrapport kommer inte att vara svårt, eftersom all information om utgifter och inkomster redan finns i databasen. Förutsatt att informationen läggs in i tid, åtminstone senast det datum som krävs. Den grundläggande faktorn här är användarens personliga ansvar.

Om du inte har många kunder och leverantörer kommer Excel verkligen att passa dig, eftersom det finns gott om tid att designa dina egna diagram i tabellen och fylla i dem, följt av att distribuera dokument i olika mappar på datorn: kontrakt, leverantörer, klienter, klienter i grannskapet, klienter under utveckling, klienter som ska raderas – en oändlig och fascinerande process att skapa mappar i en mapp. Och om det finns mycket information, är det bekvämt att hålla reda på din databas? Naturligtvis finns det alltid undantag, ibland finns det organisationer med stor omsättning vars ekonomiska data endast upprätthålls i Excel. Hur lång tid tar det för dem att utbyta och kombinera data mellan avdelningar? Jag kommer att svara: mycket.

Jag kan inte föreställa mig hur man snabbt hittar den du behöver i ett stort antal Excel-dokument organiserade i ett godtyckligt system. Till exempel vid tillhandahållande av handlingar för krav från skatteverket. Hur kommer en revisor att lämna in rapporter till tillsynsmyndigheter när all information är spridd? Bokföring kan givetvis läggas ut på entreprenad och vissa företagare kanske tyvärr inte bryr sig om vilka processer en given specialist kan ha så länge han balanserar balansen. Men även om så är fallet, hur organiseras då processen för dokumentutbyte? Hur snabbt kommer en extern medarbetare att förstå den improviserade informationsstrukturen?

Jag kan inte säga detsamma om 1C, eftersom all information där är strukturerad och sammankopplad:

    En enda databas för både distans- och heltidsanställda, där du kan arbeta med alla standardiserade och anpassade dokument;
    Rapportering till tillsynsmyndigheter genereras på basis av data som redan återspeglas i programmet; det finns inget behov av att öppna många filer, kombinera flera värden i en tabell för att få slutliga resultat.
”1C”, på ett bra sätt, är ett multitasking-system som syftar både till typiska redovisningsuppgifter och till att automatisera alla organisatoriska processer, beroende på verksamhetsområde. Huvudordet här är system. Ingen hindrar dig från att organisera ditt affärssystem i Excel, men varför återuppfinna hjulet när det finns lösningar som täcker nästan alla behov av att optimera tid och ekonomiska kostnader, och hjälper till att systematisera ditt arbete?

Till försvar för Excel

Det verkade nog som om jag är emot att konstruera data i "gröna" tabeller. Inte alls. Faktum är att jag själv ofta gör en del affärer i Excel: om jag behöver godtyckliga beräkningar, om jag behöver segmentera data efter klient, utföra analyser baserade på parametrar som inte finns i 1C - ja, detta händer - går jag till " Excel." Enkelt uttryckt, i tabeller gör jag beräkningar och icke-standardiserade analyser, men sedan systematiserar jag allt i 1C i alla fall.

Och sedan, för att se nedladdade filer från 1C behöver du fortfarande Excel, eftersom data i 1C lagras i kalkylblad. Känner du att det här är en ond cirkel? Jag säger det annorlunda: "1C" och "Excel" går sida vid sida som två partners, men var och en av dem har sitt eget syfte, de kompletterar varandra väl, men ersätter inte varandra.

Om du behöver systematisera dina angelägenheter med hänsyn till lagstiftningssystemet i vår stat, med hänsyn till verksamhetens särdrag och fokus, särskilt när det gäller stora mängder information, behöver du 1C. Om du behöver godtyckliga beräkningar, bygga en strategi från början, visualisera icke-standardiserade analysdata, då är Excel till din tjänst. Men det är mycket bekvämare att arbeta med dessa lösningar samtidigt.


Vad blir slutresultatet - "1C" eller "Excel"?

I början, om frågan handlar om ekonomi för automatisering, även om grundläggande 1C-program inte kostar så mycket pengar, skulle jag använda Excel. Ett stort plus är att data från "gröna" tabeller kan laddas in i 1C utan förlust. Men när du skalar, skulle jag råda dig att vara uppmärksam på program för att automatisera affärsprocesser. Det finns många av dem, och det kanske inte nödvändigtvis är 1C...

Övergången till "1C" kan utföras när du förstår att du behöver optimera dina resurser, inklusive automatisering av frågor relaterade till relationer med kunder och leverantörer och med tillsynsmyndigheter. I allmänhet, justera dina arbetsprocesser för att öka verksamhetens effektivitet när bearbetning av information kommer att ta mycket tid och Excel-filer inte längre kommer att klara av mängden indata.

Men varje "1C" kanske inte passar dig, du måste ta hänsyn till olika faktorer: verksamhetens särdrag och omfattning, omfattningen, behovet av dagliga uppgifter, rutinen som måste minimeras. Allt är individuellt. Sanningen, som jag redan sa, är någonstans mellan "1C" och "Excel" - den kompletterar varandra.

Det är nog allt. Men om du har några frågor, vänligen kontakta oss, vi ska försöka hjälpa dig. Framgångsrika affärsprocesser, kollegor!

Denna metod är enkel. Dess väsen är att föremålet Tabelldokument har metoder:

  • Skriv ner (< ИмяФайла>, < ТипФайлаТаблицы >) för att ladda upp data till en fil;
  • Läsa (< ИмяФайла>, < СпособЧтенияЗначений >) för att ladda data från en fil.

Uppmärksamhet!

Metoden Write() är tillgänglig på både klienten och servern. Metoden Read() är endast tillgänglig på serversidan. Måste komma ihåg detta
när du planerar klient-server-interaktion.

Låt oss titta på ett exempel på hur du sparar ett kalkylarksdokument till en fil. Det är nödvändigt att skapa och fylla TabularDocument-objektet på något sätt, och avlastning till filen görs med bara en rad:

TabDoc . Write(FilePath, TabularDocumentFileType. XLSX);

Här TabDoc- genererat kalkylarksdokument, Sökvägen till filen— namnet på filen som ska laddas upp, TabularDocumentFileType.XLSX— formatet på den skapade filen. Följande Excel-format stöds:

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

TabDoc = Nytt TabularDocument;
TabDoc . Read(PathToFile, Method of ReadingTabularDocumentValues.Value);

Här Sökvägen till filen— sökväg till den nedladdade Excel-filen. Metod för att läsa värden av ett tabelldokument.Value bestämmer hur data som läses från ett källdokument ska tolkas. Tillgängliga val:

  • Menande;
  • Text.

Byt via OLE

Utbyte via OLE automationsteknik är kanske det vanligaste alternativet för att programmatiskt arbeta med Excel-filer. Det låter dig använda all funktionalitet som tillhandahålls av Excel, men är långsammare jämfört med andra metoder. För att utbyta via OLE krävs MS Excel-installation:

  • På slutanvändarens dator, om utbytet sker på klientsidan;
  • På 1C:Enterprise-serverdatorn, om utbytet sker på serversidan.

Exempel avlastning:

// Skapa ett COM-objekt
Excel = New COMObject("Excel.Application");
// Inaktivera varningar och frågor
Excel . DisplayAlerts = False;
// Skapa en ny bok
bok = Excel. Arbetsböcker. Lägg till();
// Position på första arket
Ark = Bok. Arbetsblad(1);

// Skriv ett värde till en cell
Ark . Celler (RadNumber, KolumnNumber). Value = CellValue;

// Spara filen
bok . SaveAs(Filnamn);


Excel . Sluta med();
Excel = 0;

Exempel läsning:

// -- ALTERNATIV 1 --

// Skapa ett COM-objekt
Excel = New COMObject("Excel.Application");
// Öppna en bok
bok = Excel. Arbetsböcker. Öppen( Sökvägen till filen );

Ark = Bok. Arbetsblad(1);

// Stänger boken
bok . Stäng(0);

// Stäng Excel och frigör minne
Excel . Sluta med();
Excel = 0;

// —— ALTERNATIV 2 ——

// Öppna en bok
bok = GetCOMObject( Sökvägen till filen );
// Positionering på önskat ark
Ark = Bok. Arbetsblad(1);

// Läs cellvärdet, vanligtvis finns cellgenomgångsslingan här
CellValue = Ark. Celler (RadNumber, KolumnNumber). Värde;

// Stänger boken
bok . Ansökan. Qui t();

För gå förbi För alla ifyllda rader i Excel-kalkylbladet kan du använda följande tekniker:

// -- ALTERNATIV 1 --
Antal rader = Ark. Celler (1, 1). SpecialCells(11). Rad;
För radnummer = 1 efter antal rader cykel
CellValue = Ark. Celler (RadNumber, KolumnNumber). Värde;
EndCycle;

// —— ALTERNATIV 2 ——
RadNumber = 0 ;
Medan sanningscykeln
RowNumber = RowNumber + 1 ;
CellValue = Ark. Celler (RadNumber, KolumnNumber). Värde;
Om INTE ValueFilled(CellValue) Sedan
Avbryta;
endIf;
EndCycle;

Istället för att gå igenom alla rader på arket sekventiellt kan du dumpa all data i en array och arbeta med honom. Detta tillvägagångssätt kommer att vara snabbare när du läser en stor mängd data:

TotalColumns = Ark. Celler (1, 1). SpecialCells(11). Kolumn;
Totalt rader = Löv. Celler (1, 1). SpecialCells(11). Rad;

Område = Löv. Range(Sheet. Cells(1, 1), Sheet. Cells(TotalRows,TotalColumns));
Data = Region. Värde. Lasta av();

Tabellen nedan visar de mest populära egenskaperna och metoderna för att arbeta med Excel via OLE:

Handling Koda En kommentar
Arbetar med applikationen
Ställa in programfönstrets synlighet Excel . Synlig= Falskt;
Ställa in varningsläge (display/ej display) Excel . DisplayAlerts= Falskt;
Stänger ansökan Excel . Sluta med();
Jobbar med en bok
Skapar en ny bok bok = Excel. Arbetsböcker. Lägg till();
Öppna en befintlig arbetsbok bok = Excel. Arbetsböcker. Öppna (Filnamn);
Sparar en bok bok . SaveAs(Filnamn);
Stänger boken bok . Stäng(0);
Arbeta med ett ark
Ställa in det aktuella arket Ark = Bok. Arbetsblad(SheetNumber);
Ställer in namnet Ark . Namn = Namn;
Sätta upp skydd Ark . Skydda();
Ta bort skydd Ark . UnProtect();
Ställa in sidriktningen Ark . Utskriftsformat. Orientering = 2; 1 - stående, 2 - liggande
Ställer in den vänstra kanten Ark . Utskriftsformat. Vänstermarginal = Excel. CentimetersToPoints(Centimeter);
Ställa in den övre gränsen Ark . Utskriftsformat. TopMargin = Excel. CentimetersToPoints(Centimeter);
Ställer in rätt kant Ark . Utskriftsformat. RightMargin = Excel. CentimetersToPoints(Centimeter);
Inställning av den nedre gränsen Ark . Utskriftsformat. BottomMargin = Excel. CentimetersToPoints(Centimeter);
Arbeta med rader, kolumner, celler
Ställa in kolumnbredd Ark . Kolumner(KolumnNumber). ColumnWidth = Width;
Ta bort en rad Ark . Rader(RadNumber). Radera();
Ta bort en kolumn Ark . Kolumner(KolumnNumber). Radera();
Ta bort en cell Ark . Celler (RadNumber, KolumnNumber). Radera();
Ställa in värdet Ark . Celler (RadNumber, KolumnNumber). Värde = Värde;
Slår ihop celler Ark . Range(Sheet. Cells(RowNumber, ColumnNumber), Sheet. Cells(RowNumber1, ColumnNumber1)). Sammanfoga();
Ställa in typsnittet Ark . Celler (RadNumber, KolumnNumber). Font. Namn = FontName;
Ställa in teckenstorlek Ark . Celler (RadNumber, KolumnNumber). Font. Storlek = Teckenstorlek;
Ställa in fetstil Ark . Celler (RadNumber, KolumnNumber). Font. Djärv = 1 ; 1 - fetstil, 0 - normal
Inställning av kursiv stil Ark . Celler (RadNumber, KolumnNumber). Font. Kursiv = 1 ; 1 - kursiv, 0 - normal
Ställa in det understrukna teckensnittet Ark . Celler (RadNumber, KolumnNumber). Font. Understrykning = 2 ; 2 - understruken, 1 - inte

För att ta reda på vilken fastighet som behöver ändras eller vilken metod som ska anropas kan du använda makron Excel. Om du spelar in ett makro med de nödvändiga åtgärderna kan du titta på VBA-koden för det inspelade makrot.

Använder COMSafeArray

När du laddar ner stora mängder data från 1C till Excel kan du använda objektet för att snabba upp COMSafeArray. Enligt definitionen från syntaxassistenten är COMSafeArray ett objektomslag över en flerdimensionell array SafeArray från COM. Låter dig skapa och använda SafeArray för att utbyta data mellan COM-objekt. Enkelt uttryckt är det en rad värden som kan användas för att utbyta mellan applikationer som använder OLE-teknik.

// Skapa COMSafeArray
ArrayCom = New COMSafeArray("VT_Variant" , TotalColumns, TotalRows);
// Fyll COMSafeArray
För Sida = 0 av TotalLines - 1 cykel
För Antal = 0 totalt kolumner - 1 cykel
ArrayCom . SetValue(Antal, Sida, Värde);
EndCycle;
EndCycle;
// Tilldela ett Excel-kalkylbladsområde till värden från COMSafeArray
Ark . Range(Sheet. Cells(1, 1), Sheet. Cells(TotalRows,TotalColumns)). Värde = ArrayCom;

Byt via ADO

En Excel-fil, när den utbyts via ADO, är en databas som kan nås med hjälp av SQL-frågor. Installation av MS Excel krävs inte, men du måste ha en ODBC-drivrutin som du får tillgång till. Vilken ODBC-drivrutin som används bestäms genom att ange anslutningssträngen till filen. Vanligtvis är den nödvändiga drivrutinen redan installerad på datorn.

Utbyte via ADO går märkbart snabbare än utbyte via OLE, men vid uppladdning går det inte att använda Excel-funktionalitet för att designa celler, lägga ut sidor, sätta formler osv.

Exempel avlastning:


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


Förening . ConnectionString = "

|Datakälla=" + Filnamn + ";
;
Förening . Öppen(); // Öppna en anslutning

// Skapa ett COM-objekt för kommandot
Kommando = Nytt COMObject("ADODB.Command");
Team

// Tilldela kommandotext för att skapa en tabell
Team . CommandText = "SKAPA TABELL [Sheet1] (kolumn1 char(255), kolumn2 datum, kolumn3 int, kolumn4 flytande)";
Team . Kör(); // Kör kommandot

// Tilldela kommandotext för att lägga till en tabellrad
Team . CommandText = "INSERT INTO [Sheet1] (Column1, Column2, Column3, Column4) värden ('abvwhere', '8/11/2017', '12345', '12345,6789')";
Command.Execute(); // Kör kommandot

// Ta bort kommandot och stäng anslutningen
Kommando = Odefinierat;
Förening . Stänga();
Anslutning = Odefinierad;

För att skapa ett nytt ark och forma dess struktur kan du använda objekt ADOX.Catalog Och ADOX.Table. I det här fallet kommer koden att se ut så här:

// Skapa ett COM-objekt för att arbeta med boken
bok = New COMObject("ADOX.Catalog");
bok . ActiveConnection = Anslutning;

// Skapa ett COM-objekt för att arbeta med datastrukturen på arket
Tabell = New COMObject("ADOX.Table");
Tabell . Namn = "Sheet1" ;
Tabell . Kolumner. Append("Kolumn1", 202);
Tabell . Kolumner. Append("Kolumn2", 7);
Tabell . Kolumner. Append("Kolumn3", 5);
Tabell . Kolumner. Append("Kolumn4", 5);

// Skapa ett ark med den beskrivna strukturen i arbetsboken
bok . Tabeller. Append(Tabell);
Tabell = Odefinierad;
Bok = Odefinierat;

I exemplet ovan, i metoden

Tabell . Kolumner. Bifoga("Kolumn1", 202);

den andra parametern anger kolumntypen. Parametern är valfri, här är några kolumntypvärden:

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

Exempel läsning:

// Skapa ett COM-objekt för anslutningen
Connection = New COMObject("ADODB.Connection");

// Ställ in anslutningssträngen
Förening . ConnectionString = "
|Provider=Microsoft.ACE.OLEDB.12.0;
|Datakälla=" + Filnamn + ";
|Utökade egenskaper=""Excel 12.0 XML;HDR=JA"";";
Förening . Öppen(); // Öppna en anslutning

// Skapa ett COM-objekt för att ta emot urvalet
Välj = New COMObject("ADODB.Recordset");
RequestText = "VÄLJ * FRÅN [Sheet1$]";

// Utför begäran
Prov . Open(QueryText, Connection);

// Förbigå provresultatet
Inte ett urval ännu. EOF() Slinga
Kolumn1 värde = Urval. Fält. Objekt("Kolumn1"). Värde ; // Åtkomst genom kolumnnamn
Kolumn2Värde = Urval. Fält. Artikel(0). Värde; // Åtkomst via kolumnindex
Prov . MoveNext();
EndCycle;

Prov . Stänga();
Sample = Odefinierat;
Förening . Stänga();
Anslutning = Odefinierad;

I anslutningssträngen parametern HDR bestämmer hur den första raden på arket kommer att uppfattas. Möjliga alternativ:

  • JA - den första raden behandlas som kolumnnamn. Värden kan nås med namn och kolumnindex.
  • NEJ - den första raden behandlas som data. Värden kan endast nås via kolumnindex.

Dessa exempel täcker endast ett fåtal ADO-objekt. ADO-objektmodellen består av följande objekt:

  • förbindelse;
  • Kommando;
  • rekorduppsättning;
  • Spela in;
  • Fält;
  • Ström;
  • Fel;
  • parametrar;
  • Egenskaper.

Ladda upp utan programmering

För att spara data från 1C till Excel är det inte alltid tillrådligt att tillgripa programmering. Om användaren i Enterprise-läge kan visa de data som krävs för nedladdning, kan de sparas i Excel utan programmering.

För att spara ett kalkylarksdokument (till exempel resultatet av en rapport) kan du anropa kommandot Spara eller Spara som… huvudmeny.

I fönstret som öppnas måste du välja katalog, namn och format för den sparade filen.

För att spara data från dynamiska listor (till exempel en lista med objekt) måste du:

  1. Mata ut data till ett kalkylarksdokument med kommandot Mer ⇒ Lista...;
  2. Spara kalkylarksdokumentet i önskat format.

I 1C finns det två sätt att arbeta med MS Excel-filer: genom ett COM-objekt och inbyggda 1C-verktyg med hjälp av ett kalkylarksdokumentobjekt. Låt oss titta på båda dessa metoder mer i detalj.

1. Arbeta igenom ett COM-objekt.

Denna metod kräver installerat MS Excel, och om du arbetar med en fil på servern måste MS Excel installeras på servern, om på klienten så krävs MS Excel även på klientsidan.

Exempel (du kan se det i textform i slutet av artikeln):

Det bör noteras att alla objekt, metoder och egenskaper som tillhandahålls av COM-objektet "Excel.Application" är objekt, metoder och egenskaper hos VBA, MS Office-programmeringsspråket.

Notera:

Ibland behöver du arbeta med en befintlig mall. Sedan måste vi lagra den här mallen någonstans så att alla nödvändiga användare har tillgång till den. Det finns dock en enklare lösning, spara mallen som en binär layout.

2. Arbeta igenom tabelldokument 1C.

1C-kalkylarksdokumentet stöder MS Excel-formatet för inspelning från plattform 8, men för öppning endast från plattform 8.3.6. Dessutom, när de öppnas, laddas alla ark i ett kalkylarksdokument. Sedan version 8.3.10, vid laddning, laddas olika ark som olika områden.

Ett exempel är mycket enkelt och kräver ingen särskild uppmärksamhet:

Men här har vi ett problem. När du spelar in från 1C i en Excel-arbetsbok är visningen av arknamn inaktiverat som standard.

Detta problem kan lösas på två sätt, 1 - i själva boken, aktivera visningen av ark i inställningarna (inte alla användare kommer att acceptera att göra detta), 2 - gör detta genom ett COM-objekt (vi behöver återigen MS Excel installerat ).

Efter detta lilla tillägg kommer arketiketter att synas i MS Excel-filen.

Att läsa MS Excel är inte så lätt, eftersom läsmetoden bara är tillgänglig på servern eller den tjocka klienten. För att göra detta måste vi överföra MS Excel-filen till servern.

&OnClient

Procedur CreateDocument()

Undantag

Slutförsök;

Book = Excel.WorkBooks.Add(); //Skapa en ny MS Excel-arbetsbok

Sheet = Book.WorkSheets.Add(); //Lägg till ett ark

Sheet.Name = "Exempel från 1C"; //Ange arknamnet

Sheet.Cells(1,1).Value = "Låt oss skapa en formel";!}

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

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

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

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

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

Book.Close();

Slut på förfarandet

&På server

Funktion GetLayoutServer()

Return FormAttributesValue("Objekt").GetLayout("TemplateForUpload"); //På detta sätt får vi den externa bearbetningslayouten;

EndFunction

&OnClient

Procedurarbete()

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

Undantag

Report("Ett försök att ansluta Excel-komponenten misslyckades. Excel kanske inte är installerat på den här datorn!");

Slutförsök;

Layout = GetLayoutServer();

Layout.Write(TemporaryFileName);

Har du en fråga eller behöver hjälp av en konsult?

Bok = Excel.WorkBooks.Open(TemporaryFileName);

SheetTemplate = Book.WorkSheets(1);

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

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

SheetTemplate.NumberFormat = "dd/mm/åå;@"; // Ange datumformat, detta format erhölls genom att spela in ett makro i MS Excel

SheetTemplate.Columns("B:B").EntireColumn.AutoFit; // Sträck ut kolumnen så att datumet passar exakt

Book.SaveAs(Filnamn);

Book.Close();

Slut på förfarandet

&OnClient

Slut på förfarandet

&OnClient

Procedur WriteTabularDocument()

TabularDocument = New TabularDocument();

TabularDocument.Area("R1C1").Text = "Exempel på en post i MS Excel från 1C";

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

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

Slut på förfarandet

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

Address=PlaceInTemporaryStorage(BinaryData,ThisForm.UniqueIdentifier);

TabularDocument = UploadOnServer(Address);

TabularDocument.Show();

Slut på förfarandet

&På server

Funktion UploadOnServer(adress)

TemporaryFileName = GetTemporaryFileName("xlsx");

FileData = GetFromTemporaryStorage(Address);

FileData.Write(TemporaryFileName);

TabularDocument = New TabularDocument();

returnera TabularDocument;