Atviras
Uždaryti

Išoriniai duomenų šaltiniai 1s 8.2. Išoriniai duomenų šaltiniai. Ryšio eilutės pavyzdys

Norėdami dirbti su ne 1C duomenimis, pavyzdžiui: SQL duomenų baze, Access duomenų baze, Excel failu ir daugeliu kitų, į technologijų platformą buvo įtrauktas mechanizmas (objektas), vadinamas išoriniais duomenų šaltiniais, pradedant nuo 8.2.14 versijos.

Šiame straipsnyje pažiūrėkime, kaip šis objektas sąveikauja su mums įprastu „Excel“ failu. Pavyzdžiui, kai kuriais intervalais reikia nuskaityti duomenis iš *.xls failo į 1C duomenų bazę. Jei anksčiau mums reikėjo inicijuoti naudojant Com objektus, tada sukurti reikšmių lentelę, skaityti duomenis eilutė po eilutės, dabar šios manipuliacijos tiesiog išnyksta. Naudodami išorinį duomenų šaltinį galime akimirksniu pateikti užklausą ir gauti duomenis.

Tarkime, kad turime Excel darbaknygę su tokiu turiniu. Iš kurių turime nuskaityti duomenis.

Visų pirma, konfigūratoriaus režimu pridėkite naują duomenų šaltinį ir pavadinkite jį „Excel“.

Dabar turime pridėti duomenis, lentelę su laukais, kuriuos turėsime 1C. Sukurkime juos taip, kaip pavadinti failo stulpeliai. Norėdami tai padaryti, eikite į sukurtą objektą ir skirtuke Duomenys spustelėkite pridėti. Čia primygtinai rekomenduoju jį sukurti rankiniu būdu, nes gana dažnai kyla problemų, kai 1c-ina bando automatiškai sukonfigūruoti.

Pavadinkime savo lentelę DataTable. Po to eikite į skirtuką Duomenys ir sukurkite laukus (panašius į failą).

Kiekvieno lauko ypatybėse duomenų šaltinyje turite nurodyti pavadinimą, tipą ir pavadinimą (identiškus failui).
Priskirkite pavadinimą duomenų šaltinyje. Čia nurodome lapo pavadinimą *. xls su „$“ pridėta pabaigoje. Mes turime sąrašą1$.
Būtinai nurodykite raktų laukus. Čia iš duomenų bazės teorijos reikia nurodyti lauką, kuriam eilutė bus visiškai unikali.
Pateikimo laukas – nurodome lauką, kuriame bus trumpai pavaizduota eilutė, mūsų atveju Nomenklatūra.

Viskas! Tai iš tikrųjų yra visa sąranka. Tada jums tereikia nurodyti ryšio eilutę bet kurioje procedūroje ir po prisijungimo galite dirbti su duomenų šaltiniu.

XLSX failų ryšio eilutė („Office 2007“ ir naujesnės versijos)

