Domov / Dobre vedieť / 1c reťazec pripojenia externých zdrojov údajov. Externé zdroje údajov. Príklad pripájacieho reťazca

1c reťazec pripojenia externých zdrojov údajov. 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) 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 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é tento veľmi natívny klient nainštalovať buď na server alebo na všetky klientske počítače (v prípade použitia verzie súboru) a bude neposkytujú veľa výhod pre jednoduché úlohy.
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 chcete (a podrobnosti 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 je .... čo sme čakali a už si predstavovali a lízli ako sme teraz v jednej požiadavke spojíme naše údaje 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 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 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;
Row.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

Vydanie 8.2.14.533 - konečne viac-menej stabilná verzia 14. vydania platformy. Nakoniec sa naskytla možnosť vyskúšať si skvelú príležitosť – „externé zdroje dát“.

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
v)
(IMG:http://pics.livejournal.com/comol/pic/0000cr1r.png)
- nezabudnite stlačiť "..." - pripojenie je ODBC. Nie OLEDB ako sme všetci zvyknutí, ale o level nižšie

A buď tu VEĽMI POZORNÝ.

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

G) Vyberte si tabuľku a podrobnosti ... skvelá príležitosť - môžete ju okamžite premenovať, ako chcete (a podrobnosti 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:

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. Je potrebné spustiť kód 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 je .... čo sme čakali a už si predstavovali a lízli ako sme teraz v jednej požiadavke spojíme naše údaje 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“ (IMG :) .

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:

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 = "Vyberte * z PH kde bodka >= "" + String(Format(DateStart, "DF=rrrrMMdd")) + "" a obdobie 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;
Row.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 Query.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.

[pre zobrazenie odkazu sa musíte zaregistrovať]

Externé zdrojeÚdaje 1C sú relatívne novým objektom metadát 1C 8.3 a 8.2, pomocou ktorého je možné k 1C pripojiť externé zdroje údajov: tabuľky SQL, Excel, Access, FoxPro (dbf), ďalšia databáza 1C, Oracle, Paradox (db ), - a dokonca aj čítanie z jednoduché súbory txt/csv.

To dáva veľa príležitostí na prácu s inými systémami. Uvažujme podrobnejšie.

Nastavenie externých zdrojov údajov v 1C 8

Nastavenie externých zdrojov je individuálne pre každý typ systému. Spoločná časť nastavenia je však spravidla rovnaká - ide o nastavenie reťazca pripojenia:

Získajte 267 1C video lekcií zadarmo:

Ak je reťazec pripojenia správny, systém vás vyzve na výber požadovanej tabuľky z databázy. V dôsledku toho dostaneme hotovú tabuľku, v ktorej môžete zadať kľúčové pole (jedinečné pole) a pole zobrazenia (ako sa záznam prejaví v 1C):

Používanie externých zdrojov údajov v 1C 8.3

Externé zdroje údajov v 1C možno použiť ako iné databázové tabuľky. Platforma im automaticky vygeneruje formulár, ak nie je nastavený. Dopyty môžu využívať aj údaje z externých zdrojov.

Vo verzii platformy 8.3.5.1068 (a novšej) bolo možné pridávať, upravovať a odstraňovať údaje v externých zdrojoch softvérové ​​nástroje 1C. Príklady tejto funkcie sú uvedené v tomto článku.

Aby bolo možné zaznamenávať do externých zdrojov, 1C pridala nové vlastnosti do dátových tabuliek a polí externých zdrojov:

  • Pre celý stôl - majetok Iba čítanie. ReadOnly = Pravda znamená, že zmena údajov v tejto tabuľke nie je možná;
  • Pre jednotlivé polia tabuľky - vlastnosti Iba čítanie, AllowNull a Vyplňte hodnotu:
    • ReadOnly = Pravda znamená, že zmena údajov v tomto poli nie je možná;
    • AllowNull = True znamená, že do tohto poľa možno zapísať hodnotu NULOVÝ;
    • Vyplňte hodnotu obsahuje predvolenú hodnotu tohto poľa (ak existuje).

Vy (pri manuálnom popise tabuliek) alebo platforma (pri vytváraní tabuliek s návrhárom) môžete tieto vlastnosti použiť nasledujúcim spôsobom.

  • ReadOnly = Pravda nastaviť napríklad pre pohľady (view), tabuľky získané na základe výrazu (výsledok funkcie) a podobne. Údaje v takýchto tabuľkách nie je možné meniť;
  • ReadOnly = Pravdašpecifikovať pre polia nastavené automaticky ( AUTOMATICKÝ PRÍRASTOK), vypočítavané polia a podobne. Údaje v týchto poliach nemožno zmeniť;
  • AllowNull = True nastaviť pre všetky polia okrem kľúčových polí a tých, ktoré sú v externom zdroji opísané ako NIE JE NULL;
  • Vyplňte hodnotu polia nastaviť v prípade, keď je štandardná hodnota tohto poľa špecifikovaná v externom zdroji (hodnota DEFAULT).

Údaje v externých zdrojoch môžete pridávať, upravovať a odstraňovať pomocou vstavaného jazyka alebo interaktívne. Vo vstavanom jazyku sa na to používajú nasledujúce metódy správcu tabuliek:

  • Create RecordSet()- pre neobjektové tabuľky;
  • Nová metóda CreateObject()- pre tabuľky objektov.

V súlade s tým objekty ExternalDataSourceTableRecordSet a ExternalDataSourceTableObject objavili sa nové metódy Napíšte () a Odstrániť ().

Pridávanie údajov

Keď pridáte údaje do externého zdroja, vytvoríte objekt (alebo množinu záznamov), nastavíte hodnoty polí a zapíšete. Existuje však niekoľko funkcií, o ktorých je užitočné vedieť.

Napríklad pri pokuse nastaviť hodnotu poľa, ktoré má ReadOnly = Pravda, bude vyvolaná chyba. A pri zápise priamo do databázy vo výraze VLOŽIŤ takéto polia budú preskočené. Ostatné polia sú vyplnené hodnotami, ktoré ste im priradili. Preto tie hodnoty Nulový a predvolené hodnoty musia byť k poliam priradené explicitne.

  • id(AllowNull = True);
  • názov(AllowNull = True);
mCharakteristic = ExternalDataSources.IM.Tables.shop_feature.CreateObject(); mCharacteristic.id = Kód; mCharacteristic.name = Meno; mCharakteristika.Napis();

Vykonanie výpisu Napíšte () spôsobí, že sa najskôr zavolá obsluha udalosti Pred nahrávaním, potom sa vykoná fyzický zápis do externej zdrojovej tabuľky ( VLOŽIŤ), potom sa zavolá obsluha udalosti Pri nahrávaní.

S kľúčovým poľom tabuľky externého zdroja môžete urobiť nasledovné. Ak je pole kľúča upraviteľné, pred zápisom jeho hodnotu nastavíte „ručne“. Ak je zmena poľa kľúča zakázaná, potom platforma získa kľúč nezávisle VLOŽIŤ alebo hneď potom. Do tohto procesu môžete zasiahnuť pomocou metódy SetReferenceNew() pred fyzickým záznamom (v obsluhe udalosti Pred nahrávaním) alebo priamo po fyzickom vstupe (v obsluhe udalosti Pri nahrávaní).

Zmeňte údaje

Keď sa údaje zmenia, hodnoty všetkých polí tabuľky, ktoré majú ReadOnly = False.

MFeature = ExternalDataSources.IM.Tables.shop_feature.FindByField("id",code); mObject = mCharakteristic.GetObject(); mObject.name = Meno; mObject.Write();

Ak je potrebné zaznamenať iba niektoré polia, môžete pomocou metód určiť ich zoznam priamo zo vstavaného jazyka SetWritableFields() a GetWritableFields().

Odstraňujú sa údaje

Vymazaním údajov priamo vymažete riadok z databázovej tabuľky. Zároveň sa nehľadajú odkazy na odstránený objekt. Ak je takáto funkcia potrebná, môžete si ju sami naprogramovať v obslužnom programe udalosti BeforeDelete().

MFeature = ExternalDataSources.IM.Tables.shop_feature.FindByField("id",Code); mObject = mCharakteristic.GetObject(); mObject.Delete();

Transakcie

Čítanie údajov z externých zdrojov sa ako predtým vykonáva mimo transakcie a pri zápise platforma otvára implicitnú transakciu. Súčasne môžete vykonávať čítanie aj zápis v explicitných transakciách pomocou objektových metód ExternalDataSourceManager:

  • StartTransaction();
  • CommitTransaction();
  • CancelTransaction().

Zámky

  • Auto;
  • Organizovaný;
  • Automaticky a kontrolovane.

ako aj vlastnosť externej zdrojovej tabuľky Transakcie na úrovni izolácie:

Okrem toho môžete v metóde nezávisle nastaviť úroveň zámkov StartTransaction().

Typický článok som doplnil o príklady) Bude viac času - pridám ďalšie príklady.

Vo verzii 8 programu 1C vývojári pridali k funkcii možnosť pripojiť databázy tretích strán a získavať z nich informácie priamo z konfigurátora bez použitia COM pripojenia a OLE objekty. 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é toky toto nastavenie môžete ponechať v režime automatického uzamknutia. 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 prekladať zachytenie tabuliek na oveľa viac. nízky level.

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 zodpovedajúcu 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. štyri

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 „Rozšírené“ (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ť možnosti "Povoliť nulu", ak je toto políčko začiarknuté, nie je žiaduce používať takéto pole ako kľúč.

Konštruktor tabuľky

Možno najdôležitejšie a zaujímavý bod 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 tretej strane informačnú základňu. 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

Zvážte databázu tretej strany vytvorenú v Microsoft Access a nachádza sa v koreni disku D. Na pripojenie tejto základne 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 Excel súbory bude to vyzerať Microsoft Excel Ovládač (*.xls)) , pre súbory 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".