გარე მონაცემთა წყაროები 1c 8.3 excel. მონაცემთა გარე წყაროები

გამოშვება 8.2.14.533 საბოლოოდ არის პლატფორმის მე-14 გამოშვების მეტ-ნაკლებად სტაბილური ვერსია. დაბოლოს, გაჩნდა შესაძლებლობა, გამოეცადა მშვენიერი შესაძლებლობა - "გარე მონაცემთა წყაროები".

რატომ მიცემული შესაძლებლობაასეთი ინტერესის გაღვივება? ვინც ერთდროულად დაპროგრამებულია 1C-ში, კარგად იცნობს SQL-ს და, სულ მცირე, ზოგადად იცნობს ბიზნეს აპლიკაციებისთვის სხვა ტექნოლოგიური პლატფორმების შემუშავების არქიტექტურას და პრინციპებს მტკიცე ნდობით, გეტყვით რა მოსწონს ყველაზე მეტად 1C-ში. რა თქმა უნდა, შეკითხვის შემქმნელი არის ყველაზე მოსახერხებელი და დახვეწილი მექანიზმი მოთხოვნების დასაწერად, რათა მივიღო მონაცემები რელაციური სტრუქტურებიდან, რომლებიც მე პირადად ოდესმე შემხვედრია. ახლა კი 1C-მა მოგვცა ასეთი მშვენიერი შესაძლებლობა, გამოვიყენოთ იგი არა მხოლოდ 1C, არამედ ნებისმიერი სხვა ცხრილით. აი, მხოლოდ ამ „თაფლის კასრში“ ჩასხმული „მფრინავის“ თაიგული. ყველაფერი რიგზე:

1) დაყენება და გამოყენება - ის არ იმუშავებს "თამბურთან ცეკვის" გარეშე

ა) დამატება გარე წყარომონაცემები - როგორც არაფერი რთული
ბ) ჩაინიშნეთ „აირჩიეთ სიიდან“ - აუცილებელია - ეს აუცილებელია შესრულების შესამოწმებლად უკვე დასაწყისში და გიხსნით ზედმეტი უსიამოვნებებისგან.
v)
(IMG: http://pics.livejournal.com/comol/pic/0000cr1r.png)
- დარწმუნდით, რომ დააჭირეთ "..." - ODBC კავშირი. არა OLEDB, როგორც ჩვენ ყველანი ვართ მიჩვეული, არამედ ერთი დონის ქვემოთ

Აქ იყავი ᲫᲐᲚᲘᲐᲜ ᲤᲠᲗᲮᲘᲚᲐᲓ.

ეს არის ODBC დრაივერი - თუ იყენებთ კლიენტ-სერვერის ვერსიას, ის უნდა იყოს სერვერზე. თუ თქვენ ავითარებთ ერთ სისტემაზე, ხოლო სამუშაო ვერსია მეორეზე (როგორც ჩვეულებრივ ხდება) დარწმუნდით, რომ სიურპრიზები არ გელით. უცნაური რეკომენდაციაა, მაგრამ აირჩიეთ უძველესი ან ყველაზე ზოგადი დრაივერი, თუ განსაკუთრებით არ გაინტერესებთ სიჩქარე და არ აპირებთ SQL92 სტანდარტის შესაძლებლობებს გასცდეთ. ეს მოგცემთ საუკეთესო თავსებადობას. მაგალითად SQL Server 2008-ისთვის საუკეთესო მძღოლიიქნება SQL Server Native Client 11, მაგრამ გირჩევთ აირჩიოთ მხოლოდ SQL Server, წინააღმდეგ შემთხვევაში ეს ძალიან მშობლიური კლიენტი უნდა იყოს დაინსტალირებული ან სერვერზე ან ყველა კლიენტის აპარატზე (გამოყენების შემთხვევაში ფაილის ვერსია), და ანაზღაურება განსაკუთრებულია მარტივი დავალებებიის არ მისცემს.

ე) სტანდარტული სერვერის შერჩევის დიალოგები

ზ) შეარჩიეთ ცხრილი და დეტალები ... შესანიშნავი შესაძლებლობა - შეგიძლიათ დაუყოვნებლივ გადაარქვათ სახელი, როგორც გსურთ (და დეტალებიც), ხოლო თვისებებში გამოაჩენთ მონაცემთა წყაროს ველების სახელებს.

H) ახლა კი დაიწყებთ, გახსენით შეკითხვის დიზაინერი - თქვენ სულელურად ირჩევთ ყველა ჩანაწერს ცხრილიდან და OPA - შეცდომა. Რა უნდა ვქნა? თუ თქვენ გაქვთ მართული ინტერფეისი, გადახედეთ სერვისის მენიუს და თუ ის ჩვეულებრივი ...
მე პირადად გამოვიყენე შემდეგი კოდი:

პარამეტრები = 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.SetGeneralConnectionParameters (პარამეტრები);
ExternalDataSources.DAX.SetUserConnectionParameters (UserName (), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters (პარამეტრები);

ExternalDataSources.DAX.InstallConnection ();

შესაძლოა, ზოგიერთი ნაწილი არ არის საჭირო, მაგრამ მუშაობს. თქვენ უნდა შეასრულოთ კოდი ერთხელ... ამის შემდეგ ის ნორმალურად დააკავშირებს ... მისტიკა რა თქმა უნდა - რატომ იყო საჭირო, გაუგებარია ...

2) მხოლოდ წაკითხული მონაცემთა წყაროები
დიახ, სასწაულები არ ხდება ... მაგრამ ხანდახან ძალიან გინდა ...

3) არ შეიძლება გამოყენებულ იქნას მონაცემთა შიდა წყაროებთან ერთად
ამ ფაქტმა პირადად მე მომკლა.

როგორ არის... მერე რას ელოდებოდნენ და უკვე წარმოადგინეს და ტუჩები აკოცა, რადგან ჩვენ ახლა ერთ მოთხოვნაში გავაერთიანებთ ჩვენს მონაცემებს 1C-თან, დავანგრევთ - დავაჯგუფებთ, ჩავსვამთ ანგარიშში, მაგრამ ასე იყო. იქ არა ...

მაგრამ ბუნებრივად გამოცდილი ადამიანები ეს არ ჩერდება... რა აზრი მოვიდა თავში? მართალია - დროებითი ცხრილები:

4) არ გამოიყენოთ ისინი დროის ცხრილებთან ერთად

მაგრამ ეს აღარ ჰგავს ტექნოლოგიურ სირთულეებს, არამედ ძალიან ჰგავს იმას, რაც მათ უნდათ, რომ ჩვენ გავაკეთოთ "ისე, რომ ცხოვრება სამოთხედ არ ჩანდეს" (IMG :).

5) შეიძლება გამოყენებულ იქნას მხოლოდ ACS კავშირებში

მათთვის, ვინც არ იცის - ეს არის ACS ჩანართზე "Dataset Links". ხშირად იყენებ მათ? მოხერხებულად? როგორც ჩანს, უნდათ აიძულონ, უფრო ხშირად გამოვიყენოთ ისინი. მხოლოდ აქ არის სვეტი "ბმულის მდგომარეობა" და "ბმულის პარამეტრი". არცერთ ტიპურ კონფიგურაციაში მათი გამოყენების მაგალითი ვერ ვიპოვე, დოკუმენტაციაშიც და ხრუსტალევაშიც რაღაცნაირად არ არის გამჭვირვალე. იქნებ ვინმემ ამიხსნათ როგორ მუშაობს "ბმულის მდგომარეობა". თუ იქ წერ SourceProps = RevisionReceiver, არ მუშაობს. რა თქმა უნდა, პირობა შეიძლება ჩაიწეროს "გამოხატვა" ველში - უმეტეს შემთხვევაში ეს საკმარისია... მაგრამ რატომღაც მისი მიღება არც ისე ადვილია.

საერთო ჯამში, ეს ამოცანა ადრე გადაწყდა სადღაც ასე:

ფუნქცია InitializeDataSource ()

StartDate = SettingsComposer.Settings.DataParameters.Elements.Value;
DateCon = SettingsComposer.Settings.DataParameters.Elements.Value;
If DateCon> "20100101" მაშინ
DateCon = "20100101";
Დაასრულე თუ;

CC = New QualifiersNumbers (15.2);
KS = ახალი სიმებიანი კვალიფიკატორები (255);

ArrayNumber = ახალი მასივი ();
ArrayNumber.Add (ტიპი ("ნომერი"));

ArrayString = ახალი მასივი ();
ArrayString.Add (ტიპი ("სტრიქონი"));

ArrayDate = ახალი მასივი ();
ArrayDate.Add (ტიპი ("თარიღი"));

// ცხრილში შევავსებთ სააღრიცხვო ღირებულებას
TypeNumber = ტიპების ახალი აღწერა (ArrayNumber, CN);
TypeString = ტიპების NewDescription (ArrayString, KS);
TypeDate = NewDateDescription (ArrayDate);

// ცხრილი SQL-დან მონაცემების ჩატვირთვისთვის
TK = New ValuesTable ();
TZ.Kolonki.Add ("NomenclatureCode", StringType);
TK.Columns.Add ("Qnty", TypeNumber);
TK.Kolonki.Add ("პერიოდი", TypeDate);

TK.Ideksy.Add ("პერიოდი");

// SQL-თან დაკავშირება
ConnectionString = "პროვაიდერი = SQLOLEDB.1; მუდმივი უსაფრთხოების ინფორმაცია = True; მომხმარებლის ID = sa; Pwd =; მონაცემთა წყარო =; გამოიყენეთ პროცედურის მომზადება = 1; ავტომატური თარგმნა = True; პაკეტის ზომა = 4096; სამუშაო სადგურის ID =; გამოიყენეთ დაშიფვრა მონაცემებისთვის = მცდარი; თეგი სვეტების დალაგებით, როდესაც შესაძლებელია = მცდარი; საწყისი კატალოგი = მოხსენებები ";
კავშირი = ახალი COMObject ("ADODB.Connection");
Command = New COMObject ("ADODB.Command");
RecordSet = ახალი COMObject ("ADODB.RecordSet");
თარიღი = "";
მცდელობა
Connection.Open (SocrLP (ConnectionString));
Command.ActiveConnection = კავშირი;
Command.CommandText = "Select * from PH where period> =" "+ String (Format (DateStart," DF = yyyyMMdd ")) +" "and period RecordSet = Command.Execute ();
RecordSet.MoveFirst ();
გამონაკლისი
TK-ის დაბრუნება;
მცდელობების დასასრული;