Vairuotojas=(Microsoft Excel tvarkyklė (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;

XLS ir ankstesnių failų ryšio eilutė.

Vairuotojas=(Microsoft Excel tvarkyklė (*.xls)); Vairuotojo ID=790; DBQ=D:\FileExcel.xls;

Sukurkime naują išorinį apdorojimą, kuris prisijungs ir praneš apie ryšį.

Procedūros mygtukasVykdytiPress(Button)ConnectionParameters = NewConnectionParametersExternalDataSource; Ryšio parametrai. ConnectionString= “Vairuotojas= ( Microsoft Excel tvarkyklė (*. xls) ); Vairuotojo ID= 790 ; DBQ= D:\vaisiai. xls; "; Išoriniai duomenų šaltiniai. Excel. SetGeneralConnectionParameters(ConnectionParameters) ; Išoriniai duomenų šaltiniai. Excel. Užmegzti ryšį () ; Užklausa = Nauja užklausa() ; Prašymas. Tekstas = "PASIRINKTI | Duomenų lentelė. Kodas, | Duomenų lentelė. Nomenklatūra, | Duomenų lentelė. Vienetas, | Duomenų lentelė. Kiekis | IŠ | Išorinis duomenų šaltinis. Excel. Lentelė. DataTable AS DataTable“; TK = Prašymas. Vykdyti ( ). Iškrauti() ; Report("Prisijungta"); Procedūros pabaiga

Jei nustatysime pertraukos tašką ir pažvelgsime į tai, ką turime specifikacijoje, pamatysime:

P.S. Pačiame „Excel“ faile prieš laukų pavadinimus neturėtų būti tuščių eilučių, kitaip atsiras odbc klaida. sqlstate 07002 (odbc excel tvarkyklėje per mažai parametrų).

Išoriniai duomenų šaltiniai 1C - palyginti naujas metaduomenų objektas 1C 8.3 ir 8.2, su kuriuo galima prisijungti prie 1C išorinių duomenų šaltinių: SQL lentelės, Excel, Access, FoxPro (dbf), kita 1C duomenų bazė, Oracle, Paradox (db) , - ir netgi skaitymas iš paprastų txt/csv failų.

Tai suteikia daug galimybių sąveikai su kitomis sistemomis. Pažiūrėkime atidžiau.

Išorinių duomenų šaltinių nustatymas 1C 8

Išorinių šaltinių nustatymas yra individualus kiekvienam sistemos tipui. Tačiau, kaip taisyklė, bendroji sąrankos dalis yra ta pati - tai yra ryšio eilutės nustatymas:

Gaukite 267 vaizdo įrašų pamokas 1C nemokamai:

Jei ryšio eilutė nurodyta teisingai, sistema paragins iš duomenų bazės pasirinkti norimą lentelę. Dėl to gausime paruoštą lentelę, kurioje galėsime nurodyti rakto lauką (unikalus laukas) ir pateikimo lauką (kaip įrašas atsispindės 1C):

Išorinių duomenų šaltinių naudojimas 1C 8.3

Išoriniai duomenų šaltiniai 1C gali būti naudojami kaip ir kitos duomenų bazės lentelės. Platforma automatiškai sukuria jiems formą, jei ji nenurodyta. Taip pat užklausose galima naudoti duomenis iš išorinių šaltinių.

1C programos versijoje kūrėjai prie funkcionalumo pridėjo galimybę prijungti trečiųjų šalių duomenų bazes ir gauti iš jų informaciją tiesiai iš konfigūratoriaus, nenaudojant COM jungčių ir OLE objektų. Ši funkcija įdiegta naudojant naują objektą - „Išoriniai duomenų šaltiniai“

Išoriniai duomenų šaltiniai 1C gali būti naudojami taip pat, kaip ir kitos sistemos lentelės:

  1. Kuriant ataskaitas ir skaičiavimus naudojant duomenų komponavimo sistemą (DCS);
  2. Gauti nuorodas į informaciją, saugomą trečiųjų šalių šaltiniuose;
  3. Keisti lentelėse saugomus duomenis;
  4. Generuojant užklausas.

Svarbu žinoti, kad šis mechanizmas nėra skirtas dirbti su kitomis 1C duomenų bazėmis, nes pats 1C.Enterprise veikimo modelis neapima duomenų trikdymo fizinių lentelių lygmeniu.

Naujo šaltinio kūrimas

Naujo išorinio šaltinio įtraukimas į programą vyksta „Konfigūratoriaus“ režimu. Konfigūracijos medyje yra atitinkama šaka (1 pav.)

Turėsite sunkiai dirbti kurdami naują šaltinį, nepaisant to, kad naujo objekto forma turi tik keturis skirtukus:

  1. Pagrindinis;
  2. Duomenys;
  3. Funkcijos;
  4. Teisės.

Pirmajame skirtuke yra tik vienas įdomus parametras - užrakto valdymo režimas. Jei neturite klausimų dėl duomenų blokavimo operacijose ar informacijos srautų lygiagretinimo subtilybių, šią parinktį galite palikti automatinio blokavimo režimu. Tačiau toks požiūris gali sukelti perteklinius apribojimus (pavyzdžiui, kai vietoj atskiro įrašo programa užrakina visą fizinę lentelę, atimdama galimybę su ja dirbti kitiems vartotojams).

Valdomi užraktai, skirtingai nei automatiniai, naudoja transakcijų mechanizmą, būdingą pačiai programai, o ne DBVS, o tai leidžia lentelių fiksavimus perkelti į daug žemesnį lygį.

Nustačius šį parametrą į „Automatinis ir valdomas“, suteikiame sistemai galimybę nustatyti, kurį režimą naudoti, tiesiogiai pasiekiant panašią kiekvienos konkrečios lentelės ypatybę.

Išorinio šaltinio ypatybių formos skirtukas „Duomenys“.

Skirtuko „Duomenys“ forma parodyta pav. 2

Ryžiai. 2

Čia galime pridėti išorinių šaltinių lenteles ir kubus. Yra du būdai pridėti lentelę:

  1. Rankiniu būdu, tada prieš mus atsivers lentelės pridėjimo forma (3 pav.);

Ryžiai. 3

  1. Arba pasirinkite iš fizinių šaltinių lentelių sąrašo (4 pav.), tokiu atveju prieš mus atsidaro specialus konstruktorius.

Ryžiai. 4

Pažvelkime atidžiau į lentelės pridėjimo formą. Ypatybė „Vardas“ naudojama konfigūracijos objektui unikaliai identifikuoti.

Metaduomenų objektas ir galutinė fizinė lentelė palyginami naudojant ypatybę „Pavadinimas duomenų šaltinyje“, esančią skirtuke „Išplėstinė“ (5 pav.).

Ryžiai. 5

Toliau turime nustatyti lentelės tipą, tiksliau, jos objektyvumą. Jei struktūroje saugomus duomenis galima vienareikšmiškai identifikuoti per bet kurį lauką, lentelė gali būti objektinė. Jei įrašo individualumą lemia raktų laukų rinkinys, lentelė turi būti neobjektinio tipo.

Lyginant tokias lenteles su kitais metaduomenų objektais, galima pateikti tokią analogiją:

  • Objektų lentelės yra žinynai;
  • Neobjektiniai yra informacijos registrai.

Raktų laukų rinkinys apibrėžiamas kitame formos parametre („Raktų laukai“). Šis laukas yra būtinas, jei paliksite jį tuščią, nepavyks išsaugoti konfigūracijos.

Kaip matyti iš 5 pav., kai kurių formos laukų ir mygtukų redaguoti negalima:

  • Išraiška duomenų šaltinyje;
  • Lentelės duomenų tipas;
  • Pristatymo laukas;
  • Žiūrėti tvarkykles.

Juos galima naudoti tik tada, kai užpildome lentelės laukus, apibrėžiame jų tipą ir priskiriame jiems identifikatorius (6 pav.)

Ryžiai. 6

Čia reikėtų atkreipti dėmesį į parametrą „Allow Null“, jei šis žymimasis laukelis yra pažymėtas, tokio lauko kaip rakto naudoti nepatartina.

Stalų statytojas

Galbūt svarbiausias ir įdomiausias dalykas dirbant su išoriniais šaltiniais yra ryšio eilutės kūrimas. Jo konstruktorius atidaromas spustelėjus mygtuką su trimis taškais šalia parametro „Connection string“.

Visų pirma, mūsų bus paprašyta nuspręsti dėl tvarkyklės, kuri bus naudojama prisijungimui (7 pav.)

Ryžiai. 7

Neteisingas šio parametro apibrėžimas neleis prisijungti prie trečiosios šalies informacijos bazės. Taip pat turėtumėte suprasti, kad ne visos išskleidžiamajame sąraše nurodytos tvarkyklės gali būti naudojamos automatiškai generuoti ryšio eilutę. Jei platforma generuoja klaidą (8 pav.), tada ryšio eilutę reikės įvesti rankiniu būdu.

8 pav

Ryžiai. 9

Pati linija yra griežtai reglamentuota konstrukcija.

Ryšio eilutės pavyzdys

Panagrinėkime trečiosios šalies duomenų bazę, sukurtą Microsoft Access ir esančią disko šaknyje D. Norėdami prijungti šią duomenų bazę, turime naudoti atitinkamą tvarkyklę, tačiau ją pasirinkus eilučių konstruktoriuje atsiranda klaida 8 pav.

Ryšio parametrus nustatysime patys.

Driver=(Microsoft Access Driver (*.mdb)) – taip atrodo pirmoji eilutės dalis. Garbanotomis petnešomis apibrėžėme vairuotoją.

„Excel“ failams ji atrodys taip: („Microsoft Excel“ tvarkyklė (*.xls)), „Excel“ failų, sukurtų biure, senesniame nei 2003 m., tvarkyklės eilutė atrodys taip: („Microsoft Excel Driver“ (*.xls, *.xlsx, *. xlsm, *.xlsb)).

Atskirdami šį parametrą nuo kito kableliu, turime įvesti savo saugyklos adresą (mūsų atveju DBQ=D:\Database1.mdb).

Sudėjus šiuos du parametrus, gauname Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb Įrašę šį parametrą, gauname prieigą prie vidinių šios duomenų bazės struktūrų.

Objektui „Išorinis šaltinis“ neužtenka tik jį sukurti konfigūracijoje, jį reikia prijungti ir „Įmonės“ režimu. Tai galima padaryti iš meniu „Visos funkcijos“->Išoriniai šaltiniai. Kai pirmą kartą įeiname į lentelę, „Enterprise“ režimu turime įvesti tą pačią ryšio eilutę.

Kodėl ši galimybė taip domina? Bet kuris asmuo, kuris programavo 1C ir yra gerai susipažinęs su SQL ir bent jau bendrai yra susipažinęs su kitų verslo programų technologijų platformų architektūra ir kūrimo principais, tvirtai pasakys, kas jam labiausiai patinka 1C. Žinoma, užklausų kūrimo priemonė yra patogiausias ir apgalvočiausias mechanizmas rašant užklausas, skirtas duomenims iš reliacinių struktūrų gauti, su kuriomis aš asmeniškai susidūriau. O dabar 1C mums suteikė tokią nuostabią galimybę naudoti jį ne tik su 1C, bet ir su bet kokiomis kitomis lentelėmis. Tiesiog šioje "medaus statinėje" yra daug "musių tepalu". Visų pirmą:

1) Nustatymas ir naudojimas- be „šokių su tamburinu“ tai neveiks
a) Pridėkite išorinį duomenų šaltinį – neatrodo sudėtinga
b) pažymėkite žymimąjį langelį „Pasirinkti iš sąrašo“ - privaloma - tai būtina norint patikrinti funkcionalumą pradžioje ir išgelbės jus nuo nereikalingų rūpesčių
c) - būtinai spustelėkite "..." - ryšys yra ODBC. Ne OLEDB, kaip visi esame įpratę, o vienu lygiu žemiau

D) Bet čia būkite LABAI ATSARGIAI.

Tai yra ODBC tvarkyklė – jei naudojate kliento-serverio versiją, ji turi būti serveryje. Jei kuriate vieną sistemą, o dirbate su kita (kaip dažniausiai būna), įsitikinkite, kad jūsų nelaukia staigmenos. Keista rekomendacija, bet rinkitės seniausią arba labiausiai paplitusią tvarkyklę, jei ne itin nerimaujate dėl greičio ir neketinate peržengti SQL92 standarto galimybių. Tai suteiks jums geresnį suderinamumą. Pavyzdžiui, SQL Server 2008 geriausia tvarkyklė bus SQL Server Native Client 11, bet aš rekomenduoju rinktis tik SQL Server, kitaip šis labai vietinis klientas turės būti įdiegtas serveryje arba visuose kliento įrenginiuose (jei naudojate failo versija), o nauda yra ypatinga, nes paprastas jis neduos jums jokių užduočių.
e) Standartiniai serverio pasirinkimo dialogai

E) Į klausimą apie slaptažodžio išsaugojimą rekomenduoju atsakyti „taip“, kitaip negalėsite pradėti šio verslo.
g) Pasirinkite lentelę ir detales... nuostabi galimybė - galite iš karto pervardyti kaip norite (ir detales irgi), o ypatybėse matysite duomenų šaltinio laukelių pavadinimus

