Domov / Návody pre Windows / Pripojenie k externému zdroju údajov 1s 8.3. Externé zdroje údajov. Príklad pripájacieho reťazca

Pripojenie k externému zdroju údajov 1s 8.3. Externé zdroje údajov. Príklad pripájacieho reťazca

Prečo? túto príležitosť vzbudzuje taký záujem? Každý, kto programoval v 1C, je celkom oboznámený s SQL a aspoň vo všeobecnosti oboznámený s architektúrou a princípmi vývoja iných technologických platforiem pre obchodné aplikácie vám s pevnou istotou povie, čo sa mu na 1C páči najviac. Samozrejme, tvorca dotazov je najpohodlnejší a najpremyslenejší mechanizmus na písanie dotazov na získavanie údajov z relačných štruktúr, s akým som sa kedy osobne stretol. A teraz nám 1C dal takú skvelú príležitosť použiť ju nielen s 1C, ale aj s akýmikoľvek inými stolmi. Tu je len kopa "muchy" naliata do tohto "sudu medu". Všetko v poriadku:

1) Nastavenie a používanie- bez "tancovania s tamburínou" to nepôjde
a) Pridať externý zdroj dáta - ako nič zložité
b) zaškrtnite políčko "Vybrať zo zoznamu" - je to potrebné - je potrebné skontrolovať výkon na začiatku a ušetriť vás od zbytočných problémov
c) - nezabudnite stlačiť "..." - pripojenie je ODBC. Nie OLEDB ako sme všetci zvyknutí, ale o level nižšie

D) Tu buďte VEĽMI OPATRNÍ.

Toto je ovládač ODBC - ak používate verziu klient-server, musí byť na serveri. Ak vyvíjate na jednom systéme, a pracovná verzia na druhej strane (ako to zvyčajne býva) sa uistite, že vás nečakajú žiadne prekvapenia. Zvláštne odporúčanie, ale vyberte si najstarší alebo najbežnejší ovládač, ak vám nezáleží na rýchlosti a nemienite ísť za hranice štandardu SQL92. Toto vám poskytne lepšia kompatibilita. Napríklad pre SQL Server 2008 najlepší vodič bude SQL Server Native Client 11, ale odporúčam zvoliť len SQL Server, inak bude potrebné nainštalovať tohto veľmi natívneho klienta buď na server alebo na všetky klientske počítače (v prípade použitia verzie súboru) a bude pri jednoduchých úlohách neprinášajú veľa zisku.
e) Štandardné dialógové okná výberu servera

E) Odporúčam odpovedať „áno“ na otázku uloženia hesla, inak nebude fungovať začatie tohto podnikania.
g) Vyberte si tabuľku a detaily... skvelá príležitosť - môžete si ju ihneď premenovať, ako sa vám páči (a detaily tiež), pričom vo vlastnostiach uvidíte názvy polí zdroja údajov

H) A teraz spustíte, otvoríte návrhára dotazov - hlúpo vyberiete všetky záznamy z tabuľky a OPA - chyba. Čo robiť? Ak máte spravované rozhranie, pozrite sa do servisného menu a ak máte normálne...
Osobne som použil tento kód:
Kód 1C v 8.x Parametre = ExternalDataSources.DAX.GetCommonConnectionParameters();
Parameters.AuthenticationStandard = true;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=database";
Parametre.DBMS = "MSSQLServer";

ExternalDataSources.DAX.SetCommonConnectionParameters(Parameters);
ExternalDataSources.DAX.SetUserConnectionParameters(UserName(), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();
Možno niektoré kúsky nie sú potrebné, ale ide to.
Kód musíte vykonať RAZ. Potom sa to normálne spojí ... samozrejme mystika - prečo to bolo potrebné, nie je jasné ...

2) Zdroje údajov len na čítanie- Áno, zázraky sa nedejú ... ale niekedy chcete ....

3) NEPOUŽÍVAJTE ICH SPOLU S INTERNÝMI ZDROJMI ÚDAJOV
Mňa osobne táto skutočnosť na mieste zabila.