ხოლო RecordSet.EOF = False Loop
სტრიქონი = 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 ();
ციკლის დასასრული;

მოთხოვნა = ახალი მოთხოვნა ();
VRTable = NewTempTablesManager ();
Request.SetParameter ("vrTableData", TK);
Request.SetParameter ("StartDate", StartDate);
Request.SetParameter ("DateCon", DateCon);
Request.Text = "SELECT
| vpDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vpDataTable.Period
POST მონაცემთა ცხრილი
| საიდან
| & vrDataTable AS vrDataTable
| სად
| timeDataTable.Period> = & StartDate
| AND vrDataTable.Period Request.Run ();
TK = განუსაზღვრელი;

მოთხოვნა = ახალი მოთხოვნა;
Query.TemporaryTablesManager = VRTable;
Query.Text = "აქ არის შეკითხვა, რომელიც მოიცავს ვერბალურ ცხრილს";

შედეგი = Query.Run ();
თანხის დაბრუნების შედეგი;

საბოლოო ფუნქცია

OuterSet = InitializeDataSource ();
მონაცემთა ნაკრები = ახალი სტრუქტურა ();
DataSet.Insert ("SQL Table", ExternalSet);
ტიპიური ანგარიშები ტიპიური ანგარიშის გენერირება (ThisObject, შედეგი, მონაცემების დეკოდირება, გამომავალი ფორმა, მონაცემთა ნაკრები);

სინამდვილეში, კოდის ბევრი სტრიქონი არ არის და ისინი საკმაოდ სტანდარტულია... ამ შემთხვევაში, შეგიძლიათ გამოიყენოთ შეკითხვის კონსტრუქტორის სრული ფუნქციონალობა და მისცეთ მხოლოდ DATA LINK ფუნქცია ACS-ში.

