Гэр / Windows хичээлүүд / Гадаад мэдээллийн эх үүсвэрт холбогдох 1s 8.3. Гадаад мэдээллийн эх сурвалж. Холболтын хэлхээний жишээ

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

Яагаад энэ боломжийм сонирхол төрүүлдэг үү? 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=;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-д зөвхөн DATA COMPOSITION функцийг өгөх боломжтой.

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

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

Тэдэнтэй 1С Enterprise горимд жагсаалтаар ажилла.

Гэсэн хэдий ч ажил дээр өгөгдлийн нэг хэсэг нь өөр газар хадгалагдах үед нөхцөл байдал ихэвчлэн үүсдэг.

  • Онлайн дэлгүүр (ихэвчлэн гадны MySQL/SQL мэдээллийн санд өгөгдлийг хадгалдаг)
  • Өөр нэг суурь.

Бусад мэдээллийн санд хадгалагдсан ийм өгөгдөлтэй ажиллахын тулд та тусгай механизм боловсруулах хэрэгтэй.

1С 8.2.14 хувилбарт 1С гадаад мэдээллийн эх сурвалж нэртэй шинэ хувилбар гарч ирсэн бөгөөд энэ нь програмистын ажлыг ихээхэн хөнгөвчилдөг, учир нь:

  • одоо мэдээлэл олж авах тусгай механизм бий болгох шаардлагагүй болсон
  • ийм өгөгдөлд хандах боломжтой
  • Ийм өгөгдлийг 1С жагсаалтаас үзэх боломжтой.
    • Гадаад мэдээллийн эх сурвалж 1С - гадаад SQL мэдээллийн сан

      Бидэнд хэрэгтэй мэдээллээ хадгалдаг SQL мэдээллийн сан байгаа гэж бодъё. 1С гадаад мэдээллийн эх сурвалжийн механизмыг ашиглан үүнээс өгөгдлийг уншихыг хичээцгээе.

      Гадны мэдээллийн эх сурвалж 1С-г нэмье. Та тохируулагч руу очих хэрэгтэй, гадаад мэдээллийн эх үүсвэрүүд нь тохиргооны цонхонд, модны хамгийн доод хэсэгт байрладаг.

      1. Холболт

      Шинэ гадаад мэдээллийн эх сурвалж 1С нэмье, үүнийг дур мэдэн дуудъя.

      Мэдээллийн сан нь хүснэгтүүдээс бүрдэнэ. Бид тэдгээрийг нэмсэн гадаад мэдээллийн эх сурвалж дотор нэмэх хэрэгтэй. Үүн дээр хулганы баруун товчийг дараад "Хүснэгт нэмэх" гэснийг сонгоно уу.

      Эхний удаад холболтын мөрийг өгөхийг танаас хүсэх болно. Үүнийг гараар оруулах эсвэл үүсгэх боломжтой бөгөөд үүний тулд та "..." товчийг дарах хэрэгтэй.

      Драйверын хувьд бид "SQL Server"-ийг сонгох болно.

      SQL-тэй холбогдох үндсэн параметрүүдийг бөглөцгөөе. Серверийн нэрийг оруулах эсвэл жагсаалтаас сонгох боломжтой.

      1С нь SQL-тэй холбогдож, жагсаалтаас тодорхой мэдээллийн санг сонгохыг танд сануулна.

      Үүний дараа 1С нь энэ мэдээллийн сан дахь хүснэгтүүдийн жагсаалт болон тэдгээрийн багануудыг харуулах болно. Та шалгах хайрцаг бүхий шаардлагатай хүснэгтүүдийг сонгох хэрэгтэй.

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

      Нэмэлт хүснэгтийн жишээ энд байна:

      Нэмэлт баганын жишээ энд байна:

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

      • Түлхүүр талбарын шинж чанарт мөрийн өвөрмөц таних тэмдэг өгөх баганын аль нэгийг зааж өгнө үү; Хэрэв хэд хэдэн мөр нь өвөрмөц байдлыг хангаж байвал энэ арга ажиллахгүй (Код талбарын аналог)
      • View талбарын шинж чанарт мөрийн товч дүрслэлийг өгөх баганын аль нэгийг зааж өгнө үү (Нэр талбарын аналог)
      • Хүснэгтийн өгөгдлийн төрлийн шинж чанарт Объект өгөгдлийг зааж өгнө.

      2. Харах

      Алсын мэдээллийн сантай холбогдох нь автоматаар хийгддэггүй. Холбохын тулд та ердийн цэсийг сонгох хэрэгтэй.

      Стандарт салбарт "Гадаад мэдээллийн эх сурвалжийг удирдах" тусгай команд байдаг бөгөөд энэ нь холболтын параметрүүдийг (1С аж ахуйн нэгжийн горимд зориулагдсан) зааж өгөх, холбогдох боломжийг олгодог.

      Эхлээд та мэдээллийн санд холбогдох параметрүүдийг зааж өгөх хэрэгтэй.

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

      Холболтын мөрийг хуулж, 1С Enterprise горимд зааж өгнө үү.

      Үүний дараа та бодит холболтыг хийх хэрэгтэй.

      Холболт хийсний дараа жагсаалттай ажиллах боломжтой.

      3. 1С хэлээр ашиглах

      1С хэл дээрх програмын кодоос холболтыг хийж болно.

      Холболтын параметрүүдийг дараах байдлаар тодорхойлно.
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetCommonConnectionParameters();

      ConnectionParameters.AuthenticationStandard = үнэн;
      ConnectionParameters.UserName = "sa";
      ConnectionParameters.Password = "нууц үг";
      ConnectionParameters.ConnectionString = "тохируулагчийн холболтын мөр";
      ConnectionParameters.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetCommonConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Параметр);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Parameters);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Та ердийн өгөгдлийн сангаас мэдээлэл авах боломжтой. Гадаад эх сурвалж OurExternalSource болон tablesExternalSourceTable-д зориулсан хүсэлтийн текстийн жишээ:

      СОНГОХ
      ExternalSource Table.FieldName
      FROM
      ExternalDataSource.OurExternalSource.Table.ExternalSourceTable"

      Гадаад мэдээллийн эх сурвалж 1С - Excel файлтай ажиллах

      Өөр нэг сонголтыг туршиж үзье - гадаад 1С мэдээллийн эх сурвалжаар дамжуулан Excel файлтай ажиллах.

      Энгийн Excel файл үүсгэцгээе.

      Гадны эх сурвалжийг нэмээд дур мэдэн FileExcel гэж нэрлэе. Түүнд "Sheet1 $" хүснэгтийг нэмнэ үү. Таны харж байгаагаар энэ нь "$" тэмдэг бүхий Excel-ийн хуудасны нэр юм.

      SQL-ийн нэгэн адил багана нэмье. Тэдгээрийг гараар нэмж болно. Нэмэгдсэн баганын төрлүүд таарч байгаа эсэхийг шалгах нь чухал бөгөөд эс тэгвээс та дараа нь "Өгөгдлийн төрөл таарахгүй" гэх мэт алдаа гарч болзошгүй.

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

      Excel-ийн хувьд функц байдаг ("Хэт цөөн параметр. 3 шаардлагатай" гэх мэт алдаа):

      • Хэрэв Excel хүснэгтийн эхний мөрөнд баганын нэр байгаа бол та энэ баганын нэрийг зааж өгөх хэрэгтэй, жишээлбэл "Код".
      • Үгүй бол та "Sheet1$.Code" хүснэгтийн нэрээр бүтэн нэрийг зааж өгөх хэрэгтэй, гэхдээ параметрүүдэд "HDR=NO;" гэж нэмнэ үү.

      Excel файлын холболтын параметрүүд дараах байдалтай байна.

      • XLSX файлууд (Office хувилбар 2007 ба түүнээс дээш)
        Driver=(Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • XLS файлууд (өмнө)
        Драйвер=(Microsoft Excel драйвер (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;
        Та өөрийн нэр, файлын замыг зааж өгөх ёстой.

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

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

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

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

болон DB

е) Би нууц үгээ хадгалах асуултанд "тийм" гэж хариулахыг зөвлөж байна, эс тэгвээс энэ бизнесийг эхлүүлэх боломжгүй болно.
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=;Encryption ашиглах Өгөгдлийн хувьд=Худал;Боломжтой үед баганыг холбосон шошго=Худал;Анхны каталог=Тайлангууд";
Холболт = Шинэ COMObject("ADODB.Connection");
Тушаал = Шинэ COMObject("ADODB.Command");
RecordSet = Шинэ COMObject("ADODB.RecordSet");
Огноо = "";
оролдлого
Connection.Open(ShortLP(ConnectionString));
Command.ActiveConnection = Холболт;
Command.CommandText = "S_elect * 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).Нэр).Утга;
Row.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 үүсгэх(ThisObject, Үр дүн, Шифр ​​тайлах өгөгдөл, OutputToReportForm, Dataset);

Үнэн хэрэгтээ кодын олон мөр байдаггүй бөгөөд тэдгээр нь нэлээд стандарт юм ... энэ тохиолдолд та асуулга үүсгэгчийн бүрэн функцийг ашиглах боломжтой бөгөөд ACS-д зөвхөн DATA COMPOSITION функцийг өгөх боломжтой.

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

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

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

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

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

Юуны өмнө бид холбоход ашиглах драйвераа шийдэхийг хүсэх болно (Зураг 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" горимд аль хэдийн ижил холболтын мөрийг бичих хэрэгтэй.