Ako to .... čo čakali a už si predstavovali a lízli ako teraz v jednej požiadavke spojíme naše dáta s 1C, otočíme - zoskupíme, vložíme do prehľadu, ale nebolo to tam .. .
Ale samozrejme, to nezastaví skúsených ľudí ... aká myšlienka prišla na myseľ? Správne - dočasné tabuľky:

4) NEPOUŽÍVAJTE ICH SPOLU S DOČASNÝMI ​​TABUĽKAMI

Ale toto už nevyzerá ako technologické ťažkosti, ale veľmi podobne ako to, čo od nás chcú, "aby sa život nezdal ako raj" :).

5) Možno použiť len v SKD spojeniach
Pre tých, ktorí nevedia, je to v ACS na karte "Prepojenia na množinu údajov". Ako často ich používate? Pohodlne? Zrejme nás chcú prinútiť, aby sme ich používali častejšie. Ale je tam stĺpec "Podmienka prepojenia" a "Parameter odkazu". Príklad ich použitia v žiadnej typickej konfigurácii som nenašiel, v dokumentácii ani v Khrustaleve akosi nie je všetko prehľadné. Môže mi niekto vysvetliť, ako funguje "podmienka prepojenia". Ak tam napíšete SourceAttribute = ReceiverRevision, nefunguje to. Samozrejme, podmienka sa dá zapísať do políčka "Výraz" - vo väčšine prípadov to stačí ... ale nejako to nie je veľmi jednoduché.

Celkovo bol tento problém predtým vyriešený niekde takto:
Kód 1C v 8.x Funkcia InitializeDataSource()

DateStart = BuilderSettings.Settings.DataParameters.Items.Value;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value;
Ak DateCon > "20100101" Potom
DateCon = "20100101";
Koniec Ak;

QN = NewQualifiersNumber(15,2);
cs = NewStringQualifiers(255);

Číslo poľa = Nové pole ();
ArrayNumber.Add(Type("Číslo"));

ArrayString = Nové pole ();
ArrayString.Add(Type("String"));

ArrayData = New Array();
ArrayDate.Add(Type("Dátum"));

//V tabuľke vyplníme účtovný náklad
TypeNumber = NewTypeDescription(ArrayNumber,KN);
StringType = NewTypeDescription(ArrayString, CS);
TypeDate = NewTypeDescription(ArrayDate);

//tabuľka na načítanie údajov z SQL
TK = New ValueTable();
TK.Columns.Add("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Obdobie", TypeDate);

TK.Indices.Add("Obdobie");

// Pripojte sa k SQL
ConnectionString = "Poskytovateľ=SQLOLEDB.1;Pretrvávajúce informácie o zabezpečení=Pravda;ID používateľa=sa;Pwd=;Zdroj údajov=;Použiť postup na prípravu=1;Automatický preklad=True;Veľkosť paketu=4096;ID pracovnej stanice=;Použiť šifrovanie for Data=False;Značka s porovnávaním stĺpcov, keď je to možné=False;Initial Catalog=Reports“;
Connection = New COMObject("ADODB.Connection");
Príkaz = New COMObject("ADODB.Command");
RecordSet = Nový COMObject("ADODB.RecordSet");
Dátum = "";
Pokus
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Pripojenie;
Command.CommandText = "S_elect * z PH kde obdobie >= "" + String(Format(DateStart, "DF=yyyyMMdd")) + "" a bodka<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Výnimka
Vrátenie TK;
Koniec pokusu;

Kým RecordSet.EOF = False Loop
String = TK.Add();
String.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Value;
String.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
String.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value;
RecordSet.MoveNext();
EndCycle;

Požiadavka = Nová požiadavka();
VrTable = NewTempTableManager();
Query.SetParameter("vDataTable", TK);
Query.SetParameter("Dátum začiatku", Dátum začiatku);
Query.SetParameter("DateCon", DateCon);
Query.Text = "VYBRAŤ
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|PUT DataTable
| OD
| &vrDataTable AKO vrDataTable
| KDE
| vrDataTable.Period >= &DateStart
| A vrDataTable.Period<= &ДатаКон";
Request.Execute();
TK = nedefinované;

