itthon / Jó tudni / 1c külső adatforrás kapcsolati karakterlánc. Külső adatforrások. Csatlakozási karakterlánc példa

1c külső adatforrás kapcsolati karakterlánc. Külső adatforrások. Csatlakozási karakterlánc példa

Miért ez a lehetőség ekkora érdeklődést vált ki? Bárki, aki 1C-ben programozott, eléggé ismeri az SQL-t, és legalábbis általánosságban ismeri az üzleti alkalmazásokhoz használt egyéb technológiai platformok fejlesztésének architektúráját és elveit, határozottan elmondja, mit szeret a legjobban az 1C-ben. Természetesen a lekérdezéskészítő a legkényelmesebb és legátgondoltabb mechanizmus a relációs struktúrákból származó adatok lekérdezéséhez, amelyekkel személyesen találkoztam. És most az 1C olyan csodálatos lehetőséget adott nekünk, hogy ne csak az 1C-vel, hanem bármely más asztallal is használhassuk. Íme, csak egy csokor ebbe a "mézhordóba" öntött "léggyenge". Minden rendben:

1) Beállítás és használat- "tamburával táncolni" nélkül nem fog működni
a) Adjon hozzá egy külső adatforrást - úgy tűnik, semmi bonyolult
b) jelölje be a "Kiválasztás a listából" jelölőnégyzetet - szükséges - ez szükséges a teljesítmény ellenőrzéséhez, és megóvja Önt a felesleges problémáktól
c) - feltétlenül nyomja meg a "..." gombot - a kapcsolat ODBC. Nem az OLEDB-t, mint azt mindannyian megszoktuk, hanem egy szinttel lejjebb

D) Légy nagyon óvatos itt.

Ez egy ODBC illesztőprogram – ha kliens-szerver verziót használ, annak a szerveren kell lennie. Ha egy rendszeren fejleszt, és működő változat másrészt (mint általában) győződjön meg róla, hogy nem tartogat meglepetéseket. Furcsa javaslat, de válassza a legrégebbi vagy legelterjedtebb illesztőprogramot, ha nem foglalkozik különösebben a sebességgel, és nem kívánja túllépni az SQL92 szabvány határait. Ez biztosítja Önnek jobb kompatibilitás. Például SQL Server 2008 esetén a legjobb sofőr lesz SQL Server Native Client 11, de azt javaslom, hogy csak az SQL Servert válasszuk, különben ezt a nagyon natív klienst kell telepíteni vagy a szerverre, vagy az összes kliens gépre (fájlverzió használata esetén), és nem ad sok nyereséget az egyszerű feladatokhoz.
e) Szabványos szerverválasztó párbeszédpanelek

E) Azt javaslom, hogy a jelszó elmentésének kérdésére „igen” választ adjon, különben nem fog működni a vállalkozás elindítása.
g) Válassz egy táblázatot és részleteket... nagyszerű lehetőség - azonnal átnevezheted tetszés szerint (és a részleteket is), míg a tulajdonságokban az adatforrás mezőinek nevei

H) És most fut, nyissa meg a lekérdezéstervezőt - hülye módon kiválasztja az összes rekordot a táblából és az OPA-ból - hiba. Mit kell tenni? Ha van menedzselt felületed, nézd meg a szerviz menüben, ha pedig normál...
Én személy szerint ezt a kódot használtam:
Code 1C v 8.x Paraméterek = ExternalDataSources.DAX.GetCommonConnectionParameters();
Paraméterek.AuthenticationStandard = igaz;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;ADATBÁZIS=adatbázis";
Parameters.DBMS = "MSSQLServer";

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

ExternalDataSources.DAX.SetConnection();
Lehet, hogy néhány darabra nincs szükség, de működik.
A kódot EGYSZER végre kell hajtani. Utána normálisan fog kapcsolódni... persze misztikum - miért volt erre szükség, nem világos...

2) Csak olvasható adatforrások- Igen, csodák nem történnek... de néha azt akarod...

3) NE HASZNÁLJA EGYÜTT BELSŐ ADATFORRÁSOKKAL
Személy szerint ez a tény a helyszínen megölt.

