Гэр / Мэдэхэд таатай байна / 1c гадаад мэдээллийн эх сурвалжийн холболтын мөр. Гадаад мэдээллийн эх сурвалж. Холболтын хэлхээний жишээ

1c гадаад мэдээллийн эх сурвалжийн холболтын мөр. Гадаад мэдээллийн эх сурвалж. Холболтын хэлхээний жишээ

Яагаад энэ боломжийм сонирхол төрүүлдэг үү? 1С дээр программчлагдсан аливаа хүн SQL-ийг сайн мэддэг бөгөөд ерөнхийдөө бизнесийн хэрэглээний бусад технологийн платформыг боловсруулах архитектур, зарчмуудыг мэддэг хүн 1С-д юу хамгийн их таалагддагийг баттай хэлэх болно. Мэдээжийн хэрэг, асуулга үүсгэгч нь миний биечлэн уулзаж байсан харилцааны бүтцээс мэдээлэл авах хүсэлтийг бичих хамгийн тохиромжтой, ухаалаг механизм юм. Одоо 1С нь зөвхөн 1С төдийгүй бусад хүснэгтэд ашиглах гайхалтай боломжийг бидэнд олгосон. Энэ "тоххон зөгийн бал" руу цутгасан "тосонд ялаа"-ыг л энд оруулав. Бүх зүйл дарааллаар:

1) Тохируулах, ашиглах- "Хэнг цохиуртай бүжиглэх"гүйгээр ажиллахгүй
a) Гадны мэдээллийн эх сурвалж нэмэх - энэ нь төвөгтэй зүйл биш юм шиг санагддаг
б) "Жагсаалтаас сонгох" хайрцгийг чагтална уу - энэ нь зайлшгүй шаардлагатай - энэ нь гүйцэтгэлийг эхэнд нь шалгаж, шаардлагагүй асуудлаас аврахад зайлшгүй шаардлагатай.
в) - "..." товчийг дарахаа мартуузай - холболт нь ODBC юм. Бидний дассан шиг OLEDB биш, харин нэг түвшин доогуур

D) Энд маш болгоомжтой байгаарай.

Энэ бол ODBC драйвер бөгөөд хэрэв та клиент-серверийн хувилбарыг ашиглаж байгаа бол энэ нь сервер дээр байх ёстой. Хэрэв та нэг систем дээр хөгжиж байгаа бол, мөн ажиллаж байгаа хувилбарнөгөө талаас (ихэвчлэн тохиолддог шиг) танд ямар ч гэнэтийн зүйл байхгүй эсэхийг шалгаарай. Хачирхалтай зөвлөмж, гэхдээ та хурдны талаар онцгой анхаарал тавьдаггүй бөгөөд SQL92 стандартын хязгаараас хэтрүүлэх бодолгүй байгаа бол хамгийн эртний эсвэл хамгийн түгээмэл драйверийг сонгоорой. Энэ нь танд өгөх болно илүү сайн нийцтэй байдал. Жишээлбэл, SQL Server 2008 шилдэг жолооч SQL Server Native Client 11 байх болно, гэхдээ би зөвхөн SQL серверийг сонгохыг зөвлөж байна, эс тэгвээс энэ эх клиентийг сервер дээр эсвэл бүх клиент машин дээр (файлын хувилбарыг ашиглах тохиолдолд) суулгах шаардлагатай болно. энгийн ажлуудад тийм ч их ашиг өгдөггүй.
e) Стандарт сервер сонгох харилцах цонхнууд

E) Нууц үгээ хадгалах тухай асуултад "тийм" гэж хариулахыг зөвлөж байна, эс тэгвээс энэ бизнесийг эхлүүлэх боломжгүй болно.
g) Хүснэгт болон дэлгэрэнгүй мэдээллийг сонгоно уу... сайхан боломж - та хүссэнээрээ нэн даруй нэрийг нь өөрчлөх боломжтой (мөн дэлгэрэнгүй мэдээллийг), харин шинж чанаруудаас та мэдээллийн эх үүсвэрийн талбаруудын нэрийг харах болно.

H) Одоо та гүйж, асуулга зохион бүтээгчийг нээнэ үү - та хүснэгт болон 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(), Параметрүүд);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();
Магадгүй зарим хэсэг нь шаардлагагүй, гэхдээ энэ нь ажилладаг.
Та кодыг НЭГ УДАА гүйцэтгэх хэрэгтэй. Үүний дараа энэ нь хэвийн холбогдох болно ... мэдээж ид шидийн үзэл - яагаад шаардлагатай байсан нь тодорхойгүй байна ...

2) Зөвхөн унших боломжтой мэдээллийн эх сурвалж- Тийм ээ, гайхамшгууд тохиолддоггүй ... гэхдээ та заримдаа хүсдэг ....

3) ДОТООД МЭДЭЭЛЛИЙН ЭХ ҮҮСВЭРТЭЙ ХАМТ АШИГЛАХГҮЙ
Хувь хүнийхээ хувьд энэ баримт намайг газар дээрээ үхүүлсэн.

Энэ нь яаж байна .... тэд юу хүлээж байсан, аль хэдийн төсөөлж, бид одоо нэг хүсэлтээр өгөгдлөө 1С-тэй нэгтгэж, эргүүлж, бүлэглэж, тайланд оруулахыг төсөөлж байсан, гэхдээ энэ нь байхгүй байсан .. .
Гэхдээ мэдээжийн хэрэг, энэ нь туршлагатай хүмүүсийг зогсоохгүй ... ямар бодол санаанд орж ирэв? Энэ нь зөв - түр зуурын хүснэгтүүд:

4) ТҮР ШИРЭЭТЭЙ ХАМТ ХЭРЭГЛЭХГҮЙ

Гэхдээ энэ нь технологийн хүндрэл мэт харагдахаа больсон ч "амьдрал диваажин шиг санагдахгүйн тулд" бидний хийхийг хүсч буй зүйлтэй маш төстэй юм :).

5) Зөвхөн SKD холболтод ашиглах боломжтой
Мэдэхгүй хүмүүсийн хувьд энэ нь "Dataset Links" таб дээрх ACS-д байдаг. Та тэдгээрийг хэр олон удаа ашигладаг вэ? Тав тухтай юу? Тэд биднийг илүү олон удаа ашиглахыг албадахыг хүсч байгаа бололтой. Гэхдээ "Холбоос нөхцөл" ба "Холбоос параметр" гэсэн багана байдаг. Би тэдгээрийг ямар ч ердийн тохиргоо, баримт бичиг, Хрусталевад ашиглах жишээг олсонгүй, ямар нэгэн байдлаар бүх зүйл ил тод биш байна. Хэн нэгэн надад "холбоос нөхцөл" хэрхэн ажилладаг талаар тайлбарлаж чадах уу? Хэрэв та тэнд SourceAttribute = ReceiverRevision гэж бичвэл ажиллахгүй. Мэдээжийн хэрэг, нөхцөлийг "Илэрхийлэл" талбарт бичиж болно - ихэнх тохиолдолд энэ нь хангалттай ... гэхдээ ямар нэг байдлаар энэ нь тийм ч хялбар биш юм.

Нийтдээ энэ асуудлыг өмнө нь иймэрхүү байдлаар шийдэж байсан.
Code 1C v 8.x Function InitializeDataSource()

DateStart = BuilderSettings.Settings.DataParameters.Items.Value;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value;
Хэрэв DateCon > "20100101" Дараа нь
DateCon = "20100101";
EndIf;

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

ArrayNumber = Шинэ массив();
ArrayNumber.Add(Type("Дугаар"));

ArrayString = Шинэ массив();
ArrayString.Add(Type("String"));

ArrayData = Шинэ массив();
ArrayDate.Add(Төрөл("Огноо"));

//Бид нягтлан бодох бүртгэлийн зардлыг хүснэгтэд бөглөнө
TypeNumber = NewTypeDescription(Масивын дугаар, KN);
StringType = NewTypeDescription(ArrayString, CS);
TypeDate = NewTypeDescription(ArrayDate);

//SQL-ээс өгөгдөл ачаалах хүснэгт
TK = Шинэ утгын хүснэгт();
TK.Columns.Add("Нэршлийн код", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Цэцэг", TypeDate);

TK.Indices.Add("Хугацаа");

// SQL-д холбогдох
ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Pwd=;Data Source=;Use Proceure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Ane Encryption Өгөгдлийн хувьд=Худал;Боломжтой үед баганыг холбосон шошго=Худал;Анхны каталог=Тайлангууд";
Холболт = Шинэ COMObject("ADODB.Connection");
Тушаал = Шинэ COMObject("ADODB.Command");
RecordSet = Шинэ COMObject("ADODB.RecordSet");
Огноо = "";
оролдлого
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Холболт;
Command.CommandText = "S_elect * ph om PH-н үе >= "" + String(Format(DateStart, "DF=yyyyMMdd")) + "" ба үе<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Үл хамаарах зүйл
TK буцаах;
оролдлогын төгсгөл;

While RecordSet.EOF = Худал давталт
Мөр = TK.Add();
String.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Нэр).Утга;
String.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Нэр).Утга;
String.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Нэр).Утга;
RecordSet.MoveNext();
Төгсгөлийн мөчлөг;

Хүсэлт = Шинэ хүсэлт();
VrTable = NewTempTableManager();
Query.SetParameter("vDataTable", TK);
Query.SetParameter("StartDate", StartDate);
Query.SetParameter("DateCon", DateCon);
Query.Text = "СОНГОХ
| vrDataTable.Нэршлийн код,
| vrDataTable.Qnty,
| vrDataTable.Period
|Өгөгдлийн хүснэгтийг тавих
| FROM
| &vrDataTable AS vrDataTable
|ХАААН
| vrDataTable.Period >= &DateStart
| Мөн vrDataTable.Period<= &ДатаКон";
Request.Execute();
TK = Тодорхойгүй;

Хүсэлт = Шинэ хүсэлт;
Query.TempTableManager = VrTable;
Query.Text = "Энд түр хүснэгттэй холбоотой асуулга байна";

Үр дүн = Request.Run();
Буцах үр дүн;

Төгсгөлийн функцууд

OuterSet = InitializeDataSource();
DataSet = Шинэ бүтэц();
DataSet.Insert("SQL Хүснэгт", ExternalSet);
GenericReports.GenericReport Generic(ThisObject, Үр дүн, Шифрийг тайлах өгөгдөл, OutputToReportForm, DataSet);

Үнэн хэрэгтээ кодын олон мөр байдаггүй бөгөөд тэдгээр нь нэлээд стандарт юм ... энэ тохиолдолд та асуулга үүсгэгчийн бүрэн функцийг ашиглах боломжтой бөгөөд ACS-д зөвхөн ӨГӨГДЛИЙН БҮРДЭЛИЙН функцийг өгөх боломжтой.

Гэхдээ мэдээжийн хэрэг, энэ нь тийм ч үзэсгэлэнтэй биш харагдаж байна ... мөн утгын хүснэгтэд байршуулах бүртээ код бичиж, дэлгэрэнгүй мэдээллийн нэрэнд алдаа гаргасан эсэхийг шалгах хэрэгтэй ... тэгэхгүй бол 1С-д өгсөн зүйл нь ямар нэг байдлаар дутуу харагдаж байна. Би аль нь ашиглахад илүү тохиромжтой болохыг хараахан шийдээгүй байна. Та шийдвэрээ гаргаж, шийдвэрийнхээ талаар болон тэдгээрийг гаргахад юу түлхэц болсон талаар бичээрэй.

Мэдээллийг сайтаас авав

8.2.14.533 хувилбар - эцэст нь платформын 14-р хувилбарын илүү бага тогтвортой хувилбар. Эцэст нь "гадаад мэдээллийн эх сурвалж" гэсэн гайхалтай боломжийг туршиж үзэх боломж олдсон.

Энэ боломж яагаад ийм сонирхолтой байгаа юм бэ? 1С дээр программчлагдсан аливаа хүн SQL-ийг сайн мэддэг бөгөөд ерөнхийдөө бизнесийн хэрэглээний бусад технологийн платформыг боловсруулах архитектур, зарчмуудыг мэддэг хүн 1С-д юу хамгийн их таалагддагийг баттай хэлэх болно. Мэдээжийн хэрэг, асуулга үүсгэгч нь миний биечлэн уулзаж байсан харилцааны бүтцээс мэдээлэл авах хүсэлтийг бичих хамгийн тохиромжтой, ухаалаг механизм юм. Одоо 1С нь зөвхөн 1С төдийгүй бусад хүснэгтэд ашиглах гайхалтай боломжийг бидэнд олгосон. Энэ "тоххон зөгийн бал" руу цутгасан "тосонд ялаа"-ыг л энд оруулав. Бүх зүйл дарааллаар:

1) Тохируулах, ашиглах - "хэнгэрэгтэй бүжиглэх"гүйгээр энэ нь ажиллахгүй болно

A) Гадаад өгөгдлийн эх үүсвэр нэмэх - энэ нь төвөгтэй зүйл биш юм шиг санагддаг
б) "Жагсаалтаас сонгох" хайрцгийг чагтална уу - энэ нь зайлшгүй шаардлагатай - энэ нь гүйцэтгэлийг эхэнд нь шалгаж, шаардлагагүй асуудлаас аврахад зайлшгүй шаардлагатай.
онд)
(IMG:http://pics.livejournal.com/comol/pic/0000cr1r.png)
- "..." товчийг дарахаа мартуузай - холболт нь ODBC юм. Бидний хэрэглэж заншсан шиг OLEDB биш, харин нэг түвшин доогуур

Тэгээд энд байгаарай МАШ АНХААРАЛТАЙ.

Энэ бол ODBC драйвер бөгөөд хэрэв та клиент-серверийн хувилбарыг ашигладаг бол энэ нь сервер дээр байх ёстой. Хэрэв та нэг систем дээр хөгжүүлж, өөр систем дээр ажиллаж байгаа бол (ихэвчлэн тохиолддог шиг) танд ямар ч гэнэтийн зүйл тохиолдохгүй байгаа эсэхийг шалгаарай. Хачирхалтай зөвлөмж, гэхдээ та хурдны талаар онцгой анхаарал тавьдаггүй бөгөөд SQL92 стандартын хязгаараас хэтрүүлэх бодолгүй байгаа бол хамгийн эртний эсвэл хамгийн түгээмэл драйверийг сонгоорой. Энэ нь танд хамгийн сайн нийцтэй байдлыг өгөх болно. Жишээлбэл, SQL Server 2008-ийн хувьд хамгийн сайн драйвер нь SQL Server Native Client 11 байх болно, гэхдээ би зөвхөн SQL серверийг сонгохыг зөвлөж байна, эс тэгвээс энэ эх клиентийг сервер дээр эсвэл бүх клиент машин дээр суулгах шаардлагатай болно (тохиолдолд). файлын хувилбарыг ашиглах), мөн ашиг нь онцгой учраас тэр танд ажил өгөхгүй.

E) Стандарт сервер сонгох харилцах цонхнууд

G) Хүснэгт болон дэлгэрэнгүй мэдээллийг сонгох ... сайхан боломж - та хүссэнээрээ нэн даруй нэрийг нь өөрчлөх боломжтой (мөн дэлгэрэнгүй мэдээлэл), харин шинж чанаруудаас та мэдээллийн эх үүсвэрийн талбаруудын нэрийг харах болно.

H) Одоо та гүйж, асуулга зохион бүтээгчийг нээнэ үү - та хүснэгт болон 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(), Параметрүүд);
ExternalDataSources.DAX.SetSessionConnectionParameters(Parameters);

ExternalDataSources.DAX.SetConnection();

Магадгүй зарим хэсэг нь шаардлагагүй, гэхдээ энэ нь ажилладаг. Код ажиллуулах хэрэгтэй НЭГ УДАА. Үүний дараа энэ нь хэвийн холбогдох болно ... мэдээж ид шидийн үзэл - яагаад шаардлагатай байсан нь тодорхойгүй байна ...

2) Зөвхөн унших боломжтой мэдээллийн эх сурвалж
Тийм ээ, гайхамшгууд тохиолддоггүй ... гэхдээ та заримдаа хүсдэг ....

3) ДОТООД МЭДЭЭЛЛИЙН ЭХ ҮҮСВЭРТЭЙ ХАМТ АШИГЛАХГҮЙ
Хувь хүнийхээ хувьд энэ баримт намайг газар дээрээ үхүүлсэн.

Энэ нь яаж байна .... тэд юу хүлээж байсан, аль хэдийн төсөөлж, бид одоо нэг хүсэлтээр өгөгдлөө 1С-тэй нэгтгэж, эргүүлж, бүлэглэж, тайланд оруулахыг төсөөлж байсан, гэхдээ энэ нь байхгүй байсан .. .

Гэхдээ мэдээжийн хэрэг, энэ нь туршлагатай хүмүүсийг зогсоохгүй ... ямар бодол санаанд орж ирэв? Энэ нь зөв - түр зуурын хүснэгтүүд:

4) ТҮР ШИРЭЭТЭЙ ХАМТ ХЭРЭГЛЭХГҮЙ

Гэхдээ энэ нь технологийн бэрхшээл мэт харагдахаа больсон ч "амьдрал диваажин шиг санагдахгүйн тулд" бидний хийхийг хүсч буй зүйлтэй маш төстэй харагдаж байна (IMG :) .

5) Зөвхөн SKD холболтод ашиглах боломжтой

Мэдэхгүй хүмүүсийн хувьд энэ нь "Dataset Links" таб дээрх ACS-д байдаг. Та тэдгээрийг хэр олон удаа ашигладаг вэ? Тав тухтай юу? Тэд биднийг илүү олон удаа ашиглахыг албадахыг хүсч байгаа бололтой. Гэхдээ "Холбоос нөхцөл" ба "Холбоос параметр" гэсэн багана байдаг. Би тэдгээрийг ямар ч ердийн тохиргоо, баримт бичиг, Хрусталевад ашиглах жишээг олсонгүй, ямар нэгэн байдлаар бүх зүйл ил тод биш байна. Хэн нэгэн надад "холбоос нөхцөл" хэрхэн ажилладаг талаар тайлбарлаж чадах уу? Хэрэв та тэнд SourceAttribute = ReceiverRevision гэж бичвэл ажиллахгүй. Мэдээжийн хэрэг, нөхцөлийг "Илэрхийлэл" талбарт бичиж болно - ихэнх тохиолдолд энэ нь хангалттай ... гэхдээ ямар нэг байдлаар энэ нь тийм ч хялбар биш юм.

Нийтдээ энэ асуудлыг өмнө нь иймэрхүү байдлаар шийдэж байсан.

InitializeDataSource() функц

DateStart = BuilderSettings.Settings.DataParameters.Items.Value;
DateCon = BuilderSettings.Settings.DataParameters.Items.Value;
Хэрэв DateCon > "20100101" Дараа нь
DateCon = "20100101";
EndIf;

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

ArrayNumber = Шинэ массив();
ArrayNumber.Add(Type("Дугаар"));

ArrayString = Шинэ массив();
ArrayString.Add(Type("String"));

ArrayData = Шинэ массив();
ArrayDate.Add(Төрөл("Огноо"));

//Бид нягтлан бодох бүртгэлийн зардлыг хүснэгтэд бөглөнө
TypeNumber = NewTypeDescription(Масивын дугаар, KN);
StringType = NewTypeDescription(ArrayString, CS);
TypeDate = NewTypeDescription(ArrayDate);

//SQL-ээс өгөгдөл ачаалах хүснэгт
TK = Шинэ утгын хүснэгт();
TK.Columns.Add("Нэршлийн код", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Цэцэг", TypeDate);

TK.Indices.Add("Хугацаа");

// SQL-д холбогдох
ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Pwd=;Data Source=;Use Proceure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Ane Encryption Өгөгдлийн хувьд=Худал;Боломжтой үед баганыг холбосон шошго=Худал;Анхны каталог=Тайлангууд";
Холболт = Шинэ COMObject("ADODB.Connection");
Тушаал = Шинэ COMObject("ADODB.Command");
RecordSet = Шинэ COMObject("ADODB.RecordSet");
Огноо = "";
оролдлого
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Холболт;
Command.CommandText = "PH-аас * сонгоно уу. Үе >= "" + Мөр(Формат(ОгнооЭхлэл, "DF=yyyyMMdd")) + "" болон үе RecordSet = Command.Execute();
RecordSet.MoveFirst();
Үл хамаарах зүйл
TK буцаах;
оролдлогын төгсгөл;

While RecordSet.EOF = Худал давталт
Мөр = TK.Add();
String.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Нэр).Утга;
String.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Нэр).Утга;
String.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Нэр).Утга;
RecordSet.MoveNext();
Төгсгөлийн мөчлөг;

Хүсэлт = Шинэ хүсэлт();
VrTable = NewTempTableManager();
Query.SetParameter("vDataTable", TK);
Query.SetParameter("StartDate", StartDate);
Query.SetParameter("DateCon", DateCon);
Query.Text = "СОНГОХ
| vrDataTable.Нэршлийн код,
| vrDataTable.Qnty,
| vrDataTable.Period
|Өгөгдлийн хүснэгтийг тавих
| FROM
| &vrDataTable AS vrDataTable
|ХАААН
| vrDataTable.Period >= &DateStart
| Мөн vrDataTable.Period Query.Execute();
TK = Тодорхойгүй;

Хүсэлт = Шинэ хүсэлт;
Query.TempTableManager = VrTable;
Query.Text = "Энд түр хүснэгттэй холбоотой асуулга байна";

Үр дүн = Request.Run();
Буцах үр дүн;

Төгсгөлийн функцууд

OuterSet = InitializeDataSource();
DataSet = Шинэ бүтэц();
DataSet.Insert("SQL Хүснэгт", ExternalSet);
GenericReports.GenericReport Generic(ThisObject, Үр дүн, Шифрийг тайлах өгөгдөл, OutputToReportForm, DataSet);

Үнэн хэрэгтээ кодын олон мөр байдаггүй бөгөөд тэдгээр нь нэлээд стандарт юм ... энэ тохиолдолд та асуулга үүсгэгчийн бүрэн функцийг ашиглах боломжтой бөгөөд ACS-д зөвхөн ӨГӨГДЛИЙН БҮРДЭЛИЙН функцийг өгөх боломжтой.

Гэхдээ мэдээжийн хэрэг, энэ нь тийм ч үзэсгэлэнтэй биш харагдаж байна ... мөн утгын хүснэгтэд байршуулах бүртээ код бичиж, дэлгэрэнгүй мэдээллийн нэрэнд алдаа гаргасан эсэхийг шалгах хэрэгтэй ... тэгэхгүй бол 1С-д өгсөн зүйл нь ямар нэг байдлаар дутуу харагдаж байна. Би аль нь ашиглахад илүү тохиромжтой болохыг хараахан шийдээгүй байна. Та шийдвэрээ гаргаж, шийдвэрийнхээ талаар болон тэдгээрийг гаргахад юу түлхэц болсон талаар бичээрэй.

[Та холбоосыг үзэхийн тулд бүртгүүлэх шаардлагатай]

Гадаад эх сурвалжууд 1С өгөгдөл нь харьцангуй шинэ мета өгөгдлийн объект 1С 8.3 ба 8.2 бөгөөд түүний тусламжтайгаар гадаад мэдээллийн эх сурвалжийг 1С: SQL хүснэгтүүд, Excel, Access, FoxPro (dbf), өөр 1С мэдээллийн сан, Oracle, Paradox (db) холбох боломжтой. ), - тэр ч байтугай унших энгийн файлууд txt/csv.

Энэ нь бусад системтэй ажиллах маш их боломжийг олгодог. Илүү дэлгэрэнгүй авч үзье.

1С 8 дээр гадаад мэдээллийн эх үүсвэрийг тохируулах

Системийн төрөл бүрийн хувьд гадаад эх үүсвэрийг тохируулах нь хувь хүн юм. Гэхдээ дүрмээр бол тохиргооны нийтлэг хэсэг нь ижил байдаг - энэ нь холболтын мөрийг тохируулах явдал юм.

267 1С видео хичээлийг үнэгүй аваарай:

Хэрэв холболтын мөр зөв байвал систем нь мэдээллийн сангаас шаардлагатай хүснэгтийг сонгохыг хүсэх болно. Үүний үр дүнд бид түлхүүр талбар (өвөрмөц талбар) болон харах талбарыг (бичлэгийг 1С-д хэрхэн тусгах) зааж өгөх боломжтой бэлэн хүснэгтийг авах болно.

1С 8.3-д гадаад мэдээллийн эх сурвалжийг ашиглах

1С дахь өгөгдлийн гадаад эх сурвалжийг бусад мэдээллийн сангийн хүснэгтүүдийн нэгэн адил ашиглаж болно. Платформ нь тохируулаагүй тохиолдолд автоматаар тэдэнд зориулж маягт үүсгэдэг. Асуулгад мөн гадаад эх сурвалжаас авсан өгөгдлийг ашиглаж болно.

Платформын 8.3.5.1068 (болон түүнээс хойшхи) хувилбарт гадаад эх сурвалж дахь өгөгдлийг нэмэх, өөрчлөх, устгах боломжтой болсон. програм хангамжийн хэрэгслүүд 1С. Энэ онцлог шинж чанаруудын жишээг энэ нийтлэлд үзүүлэв.

Гадны эх сурвалжид бичлэг хийх боломжтой болгохын тулд 1С нь өгөгдлийн хүснэгт болон гадаад эх сурвалжийн талбарт шинэ шинж чанаруудыг нэмсэн.

  • Бүх ширээний хувьд - өмч Зөвхөн унших. Зөвхөн унших = Үнэнэнэ хүснэгтэд байгаа өгөгдлийг өөрчлөх боломжгүй гэсэн үг;
  • Тусдаа хүснэгтийн талбаруудын хувьд - шинж чанарууд Зөвхөн унших, AllowNullболон Утгыг бөглөх:
    • Зөвхөн унших = Үнэнэнэ талбар дахь өгөгдлийг өөрчлөх боломжгүй гэсэн үг;
    • AllowNull = ҮнэнЭнэ талбарт утга бичиж болно гэсэн үг NULL;
    • Утгыг бөглөхЭнэ талбарын анхдагч утгыг агуулна (хэрэв байгаа бол).

Та (хүснэгтүүдийг гараар дүрслэх үед) эсвэл платформ (байгуулагч ашиглан хүснэгт үүсгэх үед) эдгээр шинж чанаруудыг дараах байдлаар ашиглаж болно.

  • Зөвхөн унших = Үнэнжишээ нь харагдац (харах), илэрхийлэл (функцын үр дүн) дээр үндэслэн олж авсан хүснэгтүүд гэх мэтийг тохируулах. Ийм хүснэгтэд байгаа өгөгдлийг өөрчлөх боломжгүй;
  • Зөвхөн унших = Үнэнавтоматаар тохируулсан талбаруудыг зааж өгөх ( AUTOINCREMENT), тооцоолсон талбарууд гэх мэт. Эдгээр талбар дахь өгөгдлийг өөрчлөх боломжгүй;
  • AllowNull = ҮнэнТүлхүүр талбарууд болон гадаад эх сурвалжид дүрслэгдсэнээс бусад бүх талбарт тохируулна NULL БИШ;
  • Утгыг бөглөхЭнэ талбарын стандарт утгыг гадаад эх сурвалжид заасан тохиолдолд тохируулах талбарууд (утга ӨГӨГДМӨЛ).

Та гадаад эх сурвалжид суулгасан хэл эсвэл интерактив байдлаар өгөгдлийг нэмэх, өөрчлөх, устгах боломжтой. Суурилуулсан хэл дээр хүснэгтийн менежерийн дараах аргуудыг ашигладаг.

  • RecordSet үүсгэх()- объектын бус хүснэгтүүдийн хувьд;
  • Шинэ арга Объект үүсгэх()- объектын хүснэгтэд зориулагдсан.

Үүний дагуу объектууд ExternalDataSourceTableRecordSetболон ExternalDataSourceTableObjectшинэ аргууд гарч ирэв бичих()болон Устгах().

Өгөгдөл нэмж байна

Та гадаад эх үүсвэрт өгөгдөл нэмэхдээ объект (эсвэл бичлэгийн багц) үүсгэж, талбарын утгыг тохируулж, бичнэ. Гэсэн хэдий ч мэдэхэд хэрэгтэй зарим онцлог шинж чанарууд байдаг.

Жишээлбэл, байгаа талбарын утгыг тохируулах гэж оролдох үед Зөвхөн унших = Үнэн, алдаа гарах болно. Мөн илэрхийлэл дэх мэдээллийн сан руу шууд бичих үед INSERTИйм талбарыг алгасах болно. Үлдсэн талбарууд нь таны өгсөн утгуудаар дүүрсэн байна. Тиймээс үнэт зүйлс Nullболон анхдагч утгуудыг талбаруудад тодорхой зааж өгөх ёстой.

  • ID(AllowNull = Үнэн);
  • нэр(AllowNull = Үнэн);
mCharacteristic = ExternalDataSources.IM.Tables.shop_feature.CreateObject(); mCharacteristic.id = Код; mCharacteristic.name = Нэр; mCharacteristic.Write();

Мэдэгдэлийн гүйцэтгэл бичих()үйл явдлын зохицуулагчийг эхлээд дуудах болно Бичлэг хийхээс өмнө, дараа нь гадаад эх сурвалжийн хүснэгтэд физик бичих хийгдэнэ ( INSERT), дараа нь үйл явдлын зохицуулагч дуудагдах болно Бичлэг хийх үед.

Гадаад эх сурвалжийн хүснэгтийн түлхүүр талбараар та дараах зүйлийг хийж болно. Хэрэв түлхүүр талбар нь засварлах боломжтой бол та бичихээсээ өмнө түүний утгыг "гараар" тохируулна. Хэрэв түлхүүр талбарыг өөрчлөхийг хориглосон бол платформ нь түлхүүрийг бие даан авах болно INSERTэсвэл шууд дараа нь. Та аргын тусламжтайгаар энэ үйл явцад хөндлөнгөөс оролцож болно SetReferenceNew()физик бичлэгийн өмнө (үйл явдал зохицуулагч дотор Бичлэг хийхээс өмнө) эсвэл шууд физик оруулгын дараа (үйл явдал зохицуулагчд Бичлэг хийх үед).

Өгөгдлийг өөрчлөх

Өгөгдлийг өөрчлөх үед хүснэгтийн бүх талбаруудын утгууд өөрчлөгдөнө Зөвхөн унших = Худал.

MFeature = ExternalDataSources.IM.Tables.shop_feature.FindByField("id",код); mObject = mCharacteristic.GetObject(); mObject.name = Нэр; mObject.Write();

Хэрэв та зөвхөн зарим талбарыг бичих шаардлагатай бол тэдгээрийн жагсаалтыг ашиглан суулгасан хэлнээс шууд зааж өгч болно SetWritableFields()болон GetWritableFields().

Өгөгдлийг устгаж байна

Өгөгдлийг устгах нь мэдээллийн сангийн хүснэгтээс мөрийг шууд устгадаг. Үүний зэрэгцээ устгасан объектын лавлагааг хайдаггүй. Хэрэв ийм функц шаардлагатай бол та үүнийг үйл явдлын зохицуулагч дээр өөрөө програмчилж болно Устгахаасаа өмнө().

MFeature = ExternalDataSources.IM.Tables.shop_feature.FindByField("id",Код); mObject = mCharacteristic.GetObject(); mObject.Delete();

Гүйлгээ

Гадны эх сурвалжаас өгөгдлийг унших нь өмнөх шигээ гүйлгээнээс гадуур хийгддэг бөгөөд бичих үед платформ нь далд гүйлгээг нээдэг. Үүний зэрэгцээ та объектын аргуудыг ашиглан тодорхой гүйлгээнд уншиж, бичиж болно ExternalDataSourceManager:

  • Гүйлгээг эхлүүлэх();
  • Гүйлгээ хийх();
  • Цуцлах Гүйлгээ().

Түгжээ

  • Автомат;
  • Удирдсан;
  • Автомат, хяналттай.

түүнчлэн гадаад эх сурвалжийн хүснэгтийн шинж чанар Тусгаарлах түвшний гүйлгээ:

Нэмж дурдахад та аргын түгжээний түвшинг бие даан тохируулах боломжтой Гүйлгээг эхлүүлэх().

Би ердийн нийтлэлийг жишээгээр нэмсэн) Илүү их цаг хугацаа байх болно - би илүү олон жишээ нэмэх болно.

1С програмын 8-р хувилбарт хөгжүүлэгчид гуравдагч талын мэдээллийн санг холбох, тэдгээрээс мэдээлэл ашиглахгүйгээр тохируулагчаас шууд авах боломжийг функцэд нэмж оруулсан. COM холболтуудболон OLE объектууд. Энэ функцийг "Гадаад мэдээллийн эх сурвалж" гэсэн шинэ объект ашиглан хэрэгжүүлсэн.

1С дахь өгөгдлийн гадаад эх сурвалжийг системийн бусад хүснэгттэй ижил аргаар ашиглаж болно.

  1. Мэдээллийн бүтцийн систем (ACS) ашиглан тайлан, тооцоолол хийх үед;
  2. Гуравдагч талын эх сурвалжид хадгалагдсан мэдээллийн холбоосыг авах;
  3. Хүснэгтэд хадгалагдсан өгөгдлийг өөрчлөх;
  4. Хүсэлт гаргахдаа.

1C.Enterprise үйлдлийн загвар нь өөрөө физик хүснэгтүүдийн түвшинд өгөгдөлд хөндлөнгөөс оролцох гэсэн үг биш тул энэ механизм нь бусад 1С мэдээллийн сантай ажиллахад зориулагдаагүй гэдгийг мэдэх нь чухал юм.

Шинэ эх сурвалж үүсгэх

Хөтөлбөрт шинэ гадаад эх үүсвэр нэмэх нь "Тохируулагч" горимд тохиолддог. Тохиргооны модонд харгалзах салбар байна (Зураг 1)

Шинэ объектын хэлбэр нь ердөө дөрвөн табтай байсан ч шинэ эх сурвалж үүсгэх үед та хөлсөө урсгах хэрэгтэй болно.

  1. Үндсэн;
  2. Өгөгдөл;
  3. Чиг үүрэг;
  4. Эрх.

Эхний таб нь зөвхөн нэг сонирхолтой параметртэй - цоожны хяналтын горим. Хэрэв та гүйлгээнд өгөгдлийг хаах талаар асуулт асуухгүй бол параллель байдлын нарийн төвөгтэй байдлын талаар асуугаарай мэдээллийн урсгалта энэ тохиргоог автоматаар түгжих горимд үлдээж болно. Гэсэн хэдий ч энэ арга нь хэт их хязгаарлалтад хүргэж болзошгүй (жишээлбэл, нэг бичлэгийн оронд програм нь физик хүснэгтийг бүхэлд нь түгжиж, бусад хэрэглэгчдийг түүнтэй ажиллах чадваргүй болгодог).

Удирддаг түгжээ нь автоматаас ялгаатай нь DBMS-д биш, харин програмд ​​хамаарах гүйлгээний механизмыг ашигладаг бөгөөд энэ нь хүснэгтийн зургийг илүү олон зүйл рүү орчуулах боломжийг олгодог. доод түвшин.

Энэ параметрийг "Автомат ба удирддаг" гэж тохируулснаар бид тодорхой хүснэгт бүрийн харгалзах шинж чанарт шууд хандсанаар аль горимыг ашиглахыг тодорхойлох боломжийг системд өгдөг.

Гадаад эх сурвалжийн шинж чанарын маягтын мэдээллийн таб

"Өгөгдөл" табын хэлбэрийг Зураг дээр үзүүлэв. 2

Цагаан будаа. 2

Энд бид гадаад эх сурвалжийн хүснэгтүүд болон кубуудыг нэмж болно. Хүснэгт нэмэх хоёр арга бий:

  1. Гараар, дараа нь бид хүснэгт нэмэх маягтыг харах болно (Зураг 3);

Цагаан будаа. 3

  1. Эсвэл физик эх сурвалжийн хүснэгтүүдийн жагсаалтаас сонгоно уу (Зураг 4), энэ тохиолдолд тусгай байгуулагч бидний өмнө нээгдэнэ.

Цагаан будаа. дөрөв

Хүснэгт нэмэх маягтыг нарийвчлан авч үзье. "Нэр" шинж чанар нь тохиргоонд байгаа объектыг өвөрмөц байдлаар тодорхойлоход хэрэглэгддэг.

Мета өгөгдлийн объект болон эцсийн физик хүснэгтийг харьцуулах нь "Нарийвчилсан" таб дээр байрлах "Өгөгдлийн эх сурвалж дахь нэр" шинж чанараар хийгддэг (Зураг 5).

Цагаан будаа. 5

Дараа нь бид хүснэгтийн төрлийг, эс тэгвээс объектив байдлыг тодорхойлох ёстой. Хэрэв бүтцэд хадгалагдсан өгөгдлийг аль нэг талбараар дамжуулан өвөрмөц байдлаар тодорхойлох боломжтой бол хүснэгт нь объектын хүснэгт байж болно. Хэрэв бичлэгийн хувийн шинж чанарыг түлхүүр талбаруудын багцаар тодорхойлдог бол хүснэгт нь объектын бус төрөлтэй байх ёстой.

Ийм хүснэгтүүдийг бусад мета өгөгдлийн объектуудтай харьцуулж үзвэл бид дараахь аналогийг зурж болно.

  • Объектын хүснэгтүүд нь лавлах ном юм;
  • Объектив бус нь мэдээллийн бүртгэл юм.

Түлхүүр талбаруудын багцыг дараагийн хэлбэрийн параметрт ("Түлхүүр талбарууд") тодорхойлсон. Энэ талбар шаардлагатай бөгөөд хоосон орхивол тохиргоог хадгалахад алдаа гарна.

Зураг 5-аас харахад зарим талбар болон маягтын товчлуурыг засварлах боломжгүй байна.

  • Өгөгдлийн эх сурвалж дахь илэрхийлэл;
  • Хүснэгтийн мэдээллийн төрөл;
  • Харах талбар;
  • Зохицуулагчдыг харах.

Хүснэгтийн талбаруудыг бөглөж, төрлийг нь тодорхойлж, танигчийг тохируулсны дараа л тэдгээрийг ашиглах боломжтой (Зураг 6).

Цагаан будаа. 6

Энд та "Null-г зөвшөөрөх" сонголтыг анхаарч үзэх хэрэгтэй, хэрэв энэ нүдийг тэмдэглэсэн бол ийм талбарыг түлхүүр болгон ашиглах нь зохисгүй юм.

Хүснэгт бүтээгч

Магадгүй хамгийн чухал бөгөөд сонирхолтой цэггадаад эх үүсвэртэй ажиллах нь холболтын мөр үүсгэх явдал юм. "Холболтын мөр" параметрийн хажууд гурван цэг бүхий товчлуур дээр дарахад түүний бүтээгч нээгдэнэ.

Юуны өмнө бид холбоход ашиглах драйвераа шийдэхийг хүсэх болно (Зураг 7).

Цагаан будаа. 7

Энэ параметрийн буруу тодорхойлолт нь гуравдагч этгээдтэй холбогдохыг зөвшөөрөхгүй мэдээллийн бааз. Унждаг жагсаалтад заасан бүх драйверуудыг холболтын мөрийг автоматаар үүсгэхэд ашиглах боломжгүй гэдгийг ойлгох хэрэгтэй. Хэрэв платформ алдаа гаргасан бол (Зураг 8) холболтын мөрийг гараар бичих шаардлагатай болно.

Зураг 8

Цагаан будаа. 9

Уг шугам нь өөрөө хатуу зохицуулалттай барилга юм.

Холболтын хэлхээний жишээ

Үүсгэсэн гуравдагч талын мэдээллийн санг авч үзье Microsoft Accessба дискний үндэст байрладаг D. Энэ суурийг холбохын тулд бид тохирох драйверийг ашиглах ёстой, гэхдээ шугамын бүтээгчийг сонгох нь алдаа Fig.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" горимд аль хэдийн ижил холболтын мөрийг бичих хэрэгтэй.