Արտաքին տվյալների աղբյուրներ 1c 8.3 excel. Արտաքին տվյալների աղբյուրներ

Թողարկում 8.2.14.533 - վերջապես հարթակի 14-րդ թողարկման քիչ թե շատ կայուն տարբերակ: Վերջապես, հնարավորություն եղավ փորձարկել հիանալի հնարավորություն՝ «արտաքին տվյալների աղբյուրները»։

Ինչո՞ւ այս հնարավորությունընման հետաքրքրություն է առաջացնում. Ցանկացած մարդ, ով ծրագրավորել է 1C-ով, բավականին ծանոթ է SQL-ին և գոնե ընդհանուր առումներով ծանոթ է բիզնես հավելվածների համար այլ տեխնոլոգիական հարթակներ մշակելու ճարտարապետությանը և սկզբունքներին, ձեզ վստահորեն կասի, թե ինչ է իրեն ամենաշատը դուր գալիս 1C-ում: Անշուշտ, հարցումների ստեղծողը ամենահարմար և մտածված մեխանիզմն է հարաբերական կառույցներից տվյալներ ստանալու համար հարցումներ գրելու համար, որոնց ես անձամբ հանդիպել եմ: Եվ հիմա 1C-ն մեզ այսպիսի հրաշալի հնարավորություն է տվել օգտագործել այն ոչ միայն 1C, այլ նաև ցանկացած այլ սեղանների հետ։ Ահա այս «մեղրի տակառի» մեջ լցված «ճանճերի մեջ» մի փունջ։ Ամեն ինչ կարգով.

1) Տեղադրում և օգտագործում - առանց «դափի հետ պարելու» չի ստացվի

Ա) Ավելացնել արտաքին աղբյուրտվյալներ, ինչպես ոչ մի բարդ բան
բ) նշեք «Ընտրեք ցուցակից» վանդակը, անհրաժեշտ է, դա անհրաժեշտ է սկզբում կատարողականությունը ստուգելու և ձեզ ավելորդ անախորժություններից փրկելու համար.
մեջ)
(IMG:http://pics.livejournal.com/comol/pic/0000cr1r.png)
- Համոզվեք, որ սեղմեք «...» - կապը ODBC է: Ոչ թե OLEDB, ինչպես մենք բոլորս սովոր ենք, այլ մեկ մակարդակ ցածր

Եվ եղիր այստեղ ՇԱՏ ՈՒՇԱԴԻՐ.

Սա ODBC դրայվեր է. եթե օգտագործում եք հաճախորդ-սերվերի տարբերակը, այն պետք է լինի սերվերում: Եթե ​​դուք զարգանում եք մի համակարգի վրա և աշխատում եք մյուսի վրա (ինչպես սովորաբար լինում է), համոզվեք, որ որևէ անակնկալ չեք ստանա: Տարօրինակ առաջարկություն, բայց ընտրեք ամենահին կամ ամենատարածված վարորդը, եթե ձեզ առանձնապես չի մտահոգում արագությունը և մտադիր չեք դուրս գալ SQL92 ստանդարտի սահմաններից: Սա ձեզ կտա լավագույն համատեղելիությունը: Օրինակ SQL Server 2008-ի համար լավագույն վարորդըկլինի SQL Server Native Client 11, բայց ես խորհուրդ եմ տալիս ընտրել միայն SQL Server, հակառակ դեպքում այս բնիկ հաճախորդը պետք է տեղադրվի կամ սերվերի վրա, կամ բոլոր հաճախորդի մեքենաների վրա (եթե օգտագործում եք ֆայլի տարբերակը), իսկ հատուցումը հատուկ է պարզ առաջադրանքներնա չի անի:

Ե) Ստանդարտ սերվերի ընտրության երկխոսություններ

G) Ընտրեք աղյուսակ և մանրամասներ ... հիանալի հնարավորություն. կարող եք անմիջապես վերանվանել այն, ինչպես ցանկանում եք (և մանրամասները նույնպես), մինչդեռ հատկություններում կտեսնեք տվյալների աղբյուրի դաշտերի անունները:

Հ) Եվ հիմա դուք վազում եք, բացում եք հարցման դիզայները. դուք հիմարաբար ընտրում եք բոլոր գրառումները աղյուսակից, իսկ OPA-ն՝ սխալ: Ինչ անել? Եթե ​​ունես կառավարվող ինտերֆեյս, նայիր սպասարկման մենյուում, իսկ եթե ունես նորմալ...
Ես անձամբ օգտագործել եմ այս կոդը.

Պարամետրեր = ExternalDataSources.DAX.GetCommonConnectionParameters();
Parameters.AuthenticationStandard = ճշմարիտ;
Parameters.UserName = "sa";
Parameters.Password = «pas»;
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=շտեմարան";
Parameters.DBMS = "MSSQLServer";

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

ExternalDataSources.DAX.SetConnection();

Միգուցե որոշ կտորներ պետք չեն, բայց դա աշխատում է։ Պետք է գործարկել կոդը ՄԻ ՄԵԿ. Դրանից հետո նորմալ կմիանա ... միստիկան իհարկե - ինչու էր դա անհրաժեշտ պարզ չէ ...

2) տվյալների միայն կարդալու աղբյուրներ
Այո, հրաշքներ չեն լինում, բայց երբեմն ուզում ես…

3) ՄԻ ՕԳՏԱԳՈՐԾԵԼ ԴՐԱՆՑ ՏՎՅԱԼՆԵՐԻ ՆԵՐՔԻՆ ԱՂԲՅՈՒՐՆԵՐԻ ՀԵՏ
Անձամբ ինձ այդ փաստը տեղում սպանեց։

Ո՞նց է… այն, ինչին մենք սպասում էինք և արդեն պատկերացրել և լիզել ենք, թե ինչպես ենք հիմա մեկ հարցումով մեր տվյալները կմիավորենք 1C-ի հետ, կանջատենք՝ խմբավորենք, մտցնենք զեկույցի մեջ, բայց այդպես չի եղել։ այնտեղ...

Բայց, իհարկե, սա չի խանգարում փորձառու մարդկանց... ի՞նչ միտք եկավ գլխում: Ճիշտ է. ժամանակավոր աղյուսակներ.

4) ՄԻ ՕԳՏԱԳՈՐԾԵԼ ԴՐԱՆՔ ԺԱՄԱՆԱԿԱՎՈՐ ՍԵՂԱՆՆԵՐԻ ՀԵՏ.

Բայց սա այլևս տեխնոլոգիական դժվարությունների նման չէ, այլ շատ նման է նրան, թե ինչ են ուզում, որ մենք անենք «որ կյանքը դրախտ չթվա» (IMG :) ։

5) Կարող է օգտագործվել միայն SKD միացումներում

Նրանց համար, ովքեր չգիտեն, այն գտնվում է ACS-ում «Տվյալների հավաքածուի հղումներ» ներդիրում: Որքա՞ն հաճախ եք դրանք օգտագործում: Հարմարավետ? Ըստ երևույթին, նրանք ցանկանում են ստիպել մեզ ավելի հաճախ օգտագործել դրանք։ Բայց կա «Հղման պայման» և «Հղման պարամետր» սյունակ: Ես չգտա դրանց օգտագործման օրինակ որևէ բնորոշ կոնֆիգուրացիայի մեջ, փաստաթղթերում և Խրուստալևայում նույնպես, ինչ-որ կերպ ամեն ինչ թափանցիկ չէ: Որևէ մեկը կարող է ինձ բացատրել, թե ինչպես է աշխատում «հղման պայմանը»: Եթե ​​այնտեղ գրեք SourceAttribute = ReceiverRevision, այն չի աշխատում: Իհարկե, պայմանը կարելի է գրել «Expression» դաշտում, շատ դեպքերում դա բավական է... բայց ինչ-որ կերպ դա այնքան էլ հեշտ չէ:

Ընդհանուր առմամբ, այս խնդիրը նախկինում լուծվել է ինչ-որ տեղ այսպես.

InitializeDataSource () ֆունկցիան

DateStart = BuilderSettings.Settings.DataParameters.Items.Value;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value;
Եթե ​​DateCon > «20100101» Ապա
DateCon = «20100101»;
Վերջ Եթե;

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

ArrayNumber = Նոր զանգված ();
ArrayNumber.Add(Type("Number"));

ArrayString = Նոր զանգված ();
ArrayString.Add(Type("String"));

ArrayData = Նոր զանգված ();
ArrayDate.Add (Type ("Date"));

//Հաշվապահական արժեքը կլրացնենք աղյուսակում
TypeNumber = NewTypeDescription (ArrayNumber, KN);
StringType = NewTypeDescription (ArrayString, CS);
TypeDate = NewTypeDescription (ArrayDate);

//աղյուսակ՝ SQL-ից տվյալները բեռնելու համար
TK = New ValueTable();
TK.Columns.Add ("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Period", TypeDate);

TK.Indices.Add("Period");

// Միացեք SQL-ին
ConnectionString = "Provider=SQLOLEDB.1; Persist Security Info=True;User ID=sa;Pwd=;Տվյալների աղբյուր=;Օգտագործել կարգը պատրաստելու համար=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Օգտագործել կոդավորումը համար Տվյալներ=Սխալ;Հնարավորության դեպքում սյունակի դասավորմամբ հատկորոշել=Սխալ;Նախնական կատալոգ=Հաղորդումներ";
Միացում = Նոր COMObject («ADODB.Connection»);
Հրաման = Նոր COMObject ("ADODB.Command");
RecordSet = Նոր COMObject ("ADODB.RecordSet");
Ամսաթիվ = "";
Փորձ
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Միացում;
Command.CommandText = "Ընտրեք * PH-ից, որտեղ ժամկետ >= "" + String(Format(DateStart, "DF=yyyyMMdd")) + "" and period RecordSet = Command.Execute();
RecordSet.MoveFirst();
Բացառություն
TK-ի վերադարձ;
Փորձի ավարտ;

Մինչդեռ 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();
End Cycle;

Request = New Request();
VrTable = NewTempTableManager();
Query.SetParameter ("vDataTable", TK);
Query.SetParameter ("StartDate", StartDate);
Query.SetParameter ("DateCon", DateCon);
Query.Text = «Ընտրել
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Տվյալների աղյուսակ
|ԻՑ
| &vrDataTable AS vrDataTable
|ՈՐՏԵՂ
| vrDataTable.Period >= &DateStart
| Եվ vrDataTable.Period Query.Execute();
TK = Չսահմանված;

Request = Նոր հարցում;
Query.TempTableManager = VrTable;
Query.Text = "Ահա մի հարցում, որը ներառում է ժամանակավոր աղյուսակ";

Արդյունք = Request.Run();
Վերադարձի արդյունք;

EndFunctions

OuterSet = InitializeDataSource();
DataSet = Նոր կառուցվածք ();
DataSet.Insert («SQL Table», ExternalSet);
GenericReports.Generate GenericReport (ThisObject, Result, Decryption Data, OutputToReportForm, DataSet);

Փաստորեն, կոդի շատ տողեր չկան, և դրանք բավականին ստանդարտ են… այս դեպքում կարող եք օգտագործել հարցումների ստեղծողի ամբողջական ֆունկցիոնալությունը և ACS-ում տալ միայն DATA COMPOSITION ֆունկցիան:

Բայց, իհարկե, այն մի փոքր ոչ այնքան գեղեցիկ է թվում ... և վերբեռնելով արժեքների աղյուսակը ամեն անգամ, երբ անհրաժեշտ է գրել կոդ և ստուգել, ​​թե արդյոք սխալ եք թույլ տվել մանրամասների անվանման մեջ ... հակառակ դեպքում այն, ինչ մեզ տրվել է 1C-ում, ինչ-որ կերպ կիսատ է թվում: Ես դեռ չեմ որոշել, թե որն է ավելի հարմար օգտագործելու համար։ Դուք որոշում եք, և գրեք ձեր որոշումների և այն մասին, թե ինչն է ձեզ դրդել դրանք ընդունելու:

[Հղումը դիտելու համար անհրաժեշտ է գրանցվել]

Սկսած 8.3.5 տարբերակից՝ հարթակն իրականացնում է տվյալների արտաքին աղբյուրների աղյուսակներում տվյալներ գրելու հնարավորություն։ Հոդվածում դիտարկվում է այս ֆունկցիոնալությունը, որն ընդլայնում է կոնֆիգուրացիան երրորդ կողմի համակարգերի հետ ինտեգրելու առկա հնարավորությունները:

Կիրառելիություն

Հոդվածում քննարկվում է 1C 8.3.5 հարթակը: Նյութը նույնպես տեղին է հարթակի ընթացիկ թողարկումների համար:

Տվյալների արտաքին աղբյուրներին գրելը 1C:Enterprise 8-ում

8.2.14 հարթակում ավելացվել է մետատվյալների ծառը նոր օբյեկտ- արտաքին տվյալների աղբյուրներ: Այս մեխանիզմի նպատակը արտաքին տվյալների բազաներից 1C-ի վերաբերյալ տվյալներ ստանալն է:

Պլատֆորմի նոր թողարկումների թողարկումով արտաքին տվյալների աղբյուրները զարգացել են, օրինակ՝ հնարավոր է դարձել դրանք տեղադրել ժամանակավոր աղյուսակներում, կատարել միացումներ սովորական աղյուսակներով։

Այս հոդվածում մենք կանդրադառնանք, թե ինչ գործիքներ ունի մշակողը տվյալների արտաքին աղբյուրներին գրելու համար:

Բոլոր գործողությունները կատարվել են Microsoft SQL Server 2008 R2 DBMS-ի վրա:

8.3.4 հարթակում ներդրվել է տվյալների արտաքին աղբյուրներում նկարագրված գործառույթների օգտագործման հնարավորությունը։

Այս հատկությունը թույլ է տալիս գործարկել SQL Server-ի կողմից պահված ընթացակարգերը և դրանց օգնությամբ մուտք գործել տվյալներ արտաքին աղբյուրներից, այդ թվում՝ գրելու համար:

Օրինակ բերենք. Եկեք ստեղծենք նոր տվյալների բազա kursy_test անունով՝ օգտագործելով SQL Management Studio: Դրա վրա կկատարվեն հետագա բոլոր փորձերը։