Hogy van....amire vártak és már elképzelték és nyalták, hogy most egy kérésben egyesítjük az adatainkat 1C-vel, megfordítjuk - csoportosítjuk, beillesztjük a jelentésbe, de nem volt ott.. .
De persze ez nem állítja meg a tapasztalt embereket... mi jutott eszébe? Így van - ideiglenes táblázatok:

4) NE HASZNÁLJA EGYÜTT IDEIGLENES ASZTALOKKAL

De ez már nem technológiai nehézségnek tűnik, hanem nagyon úgy néz ki, hogy mit akarnak tőlünk "hogy az élet ne tűnjön paradicsomnak" :).

5) Csak SKD csatlakozásoknál használható
Azok számára, akik nem ismerik, az ACS-ben az "Adatkészlet hivatkozások" fülön található. Milyen gyakran használod őket? Kényelmes? Nyilván rá akarnak kényszeríteni, hogy gyakrabban használjuk őket. De van egy oszlop "Link feltétele" és "Link paramétere". Nem találtam példát a használatukra semmilyen tipikus konfigurációban, a dokumentációban és Khrustaleva-ban sem, valahogy nem minden átlátható. Valaki elmagyarázná nekem, hogyan működik a "linkfeltétel"? Ha odaírod, hogy a SourceAttribute = ReceiverRevision, akkor nem működik. Természetesen a "Kifejezés" mezőbe beírható a feltétel - a legtöbb esetben ez is elég... de valahogy nem túl egyszerű.

Összességében ezt a problémát korábban valahol így oldották meg:
1C kód v 8.x függvény InitializeDataSource()

DateStart = BuilderSettings.Settings.DataParameters.Items.Value;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value;
Ha DateCon > "20100101" Akkor
DateCon = "20100101";
EndIf;

QN = Új minősítőszám(15,2);
cs = NewStringQualifers(255);

ArrayNumber = Új tömb();
ArrayNumber.Add(Típus("Szám"));

ArrayString = Új tömb();
ArrayString.Add(Type("String"));

ArrayData = Új tömb();
ArrayDate.Add(Típus("Dátum"));

//A számviteli költséget a táblázatba fogjuk kitölteni
TypeNumber = ÚjTípusLeírás(TömbSzám,KN);
StringType = NewTypeDescription(ArrayString, CS);
TypeDate = NewTypeDescription(ArrayDate);

//tábla adatok betöltéséhez SQL-ből
TK = Új értéktábla();
TK.Columns.Add("NómenklatúraKód", TypeString);
TK.Columns.Add("Mennyiség", Típusszám);
TK.Columns.Add("Időszak", TípusDátum);

TK.Indexes.Add("Időszak");

// Csatlakozás SQL-hez
ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;Felhasználói azonosító=sa;Pwd=;Adatforrás=;Az előkészítési eljárás használata=1;Automatikus fordítás=Igaz;Csomagméret=4096;Munkaállomás-azonosító=;Titkosítás használata for Data=False;Címke oszlopsorolással, ha lehetséges=False;Kezdeti katalógus=Jelentések";
Kapcsolat = Új COMObject("ADODB.Kapcsolat");
Parancs = Új COMObject("ADODB.Command");
RecordSet = Új COMObject("ADODB.RecordSet");
Dátum = "";
Kísérlet
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Kapcsolat;
Command.CommandText = "S_elect * a PH-tól, ahol a periódus >= "" + String(Formátum(DateStart, "DF=yyyyMMnn")) + "" és pont<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Kivétel
TK visszatérése;
A kísérlet vége;

Míg RecordSet.EOF = False Loop
String = TK.Add();
String.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Érték;
String.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Érték;
String.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Érték;
RecordSet.MoveNext();
EndCycle;

Request = Új kérés();
VrTable = NewTempTableManager();
Query.SetParameter("vDataTable", TK);
Query.SetParameter("Kezdődátum", Kezdődátum);
Query.SetParameter("DateCon", DateCon);
Query.Text = "VÁLASZTÁS
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|PUT DataTable
| FROM
| &vrDataTable AS vrDataTable
|HOL
| vrDataTable.Period >= &DateStart
| És vrDataTable.Period<= &ДатаКон";
Request.Execute();
TK = Undefined;

Request = Új kérés;
Query.TempTableManager = VrTable;
Query.Text = "Itt van egy ideiglenes táblát tartalmazó lekérdezés";

Eredmény = Request.Run();
Eredmény visszaküldése;

EndFunctions

OuterSet = InitializeDataSource();
DataSet = New Structure();
DataSet.Insert("SQL Table", ExternalSet);
GenericReports.Generate GenericReport(ThisObject, Result, Decryption Data, OutputToReportForm,Dataset);

Valójában nincs sok kódsor, és meglehetősen szabványosak ... ebben az esetben használhatja a lekérdezéskészítő teljes funkcióját, és csak az ADATÖSSZETÉTEL függvényt adhatja meg az ACS-ben

De persze egy kicsit nem olyan szépnek tűnik ... és az értéktáblázatba való feltöltéskor minden alkalommal kódot kell írnia, és ellenőriznie kell, hogy hibázott-e a részletek nevében ... egyébként amit 1C-ben kaptunk, az valahogy félkegyelműnek tűnik. Még nem döntöttem el, melyik a kényelmesebb használni. Ön dönt, és ír a döntéseiről, és arról, hogy mi késztetett arra, hogy meghozza azokat.

Az oldalról vett információ

8.2.14.533 kiadás – végre többé-kevésbé stabil változata a platform 14. kiadásának. Végül lehetőség nyílt egy csodálatos lehetőség – a „külső adatforrások” – kipróbálására.

Miért olyan érdekes ez a lehetőség? Bárki, aki már programozott 1C-ben, eléggé ismeri az SQL-t, és legalábbis általánosságban ismeri az üzleti alkalmazásokhoz szükséges egyéb technológiai platformok fejlesztésének architektúráját és elveit, határozottan megmondja, mit szeret a legjobban az 1C-ben. Természetesen a lekérdezéskészítő a legkényelmesebb és legátgondoltabb mechanizmus a relációs struktúrákból származó adatok lekérdezéséhez, amelyekkel személyesen találkoztam. És most az 1C olyan csodálatos lehetőséget adott nekünk, hogy ne csak az 1C-vel, hanem bármely más asztallal is használhassuk. Íme, csak egy csokor ebbe a "hordó mézbe" öntött "léggyenge". Minden rendben:

1) Beállítás és használat - "tamburával táncolás" nélkül nem fog működni

A) Adjon hozzá egy külső adatforrást - úgy tűnik, semmi bonyolult
b) jelölje be a "Kiválasztás a listából" jelölőnégyzetet - szükséges - ez szükséges a teljesítmény ellenőrzéséhez, és megóvja Önt a felesleges problémáktól
ban ben)
(IMG:http://pics.livejournal.com/comol/pic/0000cr1r.png)
- feltétlenül nyomja meg a "..." gombot - a kapcsolat ODBC. Nem az OLEDB-t, mint azt mindannyian megszoktuk, hanem egy szinttel lejjebb

És legyen itt NAGYON FIGYELMES.

Ez egy ODBC illesztőprogram – ha kliens-szerver verziót használ, annak a szerveren kell lennie. Ha az egyik rendszeren fejleszt, és egy másikon dolgozik (mint általában), ügyeljen arra, hogy ne érjen meglepetés. Furcsa javaslat, de válassza a legrégebbi vagy legelterjedtebb illesztőprogramot, ha nem foglalkozik különösebben a sebességgel, és nem kívánja túllépni az SQL92 szabvány határait. Ez biztosítja a legjobb kompatibilitást. Például az SQL Server 2008 esetében a legjobb illesztőprogram az SQL Server Native Client 11, de azt javaslom, hogy csak az SQL Servert válasszuk, különben ezt a nagyon natív klienst kell telepíteni vagy a szerverre, vagy az összes kliens gépre (ebben az esetben a fájlverzió használatáról), és a nyereség különleges egyszerű, nem ad munkát.

E) Szabványos szerverválasztó párbeszédpanelek

G) Válasszon táblázatot és részleteket... egy nagyszerű lehetőség - azonnal átnevezheti tetszés szerint (és a részleteket is), míg a tulajdonságokban az adatforrás mezőinek nevei láthatók

H) És most fut, nyissa meg a lekérdezéstervezőt - hülye módon kiválasztja az összes rekordot a táblából és az OPA-ból - hiba. Mit kell tenni? Ha van menedzselt felületed, nézd meg a szerviz menüben, ha pedig normál...
Én személy szerint ezt a kódot használtam:

