Դիետա... Մազեր Աքսեսուարներ

Սեղանի դիզայներ արտաքին տվյալների աղբյուրի համար 1C: Արտաքին տվյալների աղբյուրներ: Կարող է օգտագործվել միայն ACS միացումներում

Սկսած 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-ի կողմից պահված պրոցեդուրաները և դրանց օգնությամբ մուտք գործել տվյալներ արտաքին աղբյուրներից, ներառյալ գրավոր:

Դիտարկենք մի օրինակ։ Օգտագործելով SQL Management Studio, եկեք ստեղծենք նոր տվյալների բազա kursy_test անունով: Հետագա բոլոր փորձերը կկատարվեն դրա վրա։

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

ՕԳՏԱԳՈՐԾԵԼ [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),
@price թվային (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) ; Սերվեր = (տեղական); Տվյալների բազա = kursy_test ; Օգտագործողի ID = sa; Գաղտնաբառ =;

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

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

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

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

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

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

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

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

&OnClient
Ընթացակարգը Ավելացնել ()
Զգուշացում = Նոր Նկարագրություն Ահազանգեր(«OpenTableComplete», ThisObject );
OpenForm (
«ExternalDataSource.Nomenklatura.Table.dbo_nomenklatura.ObjectForm»
, , , , , ,
Զգուշացում, FormWindowOpenMode.LockEntireInterface);
Ընթացակարգի ավարտը

&OnClient
Ընթացակարգի պահպանում (հրաման)
SaveOnServer();
Ընթացակարգի ավարտը & Սերվերի վրա
Ընթացակարգը SaveOnServer()
Եթե Object.Link.Empty() Հետո
ExternalDataSources.Nomenklatura.dbo_insert_nomenklatura
Հակառակ դեպքում
ExternalDataSources.Nomenklatura.dbo_update_nomenklatura
(Object.id, Object.description, Object.price);
Վերջ Եթե ;
Ընթացակարգի ավարտը

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

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

Մեծացնելու համար սեղմեք նկարի վրա։

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

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

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

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

Մեծացնելու համար սեղմեք նկարի վրա։

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

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

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

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

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

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

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

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

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

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

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

&OnClient
Ընթացակարգը Ստեղծել ծրագրային կերպով(Թիմ)
CreateProgrammaticallyOnServer();
Ընթացակարգի ավարտը & Սերվերի վրա

Ընթացակարգը CreateProgrammaticallyOnServer()
WritableObject=
ExternalDataSources.Nomenklatura.Tables.dbo_nomenklatura.CreateObject();
WriteableObject.id= 5 ;
WriteableObject.description= «Զգեստապահարան» ;
WritableObject.price= 5000 ;
WriteableObject.Write();
Ընթացակարգի ավարտը

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

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

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

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

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 հատկությունում նշեք սյունակներից մեկը, որը կապահովի տողի եզակի նույնականացումը. եթե մի քանի տող ապահովում է եզակիություն, ապա այս մեթոդը չի աշխատում (Կոդ դաշտի անալոգը)
      • Presentation Field հատկությունում նշեք սյունակներից մեկը, որը կտրամադրի տողի համառոտ ներկայացումը (անման դաշտի անալոգը)
      • Table Data Type հատկությունում նշեք Object Data:

      2. Դիտել

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

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

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

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

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

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

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

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

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

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

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

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

      Դուք կարող եք հարցումներ կատարել տվյալների բազայից՝ օգտագործելով կանոնավոր . Հարցման տեքստի օրինակ արտաքին աղբյուրի OurExternalSource-ի և ExternalSource Table աղյուսակների համար.

      ԸՆՏՐԵԼ
      ExternalSourceTable.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 տվյալների հետ աշխատելու համար, օրինակ՝ SQL տվյալների բազա, Access տվյալների բազա, Excel ֆայլ և շատ ուրիշներ, տեխնոլոգիական հարթակում ներդրվել է մեխանիզմ (օբյեկտ), որը կոչվում է Արտաքին տվյալների աղբյուրներ՝ սկսած 8.2.14 տարբերակից:

Այս հոդվածում եկեք տեսնենք, թե ինչպես է այս օբյեկտը փոխազդում Excel ֆայլի հետ, որին մենք սովոր ենք: Օրինակ, անհրաժեշտություն կա կարդալու տվյալները *.xls ֆայլից 1C տվյալների բազայում որոշ ընդմիջումներով: Եթե ​​ավելի վաղ մեզ անհրաժեշտ էր նախաստորագրել՝ օգտագործելով Com օբյեկտները, ապա ստեղծել արժեքների աղյուսակ, կարդալ տվյալները տող առ տող, այժմ այդ մանիպուլյացիաները պարզապես անհետանում են: Արտաքին տվյալների աղբյուր օգտագործելիս մենք կարող ենք անմիջապես հարցումներ կատարել և առբերել տվյալները:

Ենթադրենք, մենք ունենք Excel-ի աշխատանքային գիրք հետևյալ բովանդակությամբ. Որից պետք է կարդալ տվյալները։

Նախ, կոնֆիգուրատորի ռեժիմում ավելացրեք տվյալների նոր աղբյուր և այն անվանեք Excel:

Այժմ մենք պետք է ավելացնենք տվյալներ, աղյուսակ այն դաշտերով, որոնք մենք կունենանք 1C-ում: Եկեք ստեղծենք դրանք այնպես, ինչպես անվանվում են ֆայլի սյունակները: Դա անելու համար գնացեք ստեղծված օբյեկտ և Data ներդիրում սեղմեք ավելացնել: Այստեղ ես խստորեն խորհուրդ եմ տալիս ստեղծել այն ձեռքով, քանի որ բավականին հաճախ խնդիրներ են առաջանում, երբ 1c-ina-ն փորձում է ինքնաբերաբար կարգավորել այն:

Անվանենք մեր աղյուսակը DataTable: Դրանից հետո անցեք Տվյալների ներդիր և ստեղծեք դաշտեր (նման ֆայլի):

Յուրաքանչյուր դաշտի հատկություններում դուք պետք է նշեք Անունը, Տեսակը և Անունը տվյալների աղբյուրում (նույնական է ֆայլին):
Տվյալների աղբյուրում անուն նշանակեք: Այստեղ մենք նշում ենք թերթի անունը *-ով: xls վերջում ավելացված է «$»: Մենք ունենք List1$:
Համոզվեք, որ նշեք Հիմնական դաշտերը: Այստեղ տվյալների բազայի տեսությունից անհրաժեշտ է նշել այն դաշտը, որի համար տողը լիովին եզակի կլինի։
Ներկայացման դաշտ - մենք նշում ենք այն դաշտը, որը կտրամադրի գծի համառոտ ներկայացումը, մեր դեպքում Անվանակարգը:

Բոլորը! Սա իրականում ամբողջ կարգավորումն է: Հաջորդը, դուք պարզապես պետք է նշեք կապի տողը ցանկացած ընթացակարգում և միանալուց հետո կարող եք աշխատել տվյալների աղբյուրի հետ:

XLSX ֆայլերի միացման տող (Office 2007 և ավելի ուշ)