Այս տվյալների բազայում մենք կստեղծենք նոմենկլատուրա աղյուսակ, դրա համար կգրենք հետևյալ բովանդակությամբ սցենար.

ՕԳՏԱԳՈՐԾԵԼ [kursy_test]
ԳՆԱՑԵՔ
ՍՏԵՂԾԵՔ ՍԵՂԱՆԱԿ [dbo]: [նոմենկլատուրա] (
[ id ] [ int ] NOT NULL ,
[ նկարագրություն ] [ nvarchar ](150 ) NOT NULL ,
[գին] [թվային](15, 2) NULL,
ՍԱՀՄԱՆԱՓԱԿՈՒՄ [ PK_id ] ՀԻՄՆԱԿԱՆ ԲԱՆԱԼ ([ id ])
ԳՆԱՑԵՔ

Կատարման արդյունքում կստեղծվի հետևյալ կառուցվածքի աղյուսակ.

Այժմ մենք պետք է ստեղծենք երկու պահված ընթացակարգեր, որոնք կօգտագործվեն տվյալները փոփոխելու համար:

Առաջին պրոցեդուրան անվանենք insert_nomenklatura։ Այն նախատեսված կլինի ավելացնելու համար նոր գիծդեպի սեղան. Այն ստեղծելու սցենարը կունենա հետևյալ տեսքը.

ՕԳՏԱԳՈՐԾԵԼ [kursy_test]
ԳՆԱՑԵՔ
ՍՏԵՂԾԵԼ ԿԱՐԳԸ insert_nomenklatura
@id int,
@description nvarchar(150),
@pricenumeric (15, 2)
ԱՍ
ՍԿՍԵԼ
INSERT INTO [kursy_test].dbo. [ nomenklatura ] ([ id ], [ նկարագրություն ] , [ գինը ])
VALUES (@id, @description, @price)
ՎԵՐՋ
ԳՆԱՑԵՔ

Երկրորդ ընթացակարգը, որը կոչվում է update_nomenklatura, կթարմացնի աղյուսակում արդեն գոյություն ունեցող գրառումը: Այն ստեղծելու համար գործարկվել է հետևյալ սցենարը.

Object Browser-ում ստեղծված աղյուսակը և երկու պահպանված ընթացակարգերն այսպիսի տեսք ունեն.

Մենք ավարտել ենք բոլոր նախապատրաստական ​​քայլերը Microsoft SQL Server-ի կողմից, այժմ անցնում ենք 1C:Enterprise 8 կոնֆիգուրատորին։

Մենք ստեղծում ենք նոր արտաքին տվյալների աղբյուր Nomenklatura անունով: Այս տվյալների աղբյուրում նոր աղյուսակ ստեղծելիս մենք նշում ենք տվյալների աղբյուրին միանալու հետևյալ պարամետրերը.

Միացման տողը հետևյալն է.

Վարորդ = (SQL Server) ; Սերվեր = (տեղական); Տվյալների բազա = cursy_test ; Օգտագործողի ID = sa; գաղտնաբառ =;

Եթե ​​sa-ի օգտվողն ունի գաղտնաբառ, ապա այն պետք է նշվի միացման տողի Password պարամետրում:

Եթե ​​կապի բոլոր պարամետրերը ճիշտ են նշված, երբ սեղմում եք OK, կբացվի պատուհան, որը պարունակում է տվյալների աղբյուրում առկա աղյուսակներ.

Աղյուսակում նշում ենք մեզ հետաքրքրող դաշտերը: Երբ սեղմում եք կոճակը Պատրաստ dbo_nomenklatura աղյուսակը կստեղծվի Nomenklatura արտաքին տվյալների աղբյուրում՝

Այժմ մենք անցնում ենք մեր տվյալների աղբյուրի «Գործառույթներ» ներդիրին:

Օգտագործելով նմանատիպ մոգ, մենք ավելացնում ենք երկու պահված ընթացակարգեր.

Մենք ստանում ենք հաջորդը տեսքը«Գործառույթներ» ներդիրները.

Հիմա եկեք ծրագրավորենք օգտագործողի ինտերֆեյսաշխատել արտաքին տվյալների աղբյուրի հետ:

Հրամանի վահանակի վրա ցուցակի տեսքով տեղադրեք «Ավելացնել» կոճակը հետևյալ կարգավորիչով.

&AtClient
Add() կարգը
զգոն = նոր Նկարագրություն Ահազանգեր(«OpenTableFinish», ThisObject );
OpenForm (
«ExternalDataSource.Nomenklatura.Table.dbo_nomenklatura.ObjectForm»
, , , , , ,
Զգուշացում, FormWindowOpenModeForm.LockAllInterface);
Ավարտի ընթացակարգը

&AtClient
Պահպանման կարգը (հրաման)
SaveOnServer();
EndProcedure &OnServer
Ընթացակարգը SaveOnServer()
Եթե Օբյեկտ.Հղում.Դատարկ() Հետո
ExternalDataSources.Nomenklatura.dbo_insert_nomenklatura
Հակառակ դեպքում
ExternalDataSources.Nomenklatura.dbo_update_nomenklatura
(Object.id, Object.description, Object.price);
Վերջ Եթե ;
Ավարտի ընթացակարգը

Ձեռնարկության ռեժիմում ցուցակի ձևն ունի հետևյալ տեսքը.

Օբյեկտի ձևը ներկայացված է ստորև.

Կտտացրեք պատկերը մեծացնելու համար:

Այսպիսով, օգտագործելով պահպանված ընթացակարգերը, մենք իրականացրել ենք տվյալների արտաքին աղբյուրների վրա գրություն:

8.3.5 հարթակում հայտնվել է նոր առանձնահատկություն՝ ուղղակիորեն գրել տվյալների արտաքին աղբյուրներին՝ շրջանցելով վերը քննարկված պահվող ընթացակարգերի մեխանիզմը:

Տվյալները կարող են խմբագրվել ինչպես ծրագրային, այնպես էլ ինտերակտիվ կերպով: Եվ մեր օրինակի համար պարտադիր չէ դիմել կոնֆիգուրացիայի:

Հրամանների տողերում և «Ավելին» մենյուում կարող եք տեսնել ստանդարտ կոճակները, ինչպիսիք են «Ստեղծել», «Պատճենել», «Խմբագրել» և այլն:

Կտտացրեք պատկերը մեծացնելու համար:

Իսկ օբյեկտի տեսքով հայտնվեցին «Պահպանել» և «Պահպանել և փակել» կոճակները.

Ինչպես տեսնում եք, այժմ արտաքին աղբյուրների հետ աշխատելը նման է գրացուցակների, փաստաթղթերի և այլնի հետ աշխատելուն:

Մտածեք, թե ինչ փոփոխություններ են կատարվել մետատվյալների մակարդակում, որպեսզի հնարավոր լինի գրել տվյալների արտաքին աղբյուրներին:

Տվյալների աղյուսակում ավելացվել է նոր հատկություն Միայն կարդալով(տեսակը՝ բուլյան):

Եթե ​​այս հատկությունը սահմանված է True, ապա այս աղյուսակում տվյալներ պլատֆորմի միջոցով գրել հնարավոր չէ:

Տվյալների աղյուսակի դաշտն այժմ ունի հետևյալ հատկությունները.

  • Միայն կարդալով(տեսակը՝ բուլյան) – հնարավո՞ր է փոխել տվյալ դաշտի տվյալները;
  • AllowNull(տեսակ - բուլյան) - հնարավո՞ր է այս դաշտում պահել NULL արժեքը:

Սեփականություն Միայն կարդալովպետք է սահմանվի Ճիշտհետ տվյալների բազայի դաշտերի համար ավտոմատ փոփոխություն, ավտոմատ ստեղծվող հիմնական դաշտեր, հաշվարկված դաշտեր և այլն։

Դուք կարող եք ավելացնել, փոփոխել և ջնջել տվյալները արտաքին աղբյուրներում՝ օգտագործելով ներկառուցված լեզուն:

Դրա համար օբյեկտները ExternalDataSourceTableRecordSetև ExternalDataSourceTableObjectներդրվել են նոր մեթոդներ Գրել ()և Ջնջել ().

Դիտարկենք վերը քննարկված արտաքին տվյալների աղբյուրի համար ծրագրային կերպով նոր գրառում ավելացնելու օրինակ:

&AtClient
Ընթացակարգը Ստեղծել ծրագրային եղանակով(Թիմ)
Ստեղծեք ծրագրային կերպով սերվերի վրա();
EndProcedure &OnServer

Ընթացակարգը Ստեղծեք ծրագրային կերպով սերվերի վրա()
WritableObject=
ExternalDataSources.Nomenklatura.Tables.dbo_nomenklatura.CreateObject();
WritableObject.id= 5 ;
WritableObject.description= «Պահարան» ;
writableObject.price= 5000 ;
WritableObject.Write();
Ավարտի ընթացակարգը

Արտաքին տվյալների աղբյուրի աղյուսակի օբյեկտի մոդուլում այժմ կարող եք սահմանել գրելու իրադարձությունների մշակիչներ, ինչպիսիք են Նախքան Գրելը (), OnRecord ()և այլն:

Այս հոդվածում դիտարկվել է տվյալների արտաքին աղբյուրներին տվյալների գրելու երկու տարբերակ՝ օգտագործելով պահպանված ընթացակարգերը և օգտագործել 8.3.5 հարթակի նոր մեխանիզմները:

Այսպիսով, հարթակն այժմ իրականացնում է արտաքին հավելվածների հետ լիարժեք ինտեգրման մեխանիզմներ։

8.3.6 տարբերակում վերը նկարագրված ֆունկցիոնալությունը ընդլայնվել է նորով հատուկ մեթոդներ GetChangableFields() և SetChangableFields(): Դրանց օգնությամբ հնարավոր է կատարել գրելու գործողություն VIEW աղյուսակի այն դաշտերում, որոնք կոնֆիգուրատորում նշված են որպես միայն կարդալու։ Դրա շնորհիվ հնարավոր դարձավ իրականացնել մի սցենար, որտեղ VID աղյուսակի առանձին դաշտերում գրելը հնարավոր է միայն այն դեպքերում, երբ դա անհրաժեշտ է հավելվածի բիզնես տրամաբանությանը համապատասխան:

8.3.7 տարբերակում բարելավվել է մեխանիզմ, որը որոշում է VIEW աղյուսակների որ կոնկրետ դաշտերը կարող են պարունակել NULL արժեքներ: Մինչև այս պահը, բոլոր VIEW աղյուսակները կարող էին ընդունել այս արժեքը: Այս փոփոխությունը պայմանավորված է տեսակավորման արագության բարձրացմամբ դինամիկ ցուցակներայս դաշտերում:

8.3.8 թողարկումում վերջապես հնարավոր է որոշել՝ արդյոք արտաքին տվյալների աղբյուրը գործարքային վիճակում է: Այս ֆունկցիոնալությունը տրամադրվում է ExternalDataSourceManager.TransactionActive() նոր մեթոդով:

Եզրափակելով, մենք նշում ենք, որ արտաքին տվյալների աղբյուրների համար, ինչպես ցույց է տրված վերևում, նկարագրված են դասական հարաբերական մոդելի տվյալների աղյուսակները: Պլատֆորմն օգտագործում է տվյալների հետ աշխատելու այլ պարադիգմ՝ մշակողին առաջարկելով կիրառական օբյեկտների տեսակների որոշակի փաթեթ (տեղեկատու գրքեր, փաստաթղթեր, գրանցամատյաններ և այլն): Այդ իսկ պատճառով համակարգը, արտաքին տվյալների աղբյուրների աղյուսակների հետ աշխատելիս, չի աջակցում իր «հայրենի» օբյեկտներին բնորոշ գործառույթների մեծ մասը: Հետևաբար, խորհուրդ է տրվում զերծ մնալ ինչ-որ բիզնես տրամաբանություն զարգացնելուց՝ հաշվի առնելով VID աղյուսակների օգտագործումը, եթե դա կապված չէ արդեն իսկ ինտեգրման առաջադրանքների հետ։ գոյություն ունեցող համակարգեր. Կամ, պարզ բառերով ասած, դուք պետք է փորձեք խուսափել ձեր հավելվածում ակտիվորեն օգտագործվող տվյալները այլ աղյուսակում պահելուց: արտաքին համակարգեթե դրանք չեն օգտագործվում այս համակարգի կողմից:

Հաջորդ հոդվածում մենք կդիտարկենք 1C:Enterprise համակարգում արտաքին տվյալների աղբյուրների տեխնոլոգիայի օգտագործման տրամաբանական շարունակությունը։

Աշխատեք նրանց հետ ցուցակներում 1C Enterprise ռեժիմում:

Այնուամենայնիվ, աշխատանքում հաճախ առաջանում է մի իրավիճակ, երբ տվյալների մի մասը պահվում է այլ տեղ:

  • Առցանց խանութ (սովորաբար տվյալները պահում է արտաքին MySQL/SQL տվյալների բազայում)
  • Մեկ այլ հիմք.

Նման տվյալների հետ աշխատելու համար, որոնք պահվում են այլ տվյալների բազաներում, պետք է մշակել հատուկ մեխանիզմներ։

1C 8.2.14 տարբերակում հայտնվեց նորը, որը կոչվում է 1C արտաքին տվյալների աղբյուրներ, որոնք մեծապես հեշտացնում են ծրագրավորողի աշխատանքը, քանի որ.

  • այժմ տվյալների ստացման հատուկ մեխանիզմներ ստեղծելու կարիք չկա
  • նման տվյալներ կարող են հասանելի լինել
  • նման տվյալները կարելի է դիտել 1C ցուցակներում:
    • Արտաքին տվյալների աղբյուր 1C - արտաքին բազա SQL

      Ենթադրենք, մենք ունենք SQL տվյալների բազա, որը պահպանում է մեզ անհրաժեշտ տվյալները: Փորձենք կարդալ դրանից տվյալները՝ օգտագործելով 1C արտաքին տվյալների աղբյուրի մեխանիզմը:

      Եկեք ավելացնենք արտաքին տվյալների աղբյուր 1C: Դուք պետք է գնաք կոնֆիգուրատոր, արտաքին տվյալների աղբյուրները գտնվում են կազմաձևման պատուհանում, ծառի հենց ներքևում:

      1. Միացում

      Եկեք ավելացնենք նոր արտաքին տվյալների աղբյուր 1C, եկեք այն անվանենք կամայական:

      Տվյալների բազան կազմված է աղյուսակներից: Մենք պետք է դրանք ավելացնենք ավելացված արտաքին տվյալների աղբյուրի ներսում: Աջ սեղմեք դրա վրա և ընտրեք Ավելացնել աղյուսակ:

      Առաջին անգամ այն ​​ձեզ կհուշի միացման տող տրամադրել: Այն կարող է մուտքագրվել ձեռքով կամ ձևավորվել, որի համար անհրաժեշտ է սեղմել «…» կոճակը:

      Որպես վարորդ մեր կոնկրետ դեպքում, մենք կընտրենք «SQL Server»

      Եկեք լրացնենք SQL-ին միանալու հիմնական պարամետրերը։ Սերվերի անունը կարելի է մուտքագրել կամ ընտրել ցանկից:

      1C-ը կմիանա SQL-ին և ձեզ հուշում է ցուցակից ընտրել կոնկրետ տվյալների բազա:

      Դրանից հետո 1C-ը կցուցադրի այս տվյալների բազայի աղյուսակների ցանկը և դրանց սյունակները: Դուք պետք է ընտրեք անհրաժեշտ աղյուսակները վանդակներով:

      Աղյուսակներ և սյունակներ կավելացվեն: Անունները կլինեն այնպես, ինչպես սահմանված են հեռավոր տվյալների բազայում: 1C-ում դուք կարող եք վերանվանել դրանք (հատկություններում):

      Ահա ավելացված աղյուսակի օրինակ.

      Ահա ավելացված սյունակի օրինակ.

      Որպեսզի 1C պլատֆորմը աշխատի արտաքին աղյուսակի հետ այնպես, ինչպես դա անում է 1C դիրեկտորիաների հետ, լրացուցիչ պարամետրեր կարելի է նշել աղյուսակում.

      • Key Field հատկությունում նշեք սյունակներից մեկը, որը կապահովի տողի եզակի նույնականացումը. եթե մի քանի տողեր եզակիություն են ապահովում, ապա այս կերպչի աշխատում (կոդի դաշտի անալոգը)
      • View դաշտի հատկությունում նշեք սյունակներից մեկը, որը կտրամադրի տողի համառոտ ներկայացումը (Անուն դաշտի անալոգը)
      • Table data type հատկության մեջ նշեք Object data:

      2. Դիտել

      Հեռավոր տվյալների բազայի հետ կապը ավտոմատ կերպով չի իրականացվում: Միանալու համար անհրաժեշտ է ընտրել տիպիկ մենյու:

      Մասնաճյուղում գտնվում է Ստանդարտ հատուկ թիմԱրտաքին տվյալների աղբյուրների կառավարում, որը թույլ է տալիս նշել կապի պարամետրերը (իրենցը 1C Enterprise ռեժիմի համար) և միանալ:

      Նախ անհրաժեշտ է նշել տվյալների բազայի միացման պարամետրերը:

      Երբ դուք կազմաձևեցիք կոնֆիգուրատորում, այն ձեզ ցույց տվեց կապի տողը որպես արդյունք: Դուք կարող եք նորից տեսնել այն՝ կրկին սեղմելով «Ավելացնել աղյուսակ» կոնֆիգուրատորում:

      Պատճենեք կապի տողը և նշեք այն 1C Enterprise ռեժիմում:

      Դրանից հետո դուք պետք է իրական կապը հաստատեք:

      Միացումից հետո հնարավոր է աշխատել ցուցակների հետ։

      3. Օգտագործեք 1C լեզվով

      Կապը կարող է իրականացվել նաև 1C լեզվով ծրագրային կոդից։

      Միացման պարամետրերը սահմանվում են հետևյալ կերպ.
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetCommonConnectionParameters();

      ConnectionParameters.AuthenticationStandard = ճշմարիտ;
      ConnectionParameters.UserName = "sa";
      ConnectionParameters.Password = «գաղտնաբառ»;
      ConnectionParameters.ConnectionString = «միացման տող կոնֆիգուրատորից»;
      ConnectionParameters.DBMS = «MSSQLServer»;

      ExternalDataSources.SourceNameConfigurator.SetCommonConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Պարամետրեր);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Parameters);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Դուք կարող եք տվյալների բազայից հարցումներ կատարել սովորական եղանակով: Հարցման տեքստի օրինակ արտաքին աղբյուրի OurExternalSource-ի և tablesExternalSourceTable-ի համար.

      ԸՆՏՐԵԼ
      Արտաքին աղբյուրի աղյուսակ.FieldName
      ԻՑ
      ExternalDataSource.OurExternalSource.Table.ExternalSourceTable"

      Արտաքին տվյալների աղբյուր 1C - աշխատել Excel ֆայլի հետ

      Փորձենք մեկ այլ տարբերակ՝ աշխատել Excel ֆայլի հետ արտաքին 1C տվյալների աղբյուրի միջոցով:

      Եկեք ստեղծենք պարզ Excel ֆայլ:

      Ավելացնենք արտաքին աղբյուր, կամայականորեն անվանենք FileExcel: Դրան ավելացրեք «Sheet1 $» աղյուսակը: Ինչպես տեսնում եք, սա թերթի անունն է Excel-ում՝ «$» նշանի ավելացմամբ:

      Ինչպես SQL-ի դեպքում, եկեք սյունակներ ավելացնենք։ Նրանք կարող են ավելացվել ձեռքով: Կարևոր է ապահովել, որ ավելացված սյունակների տեսակները համընկնեն, հակառակ դեպքում կարող եք ավելի ուշ ստանալ «Տվյալների տիպի անհամապատասխանություն» սխալ:

      Սյունակի համար դուք պետք է նշեք անունը 1C-ում և անունը տվյալների աղբյուրում:

      Excel-ի համար կա մի առանձնահատկություն (սխալ, ինչպիսին է «Շատ քիչ պարամետրեր: Պահանջվում է 3»):

      • Եթե ​​առաջին տողը Excel աղյուսակներսյունակների անունները գտնվում են, ապա պարզապես անհրաժեշտ է նշել այս սյունակի անունը, օրինակ՝ «Կոդ»:
      • Հակառակ դեպքում, դուք պետք է նշեք ամբողջական անունը աղյուսակի անունով «Sheet1$.Code», բայց ավելացրեք «HDR=NO;» պարամետրերում:

      Excel ֆայլի միացման պարամետրերը հետևյալն են.

      • XLSX ֆայլեր (Office տարբերակ 2007 և ավելի բարձր)
        Վարորդ=( Microsoft ExcelՎարորդ (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • XLS ֆայլեր (նախկինում)
        Վարորդ=(Microsoft Excel-ի վարորդ (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;
        Դուք պետք է նշեք ձեր սեփական անունը և ֆայլի ուղին:

1C ծրագրի 8-րդ տարբերակում մշակողները ֆունկցիոնալությանը ավելացրել են երրորդ կողմի տվյալների բազաները միացնելու և դրանցից տեղեկատվություն ուղղակիորեն կոնֆիգուրատորից ստանալու հնարավորությունը՝ առանց COM կապերի և OLE օբյեկտների օգտագործման: Այս հատկությունն իրականացվում է նոր օբյեկտի միջոցով՝ «Տվյալների արտաքին աղբյուրներ»

Արտաքին տվյալների աղբյուրները 1C-ում կարող են օգտագործվել նույն կերպ, ինչպես մնացած համակարգի աղյուսակները.

  1. Տվյալների կազմման համակարգ (ACS) օգտագործելով հաշվետվություններ և հաշվարկներ ստեղծելիս.
  2. Երրորդ կողմի աղբյուրներում պահվող տեղեկատվության հղումներ ստանալու համար.
  3. Աղյուսակներում պահվող տվյալները փոխելու համար.
  4. Հարցումներ կատարելիս.

Կարևոր է իմանալ, որ այս մեխանիզմը նախատեսված չէ այլ 1C տվյալների բազաների հետ աշխատելու համար, քանի որ 1C.Enterprise գործող մոդելն ինքնին չի ենթադրում միջամտություն ֆիզիկական աղյուսակների մակարդակով տվյալներին:

Նոր աղբյուրի ստեղծում

Ծրագրին նոր արտաքին աղբյուր ավելացնելը տեղի է ունենում «Կոնֆիգուրատոր» ռեժիմում: Կազմաձևման ծառում կա համապատասխան ճյուղ (նկ. 1)

Նոր աղբյուր ստեղծելիս ստիպված կլինեք քրտնել, չնայած այն հանգամանքին, որ նոր օբյեկտի ձևն ունի ընդամենը չորս ներդիր.

  1. Հիմնական;
  2. Տվյալներ;
  3. Գործառույթներ;
  4. Իրավունքներ.

Առաջին ներդիրն ունի միայն մեկ հետաքրքիր պարամետր՝ կողպեքի կառավարման ռեժիմը: Եթե ​​դուք հարցեր չեք տալիս գործարքներում տվյալների արգելափակման, տեղեկատվական հոսքերի զուգահեռացման բարդությունների մասին, կարող եք թողնել այս պարամետրը ավտոմատ արգելափակման ռեժիմում: Այնուամենայնիվ, այս մոտեցումը կարող է հանգեցնել չափազանց մեծ սահմանափակումների (օրինակ, երբ մեկ ձայնագրության փոխարեն ծրագիրը կողպում է ամբողջ ֆիզիկական աղյուսակը՝ զրկելով մյուս օգտվողներին դրա հետ աշխատելու հնարավորությունից):

Կառավարվող կողպեքներ, ի տարբերություն ավտոմատների, նրանք օգտագործում են գործարքի մեխանիզմը, որը ներկառուցված է հենց ծրագրում, և ոչ թե DBMS-ում, ինչը թույլ է տալիս փոխանցել աղյուսակի նկարները շատ ավելին: ցածր մակարդակ.

Այս պարամետրը դնելով «Ավտոմատ և կառավարվող»՝ մենք համակարգին հնարավորություն ենք տալիս որոշել, թե որ ռեժիմն օգտագործել՝ ուղղակիորեն հղում կատարելով յուրաքանչյուր կոնկրետ աղյուսակի համապատասխան հատկությանը:

Արտաքին աղբյուրի հատկությունների ձևի տվյալների ներդիր

«Տվյալներ» ներդիրի ձևը ներկայացված է Նկ. 2

Բրինձ. 2

Այստեղ մենք կարող ենք ավելացնել արտաքին աղբյուրների աղյուսակներ և խորանարդներ: Աղյուսակ ավելացնելու երկու եղանակ կա.

  1. Ձեռքով, այնուհետև կտեսնենք աղյուսակ ավելացնելու ձևը (նկ. 3);

Բրինձ. 3

  1. Կամ ընտրեք ֆիզիկական աղբյուրների աղյուսակների ցանկից (նկ. 4), այս դեպքում մեր առջեւ բացվում է հատուկ կոնստրուկտոր։

Բրինձ. 4

Եկեք մանրամասն նայենք աղյուսակ ավելացնելու ձևին: «Անուն» հատկությունն օգտագործվում է կոնֆիգուրացիայի մեջ գտնվող օբյեկտը եզակի նույնականացնելու համար:

Մետատվյալների օբյեկտի և վերջնական ֆիզիկական աղյուսակի համեմատությունը տեղի է ունենում «Անունը տվյալների աղբյուրում» հատկության միջոցով, որը գտնվում է «Ընդլայնված» ներդիրում (նկ. 5):

Բրինձ. 5

Հաջորդը, մենք պետք է որոշենք աղյուսակի տեսակը, ավելի ճիշտ դրա օբյեկտիվությունը: Եթե ​​կառուցվածքում պահվող տվյալները կարող են եզակիորեն նույնականացվել ցանկացած մեկ դաշտի միջոցով, աղյուսակը կարող է լինել օբյեկտի աղյուսակ: Եթե ​​գրառման ինքնությունը որոշվում է առանցքային դաշտերի մի շարքով, ապա աղյուսակը պետք է ունենա ոչ օբյեկտի տեսակ:

Նման աղյուսակները համեմատելով այլ մետատվյալների օբյեկտների հետ՝ կարող ենք անել հետևյալ անալոգիան.

  • Օբյեկտների աղյուսակները տեղեկատու գրքեր են.
  • Ոչ օբյեկտիվ են տեղեկատվության գրանցամատյանները:

Հիմնական դաշտերի հավաքածուն սահմանվում է հաջորդ ձևի պարամետրով («Բանալին դաշտեր»): Այս դաշտը պարտադիր է, այն դատարկ թողնելը կհանգեցնի կոնֆիգուրացիան պահելու սխալի:

Ինչպես տեսնում եք Նկար 5-ից, որոշ դաշտեր և ձևի կոճակներ հասանելի չեն խմբագրման համար.

  • Արտահայտում տվյալների աղբյուրում;
  • Աղյուսակի տվյալների տեսակը;
  • Դիտման դաշտ;
  • Դիտել կարգավորիչներ:

Դրանք կարող են օգտագործվել միայն այն բանից հետո, երբ լրացնենք աղյուսակի դաշտերը՝ սահմանելով դրանց տեսակը և սահմանելով դրանց նույնացուցիչները (նկ. 6):

Բրինձ. 6

Այստեղ պետք է ուշադրություն դարձնել «Թույլատրել զրոյական» տարբերակին, եթե այս վանդակը նշված է, ապա նման դաշտը ցանկալի չէ որպես բանալի օգտագործել։

Սեղանի կառուցող

Թերևս արտաքին աղբյուրների հետ աշխատելու ամենակարևոր և հետաքրքիր կետը կապի տողի ստեղծումն է: Դրա կոնստրուկտորը բացվում է, երբ սեղմում եք «Connection string» պարամետրի կողքին երեք կետ ունեցող կոճակը:

Առաջին հերթին մեզ կառաջարկվի որոշել այն դրայվերը, որը կօգտագործվի միանալու համար (նկ. 7):

Բրինձ. 7

Այս պարամետրի սխալ սահմանումը թույլ չի տա ձեզ միանալ երրորդ կողմին տեղեկատվական բազան. Պետք է նաև հասկանալ, որ բացվող ցանկում նշված ոչ բոլոր դրայվերները կարող են օգտագործվել կապի տող ավտոմատ ստեղծելու համար: Եթե ​​հարթակը սխալ է թույլ տվել (նկ. 8), ապա կապի տողը պետք է գրվի ձեռքով:

Նկ.8

Բրինձ. ինը

Գիծն ինքնին խիստ կարգավորվող շինություն է։

Միացման տողի օրինակ

Դիտարկենք երրորդ կողմի տվյալների բազան, որը ստեղծվել է Microsoft Accessև գտնվում է D սկավառակի արմատում: Այս բազան միացնելու համար մենք պետք է օգտագործենք համապատասխան դրայվերը, սակայն այն ընտրելով գծի կոնստրուկտորում հանգեցնում է սխալի Նկ.8:

Մենք ինքներս կգրենք կապի պարամետրերը։

Driver=(Microsoft Access Driver (*.mdb)) - ահա թե ինչ տեսք ունի տողի առաջին մասը: AT գանգուր բրեկետներմենք սահմանել ենք վարորդը.

Համար Excel ֆայլերայն նման կլինի (Microsoft Excel Driver (*.xls)), 2003 թվականից ավելի հին գրասենյակում ստեղծված Excel ֆայլերի համար վարորդի գիծը նման կլինի (Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, * .xlsb )):

Այս պարամետրը հաջորդից բաժանելով ստորակետով՝ պետք է գրենք մեր պահեստի հասցեն (մեր դեպքում՝ DBQ=D:\Database1.mdb)։

Այս երկու պարամետրերը ավելացնելով՝ մենք ստանում ենք Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb, գրելով այս պարամետրը՝ մուտք ենք ստանում այս տվյալների բազայի ներքին կառուցվածքները:

«Արտաքին աղբյուր» օբյեկտի համար բավական չէ միայն այն ստեղծել կոնֆիգուրացիայի մեջ, այն պետք է միացված լինի նաև «Enterprises» ռեժիմում։ Դա կարելի է անել «Բոլոր գործառույթները» ->Արտաքին աղբյուրներից ընտրացանկից: Երբ մենք առաջին անգամ մտնում ենք մեր աղյուսակը, մենք պետք է գրենք նույն կապի տողը արդեն «Enterprise» ռեժիմում:

Ինչո՞ւ է այս հնարավորությունը նման հետաքրքրություն ներկայացնում: Ցանկացած մարդ, ով ծրագրավորել է 1C-ով, բավականին ծանոթ է SQL-ին և գոնե ընդհանուր առումներով ծանոթ է բիզնես հավելվածների համար այլ տեխնոլոգիական հարթակներ մշակելու ճարտարապետությանը և սկզբունքներին, ձեզ վստահորեն կասի, թե ինչ է իրեն ամենաշատը դուր գալիս 1C-ում: Անշուշտ, հարցումների ստեղծողը ամենահարմար և մտածված մեխանիզմն է հարաբերական կառույցներից տվյալներ ստանալու համար հարցումներ գրելու համար, որոնց ես անձամբ հանդիպել եմ: Եվ հիմա 1C-ն մեզ այսպիսի հրաշալի հնարավորություն է տվել օգտագործել այն ոչ միայն 1C, այլ նաև ցանկացած այլ սեղանների հետ։ Ահա այս «մեղրի տակառի» մեջ լցված «ճանճերի մեջ» մի փունջ։ Ամեն ինչ կարգով.

1) Կարգավորում և օգտագործում- առանց «դափի հետ պարելու» չի ստացվի
ա) Ավելացրեք տվյալների արտաքին աղբյուր. թվում է, թե ոչ մի բարդ բան չկա
բ) նշեք «Ընտրեք ցուցակից» վանդակը, անհրաժեշտ է, դա անհրաժեշտ է սկզբում կատարողականությունը ստուգելու և ձեզ ավելորդ անախորժություններից փրկելու համար.
գ) - համոզվեք, որ սեղմեք «...» - կապը ODBC է: Ոչ թե OLEDB, ինչպես մենք բոլորս սովոր ենք, այլ մեկ մակարդակ ցածր