Paraméterek = ExternalDataSources.DAX.GetCommonConnectionParameters();
Paraméterek.AuthenticationStandard = igaz;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;ADATBÁZIS=adatbázis";
Parameters.DBMS = "MSSQLServer";

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

ExternalDataSources.DAX.SetConnection();

Lehet, hogy néhány darabra nincs szükség, de működik. Kódot kell futtatni EGYSZER. Utána normálisan fog kapcsolódni... persze misztikum - miért volt erre szükség, nem világos...

2) Csak olvasható adatforrások
Igen, csodák nem történnek... de néha azt akarod...

3) NE HASZNÁLJA EGYÜTT BELSŐ ADATFORRÁSOKKAL
Személy szerint ez a tény a helyszínen megölt.

Hogy van....amire vártak és már elképzelték és nyalták, hogy most egy kérésben egyesítjük az adatainkat 1C-vel, megfordítjuk - csoportosítjuk, beillesztjük a jelentésbe, de nem volt ott.. .

De persze ez nem állítja meg a tapasztalt embereket... mi jutott eszébe? Így van - ideiglenes táblázatok:

4) NE HASZNÁLJA EGYÜTT IDEIGLENES ASZTALOKKAL

De ez már nem technológiai nehézségnek tűnik, hanem nagyon úgy néz ki, hogy mit akarnak tőlünk, "hogy az élet ne tűnjön paradicsomnak" (IMG :) .

5) Csak SKD csatlakozásoknál használható

Azok számára, akik nem ismerik, az ACS-ben az "Adatkészlet hivatkozások" fülön található. Milyen gyakran használod őket? Kényelmes? Nyilván rá akarnak kényszeríteni, hogy gyakrabban használjuk őket. De van egy oszlop "Link feltétele" és "Link paramétere". Nem találtam példát a használatukra semmilyen tipikus konfigurációban, a dokumentációban és Khrustaleva-ban sem, valahogy nem minden átlátható. Valaki elmagyarázná nekem, hogyan működik a "linkfeltétel"? Ha odaírod, hogy a SourceAttribute = ReceiverRevision, akkor nem működik. Természetesen a "Kifejezés" mezőbe beírható a feltétel - a legtöbb esetben ez is elég... de valahogy nem túl egyszerű.

Összességében ezt a problémát korábban valahol így oldották meg:

InitializeDataSource() függvény

DateStart = BuilderSettings.Settings.DataParameters.Items.Value;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value;
Ha DateCon > "20100101" Akkor
DateCon = "20100101";
EndIf;

QN = Új minősítőszám(15,2);
cs = NewStringQualifers(255);

ArrayNumber = Új tömb();
ArrayNumber.Add(Típus("Szám"));

ArrayString = Új tömb();
ArrayString.Add(Type("String"));

ArrayData = Új tömb();
ArrayDate.Add(Típus("Dátum"));

//A számviteli költséget a táblázatba fogjuk kitölteni
TypeNumber = ÚjTípusLeírás(TömbSzám,KN);
StringType = NewTypeDescription(ArrayString, CS);
TypeDate = NewTypeDescription(ArrayDate);

//tábla adatok betöltéséhez SQL-ből
TK = Új értéktábla();
TK.Columns.Add("NómenklatúraKód", TypeString);
TK.Columns.Add("Mennyiség", Típusszám);
TK.Columns.Add("Időszak", TípusDátum);

TK.Indexes.Add("Időszak");

// Csatlakozás SQL-hez
ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;Felhasználói azonosító=sa;Pwd=;Adatforrás=;Az előkészítési eljárás használata=1;Automatikus fordítás=Igaz;Csomagméret=4096;Munkaállomás-azonosító=;Titkosítás használata for Data=False;Címke oszlopsorolással, ha lehetséges=False;Kezdeti katalógus=Jelentések";
Kapcsolat = Új COMObject("ADODB.Kapcsolat");
Parancs = Új COMObject("ADODB.Command");
RecordSet = Új COMObject("ADODB.RecordSet");
Dátum = "";
Kísérlet
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Kapcsolat;
Command.CommandText = "Válassza ki a *-ot a PH-ból ahol pont >= "" + String(Format(DateStart, "DF=yyyyMMnd")) + "" és pont RecordSet = Command.Execute();
RecordSet.MoveFirst();
Kivétel
TK visszatérése;
A kísérlet vége;

Míg RecordSet.EOF = False Loop
String = TK.Add();
String.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Érték;
String.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Érték;
String.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Érték;
RecordSet.MoveNext();
EndCycle;

Request = Új kérés();
VrTable = NewTempTableManager();
Query.SetParameter("vDataTable", TK);
Query.SetParameter("Kezdődátum", Kezdődátum);
Query.SetParameter("DateCon", DateCon);
Query.Text = "VÁLASZTÁS
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|PUT DataTable
| FROM
| &vrDataTable AS vrDataTable
|HOL
| vrDataTable.Period >= &DateStart
| És vrDataTable.Period Query.Execute();
TK = Undefined;

Request = Új kérés;
Query.TempTableManager = VrTable;
Query.Text = "Itt van egy ideiglenes táblát tartalmazó lekérdezés";

Eredmény = Request.Run();
Eredmény visszaküldése;

EndFunctions

OuterSet = InitializeDataSource();
DataSet = New Structure();
DataSet.Insert("SQL Table", ExternalSet);
GenericReports.Generate GenericReport(ThisObject, Result, Decryption Data, OutputToReportForm,Dataset);

Valójában nincs sok kódsor, és meglehetősen szabványosak ... ebben az esetben használhatja a lekérdezéskészítő teljes funkcióját, és csak az ADATÖSSZETÉTEL függvényt adhatja meg az ACS-ben

De persze egy kicsit nem olyan szépnek tűnik ... és az értéktáblázatba való feltöltéskor minden alkalommal kódot kell írnia, és ellenőriznie kell, hogy hibázott-e a részletek nevében ... egyébként amit 1C-ben kaptunk, az valahogy félkegyelműnek tűnik. Még nem döntöttem el, melyik a kényelmesebb használni. Ön dönt, és ír a döntéseiről, és arról, hogy mi késztetett arra, hogy meghozza azokat.

[a link megtekintéséhez regisztrálnod kell]

Külső források Az 1C data egy viszonylag új metaadat objektum az 1C 8.3 és 8.2, amelyek segítségével külső adatforrások csatlakoztathatók az 1C-hez: SQL táblák, Excel, Access, FoxPro (dbf), másik 1C adatbázis, Oracle, Paradox (db) ), - és még olvasni is egyszerű fájlok txt/csv.

Ez sok lehetőséget ad más rendszerekkel való együttműködésre. Vizsgáljuk meg részletesebben.

Külső adatforrások beállítása az 1C 8-ban

A külső források beállítása rendszerenként egyedi. De általában a beállítás közös része ugyanaz - ez a kapcsolati karakterlánc beállítása:

Ingyenes 267 1C videóleckéket kaphat:

Ha a kapcsolati karakterlánc helyes, a rendszer felszólítja, hogy válassza ki a kívánt táblát az adatbázisból. Ennek eredményeként egy kész táblázatot kapunk, amelyben megadhatja a kulcsmezőt (egyedi mező) és a nézetmezőt (hogyan fog megjelenni a rekord az 1C-ben):

Külső adatforrások használata az 1C 8.3

Az 1C külső adatforrásai más adatbázistáblákhoz hasonlóan használhatók. A platform automatikusan létrehoz egy űrlapot számukra, ha nincs beállítva. A lekérdezések külső forrásokból származó adatokat is használhatnak.

A 8.3.5.1068 (és újabb) platformverzióban lehetővé vált a külső forrásokból származó adatok hozzáadása, módosítása és törlése szoftver eszközök 1C. Ebben a cikkben példákat mutatunk be erre a funkcióra.

A külső forrásokhoz való rögzítés lehetővé tétele érdekében az 1C új tulajdonságokkal egészítette ki az adattáblázatokat és a külső források mezőit:

  • Az egész asztalra - tulajdonság Csak olvasni. Csak olvasható = Igaz azt jelenti, hogy a táblázatban szereplő adatok megváltoztatása nem lehetséges;
  • Az egyes táblamezőkhöz - tulajdonságok Csak olvasni, AllowNullés Kitöltési érték:
    • Csak olvasható = Igaz azt jelenti, hogy ebben a mezőben az adatok megváltoztatása nem lehetséges;
    • AllowNull = Igaz azt jelenti, hogy érték írható ebbe a mezőbe NULLA;
    • Kitöltési érték a mező alapértelmezett értékét tartalmazza (ha van ilyen).

Ön (a táblák kézi leírásakor) vagy a platform (amikor táblákat hoz létre a tervezővel) a következő módon használhatja ezeket a tulajdonságokat.

  • Csak olvasható = Igazállítsa be például nézetekhez (nézethez), kifejezés alapján kapott táblázatokhoz (függvény eredménye) és hasonlókhoz. Az ilyen táblázatokban szereplő adatok nem módosíthatók;
  • Csak olvasható = Igaz adja meg az automatikusan beállított mezőket ( AUTOMATIKUS NÖVEKEDÉS), számított mezők és hasonlók. Az ezekben a mezőkben lévő adatok nem módosíthatók;
  • AllowNull = Igaz minden mezőre beállítva, kivéve a kulcsmezőket, és azokat, amelyek leírása külső forrásban mint NEM NULLA;
  • Kitöltési érték mezőket kell beállítani abban az esetben, ha ennek a mezőnek a standard értéke a külső forrásban van megadva (érték ALAPÉRTELMEZETT).

Hozzáadhat, módosíthat és törölhet adatokat külső forrásokból a beépített nyelv használatával vagy interaktív módon. A beépített nyelvben a táblázatkezelő alábbi metódusai használhatók erre:

  • RecordSet() létrehozása- nem objektum táblákhoz;
  • Új módszer CreateObject()- objektumtáblákhoz.

Ennek megfelelően a tárgyak ExternalDataSourceTableRecordSetés ExternalDataSourceTableObjectúj módszerek jelentek meg Ír()és Töröl().

Adatok hozzáadása

Amikor adatokat ad hozzá egy külső forráshoz, létrehoz egy objektumot (vagy rekordkészletet), beállítja a mezőértékeket, és ír. Vannak azonban olyan funkciók, amelyekről érdemes tudni.

Például, amikor megpróbálja beállítani egy olyan mező értékét, amely rendelkezik Csak olvasható = Igaz, hibaüzenet jelenik meg. És amikor közvetlenül az adatbázisba ír a kifejezésben BESZÁLLÍTÁS az ilyen mezők kimaradnak. A többi mező az Ön által hozzárendelt értékekkel van kitöltve. Ezért az értékek Nullaés az alapértelmezett értékeket kifejezetten hozzá kell rendelni a mezőkhöz.

  • id(AllowNull = igaz);
  • név(AllowNull = igaz);
mCharacteristic = ExternalDataSources.IM.Tables.shop_feature.CreateObject(); mCharacteristic.id = kód; mCharacteristic.name = Név; mCharacteristic.Write();

Nyilatkozat végrehajtása Ír() az eseménykezelőt hívja meg először Felvétel előtt, akkor fizikai írás történik a külső forrástáblába ( BESZÁLLÍTÁS), akkor a rendszer meghívja az eseménykezelőt Felvételkor.

A külső forrástábla kulcsmezőjével a következőket teheti. Ha a kulcsmező szerkeszthető, akkor az írás előtt "kézi" állítja be az értékét. Ha a kulcsmező megváltoztatása tilos, akkor a platform önállóan beszerzi a kulcsot BESZÁLLÍTÁS vagy közvetlenül utána. A módszerrel beavatkozhat ebbe a folyamatba SetReferenceNew() a fizikai rekord előtt (az eseménykezelőben Felvétel előtt) vagy közvetlenül a fizikai bejegyzés után (az eseménykezelőben Felvételkor).

Adatok módosítása

Az adatok megváltoztatásakor a táblázat összes mezőjének értékei, amelyek rendelkeznek Csak olvasható = Hamis.

MFeature = ExternalDataSources.IM.Tables.shop_feature.FindByField("id",kód); mObject = mCharacteristic.GetObject(); mObject.name = Név; mObject.Write();

Ha csak néhány mezőt kell rögzíteni, akkor ezek listája közvetlenül a beépített nyelvből adható meg a metódusok segítségével SetWritableFields()és GetWritableFields().