მაგრამ თითქმის რა თქმა უნდა არც ისე ლამაზად გამოიყურება... და მნიშვნელობების ცხრილში გადმოტვირთვა ყოველ ჯერზე, როცა გჭირდებათ კოდის დაწერა და შემოწმება, დაუშვით თუ არა შეცდომა დეტალების დასახელებაში... მაგრამ რა მოგვცეს. 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]
წადი
CREATE PROCEDURE insert_nomenklatura
@id int,
@description nvarchar (150),
@ფასი რიცხვითი (15, 2)
ას
დასაწყისი
ჩასმა [kursy_test] .dbo. [ნომენკლატურა] ([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
პროცედურა დამატება ()
გაფრთხილება = ახალი აღწერა გაფრთხილებები("OpenTableCompletion", ეს ობიექტი);
OpenForm (
"ExternalDataSource.Nomenklatura.Table.dbo_nomenklatura.ObjectForm"
, , , , , ,
გაფრთხილება, ModeOpenWindowForms.LockAllInterface);
პროცედურის დასასრული

& OnClient
პროცედურის შენახვა (ბრძანება)
შენახვა სერვერზე();
EndProcedure & AtServer
Პროცედურა შენახვა სერვერზე()
თუ ობიექტი.რეფ.ცარიელი() შემდეგ
ExternalDataSources.Nomenklatura.dbo_insert_nomenklatura
წინააღმდეგ შემთხვევაში
ExternalDataSources.Nomenklatura.dbo_update_nomenklatura
(Object.id, Object.description, Object.price);
Დაასრულე თუ;
პროცედურის დასასრული

საწარმოს რეჟიმში, სიის ფორმა ასე გამოიყურება:

ობიექტის ფორმა ნაჩვენებია ქვემოთ:

დააწკაპუნეთ სურათზე გასადიდებლად.

ამრიგად, შენახული პროცედურების გამოყენებით, ჩვენ განვახორციელეთ ჩაწერა გარე მონაცემთა წყაროებზე.

8.3.5 პლატფორმაზე გამოჩნდა ახალი ფუნქცია - გარე მონაცემების წყაროებზე პირდაპირ ჩაწერა, ზემოთ განხილული შენახული პროცედურების მექანიზმის გვერდის ავლით.

მონაცემების რედაქტირება შესაძლებელია როგორც პროგრამულად, ასევე ინტერაქტიულად. და ჩვენი მაგალითისთვის, თქვენ არ მოგიწევთ კონფიგურაციის გამოყენება.

ბრძანების ზოლებში და მენიუში "მეტი" შეგიძლიათ იხილოთ სტანდარტული ღილაკები, როგორიცაა "ახალი", "ასლი", "მოდიფიკაცია" და ა.შ.

დააწკაპუნეთ სურათზე გასადიდებლად.

და ობიექტის სახით იყო ღილაკები "Write" და "Write and Close":

როგორც ხედავთ, ახლა გარე წყაროებთან მუშაობა მსგავსია დირექტორიებთან, დოკუმენტებთან და ა.შ.

განვიხილოთ, რა ცვლილებები განხორციელდა მეტამონაცემების დონეზე, რათა შესაძლებელი ყოფილიყო მონაცემთა გარე წყაროებზე ჩაწერა.

მონაცემთა ცხრილს დაემატა ახალი თვისება მხოლოდ კითხვა(ტიპი არის ლოგიკური).

თუ ეს თვისება დაყენებულია True-ზე, პლატფორმა ვერ ჩაწერს მონაცემებს ამ ცხრილში.

მონაცემთა ცხრილის ველს ახლა აქვს შემდეგი თვისებები:

  • მხოლოდ კითხვა(ტიპი - ლოგიკური) - შესაძლებელია თუ არა ამ ველში მონაცემების შეცვლა;
  • AllowNull(ტიპი - ლოგიკური) - შესაძლებელია თუ არა ამ ველში NULL მნიშვნელობის შენახვა.

საკუთრება მხოლოდ კითხვაუნდა დაყენდეს მართალიამონაცემთა ბაზის ველებისთვის ავტომატური შეცვლა, ავტომატურად გენერირებული საკვანძო ველები, გამოთვლილი ველები და ა.შ.

თქვენ შეგიძლიათ დაამატოთ, შეცვალოთ და წაშალოთ მონაცემები გარე წყაროებში ჩაშენებული ენის გამოყენებით.

ამისათვის ობიექტები ExternalDataSourceTableRecordSetდა ExternalDataSourceTableObjectდაინერგა ახალი მეთოდები დაწერე ()და წაშლა ().

მოდით შევხედოთ ზემოთ განხილული გარე მონაცემთა წყაროსთვის ახალი ჩანაწერის პროგრამულად დამატების მაგალითს.

& OnClient
Პროცედურა შექმენით პროგრამულად(გუნდი)
CreateProgrammaticallyOnServer();
EndProcedure & AtServer

Პროცედურა CreateProgrammaticallyOnServer()
WritableObject=
ExternalDataSources.Nomenklatura.Tables.dbo_nomenklatura.CreateObject();
WritableObject.id= 5 ;
WritableObject.description= "გარდერობი";
WritableObject.ფასი= 5000 ;
WritableObject.();
პროცედურის დასასრული

გარე მონაცემთა წყაროს ცხრილის ობიექტის მოდულში ახლა შეგიძლიათ დააყენოთ მოვლენის დამმუშავებლები იმ მოვლენებისთვის, რომლებიც ჩართულია წერისას, მაგ. ჩაწერამდე (), ჩაწერისას ()და ა.შ.:

ამ სტატიაში განხილული იყო მონაცემების გარე წყაროებზე ჩაწერის ორი ვარიანტი - შენახული პროცედურების გამოყენება და 8.3.5 პლატფორმის ახალი მექანიზმების გამოყენება.

ამრიგად, პლატფორმა ახლა ახორციელებს მექანიზმებს გარე აპლიკაციებთან სრული ინტეგრაციისთვის.

8.3.6 ვერსიაში ზემოთ აღწერილი ფუნქციონალობა გაფართოვდა ახლის დახმარებით სპეციალური მეთოდები GetMutableFields () და SetMutableFields (). მათი დახმარებით შესაძლებელია ჩაწერის ოპერაციის შესრულება VIEW ცხრილის იმ ველებში, რომლებიც კონფიგურატორში მონიშნულია მხოლოდ წასაკითხად. ამის წყალობით, შესაძლებელი გახდა ისეთი სცენარის განხორციელება, რომელშიც TID ცხრილის ცალკეულ ველებზე ჩაწერა შესაძლებელია მხოლოდ იმ შემთხვევებში, როდესაც ეს აუცილებელია განაცხადის ბიზნეს ლოგიკის შესაბამისად.

8.3.7 ვერსიაში გაუმჯობესდა მექანიზმი, რომელიც განსაზღვრავს ხედის ცხრილების რომელი კონკრეტული ველი შეიძლება შეიცავდეს NULL მნიშვნელობებს. ამ მომენტამდე, ყველა ხედვის ცხრილმა შეიძლება მიიღოს ეს მნიშვნელობა. ეს ცვლილება დაკავშირებულია დახარისხების სიჩქარის ზრდასთან დინამიური სიებიამ მინდვრებზე.

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 ველის თვისებაში - მიუთითეთ ერთ-ერთი სვეტი, რომელიც უზრუნველყოფს მწკრივის უნიკალურ იდენტიფიკაციას; თუ რამდენიმე ხაზი უზრუნველყოფს უნიკალურობას, მაშინ ამ გზითარ მუშაობს (კოდის ველის ანალოგი)
      • Presentation ველის თვისებაში, მიუთითეთ ერთ-ერთი სვეტი, რომელიც უზრუნველყოფს სტრიქონის მოკლე წარმოდგენას (ანალოგური სახელი ველის)
      • Table data type თვისებაში, მიუთითეთ Object data.

      2. დათვალიერება

      დისტანციურ ბაზასთან კავშირი ავტომატურად არ ხდება. დასაკავშირებლად, თქვენ უნდა აირჩიოთ ტიპიური მენიუ.

      სტანდარტული ფილიალი შეიცავს სპეციალური გუნდიმონაცემთა გარე წყაროების მართვა, რომელიც საშუალებას გაძლევთ მიუთითოთ კავშირის პარამეტრები (თქვენი 1C Enterprise რეჟიმისთვის) და დააკავშიროთ.

      პირველ რიგში, თქვენ უნდა მიუთითოთ მონაცემთა ბაზასთან დაკავშირების პარამეტრები.

      როდესაც თქვენ გააკეთეთ პარამეტრები კონფიგურატორში, მან აჩვენა კავშირის სტრიქონი შედეგად. თქვენ შეგიძლიათ კვლავ ნახოთ იგი კონფიგურატორში ცხრილის დამატება ხელახლა დაწკაპუნებით.

      დააკოპირეთ კავშირის სტრიქონი და მიუთითეთ იგი 1C Enterprise რეჟიმში.

      ამის შემდეგ, თქვენ უნდა დაამყაროთ ფაქტობრივი კავშირი.

      დაკავშირების შემდეგ შესაძლებელია სიებთან მუშაობა.

      3. გამოიყენეთ 1C ენაზე

      კავშირი ასევე შეიძლება განხორციელდეს პროგრამის კოდიდან 1C ენაზე.

      კავშირის პარამეტრები მითითებულია შემდეგნაირად:
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetGeneralConnectionParameters ();

      ConnectionParameters.AuthenticationStandard = True;
      Connection Parameters.UserName = "sa";
      Connection Parameters.Password = "პაროლი";
      Connection Parameters.ConnectionString = "დაკავშირების სტრიქონი კონფიგურატორიდან";
      Connection Parameters.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetGeneralConnectionParameters (ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters (UserName (), Parameters);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters (პარამეტრები);
      ExternalDataSources.SourceNameConfigurator.InstallConnection ();

      თქვენ შეგიძლიათ მოითხოვოთ მონაცემები მონაცემთა ბაზიდან ჩვეულებრივი გამოყენებით. მოთხოვნის ტექსტის მაგალითი გარე წყაროსთვის OurExternalSource და ExternalSourceTable ცხრილებისთვის:

      აირჩიეთ
      ExternalSourceTable.FieldName
      FROM
      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)); დრაივერის ID = 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

მოდით უფრო ახლოს მივხედოთ ცხრილის დამატების ფორმას. "Name" თვისება გამოიყენება კონფიგურაციის ობიექტის ცალსახად იდენტიფიცირებისთვის.

მეტამონაცემების ობიექტისა და საბოლოო ფიზიკური ცხრილის შედარება ხდება "Advanced" ჩანართზე განთავსებული "Name in the data source" თვისებით (ნახ. 5).

ბრინჯი. 5

შემდეგი, ჩვენ უნდა განვსაზღვროთ ცხრილის ტიპი, უფრო სწორად მისი ობიექტურობა. თუ სტრუქტურაში შენახული მონაცემების ცალსახად იდენტიფიცირება შესაძლებელია რომელიმე ველის მეშვეობით, ცხრილი შეიძლება იყოს ობიექტი. თუ ჩანაწერის ინდივიდუალურობა განისაზღვრება საკვანძო ველების სიმრავლით, ცხრილს უნდა ჰქონდეს არაობიექტური ტიპი.

ასეთი ცხრილების სხვა მეტამონაცემების ობიექტებთან შედარებისას შესაძლებელია შემდეგი ანალოგიის გაკეთება:

  • ობიექტების ცხრილები არის დირექტორიები;
  • არაობიექტური არის ინფორმაციის რეგისტრები.

საკვანძო ველების ნაკრები განისაზღვრება შემდეგი ფორმის პარამეტრში ("Key Fields"). ეს ველი აუცილებელია, თუ მას ცარიელი დატოვებთ, კონფიგურაციის შენახვა ვერ მოხერხდება.

როგორც ნახაზი 5-დან ხედავთ, ზოგიერთი ფორმის ველი და ღილაკი არ არის ხელმისაწვდომი რედაქტირებისთვის:

  • გამოხატვა მონაცემთა წყაროში;
  • ცხრილის მონაცემთა ტიპი;
  • პრეზენტაციის ველი;
  • დამმუშავებლების ნახვა.

მათი გამოყენება შესაძლებელია მხოლოდ მას შემდეგ, რაც შევავსებთ ცხრილის ველებს, განვსაზღვრავთ მათ ტიპს და ვაძლევთ იდენტიფიკატორებს (ნახ. 6).

ბრინჯი. 6

აქ ყურადღება უნდა მიაქციოთ "Allow Null" პარამეტრს, თუ ეს ველი არჩეულია, არასასურველია ასეთი ველის გამოყენება გასაღებად.

მაგიდის კონსტრუქტორი

ალბათ ყველაზე მნიშვნელოვანი და საინტერესო პუნქტი გარე წყაროებთან მუშაობისას არის კავშირის სტრიქონის შექმნა. მისი კონსტრუქტორი იხსნება, როდესაც დააჭირეთ ღილაკს სამი წერტილით "Connection string" პარამეტრის გვერდით.

უპირველეს ყოვლისა, ჩვენ მოგეთხოვებათ გადაწყვიტოთ დრაივერი, რომელიც გამოყენებული იქნება კავშირისთვის (ნახ. 7).

ბრინჯი. 7

ამ პარამეტრის არასწორი განმარტება ხელს შეუშლის მესამე მხარესთან დაკავშირებას საინფორმაციო ბაზა... ასევე უნდა გვესმოდეს, რომ ჩამოსაშლელ სიაში მითითებული ყველა დრაივერი არ შეიძლება გამოყენებულ იქნას კავშირის სტრიქონის ავტომატურად გენერირებისთვის. თუ პლატფორმა წარმოქმნის შეცდომას (ნახ. 8), მაშინ კავშირის სტრიქონი ხელით უნდა დაიწეროს.

სურ. 8

ბრინჯი. 9

სტრიქონი თავისთავად უაღრესად რეგულირებადი კონსტრუქციაა.

კავშირის სტრიქონის მაგალითი

განვიხილოთ მესამე მხარის მონაცემთა ბაზა, რომელიც შეიქმნა Microsoft Accessდა მდებარეობს D დისკის ძირში. ამ მონაცემთა ბაზის დასაკავშირებლად უნდა გამოვიყენოთ შესაბამისი დრაივერი, მაგრამ ხაზის კონსტრუქტორში მისი არჩევის შედეგად ხდება შეცდომა ნახ.8.

მოდით, დამოუკიდებლად დავწეროთ კავშირის პარამეტრები.

Driver = (Microsoft Access Driver (* .mdb)) - ასე გამოიყურება ხაზის პირველი ნაწილი. ვ ფიგურული ფრჩხილებიჩვენ განვსაზღვრეთ მძღოლი.

ამისთვის 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, ამ პარამეტრის დაწერით, ჩვენ მივიღებთ წვდომას ამ მონაცემთა ბაზის შიდა სტრუქტურებზე.

"გარე წყაროს" ობიექტისთვის საკმარისი არ არის მხოლოდ მისი შექმნა კონფიგურაციაში, ის მაინც უნდა იყოს დაკავშირებული "Enterprise" რეჟიმში. ეს შეიძლება გაკეთდეს მენიუდან "ყველა ფუნქცია" -> გარე წყაროები. როდესაც პირველად შევდივართ ჩვენს ცხრილში, ჩვენ უნდა დავარეგისტრიროთ იგივე კავშირის სტრიქონი უკვე "Enterprise" რეჟიმში.

რატომ არის ეს შესაძლებლობა ასე საინტერესო? ვინც ერთდროულად დაპროგრამებულია 1C-ში, კარგად იცნობს SQL-ს და, სულ მცირე, ზოგადად იცნობს ბიზნეს აპლიკაციებისთვის სხვა ტექნოლოგიური პლატფორმების შემუშავების არქიტექტურას და პრინციპებს მტკიცე ნდობით, გეტყვით რა მოსწონს ყველაზე მეტად 1C-ში. რა თქმა უნდა, შეკითხვის შემქმნელი არის ყველაზე მოსახერხებელი და დახვეწილი მექანიზმი მოთხოვნების დასაწერად, რათა მივიღო მონაცემები რელაციური სტრუქტურებიდან, რომლებიც მე პირადად ოდესმე შემხვედრია. ახლა კი 1C-მა მოგვცა ასეთი მშვენიერი შესაძლებლობა, გამოვიყენოთ იგი არა მხოლოდ 1C, არამედ ნებისმიერი სხვა ცხრილით. აი, მხოლოდ ამ „თაფლის კასრში“ ჩასხმული „მფრინავის“ თაიგული. ყველაფერი რიგზე:

1) დაყენება და გამოყენება- "თამბურთან ცეკვის" გარეშე არ გამოდგება
ა) დაამატეთ მონაცემთა გარე წყარო - არაფერი რთული არ ჩანს
ბ) ჩაინიშნეთ „აირჩიეთ სიიდან“ - აუცილებელია - ეს აუცილებელია შესრულების შესამოწმებლად უკვე დასაწყისში და გიხსნით ზედმეტი უსიამოვნებებისგან.
გ) - აუცილებლად დააჭირეთ "..." - კავშირი არის ODBC. არა OLEDB, როგორც ჩვენ ყველანი ვართ მიჩვეული, არამედ ერთი დონის ქვემოთ

დ) და აქ, იყავით ძალიან ფრთხილად.

ეს არის ODBC დრაივერი - თუ იყენებთ კლიენტ-სერვერის ვერსიას, ის უნდა იყოს სერვერზე. თუ თქვენ ავითარებთ ერთ სისტემაზე, ხოლო სამუშაო ვერსია მეორეზე (როგორც ჩვეულებრივ ხდება) დარწმუნდით, რომ სიურპრიზები არ გელით. უცნაური რეკომენდაციაა, მაგრამ აირჩიეთ უძველესი ან ყველაზე ზოგადი დრაივერი, თუ განსაკუთრებით არ გაინტერესებთ სიჩქარე და არ აპირებთ SQL92 სტანდარტის შესაძლებლობებს გასცდეთ. ეს მოგცემთ საუკეთესო თავსებადობას. მაგალითად, SQL Server 2008-ისთვის საუკეთესო დრაივერი იქნება SQL Server Native Client 11, მაგრამ გირჩევთ აირჩიოთ მხოლოდ SQL Server, წინააღმდეგ შემთხვევაში ეს ძალიან მშობლიური კლიენტი უნდა იყოს დაინსტალირებული სერვერზე ან ყველა კლიენტის აპარატზე (ამ შემთხვევაში ფაილის ვერსიის გამოყენებით) და სპეციალური მოგება მარტივი ის არ მისცემს დავალებებს.
ე) სტანდარტული სერვერის შერჩევის დიალოგები