Žiadosť = Nová požiadavka;
Query.TempTableManager = VrTable;
Query.Text = "Tu je dotaz zahŕňajúci dočasnú tabuľku";

Vysledok = Request.Run();
Návratový výsledok;

EndFunctions

Vonkajšia množina = InitializeDataSource();
DataSet = New Structure();
DataSet.Insert("SQL tabuľka", ExternalSet);
GenericReports.Generate GenericReport(ThisObject, Result, Decrypted Data, OutputToReportForm,DataSet);

V skutočnosti nie je veľa riadkov kódu a sú celkom štandardné ... v tomto prípade môžete využiť plnú funkčnosť tvorcu dotazov a zadať iba funkciu DATA COMPOSITION v ACS

Ale, samozrejme, vyzerá to trochu nie tak krásne ... a nahrávanie do tabuľky hodnôt zakaždým, keď musíte napísať kód a skontrolovať, či ste neurobili chybu v názve podrobností ... inak to co sme dostali v 1C vyzera akosi polopate. Ešte som sa nerozhodol, čo je pohodlnejšie na použitie. Vy rozhodujete a píšete o svojich rozhodnutiach a o tom, čo vás k nim prinútilo.

Informácie prevzaté zo stránky

Pracujte s nimi v zoznamoch v režime 1C Enterprise.

V práci však často nastáva situácia, keď je časť dát uložená niekde inde.

  • Internetový obchod (zvyčajne ukladá údaje do externej databázy MySQL/SQL)
  • Ďalšia základňa.

Na prácu s takýmito údajmi, ktoré sú uložené v iných databázach, je potrebné vyvinúť špeciálne mechanizmy.