Z) O dabar paleidžiate, atidarykite užklausų dizainerį - kvailai pasirinkite visus įrašus iš lentelės ir OPA - klaida. Ką daryti? Jei turite valdomą sąsają, pažiūrėkite į aptarnavimo meniu, o jei įprastą...
Aš asmeniškai naudojau šį kodą:
Kodas 1C v 8.x Parametrai = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = True;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DUOMENŲ BAZĖ=duomenų bazė";
Parameters.DBMS = "MSSQLServeris";

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

ExternalDataSources.DAX.SetConnection();
Kai kurios dalys gali būti nebūtinos, bet tai veikia.
Kodą reikia paleisti KARTĄ. Po kurio bus galima normaliai jungtis... aišku mistika - kam to reikėjo neaišku...

2) Tik skaitomi duomenų šaltiniai- Taip, stebuklų nebūna... bet kartais taip norisi...

3) JŲ NEGALIMA NAUDOTI KARTU SU VIDINIAIS DUOMENŲ ŠALTINIAIS
Asmeniškai šis faktas mane nužudė vietoje.

Kaip taip gali būti... ko mes laukėme ir jau įsivaizdavome ir laižėme lūpas apie tai, kaip dabar sujungsime savo duomenis su 1C vienoje užklausoje, sutrauksime - sugrupuosime, įterpsime į ataskaitą, bet tai ne atvejis...
Bet, žinoma, tai nesustabdo patyrusių žmonių... kokia mintis atėjo į galvą? Teisingai – laikinos lentelės:

4) JŲ NEGALIMA NAUDOTI KARTU SU LAIKINAIS STALIAIS

Bet tai jau nebeatrodo kaip technologiniai sunkumai, o labai panašu į tai, ko jie nori, kad mes darytume „kad gyvenimas neatrodytų kaip rojus“ :).

5) Galima naudoti tik ACS jungtyse
Tiems, kurie nežino, tai yra ACS skirtuke „Duomenų rinkinio nuorodos“. Ar dažnai juos naudojate? Patogus? Matyt, nori priversti mus dažniau jomis naudotis. Tik yra stulpeliai „Ryšio sąlyga“ ir „Ryšio parametras“. Neradau jų naudojimo pavyzdžio jokioje standartinėje konfigūracijoje, o dokumentacijoje ir Khrustalevos darbuose taip pat kažkaip viskas nėra skaidru. Ar kas nors gali man paaiškinti, kaip veikia "ryšio sąlyga". Jei ten rašote Source Attributes = Receiver Attributes, tai neveiks. Žinoma, sąlygą galima įrašyti lauke „Išraiška“ – daugeliu atvejų to užtenka... bet kažkaip nelabai lengvai pavyksta.

Iš viso ši problema anksčiau buvo išspręsta kažkur taip:
Kodas 1C v 8.x Funkcija InitializeDataSource()

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Jei DataCon > "20100101" Tada
DataCon = "20100101";
endIf;

CN = New QualifiersNumbers(15,2);
KS = NewStringQualifers(255);

ArrayNumber = naujas masyvas();
ArrayNumber.Add(Tipas("Skaičius"));

ArrayString = naujas masyvas();
ArrayString.Add(Tipas("Eilutė"));

ArrayData = naujas masyvas();
ArrayDate.Add(Tipas("Data"));

//Buhalterinę kainą užpildysime lentelėje
TypeNumber = Naujas aprašymasTypai (MasyvoNumber, CN);
TypeString = naujas tipo aprašymas(ArrayString, KS);
TypeDate = Naujas tipo aprašymas(ArrayDate);

// lentelė duomenims iš SQL įkelti
TZ = nauja verčių lentelė ();
TK.Columns.Add("Nomenklatūros kodas", TypeString);
TK.Columns.Add("Kiekis", TipoNumber);
TK.Columns.Add("Laikotarpis", Datos tipas);

TK.Indexes.Add("Taškas");

//Prisijungti prie SQL
Ryšio eilutė = "Teikėjas=SQLOLEDB.1;Išlikti saugos informacija=Tiesa;Vartotojo ID=sa;Pwd=;Duomenų šaltinis=;Naudokite paruošimo procedūrą=1;Automatinis vertimas=Tiesa;Paketo dydis=4096;Darbo stoties ID=;Naudoti Duomenų šifravimas=Klaidingas;Žyma su stulpelių palyginimu, kai įmanoma=Klaidinga;Pradinis katalogas=Ataskaitos";
Ryšys = naujas COMObject("ADODB.Ryšys");
Komanda = naujas COMObject("ADODB.Command");
RecordSet = naujas COMObject("ADODB.RecordSet");
Data = "";
Bandymas
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = Ryšys;
Command.CommandText = "S_elect * iš PH, kuriame periodas >= "" + String(Formatas(DataStart, "DF=yyyyMMdd"))) + "" ir taškas<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Išimtis
Techninių specifikacijų grąžinimas;
EndAttempt;