ვ) გირჩევთ, პაროლის შენახვაზე უპასუხოთ „დიახ“, წინააღმდეგ შემთხვევაში ამ ბიზნესის დაწყება არ გამოდგება.
ზ) აირჩიეთ ცხრილი და დეტალები ... დიდი შესაძლებლობა - შეგიძლიათ დაუყოვნებლივ გადაარქვათ სახელი, როგორც გსურთ (და დეტალებიც), ხოლო თვისებებში გამოაჩენთ მონაცემთა წყაროს ველების სახელებს.

H) ახლა კი დაიწყებთ, გახსენით შეკითხვის დიზაინერი - თქვენ სულელურად ირჩევთ ყველა ჩანაწერს ცხრილიდან და OPA - შეცდომა. Რა უნდა ვქნა? თუ თქვენ გაქვთ მართული ინტერფეისი, გადახედეთ სერვისის მენიუს და თუ ის ჩვეულებრივი ...
მე პირადად გამოვიყენე შემდეგი კოდი:
კოდი 1C v 8.х Parameters = 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.SetGeneralConnectionParameters (პარამეტრები);
ExternalDataSources.DAX.SetUserConnectionParameters (UserName (), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters (პარამეტრები);

ExternalDataSources.DAX.InstallConnection ();
შესაძლოა, ზოგიერთი ნაწილი არ არის საჭირო, მაგრამ მუშაობს.
თქვენ უნდა შეასრულოთ კოდი ერთხელ. ამის შემდეგ ის ნორმალურად დააკავშირებს ... მისტიკა რა თქმა უნდა - რატომ იყო საჭირო, გაუგებარია ...

2) მხოლოდ წაკითხული მონაცემთა წყაროები- დიახ, სასწაულები არ ხდება... მაგრამ ხანდახან იმდენი გინდა...

3) არ შეიძლება გამოყენებულ იქნას მონაცემთა შიდა წყაროებთან ერთად
ამ ფაქტმა პირადად მე მომკლა.

როგორ არის... მერე რას ელოდებოდნენ და უკვე წარმოადგინეს და ტუჩები აკოცა, რადგან ჩვენ ახლა ერთ მოთხოვნაში გავაერთიანებთ ჩვენს მონაცემებს 1C-თან, დავანგრევთ - დავაჯგუფებთ, ჩავსვამთ ანგარიშში, მაგრამ ასე იყო. იქ არა ...
მაგრამ ბუნებრივად გამოცდილი ადამიანები ეს არ ჩერდება... რა აზრი მოვიდა თავში? მართალია - დროებითი ცხრილები:

4) არ გამოიყენოთ ისინი დროის ცხრილებთან ერთად

მაგრამ ეს არ ჰგავს ტექნოლოგიურ სირთულეებს, მაგრამ ძალიან ჰგავს იმას, რისი გაკეთებაც მათ სურთ ჩვენგან, რომ "ცხოვრება სამოთხედ არ ჩანდეს" :).

5) შეიძლება გამოყენებულ იქნას მხოლოდ ACS კავშირებში
მათთვის, ვინც არ იცის - ეს არის ACS ჩანართზე "Dataset Links". ხშირად იყენებ მათ? მოხერხებულად? როგორც ჩანს, უნდათ აიძულონ, უფრო ხშირად გამოვიყენოთ ისინი. მხოლოდ აქ არის სვეტი "ბმულის მდგომარეობა" და "ბმულის პარამეტრი". არცერთ ტიპურ კონფიგურაციაში მათი გამოყენების მაგალითი ვერ ვიპოვე, დოკუმენტაციაშიც და ხრუსტალევაშიც რაღაცნაირად არ არის გამჭვირვალე. იქნებ ვინმემ ამიხსნათ როგორ მუშაობს "ბმულის მდგომარეობა". თუ იქ წერ SourceProps = RevisionReceiver, არ მუშაობს. რა თქმა უნდა, პირობა შეიძლება ჩაიწეროს "გამოხატვა" ველში - უმეტეს შემთხვევაში ეს საკმარისია... მაგრამ რატომღაც მისი მიღება არც ისე ადვილია.

საერთო ჯამში, ეს ამოცანა ადრე გადაწყდა სადღაც ასე:
კოდი 1C v 8.x ფუნქცია InitializeDataSource ()

StartDate = SettingsComposer.Settings.DataParameters.Elements.Value;
DateCon = SettingsComposer.Settings.DataParameters.Elements.Value;
If DateCon> "20100101" მაშინ
DateCon = "20100101";
Დაასრულე თუ;

CC = New QualifiersNumbers (15.2);
KS = ახალი სიმებიანი კვალიფიკატორები (255);

ArrayNumber = ახალი მასივი ();
ArrayNumber.Add (ტიპი ("ნომერი"));

ArrayString = ახალი მასივი ();
ArrayString.Add (ტიპი ("სტრიქონი"));

ArrayDate = ახალი მასივი ();
ArrayDate.Add (ტიპი ("თარიღი"));

// ცხრილში შევავსებთ სააღრიცხვო ღირებულებას
TypeNumber = ტიპების ახალი აღწერა (ArrayNumber, CN);
TypeString = ტიპების NewDescription (ArrayString, KS);
TypeDate = NewDateDescription (ArrayDate);

// ცხრილი SQL-დან მონაცემების ჩატვირთვისთვის
TK = New ValuesTable ();
TZ.Kolonki.Add ("NomenclatureCode", StringType);
TK.Columns.Add ("Qnty", TypeNumber);
TK.Kolonki.Add ("პერიოდი", TypeDate);

TK.Ideksy.Add ("პერიოდი");

// SQL-თან დაკავშირება
ConnectionString = "პროვაიდერი = SQLOLEDB.1; მუდმივი უსაფრთხოების ინფორმაცია = True; მომხმარებლის ID = sa; Pwd =; მონაცემთა წყარო =; გამოიყენეთ პროცედურის მომზადება = 1; ავტომატური თარგმნა = True; პაკეტის ზომა = 4096; სამუშაო სადგურის ID =; გამოიყენეთ დაშიფვრა მონაცემებისთვის = მცდარი; თეგი სვეტების დალაგებით, როდესაც შესაძლებელია = მცდარი; საწყისი კატალოგი = მოხსენებები ";
კავშირი = ახალი COMObject ("ADODB.Connection");
Command = New COMObject ("ADODB.Command");
RecordSet = ახალი COMObject ("ADODB.RecordSet");
თარიღი = "";
მცდელობა
Connection.Open (SocrLP (ConnectionString));
Command.ActiveConnection = კავშირი;
Command.CommandText = "S_elect * fr om PH h ere period> =" "+ String (ფორმატი (DateStart," DF = yyyyMMdd ")) +" "და წერტილი<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute ();
RecordSet.MoveFirst ();
გამონაკლისი
TK-ის დაბრუნება;
მცდელობების დასასრული;

ხოლო RecordSet.EOF = False Loop
სტრიქონი = 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 ();
ციკლის დასასრული;

მოთხოვნა = ახალი მოთხოვნა ();
VRTable = NewTempTablesManager ();
Request.SetParameter ("vrTableData", TK);
Request.SetParameter ("StartDate", StartDate);
Request.SetParameter ("DateCon", DateCon);
Request.Text = "SELECT
| vpDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vpDataTable.Period
POST მონაცემთა ცხრილი
| საიდან
| & vrDataTable AS vrDataTable
| სად
| timeDataTable.Period> = & StartDate
| და vrDataTable.Period<= &ДатаКон";
მოთხოვნა.გაშვება ();
TK = განუსაზღვრელი;

მოთხოვნა = ახალი მოთხოვნა;
Query.TemporaryTablesManager = VRTable;
Query.Text = "აქ არის შეკითხვა, რომელიც მოიცავს ვერბალურ ცხრილს";

შედეგი = Query.Run ();
თანხის დაბრუნების შედეგი;

საბოლოო ფუნქცია

OuterSet = InitializeDataSource ();
მონაცემთა ნაკრები = ახალი სტრუქტურა ();
DataSet.Insert ("SQL Table", ExternalSet);
ტიპიური ანგარიშები ტიპიური ანგარიშის გენერირება (ThisObject, შედეგი, მონაცემების დეკოდირება, გამომავალი ფორმა, მონაცემთა ნაკრები);

სინამდვილეში, კოდის ბევრი სტრიქონი არ არის და ისინი საკმაოდ სტანდარტულია... ამ შემთხვევაში, შეგიძლიათ გამოიყენოთ შეკითხვის კონსტრუქტორის სრული ფუნქციონალობა და მისცეთ მხოლოდ DATA LINK ფუნქცია ACS-ში.

მაგრამ თითქმის რა თქმა უნდა არც ისე ლამაზად გამოიყურება... და მნიშვნელობების ცხრილში გადმოტვირთვა ყოველ ჯერზე, როცა გჭირდებათ კოდის დაწერა და შემოწმება, დაუშვით თუ არა შეცდომა დეტალების დასახელებაში... მაგრამ რა მოგვცეს. 1C-ში რაღაცნაირად ნახევრად გულგრილად გამოიყურება. მე ჯერ არ გადამიწყვეტია რა არის უფრო მოსახერხებელი გამოსაყენებლად. თქვენ გადაწყვეტთ და წერთ თქვენს გადაწყვეტილებებზე და იმაზე, თუ რამ გიბიძგათ მათკენ.

ინფორმაცია აღებულია საიტიდან