Դ) Այստեղ շատ զգույշ եղեք:

Սա ODBC դրայվեր է. եթե օգտագործում եք հաճախորդ-սերվերի տարբերակը, այն պետք է լինի սերվերում: Եթե ​​դուք զարգանում եք մի համակարգի վրա և աշխատում եք մյուսի վրա (ինչպես սովորաբար լինում է), համոզվեք, որ որևէ անակնկալ չեք ստանա: Տարօրինակ առաջարկություն, բայց ընտրեք ամենահին կամ ամենատարածված վարորդը, եթե ձեզ առանձնապես չի մտահոգում արագությունը և մտադիր չեք դուրս գալ SQL92 ստանդարտի սահմաններից: Սա ձեզ կտա լավագույն համատեղելիությունը: Օրինակ, SQL Server 2008-ի համար լավագույն դրայվերը կլինի SQL Server Native Client 11-ը, բայց ես խորհուրդ եմ տալիս ընտրել միայն SQL Server-ը, հակառակ դեպքում այս շատ բնիկ հաճախորդը պետք է տեղադրվի կա՛մ սերվերի վրա, կա՛մ բոլոր հաճախորդի մեքենաների վրա (այս դեպքում. ֆայլի տարբերակի օգտագործման դեպքում), և շահույթը հատուկ է, քանի որ նա ձեզ աշխատանք չի տա:
ե) Ստանդարտ սերվերի ընտրության երկխոսություններ

Ե) Ես խորհուրդ եմ տալիս պատասխանել «այո» գաղտնաբառի պահպանման հարցին, հակառակ դեպքում դա չի աշխատի սկսել այս բիզնեսը:
է) Ընտրեք աղյուսակ և մանրամասներ... հիանալի հնարավորություն. կարող եք անմիջապես վերանվանել այն, ինչպես ցանկանում եք (և մանրամասները նույնպես), մինչդեռ հատկություններում կտեսնեք տվյալների աղբյուրի դաշտերի անունները:

Հ) Եվ հիմա դուք վազում եք, բացում եք հարցման դիզայները. դուք հիմարաբար ընտրում եք բոլոր գրառումները աղյուսակից, իսկ OPA-ն՝ սխալ: Ինչ անել? Եթե ​​ունես կառավարվող ինտերֆեյս, նայիր սպասարկման մենյուում, իսկ եթե ունես նորմալ...
Ես անձամբ օգտագործել եմ այս կոդը.
Կոդ 1C v 8.x Պարամետրեր = ExternalDataSources.DAX.GetCommonConnectionParameters();
Parameters.AuthenticationStandard = ճշմարիտ;
Parameters.UserName = "sa";
Parameters.Password = «pas»;
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=շտեմարան";
Parameters.DBMS = "MSSQLServer";

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