Nors RecordSet.EOF = klaidingas ciklas
Linija = TK.Pridėti();
Eilutė.Nomenklatūros kodas = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Vertė;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Vertė;
Eilutė.Taškas = RecordSet.Fields(RecordSet.Fields.Item(13).Pavadinimas).Vertė;
RecordSet.MoveNext();
EndCycle;

Užklausa = Nauja užklausa();
VrTable = Naujas laikinas lentelių valdytojas();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Pradžios data", Pradžios data);
Request.SetParameter("DataCon", DateCon);
Query.Text = "PASIRINKTI
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Vietos duomenų lentelė
|NUO
| &vDataTable AS vrDataTable
|KUR
| vrDataTable.Period >= &Pradžios data
| Ir vrDataTable.Period<= &ДатаКон";
Request.Run();
TZ = Neapibrėžta;

Užklausa = nauja užklausa;
Query.TemporaryTableManager = VrTable;
Query.Text = "Čia yra užklausa, susijusi su kintamųjų lentele";

Rezultatas = Query.Run();
Grąžinimo rezultatas;

EndFunction

ExternalSet = InitializeDataSource();
DataSet = nauja struktūra();
DataSet.Insert("SQL lentelė", išorinis rinkinys);
Tipinės ataskaitos. SukurtiTipinę ataskaitą (Šis objektas, rezultatas, iššifravimo duomenys, išvestis ataskaitos formoje, duomenų rinkinys);

Tiesą sakant, kodo eilučių nėra daug ir jos yra gana standartinės... tokiu atveju galite išnaudoti visas užklausų kūrėjo funkcijas, o ACS duoti tik DUOMENŲ SUDĖTIS funkciją

Bet tai tikrai neatrodo taip gražiai... ir kiekvieną kartą reikia parašyti kodą, kad į lentelę įkeltumėte reikšmes ir patikrintumėte, ar nepadarėte klaidos pavadinime detales... ir kas mums buvo pateikta 1C atrodo kažkaip neblogai. Dar neapsisprendžiau, kuri patogiau naudoti. Jūs nusprendžiate ir rašote apie savo sprendimus ir tai, kas jus paskatino juos priimti.

Informacija paimta iš svetainės

8.2.14.533 leidimas pagaliau yra daugiau ar mažiau stabili 14-osios platformos leidimo versija. Galiausiai atsirado galimybė išbandyti nuostabią galimybę – „išorinius duomenų šaltinius“.

Kodėl ši galimybė taip domina? Bet kuris asmuo, kuris programavo 1C ir yra gerai susipažinęs su SQL ir bent jau bendrai yra susipažinęs su kitų verslo programų technologijų platformų architektūra ir kūrimo principais, tvirtai pasakys, kas jam labiausiai patinka 1C. Žinoma, užklausų kūrimo priemonė yra patogiausias ir apgalvočiausias mechanizmas rašant užklausas, skirtas duomenims iš reliacinių struktūrų gauti, su kuriomis aš asmeniškai susidūriau. O dabar 1C mums suteikė tokią nuostabią galimybę naudoti jį ne tik su 1C, bet ir su bet kokiomis kitomis lentelėmis. Tiesiog į šią „medaus statinę“ supilta daug „musių tepalu“. Visų pirmą:

1) Nustatymas ir naudojimas – be „šokių su tamburinu“ tai neveiks

A) Pridėkite išorinį duomenų šaltinį – neatrodo sudėtinga
b) pažymėkite žymimąjį langelį „Pasirinkti iš sąrašo“ - privaloma - tai būtina norint patikrinti funkcionalumą pradžioje ir išgelbės jus nuo nereikalingų rūpesčių
V)
(IMG: http://pics.livejournal.com/comol/pic/0000cr1r.png)
- būtinai spustelėkite "..." - ryšys yra ODBC. Ne OLEDB, kaip visi esame įpratę, o vienu lygiu žemiau

Bet būk čia LABAI ATSARGIAI.

Tai yra ODBC tvarkyklė – jei naudojate kliento-serverio versiją, ji turi būti serveryje. Jei kuriate vieną sistemą, o dirbate su kita (kaip dažniausiai būna), įsitikinkite, kad jūsų nelaukia staigmenos. Keista rekomendacija, bet rinkitės seniausią arba labiausiai paplitusią tvarkyklę, jei ne itin nerimaujate dėl greičio ir neketinate peržengti SQL92 standarto galimybių. Tai suteiks jums geresnį suderinamumą. Pavyzdžiui, SQL Server 2008 geriausia tvarkyklė bus SQL Server Native Client 11, bet aš rekomenduoju rinktis tik SQL Server, kitaip šis labai vietinis klientas turės būti įdiegtas serveryje arba visuose kliento įrenginiuose (jei naudojate failo versija), o nauda yra ypatinga, nes paprastas jis neduos jums jokių užduočių.

E) Standartiniai serverio pasirinkimo dialogai

G) Pasirinkite lentelę ir detales... puiki galimybė - galite iš karto pervardyti kaip norite (ir detales), o duomenų šaltinio laukų pavadinimai bus rodomi ypatybėse

Z) Dabar paleidžiate, atidarykite užklausų dizainerį - kvailai pasirinkite visus įrašus iš lentelės ir OPA - klaida. Ką daryti? Jei turite valdomą sąsają, pažiūrėkite į aptarnavimo meniu, o jei įprastą...
Aš asmeniškai naudojau šį kodą:

Parametrai = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = True;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DUOMENŲ BAZĖ=duomenų bazė";
Parameters.DBMS = "MSSQLServeris";

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

ExternalDataSources.DAX.SetConnection();

Kai kurios dalys gali būti nebūtinos, bet tai veikia. Turite paleisti kodą KARTĄ. Po kurio bus normalu jungtis... aišku mistika - kam to reikėjo neaišku...

2) Tik skaitomi duomenų šaltiniai
Taip, stebuklų nebūna... bet kartais taip norisi...

3) JŲ NEGALIMA NAUDOTI KARTU SU VIDINIAIS DUOMENŲ ŠALTINIAIS
Asmeniškai šis faktas mane nužudė vietoje.

Kaip taip gali būti... ko mes laukėme ir jau įsivaizdavome ir laižėme lūpas apie tai, kaip dabar sujungsime savo duomenis su 1C vienoje užklausoje, sutrauksime - sugrupuosime, įterpsime į ataskaitą, bet tai ne atvejis...

Bet, žinoma, tai nesustabdo patyrusių žmonių... kokia mintis atėjo į galvą? Teisingai – laikinos lentelės:

4) JŲ NEGALIMA NAUDOTI KARTU SU LAIKINAIS STALIAIS

Tačiau tai nebeatrodo kaip technologiniai sunkumai, o labai panašu į tai, ko jie nori, kad mes darytume „kad gyvenimas neatrodytų kaip rojus“ (IMG:).

5) Galima naudoti tik ACS jungtyse

Tiems, kurie nežino, tai yra ACS skirtuke „Duomenų rinkinio nuorodos“. Ar dažnai juos naudojate? Patogus? Matyt, nori priversti mus dažniau jomis naudotis. Tik yra stulpelis „Ryšio sąlyga“ ir „Ryšio parametras“. Neradau jų naudojimo pavyzdžio jokioje standartinėje konfigūracijoje, o dokumentacijoje ir Khrustalevos darbuose taip pat kažkaip viskas nėra skaidru. Ar kas nors gali man paaiškinti, kaip veikia "ryšio sąlyga". Jei ten rašote Source Attributes = Receiver Attributes, tai neveiks. Žinoma, sąlygą galima įrašyti lauke „Išraiška“ – daugeliu atvejų to užtenka... bet kažkaip nelabai lengvai pavyksta.

Iš viso ši problema anksčiau buvo išspręsta kažkur taip:

Funkcija InitializeDataSource()

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Jei DataCon > "20100101" Tada
DataCon = "20100101";
endIf;

CN = New QualifiersNumbers(15,2);
KS = NewStringQualifers(255);

ArrayNumber = naujas masyvas();
ArrayNumber.Add(Tipas("Skaičius"));

ArrayString = Naujas masyvas();
ArrayString.Add(Tipas("Eilutė"));

ArrayData = naujas masyvas();
ArrayDate.Add(Tipas("Data"));

//Buhalterinę kainą užpildysime lentelėje
TypeNumber = Naujas aprašymasTypai (MasyvoNumber, CN);
TypeString = naujas tipo aprašymas(ArrayString, KS);
TypeDate = Naujas tipo aprašymas(ArrayDate);

// lentelė duomenims iš SQL įkelti
TZ = nauja verčių lentelė ();
TK.Columns.Add("Nomenklatūros kodas", TypeString);
TK.Columns.Add("Kiekis", TipoNumber);
TK.Columns.Add("Laikotarpis", Datos tipas);

TK.Indexes.Add("Taškas");

//Prisijungti prie SQL
Ryšio eilutė = "Teikėjas=SQLOLEDB.1;Išlikti saugos informacija=Tiesa;Vartotojo ID=sa;Pwd=;Duomenų šaltinis=;Naudokite paruošimo procedūrą=1;Automatinis vertimas=Tiesa;Paketo dydis=4096;Darbo stoties ID=;Naudoti Duomenų šifravimas=Klaidingas;Žyma su stulpelių palyginimu, kai įmanoma=Klaidinga;Pradinis katalogas=Ataskaitos";
Ryšys = naujas COMObject("ADODB.Ryšys");
Komanda = naujas COMObject("ADODB.Command");
RecordSet = naujas COMObject("ADODB.RecordSet");
Data = "";
Bandymas
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = Ryšys;
Command.CommandText = "Pasirinkite * iš PH kur taškas >= "" + String(Formatas(DataStart, "DF=yyyyMMdd")) + "" ir periodas RecordSet = Command.Execute();
RecordSet.MoveFirst();
Išimtis
Techninių specifikacijų grąžinimas;
EndAttempt;

Nors RecordSet.EOF = klaidingas ciklas
Linija = TK.Pridėti();
Eilutė.Nomenklatūros kodas = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Vertė;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Vertė;
Eilutė.Taškas = RecordSet.Fields(RecordSet.Fields.Item(13).Pavadinimas).Vertė;
RecordSet.MoveNext();
EndCycle;

Užklausa = Nauja užklausa();
VrTable = Naujas laikinas lentelių valdytojas();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Pradžios data", Pradžios data);
Request.SetParameter("DataCon", DateCon);
Query.Text = "PASIRINKTI
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Vietos duomenų lentelė
|NUO
| &vDataTable AS vrDataTable
|KUR
| vrDataTable.Period >= &Pradžios data
| Ir vrDataTable.Period Query.Execute();
TZ = Neapibrėžta;

Užklausa = nauja užklausa;
Query.TemporaryTableManager = VrTable;
Query.Text = "Čia yra užklausa, susijusi su kintamųjų lentele";

Rezultatas = Query.Run();
Grąžinimo rezultatas;

EndFunction

ExternalSet = InitializeDataSource();
DataSet = nauja struktūra();
DataSet.Insert("SQL lentelė", išorinis rinkinys);
Tipinės ataskaitos. SukurtiTipinę ataskaitą (Šis objektas, rezultatas, iššifravimo duomenys, išvestis ataskaitos formoje, duomenų rinkinys);

Tiesą sakant, kodo eilučių nėra daug ir jos yra gana standartinės... tokiu atveju galite išnaudoti visas užklausų kūrėjo funkcijas, o ACS duoti tik DUOMENŲ SUDĖTIS funkciją

Bet tai tikrai neatrodo taip gražiai... ir kiekvieną kartą reikia parašyti kodą, kad į lentelę įkeltumėte reikšmes ir patikrintumėte, ar nepadarėte klaidos pavadinime detales... ir kas mums buvo pateikta 1C atrodo kažkaip neblogai. Dar neapsisprendžiau, kuri patogiau naudoti. Jūs nusprendžiate ir rašote apie savo sprendimus ir tai, kas jus paskatino juos priimti.

[norėdami pamatyti nuorodą, turite užsiregistruoti]