Adatok törlése

Az adatok törlésével egy sor közvetlenül törlődik az adatbázistáblából. Ugyanakkor a törölt objektumra mutató hivatkozásokat nem keresi. Ha ilyen funkcionalitásra van szükség, saját maga is beprogramozhatja az eseménykezelőben Törlés előtt().

MFeature = ExternalDataSources.IM.Tables.shop_feature.FindByField("id",Kód); mObject = mCharacteristic.GetObject(); mObject.Delete();

Tranzakciók

A külső forrásokból származó adatok beolvasása, mint korábban, a tranzakción kívül történik, és íráskor a platform implicit tranzakciót nyit meg. Ugyanakkor az explicit tranzakciókban objektummetódusok segítségével olvasást és írást is végrehajthat ExternalDataSourceManager:

  • Tranzakció indítása();
  • CommitTransaction();
  • Tranzakció törlése().

Zárak

  • Auto;
  • Kezelve;
  • Automatikus és vezérelt.

valamint a külső forrástábla tulajdonsága Isolation LevelTransactions:

Ezenkívül a módszerben önállóan beállíthatja a zárak szintjét Tranzakció indítása().

A tipikus cikket példákkal egészítettem ki) Lesz még idő - teszek még példákat.

Az 1C program 8-as verziójában a fejlesztők hozzáadták a funkcionalitáshoz azt a lehetőséget, hogy harmadik féltől származó adatbázisokat kapcsolódjanak, és információkat szerezzenek belőlük közvetlenül a konfigurátorból, anélkül COM csatlakozásokés OLE objektumok. Ez a funkció egy új objektum segítségével valósul meg - "Külső adatforrások"

Az 1C külső adatforrásai ugyanúgy használhatók, mint a többi rendszertábla:

  1. Amikor jelentéseket és számításokat készít adatösszetételi rendszerrel (ACS);
  2. Harmadik féltől származó forrásokban tárolt információkra mutató hivatkozások beszerzése;
  3. A táblázatokban tárolt adatok megváltoztatása;
  4. A kérések benyújtásakor.

Fontos tudni, hogy ezt a mechanizmust nem úgy tervezték, hogy más 1C adatbázisokkal működjön, mivel maga az 1C.Enterprise működési modell nem jelent interferenciát az adatokkal a fizikai táblák szintjén.

Új forrás létrehozása

Új külső forrás hozzáadása a programhoz a "Konfigurátor" módban történik. Van egy megfelelő ág a konfigurációs fában (1. ábra)

Új forrás létrehozásakor izzadnia kell, annak ellenére, hogy az új objektum formája csak négy lappal rendelkezik:

  1. Alapvető;
  2. Adat;
  3. Funkciók;
  4. jogok.

Az első fülnek csak egy érdekes paramétere van - a zárvezérlési mód. Ha nem tesz fel kérdéseket az adatok blokkolásával kapcsolatban a tranzakciókban, a párhuzamosítás bonyolultságáról információáramlások ezt a beállítást hagyhatja automatikus zár módban. Ez a megközelítés azonban túlzott korlátozásokhoz vezethet (például amikor egyetlen rekord helyett a program zárolja a teljes fizikai táblát, megfosztva a többi felhasználót attól, hogy dolgozzon vele).

A felügyelt zárak az automatikus zárakkal ellentétben magában a programban rejlő tranzakciós mechanizmust használják, nem pedig a DBMS-ben, ami lehetővé teszi a táblarögzítések lefordítását sokkal többre. alacsony szint.

Ennek a paraméternek az "Automatikus és felügyelt" értékre állításával lehetőséget adunk a rendszernek arra, hogy meghatározza, melyik módot használja, közvetlenül hivatkozva az egyes táblák hasonló tulajdonságaira.

A külső forrás tulajdonságai űrlap Adatok lapja

Az „Adatok” fül formája az ábrán látható. 2

Rizs. 2

Ide külső forrástáblákat és kockákat adhatunk hozzá. Kétféleképpen adhat hozzá táblázatot:

  1. Manuálisan, majd látni fogjuk a táblázat hozzáadásának űrlapját (3. ábra);

Rizs. 3

  1. Vagy válasszunk a fizikai forrástáblák listájából (4. ábra), ilyenkor egy speciális konstruktor nyílik meg előttünk.

Rizs. négy

Nézzük meg közelebbről a táblázat hozzáadásának űrlapját. A "Name" tulajdonság egy objektum egyedi azonosítására szolgál a konfigurációban.

A metaadat-objektum és a végső fizikai tábla összehasonlítása a "Továbbiak" lapon található "Név az adatforrásban" tulajdonságon keresztül történik (5. ábra).

Rizs. 5

Ezután meg kell határoznunk a táblázat típusát, vagy inkább objektivitását. Ha a struktúrában tárolt adatok bármely mezőn keresztül egyedileg azonosíthatók, a tábla lehet objektumtábla. Ha a rekord azonosságát kulcsmezők halmaza határozza meg, akkor a táblának nem objektumtípusúnak kell lennie.

Az ilyen táblázatokat más metaadat-objektumokkal összehasonlítva a következő analógiát vonhatjuk le:

  • Az objektumtáblázatok referenciakönyvek;
  • A nem objektív információs nyilvántartások.

A kulcsmezők halmazát a következő űrlapparaméter ("Kulcsmezők") határozza meg. Ezt a mezőt kötelező kitölteni, üresen hagyva hiba lép fel a konfiguráció mentésekor.

Amint az 5. ábrán látható, egyes mezők és űrlapgombok nem szerkeszthetők:

  • Kifejezés adatforrásban;
  • Táblázat adattípusa;
  • Nézet mező;
  • Kezelők megtekintése.

Csak a táblázat mezőinek kitöltése után használhatók, megadva a típusukat és beállítva az azonosítóikat (6. ábra)

Rizs. 6

Itt érdemes figyelni a "Null engedélyezése" opcióra, ha ez a négyzet be van jelölve, egy ilyen mezőt nem kívánatos kulcsként használni.

Asztalkészítő

Talán a legfontosabb és érdekes pont a külső forrásokkal való munka során egy kapcsolati karakterlánc létrehozása. Konstruktora akkor nyílik meg, ha rákattint a "Connection string" paraméter melletti három ponttal ellátott gombra.

Először is meg kell határoznunk, hogy melyik illesztőprogramot használjuk a csatlakozáshoz (7. ábra)

Rizs. 7

A paraméter helytelen meghatározása nem teszi lehetővé harmadik félhez való csatlakozást információs bázis. Azt is meg kell érteni, hogy nem minden, a legördülő listában megadott illesztőprogram használható a kapcsolati karakterlánc automatikus létrehozására. Ha a platform hibát jelez (8. ábra), akkor a kapcsolati karakterláncot kézzel kell megírni.

8. ábra

Rizs. 9

Maga a vonal szigorúan szabályozott építmény.

Csatlakozási karakterlánc példa

Vegyünk egy harmadik fél által létrehozott adatbázist Microsoft Accessés a D meghajtó gyökerében található. Ennek az alapnak a csatlakoztatásához a megfelelő meghajtót kell használnunk, de ennek kiválasztása a vonalkonstruktorban hibához vezet 8. ábra.

A csatlakozási paramétereket mi magunk írjuk meg.

Illesztőprogram=(Microsoft Access Driver (*.mdb)) - így néz ki a sor első része. Kapcsos zárójelben megadtuk az illesztőprogramot.

Mert Excel fájlokúgy fog kinézni Microsoft Excel Illesztőprogram (*.xls)) , a 2003-nál régebbi Office-ban létrehozott Excel-fájlok esetében az illesztőprogram-sor így fog kinézni (Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)).

Ezt a paramétert pontosvesszővel elválasztva a következőtől, meg kell írnunk a tárhelyünk címét (esetünkben DBQ=D:\Database1.mdb).

Ezt a két paramétert összeadva a Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb értéket kapjuk, ezt a paramétert írva hozzáférünk ennek az adatbázisnak a belső struktúráihoz.

A "Külső forrás" objektumhoz nem elég csak a konfigurációban létrehozni, hanem "Vállalkozások" módban is csatlakoztatni kell. Ezt a "Minden funkció"->Külső források menüből teheti meg. Amikor először lépünk be a táblázatunkba, ugyanazt a kapcsolati karakterláncot kell megírnunk már "Vállalati" módban.