ExternalDataSources.DAX.SetConnection();
Միգուցե որոշ կտորներ պետք չեն, բայց դա աշխատում է։
Դուք պետք է գործարկեք կոդը ՄԵԿ ԱՆԳԱՄ: Դրանից հետո նորմալ կմիանա ... միստիկան իհարկե - ինչու էր դա անհրաժեշտ պարզ չէ ...

2) տվյալների միայն կարդալու աղբյուրներ-Այո, հրաշքներ չեն լինում... բայց երբեմն ուզում ես ....

3) ՄԻ ՕԳՏԱԳՈՐԾԵԼ ԴՐԱՆՑ ՏՎՅԱԼՆԵՐԻ ՆԵՐՔԻՆ ԱՂԲՅՈՒՐՆԵՐԻ ՀԵՏ
Անձամբ ինձ այդ փաստը տեղում սպանեց։

Ո՞նց է… այն, ինչին մենք սպասում էինք և արդեն պատկերացրել և լիզել ենք, թե ինչպես ենք հիմա մեկ հարցումով մեր տվյալները կմիավորենք 1C-ի հետ, կանջատենք՝ խմբավորենք, մտցնենք զեկույցի մեջ, բայց այդպես չի եղել։ այնտեղ...
Բայց, իհարկե, սա չի խանգարում փորձառու մարդկանց... ի՞նչ միտք եկավ գլխում: Ճիշտ է. ժամանակավոր աղյուսակներ.

4) ՄԻ ՕԳՏԱԳՈՐԾԵԼ ԴՐԱՆՔ ԺԱՄԱՆԱԿԱՎՈՐ ՍԵՂԱՆՆԵՐԻ ՀԵՏ.

Բայց սա արդեն ոչ թե տեխնոլոգիական դժվարությունների է նման, այլ շատ նման է նրան, թե ինչ են ուզում, որ մենք անենք «որ կյանքը դրախտ չթվա» :)։

5) Կարող է օգտագործվել միայն SKD միացումներում
Նրանց համար, ովքեր չգիտեն, այն գտնվում է ACS-ում «Տվյալների հավաքածուի հղումներ» ներդիրում: Որքա՞ն հաճախ եք դրանք օգտագործում: Հարմարավետ? Ըստ երևույթին, նրանք ցանկանում են ստիպել մեզ ավելի հաճախ օգտագործել դրանք։ Բայց կա «Հղման պայման» և «Հղման պարամետր» սյունակ: Ես չգտա դրանց օգտագործման օրինակ որևէ բնորոշ կոնֆիգուրացիայի մեջ, փաստաթղթերում և Խրուստալևայում նույնպես, ինչ-որ կերպ ամեն ինչ թափանցիկ չէ: Որևէ մեկը կարող է ինձ բացատրել, թե ինչպես է աշխատում «հղման պայմանը»: Եթե ​​այնտեղ գրեք SourceAttribute = ReceiverRevision, այն չի աշխատում: Իհարկե, պայմանը կարելի է գրել «Expression» դաշտում, շատ դեպքերում դա բավական է... բայց ինչ-որ կերպ դա այնքան էլ հեշտ չէ:

Ընդհանուր առմամբ, այս խնդիրը նախկինում լուծվել է ինչ-որ տեղ այսպես.
Կոդ 1C v 8.x ֆունկցիա InitializeDataSource()

DateStart = BuilderSettings.Settings.DataParameters.Items.Value;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value;
Եթե ​​DateCon > «20100101» Ապա
DateCon = «20100101»;
Վերջ Եթե;

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

ArrayNumber = Նոր զանգված ();
ArrayNumber.Add(Type("Number"));

ArrayString = Նոր զանգված ();
ArrayString.Add(Type("String"));

ArrayData = Նոր զանգված ();
ArrayDate.Add (Type ("Date"));

//Հաշվապահական արժեքը կլրացնենք աղյուսակում
TypeNumber = NewTypeDescription (ArrayNumber, KN);
StringType = NewTypeDescription (ArrayString, CS);
TypeDate = NewTypeDescription (ArrayDate);

//աղյուսակ՝ SQL-ից տվյալները բեռնելու համար
TK = New ValueTable();
TK.Columns.Add ("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Period", TypeDate);

TK.Indices.Add("Period");

// Միացեք SQL-ին
ConnectionString = "Provider=SQLOLEDB.1; Persist Security Info=True;User ID=sa;Pwd=;Տվյալների աղբյուր=;Օգտագործել կարգը պատրաստելու համար=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Օգտագործել կոդավորումը համար Տվյալներ=Սխալ;Հնարավորության դեպքում սյունակի դասավորմամբ հատկորոշել=Սխալ;Նախնական կատալոգ=Հաղորդումներ";
Միացում = Նոր COMObject («ADODB.Connection»);
Հրաման = Նոր COMObject ("ADODB.Command");
RecordSet = Նոր COMObject ("ADODB.RecordSet");
Ամսաթիվ = "";
Փորձ
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Միացում;
Command.CommandText = "S_elect * fr om PH h ere period >= "" + String(Format(DateStart, "DF=yyyyMMdd")) + "" and point<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Բացառություն
TK-ի վերադարձ;
Փորձի ավարտ;

Մինչդեռ 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();
End Cycle;

Request = New Request();
VrTable = NewTempTableManager();
Query.SetParameter ("vDataTable", TK);
Query.SetParameter ("StartDate", StartDate);
Query.SetParameter ("DateCon", DateCon);
Query.Text = «Ընտրել
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Տվյալների աղյուսակ
|ԻՑ
| &vrDataTable AS vrDataTable
|ՈՐՏԵՂ
| vrDataTable.Period >= &DateStart
| Եվ vrDataTable.Period<= &ДатаКон";
Request.Execute();
TK = Չսահմանված;

Request = Նոր հարցում;
Query.TempTableManager = VrTable;
Query.Text = "Ահա մի հարցում, որը ներառում է ժամանակավոր աղյուսակ";

Արդյունք = Request.Run();
Վերադարձի արդյունք;

EndFunctions

OuterSet = InitializeDataSource();
DataSet = Նոր կառուցվածք ();
DataSet.Insert («SQL Table», ExternalSet);
GenericReports.Generate GenericReport (ThisObject, Result, Decryption Data, OutputToReportForm, DataSet);

Փաստորեն, կոդի շատ տողեր չկան, և դրանք բավականին ստանդարտ են… այս դեպքում կարող եք օգտագործել հարցումների ստեղծողի ամբողջական ֆունկցիոնալությունը և ACS-ում տալ միայն DATA COMPOSITION ֆունկցիան:

Բայց, իհարկե, այն մի փոքր ոչ այնքան գեղեցիկ է թվում ... և վերբեռնելով արժեքների աղյուսակը ամեն անգամ, երբ անհրաժեշտ է գրել կոդ և ստուգել, ​​թե արդյոք սխալ եք թույլ տվել մանրամասների անվանման մեջ ... հակառակ դեպքում այն, ինչ մեզ տրվել է 1C-ում, ինչ-որ կերպ կիսատ է թվում: Ես դեռ չեմ որոշել, թե որն է ավելի հարմար օգտագործելու համար։ Դուք որոշում եք, և գրեք ձեր որոշումների և այն մասին, թե ինչն է ձեզ դրդել դրանք ընդունելու:

Տեղեկատվությունը վերցված է կայքից