Vo verzii 1C 8.2.14 sa objavil nový s názvom 1C externé zdroje údajov, ktoré výrazne uľahčujú prácu programátora, pretože:

  • teraz nie je potrebné vytvárať špeciálne mechanizmy na získavanie údajov
  • k takýmto údajom má prístup
  • takéto údaje je možné zobraziť v zoznamoch 1C.
    • Externý zdroj dát 1C - externá SQL databáza

      Povedzme, že máme databázu SQL, v ktorej sú uložené údaje, ktoré potrebujeme. Skúsme z neho čítať dáta pomocou mechanizmu 1C External Data Source.

      Pridajme externý zdroj údajov 1C. Musíte prejsť do konfigurátora, externé zdroje údajov sa nachádzajú v konfiguračnom okne, úplne dole v strome.

      1. Spojenie

      Pridajme nový externý dátový zdroj 1C, nazvime ho ľubovoľne.

      Databázu tvoria tabuľky. Musíme ich pridať do pridaného externého zdroja údajov. Kliknite naň pravým tlačidlom myši a vyberte položku Pridať tabuľku.

      Prvýkrát vás vyzve na zadanie pripájacieho reťazca. Môže byť zadaný manuálne alebo vytvorený, pre ktorý musíte kliknúť na tlačidlo „…“.

      Ako ovládač v našom konkrétnom prípade vyberieme "SQL Server"

      Vyplníme základné parametre pre pripojenie k SQL. Názov servera je možné zadať alebo vybrať zo zoznamu.

      1C sa pripojí k SQL a vyzve vás na výber konkrétnej databázy zo zoznamu.

      Potom 1C zobrazí zoznam tabuliek v tejto databáze a ich stĺpcov. Musíte vybrať požadované tabuľky pomocou začiarkavacích políčok.

      Tabuľky a stĺpce budú pridané. Názvy budú také, ako sú definované vo vzdialenej databáze. V 1C ich môžete premenovať (vo vlastnostiach).

      Tu je príklad pridanej tabuľky:

      Tu je príklad pridaného stĺpca:

      Aby platforma 1C pracovala s externou tabuľkou rovnakým spôsobom ako s adresármi 1C, je možné v tabuľke zadať ďalšie parametre:

      • Vo vlastnosti Key Field zadajte jeden zo stĺpcov, ktorý bude poskytovať jedinečnú identifikáciu riadku; ak niekoľko riadkov poskytuje jedinečnosť, potom táto metóda nefunguje (analóg poľa Kód)
      • Vo vlastnosti poľa Zobraziť zadajte jeden zo stĺpcov, ktorý bude poskytovať stručnú reprezentáciu reťazca (analóg poľa Názov)
      • Vo vlastnosti Typ údajov tabuľky zadajte Údaje objektu.

      2. Zobraziť

      Pripojenie k vzdialenej databáze sa nevykoná automaticky. Ak sa chcete pripojiť, musíte vybrať typickú ponuku.

      Vo vetve Standard je špeciálny príkaz Spravovať externé zdroje údajov, ktorý vám umožňuje zadať parametre pripojenia (ich vlastné pre režim 1C Enterprise) a pripojiť sa.

      Najprv musíte zadať parametre pre pripojenie k databáze.

      Keď ste vykonali konfiguráciu v konfigurátore, ako výsledok vám ukázal reťazec pripojenia. Znovu si ju môžete pozrieť po opätovnom kliknutí na Pridať tabuľku v konfigurátore.

      Skopírujte reťazec pripojenia a zadajte ho v režime 1C Enterprise.

      Potom musíte vykonať skutočné pripojenie.

      Po vytvorení spojenia je možné pracovať so zoznamami.

      3. Použitie v jazyku 1C

      Spojenie je možné vykonať aj z programového kódu v jazyku 1C.

      Parametre pripojenia sú špecifikované nasledovne:
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetCommonConnectionParameters();

      ConnectionParameters.AuthenticationStandard = true;
      ConnectionParameters.UserName = "sa";
      ConnectionParameters.Password = "heslo";
      ConnectionParameters.ConnectionString = "reťazec pripojenia z konfigurátora";
      ConnectionParameters.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetCommonConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Parameters);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Parameters);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Údaje z databázy môžete vyhľadávať pomocou bežného . Príklad textu dotazu pre externý zdroj OurExternalSource a tabuľkyExternalSourceTable:

      VYBERTE SI
      ExternalSource Table.FieldName
      OD
      ExternalDataSource.OurExternalSource.Table.ExternalSourceTable"

      Externý zdroj dát 1C - práca so súborom Excel

      Skúsme inú možnosť - prácu so súborom Excel cez externý zdroj údajov 1C.

      Vytvorme jednoduchý súbor Excel.

      Pridajme externý zdroj, ľubovoľne ho nazvime FileExcel. Pridajte k nej tabuľku „Sheet1 $“. Ako vidíte, toto je názov hárka v Exceli s pridaním symbolu „$“.

      Rovnako ako v prípade SQL, pridajme stĺpce. Môžu byť pridané ručne. Je dôležité zabezpečiť, aby sa typy pridaných stĺpcov zhodovali, inak sa môže neskôr zobraziť chyba ako „Nesúlad typu údajov“.

      Pre stĺpec musíte zadať názov v 1C a názov v zdroji údajov.

      Pre Excel existuje funkcia (chyba ako „Príliš málo parametrov. Vyžaduje 3“):

      • Ak prvý riadok tabuľky programu Excel obsahuje názvy stĺpcov, stačí zadať názov tohto stĺpca, napríklad „Kód“.
      • V opačnom prípade musíte zadať celý názov s názvom tabuľky „Sheet1$.Code“, ale do parametrov pridať „HDR=NO;“.

      Parametre pripojenia pre súbor programu Excel vyzerajú takto:

      • Súbory XLSX (verzia Office 2007 a vyššia)
        Driver=(Ovládač programu Microsoft Excel (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • XLS súbory (predtým)
        Driver=(Ovládač Microsoft Excel (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;
        Musíte zadať svoj vlastný názov a cestu k súboru.

Prečo je táto príležitosť taká zaujímavá? Každý, kto programoval v 1C, je celkom oboznámený s SQL a aspoň vo všeobecnosti oboznámený s architektúrou a princípmi vývoja iných technologických platforiem pre obchodné aplikácie vám s pevnou istotou povie, čo sa mu na 1C páči najviac. Samozrejme, tvorca dotazov je najpohodlnejší a najpremyslenejší mechanizmus na písanie dotazov na získavanie údajov z relačných štruktúr, s akým som sa kedy osobne stretol. A teraz nám 1C dal takú skvelú príležitosť použiť ju nielen s 1C, ale aj s akýmikoľvek inými stolmi. Tu je len kopa "muchy" naliata do tohto "sudu medu". Všetko v poriadku:

1) Nastavenie a používanie- bez "tancovania s tamburínou" to nepôjde
a) Pridajte externý zdroj údajov – zdá sa, že to nie je nič zložité
b) zaškrtnite políčko "Vybrať zo zoznamu" - je to potrebné - je potrebné skontrolovať výkon na začiatku a ušetriť vás od zbytočných problémov
c) - nezabudnite stlačiť "..." - pripojenie je ODBC. Nie OLEDB ako sme všetci zvyknutí, ale o level nižšie

D) Tu buďte VEĽMI OPATRNÍ.

Toto je ovládač ODBC - ak používate verziu klient-server, musí byť na serveri. Ak vyvíjate na jednom systéme a pracujete na inom (ako to zvyčajne býva), uistite sa, že vás nič neprekvapí. Zvláštne odporúčanie, ale vyberte si najstarší alebo najbežnejší ovládač, ak vám nezáleží na rýchlosti a nemienite ísť za hranice štandardu SQL92. To vám poskytne najlepšiu kompatibilitu. Napríklad pre SQL Server 2008 by bol najlepším ovládačom SQL Server Native Client 11, ale odporúčam zvoliť iba SQL Server, v opačnom prípade bude musieť byť tento veľmi natívny klient nainštalovaný buď na server alebo na všetky klientske počítače (v prípade z používania verzie súboru) a zisk je špeciálny pre jednoduché, že vám nedá prácu.
e) Štandardné dialógové okná výberu servera

a DB

f) Odporúčam odpovedať „áno“ na otázku uloženia hesla, inak nebude fungovať začatie tohto podnikania.
g) Vyberte si tabuľku a detaily... skvelá príležitosť - môžete si ju ihneď premenovať, ako sa vám páči (a detaily tiež), pričom vo vlastnostiach uvidíte názvy polí zdroja údajov


h) A teraz spustíš, otvoríš návrhára dotazov - hlúpo vyberieš všetky záznamy z tabuľky a OPA - chyba. Čo robiť? Ak máte spravované rozhranie, pozrite sa do servisného menu a ak máte normálne...
Osobne som použil tento kód:
Kód 1C v 8.x Parametre = ExternalDataSources.DAX.GetCommonConnectionParameters();
Parameters.AuthenticationStandard = true;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=database";
Parametre.DBMS = "MSSQLServer";

ExternalDataSources.DAX.SetCommonConnectionParameters(Parameters);
ExternalDataSources.DAX.SetUserConnectionParameters(UserName(), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();
Možno niektoré kúsky nie sú potrebné, ale ide to.
Kód musíte vykonať RAZ. Potom sa to normálne spojí ... samozrejme mystika - prečo to bolo potrebné, nie je jasné ...

2) Zdroje údajov len na čítanie- Áno, zázraky sa nedejú ... ale niekedy chcete ....

3) NEPOUŽÍVAJTE ICH SPOLU S INTERNÝMI ZDROJMI ÚDAJOV
Mňa osobne táto skutočnosť na mieste zabila.

Ako to .... čo čakali a už si predstavovali a lízli ako teraz v jednej požiadavke spojíme naše dáta s 1C, otočíme - zoskupíme, vložíme do prehľadu, ale nebolo to tam .. .
Ale samozrejme, to nezastaví skúsených ľudí ... aká myšlienka prišla na myseľ? Správne - dočasné tabuľky:

4) NEPOUŽÍVAJTE ICH SPOLU S DOČASNÝMI ​​TABUĽKAMI


Ale to už nevyzerá ako technologické ťažkosti, ale vyzerá to veľmi podobne ako to, čo chcú, aby sme urobili, „aby sa život nezdal ako raj“.

5) Možno použiť len v SKD spojeniach
Pre tých, ktorí nevedia, je to v ACS na karte "Prepojenia na množinu údajov". Ako často ich používate? Pohodlne? Zrejme nás chcú prinútiť, aby sme ich používali častejšie. Ale je tam stĺpec "Podmienka prepojenia" a "Parameter odkazu". Príklad ich použitia v žiadnej typickej konfigurácii som nenašiel, v dokumentácii ani v Khrustaleve akosi nie je všetko prehľadné. Môže mi niekto vysvetliť, ako funguje "podmienka prepojenia". Ak tam napíšete SourceAttribute = ReceiverRevision, nefunguje to. Samozrejme, podmienka sa dá zapísať do políčka "Výraz" - vo väčšine prípadov to stačí ... ale nejako to nie je veľmi jednoduché.

Celkovo bol tento problém predtým vyriešený niekde takto:
Kód 1C v 8.x Funkcia InitializeDataSource()

DateStart = BuilderSettings.Settings.DataParameters.Items.Value;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value;
Ak DateCon > "20100101" Potom
DateCon = "20100101";
Koniec Ak;

QN = NewQualifiersNumber(15,2);
cs = NewStringQualifiers(255);

Číslo poľa = Nové pole ();
ArrayNumber.Add(Type("Číslo"));

ArrayString = Nové pole ();
ArrayString.Add(Type("String"));

ArrayData = New Array();
ArrayDate.Add(Type("Dátum"));

//V tabuľke vyplníme účtovný náklad
TypeNumber = NewTypeDescription(ArrayNumber,KN);
StringType = NewTypeDescription(ArrayString, CS);
TypeDate = NewTypeDescription(ArrayDate);

//tabuľka na načítanie údajov z SQL
TK = New ValueTable();
TK.Columns.Add("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Obdobie", TypeDate);

TK.Indices.Add("Obdobie");

// Pripojte sa k SQL
ConnectionString = "Poskytovateľ=SQLOLEDB.1;Pretrvávajúce informácie o zabezpečení=Pravda;ID používateľa=sa;Pwd=;Zdroj údajov=;Použiť postup na prípravu=1;Automatický preklad=True;Veľkosť paketu=4096;ID pracovnej stanice=;Použiť šifrovanie for Data=False;Značka s porovnávaním stĺpcov, keď je to možné=False;Initial Catalog=Reports“;
Connection = New COMObject("ADODB.Connection");
Príkaz = New COMObject("ADODB.Command");
RecordSet = Nový COMObject("ADODB.RecordSet");
Dátum = "";
Pokus
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Pripojenie;
Command.CommandText = "S_elect * z PH, kde bodka >= "" + String(Format(DateStart, "DF=yyyyMMdd")) + "" a bodka<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Výnimka
Vrátenie TK;
Koniec pokusu;

Kým RecordSet.EOF = False Loop
String = TK.Add();
String.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Value;
String.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
String.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value;
RecordSet.MoveNext();
EndCycle;

Požiadavka = Nová požiadavka();
VrTable = NewTempTableManager();

Query.SetParameter("vDataTable", TK);
Query.SetParameter("Dátum začiatku", Dátum začiatku);
Query.SetParameter("DateCon", DateCon);
Query.Text = "VYBRAŤ
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|PUT DataTable
| OD
| &vrDataTable AKO vrDataTable
| KDE
| vrDataTable.Period >= &DateStart
| A vrDataTable.Period<= &ДатаКон";
Request.Execute();
TK = nedefinované;

Žiadosť = Nová požiadavka;
Query.TempTableManager = VrTable;
Query.Text = "Tu je dotaz zahŕňajúci dočasnú tabuľku";

Vysledok = Request.Run();
Návratový výsledok;

EndFunctions

Vonkajšia množina = InitializeDataSource();
DataSet = New Structure();
DataSet.Insert("SQL tabuľka", ExternalSet);
GenericReports.Generate GenericReport(ThisObject, Result, Decrypted Data, OutputToReportForm,Dataset);

V skutočnosti nie je veľa riadkov kódu a sú celkom štandardné ... v tomto prípade môžete využiť plnú funkčnosť tvorcu dotazov a zadať iba funkciu DATA COMPOSITION v ACS

Ale samozrejme, vyzerá to trochu nie tak krásne ... a nahrávanie do tabuľky hodnôt zakaždým, keď musíte napísať kód a skontrolovať, či ste neurobili chybu v názve podrobností ... inak to co sme dostali v 1C vyzera akosi polopate. Ešte som sa nerozhodol, čo je pohodlnejšie na použitie. Vy rozhodujete a píšete o svojich rozhodnutiach a o tom, čo vás k nim prinútilo.
Autor.

Vo verzii 8 programu 1C vývojári pridali k funkcionalite možnosť pripojiť databázy tretích strán a získavať z nich informácie priamo z konfigurátora, bez použitia COM spojení a OLE objektov. Táto funkcia je implementovaná pomocou nového objektu - "Externé zdroje údajov"

Externé zdroje údajov v 1C možno použiť rovnakým spôsobom ako zvyšok systémových tabuliek:

  1. Pri vytváraní správ a výpočtov pomocou systému skladania údajov (ACS);
  2. Na získanie odkazov na informácie uložené v zdrojoch tretích strán;
  3. Na zmenu údajov uložených v tabuľkách;
  4. Pri podávaní žiadostí.

Je dôležité vedieť, že tento mechanizmus nie je určený na prácu s inými databázami 1C, keďže samotný operačný model 1C.Enterprise neznamená rušenie údajov na úrovni fyzických tabuliek.

Vytvorenie nového zdroja

Pridanie nového externého zdroja do programu prebieha v režime "Konfigurátor". V konfiguračnom strome sa nachádza zodpovedajúca vetva (obr. 1)

Pri vytváraní nového zdroja sa budete musieť zapotiť, napriek tomu, že forma nového objektu má iba štyri záložky:

  1. Základné;
  2. údaje;
  3. funkcie;
  4. práva.

Prvá záložka má len jeden zaujímavý parameter – režim ovládania zámku. Ak sa nepýtate na otázky o blokovaní údajov v transakciách, o zložitosti paralelizácie informačných tokov, môžete tento parameter ponechať v režime automatického blokovania. Tento prístup však môže viesť k nadmerným obmedzeniam (napríklad, keď namiesto jedného záznamu program uzamkne celú fyzickú tabuľku, čím zbaví ostatných používateľov možnosti s ňou pracovať).

Spravované zámky, na rozdiel od automatických, využívajú transakčný mechanizmus, ktorý je súčasťou samotného programu, a nie DBMS, čo vám umožňuje preniesť zachytenie tabuliek na oveľa nižšiu úroveň.

Nastavením tohto parametra na „Automaticky a spravované“ dávame systému možnosť určiť, ktorý režim sa má použiť, a to priamym odkazom na podobnú vlastnosť každej konkrétnej tabuľky.

Karta Údaje formulára vlastností externého zdroja

Tvar záložky „Údaje“ je znázornený na obr. 2

Ryža. 2

Tu môžeme pridať externé zdrojové tabuľky a kocky. Existujú dva spôsoby pridania tabuľky:

  1. Ručne potom uvidíme formulár na pridanie tabuľky (obr. 3);

Ryža. 3

  1. Alebo vyberte zo zoznamu fyzických zdrojových tabuliek (obr. 4), v tomto prípade sa pred nami otvorí špeciálny konštruktor.

Ryža. 4

Pozrime sa bližšie na formulár na pridanie tabuľky. Vlastnosť "Name" sa používa na jedinečnú identifikáciu objektu v konfigurácii.

Porovnanie objektu metadát a konečnej fyzickej tabuľky prebieha cez vlastnosť „Názov v zdroji údajov“ umiestnenú na karte „Doplnkové“ (obr. 5).

Ryža. 5

Ďalej musíme určiť typ tabuľky, respektíve jej objektivitu. Ak je možné dáta uložené v štruktúre jednoznačne identifikovať prostredníctvom ktoréhokoľvek jedného poľa, tabuľkou môže byť tabuľka objektov. Ak je identita záznamu určená množinou kľúčových polí, tabuľka musí mať neobjektový typ.

Porovnaním takýchto tabuliek s inými objektmi metadát môžeme nakresliť nasledujúcu analógiu:

  • Tabuľky objektov sú referenčné knihy;
  • Neobjektívne sú registre informácií.

Sada kľúčových polí je definovaná v nasledujúcom parametri formulára ("Kľúčové polia"). Toto pole je povinné. Ak ho necháte prázdne, dôjde k chybe pri ukladaní konfigurácie.

Ako môžete vidieť na Obr. 5, niektoré polia a tlačidlá formulára nie sú dostupné na úpravu:

  • Výraz v zdroji údajov;
  • Typ údajov tabuľky;
  • Pole zobrazenia;
  • Zobraziť manipulátory.

Môžu byť použité až po vyplnení polí tabuľky, definovaní ich typu a nastavení ich identifikátorov (obr. 6).

Ryža. 6

Tu by ste mali venovať pozornosť voľbe "Povoliť nulu", ak je toto políčko začiarknuté, takéto pole nie je žiaduce použiť ako kľúč.

Konštruktor tabuľky

Snáď najdôležitejším a najzaujímavejším bodom pri práci s externými zdrojmi je vytvorenie pripájacieho reťazca. Jeho konštruktor sa otvorí, keď kliknete na tlačidlo s tromi bodkami vedľa parametra "Reťazec pripojenia".

V prvom rade budeme vyzvaní, aby sme rozhodli o ovládači, ktorý sa použije na pripojenie (obr. 7)

Ryža. 7

Nesprávna definícia tohto parametra vám neumožní pripojiť sa k informačnej databáze tretej strany. Malo by byť tiež zrejmé, že nie všetky ovládače uvedené v rozbaľovacom zozname možno použiť na automatické generovanie reťazca pripojenia. Ak platforma vykázala chybu (obr. 8), potom bude potrebné zapísať reťazec pripojenia ručne.

Obr.8

Ryža. 9

Samotná linka je prísne regulovaná stavba.

Príklad pripájacieho reťazca

Zoberme si databázu tretej strany vytvorenú v Microsoft Access a umiestnenú v koreňovom adresári jednotky D. Na pripojenie tejto databázy musíme použiť príslušný ovládač, no jeho výber v konštruktore riadkov vedie k chybe Obr.8.

Parametre pripojenia si napíšeme sami.

Driver=(Microsoft Access Driver (*.mdb)) – takto vyzerá prvá časť riadku. V zložených zátvorkách sme definovali ovládač.

Pre súbory programu Excel to bude vyzerať takto (Ovládač Microsoft Excel (*.xls)) , Pre súbory programu Excel vytvorené v Office staršom ako 2003 bude riadok ovládača vyzerať takto (Ovládač Microsoft Excel (*.xls, *.xlsx, *. xlsm, *.xlsb)).

Oddelením tohto parametra od nasledujúceho bodkočiarkou musíme napísať adresu nášho úložiska (v našom prípade DBQ=D:\Databáza1.mdb).

Pridaním týchto dvoch parametrov dostaneme Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb, zapísaním tohto parametra získame prístup k vnútorným štruktúram tejto databázy.

Pre objekt „Externý zdroj“ nestačí len vytvoriť ho v konfigurácii, ale musí byť pripojený aj v režime „Podniky“. Môžete to urobiť z ponuky "Všetky funkcie"->Externé zdroje. Keď prvýkrát vstúpime do našej tabuľky, musíme napísať rovnaký reťazec pripojenia už v režime "Enterprise".