Վարորդ=(Microsoft Excel Վարորդ (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;

XLS և ավելի վաղ ֆայլերի միացման տող:

Վարորդ=(Microsoft Excel-ի վարորդ (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;

Եկեք ստեղծենք նոր արտաքին մշակում, որը կմիանա և կհաղորդի կապի մասին:

Procedure ButtonExecutePress(Button)ConnectionParameters = NewConnectionParametersExternalDataSource; Միացման պարամետրեր. Connection String = "Driver = ( Microsoft Excel Driver (*. xls) ) ; Վարորդի ID= 790; DBQ= D:\միրգ. xls; «; Արտաքին տվյալների աղբյուրներ: Excel. SetGeneralConnectionParameters (ConnectionParameters) ; Արտաքին տվյալների աղբյուրներ: Excel. Ստեղծեք կապ () ; Request = New Request() ; Հայց. Տեքստ = «ԸՆՏՐԵԼ | Տվյալների աղյուսակ. Կոդ, | Տվյալների աղյուսակ. Անվանակարգ, | Տվյալների աղյուսակ. միավոր, | Տվյալների աղյուսակ. Քանակ | ԻՑ | Արտաքին տվյալների աղբյուր: Excel. Աղյուսակ. DataTable AS DataTable»; TK = Հայց. Կատարել ( ) . Բեռնաթափել() ; Հաշվետվություն («Միացված է»); Ընթացակարգի ավարտը

Եթե ​​մենք սահմանենք ընդմիջման կետ և նայենք, թե ինչ ունենք ճշգրտման մեջ, կտեսնենք հետևյալը.

P.S. Բուն Excel ֆայլում դաշտերի անուններից առաջ դատարկ տող չպետք է լինի, հակառակ դեպքում կառաջանա odbc սխալ: sqlstate 07002 (odbc excel վարորդը չափազանց քիչ պարամետրեր է):

Ինչո՞ւ է այս հնարավորությունը նման հետաքրքրություն ներկայացնում: Ցանկացած մարդ, ով ծրագրավորել է 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.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = True;
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) Կարող է օգտագործվել միայն ACS միացումներում
Նրանց համար, ովքեր չգիտեն, սա ACS-ում է «Տվյալների հավաքածուի հղումներ» ներդիրում: Դուք հաճախակի՞ եք դրանք օգտագործում։ Հարմարավետ? Ըստ երևույթին, նրանք ուզում են ստիպել մեզ ավելի հաճախ օգտագործել դրանք։ Միայն կա «Հաղորդակցման պայման» և «Հաղորդակցման պարամետր» սյունակը: Ես չեմ գտել դրանց օգտագործման օրինակ որևէ ստանդարտ կոնֆիգուրացիայի մեջ, և ինչ-որ կերպ ամեն ինչ թափանցիկ չէ փաստաթղթերում և Խրուստալևայի աշխատանքում: Որևէ մեկը կարող է ինձ բացատրել, թե ինչպես է աշխատում «միացման պայմանը»: Եթե ​​այնտեղ գրեք Source Attributes = Receiver Attributes, դա չի աշխատում: Իհարկե, պայմանը կարելի է գրել «Արտահայտություն» դաշտում, շատ դեպքերում դա բավարար է... բայց ինչ-որ կերպ դա այնքան էլ հեշտ չի ստացվում:

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

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Եթե ​​DataCon > «20100101» Ապա
DataCon = «20100101»;
վերջԵթե;

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

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

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

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

//Հաշվապահական արժեքը կլրացնենք աղյուսակում
TypeNumber = New DescriptionTypes (ArrayNumber, CN);
TypeString = New TypeDescription (ArrayString, KS);
TypeDate = New TypeDescription (ArrayDate);

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

TK.Indices.Add("Period");

//Միացեք SQL-ին
Միացման տող = "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(AbbrLP(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();
Բացառություն
Տեխնիկական բնութագրերի վերադարձ;
Վերջ փորձը;

Մինչդեռ RecordSet.EOF = False Loop
Line = TK.Add();
Row.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name)Value;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
Row.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value;
RecordSet.MoveNext();
End Cycle;

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

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

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

EndFunction

ExternalSet = InitializeDataSource();
DataSet = new Structure();
DataSet.Insert («SQL Table», ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Result, Decryption Data, OutputToReportForm, DataSet);

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

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

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

Արտաքին տվյալների աղբյուրներ 1C - համեմատաբար նոր մետատվյալների օբյեկտ 1C 8.3 և 8.2, որով հնարավոր է միանալ 1C արտաքին տվյալների աղբյուրներին՝ SQL աղյուսակներ, Excel, Access, FoxPro (dbf), մեկ այլ 1C տվյալների բազա, Oracle, Paradox (db) , - և նույնիսկ կարդալ պարզ txt/csv ֆայլերից:

Սա շատ հնարավորություններ է տալիս այլ համակարգերի հետ: Եկեք ավելի սերտ նայենք:

Արտաքին տվյալների աղբյուրների կարգավորում 1C 8-ում

Արտաքին աղբյուրների տեղադրումը անհատական ​​է յուրաքանչյուր տեսակի համակարգի համար: Բայց, որպես կանոն, կարգաբերման ընդհանուր մասը նույնն է. սա միացման տողերի կարգավորումն է.

Ստացեք 267 վիդեո դասեր 1C-ում անվճար.

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

Արտաքին տվյալների աղբյուրների օգտագործումը 1C-ում 8.3

Արտաքին տվյալների աղբյուրները 1C-ում կարող են օգտագործվել տվյալների բազայի այլ աղյուսակների նման: Պլատֆորմը ավտոմատ կերպով ձև է ստեղծում նրանց համար, եթե դրանցից մեկը նշված չէ: Հարցումների ժամանակ հնարավոր է նաև օգտագործել արտաքին աղբյուրներից ստացված տվյալներ: