Xarici məlumat mənbələrini qeyd edin 1s. Xarici məlumat mənbələri

20.02.2024

Bu fürsət niyə belə maraq doğurur? 1C-də proqramlaşdıran və SQL-ə kifayət qədər bələd olan və ən azı biznes proqramları üçün digər texnoloji platformaların arxitekturası və inkişaf prinsipləri ilə tanış olan hər hansı bir şəxs sizə 1C haqqında ən çox nəyi bəyəndiyini qəti əminliklə söyləyəcək. Əlbəttə ki, sorğu qurucusu mənim şəxsən rastlaşdığım əlaqə strukturlarından məlumatların əldə edilməsi üçün sorğuların yazılması üçün ən rahat və düşünülmüş mexanizmdir. İndi 1C bizə yalnız 1C ilə deyil, həm də istənilən digər masalarla istifadə etmək üçün belə gözəl bir fürsət verdi. Sadəcə, bu “bal çəlləsində” çoxlu “məlhəmdə milçəklər” var. Əvvəlcə ilk şeylər:

1) Quraşdırma və istifadə- "qafla rəqs etmədən" işləməyəcək
a) Xarici məlumat mənbəyi əlavə edin - bu, mürəkkəb görünmür
b) "Siyahıdan seçin" onay qutusunu yoxlayın - məcburi - bu, başlanğıcda funksionallığı yoxlamaq üçün lazımdır və sizi lazımsız problemlərdən xilas edəcək
c) - "..." düyməsini sıxmağınızdan əmin olun - əlaqə ODBC-dir. Hamımızın öyrəşdiyi kimi OLEDB deyil, bir səviyyə aşağı

D) Amma burada ÇOX DİQQƏTLİ olun.

Bu ODBC sürücüsüdür - əgər siz müştəri-server versiyasından istifadə edirsinizsə, o, serverdə olmalıdır. Əgər bir sistem üzərində inkişaf edirsinizsə və başqa bir sistem üzərində işləyirsinizsə (adətən belədir), əmin olun ki, sizi heç bir sürpriz gözləmir. Qəribə bir tövsiyədir, lakin sürətdən xüsusilə narahat deyilsinizsə və SQL92 standartının imkanlarından kənara çıxmaq niyyətində deyilsinizsə, ən köhnə və ya ən ümumi sürücünü seçin. Bu sizə daha yaxşı uyğunluq verəcəkdir. Məsələn, SQL Server 2008 üçün ən yaxşı sürücü SQL Server Native Client 11 olacaq, lakin mən sadəcə SQL Serveri seçməyi məsləhət görürəm, əks halda bu çox yerli müştəri ya serverdə, ya da bütün müştəri maşınlarında quraşdırılmalı olacaq (əgər fayl versiyası) və faydası sadə üçün xüsusidir, o, sizə heç bir tapşırıq verməyəcək.
e) Standart Server seçimi dialoqları

E) Parolun saxlanması ilə bağlı suala “bəli” cavabını verməyi tövsiyə edirəm, əks halda bu işə başlaya bilməyəcəksiniz.
g) Cədvəl və təfərrüatları seçin... gözəl fürsət - siz dərhal adını istədiyiniz kimi dəyişə bilərsiniz (və detalları da) və xassələrdə məlumat mənbəyinin sahələrinin adlarını görəcəksiniz.

Z) İndi onu işə salırsınız, sorğu dizaynerini açın - axmaqcasına cədvəldən və OPA-dan bütün qeydləri seçin - xəta. Nə etməli? İdarə olunan interfeysiniz varsa, xidmət menyusuna baxın və əgər adi...
Mən şəxsən bu kodu istifadə etdim:
Kod 1C v 8.x Parametrlər = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = Doğrudur;
Parameters.UserName = "sa";
Parameters.Password = "pass";
Parameters.ConnectionString = "SÜRÜCÜ=(SQL Server);SERVER=servet;UID=sa;PWD=;MƏLUMAT BAZASI=verilənlər bazası";
Parameters.DBMS = "MSSQLServer";

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

ExternalDataSources.DAX.SetConnection();
Bəzi parçalar lazım olmaya bilər, amma işləyir.
Siz kodu BİR DƏFƏ işlətməlisiniz. Ondan sonra əlaqə qurmaq normal olacaq... təbii ki mistisizm - bunun nə üçün lazım olduğu aydın deyil...

2) Yalnız oxunan məlumat mənbələri- Bəli, möcüzələr olmur... amma bəzən sən bunu istəyirsən...

3) DAXİLİ MƏLUMAT MƏNBƏLƏRİ İLƏ BİRLİKDƏ İSTİFADƏ EDİLƏ BİLMƏZ
Şəxsən bu fakt məni yerindəcə öldürdü.

Bu necə ola bilər... gözlədiyimiz və artıq təsəvvür etdiyimiz və indi məlumatlarımızı bir sorğuda 1C ilə necə birləşdirəcəyimizə dair dodaqlarımızı yaladıq, onu yığışdırın - qruplaşdırın, hesabata daxil edin, amma bu belə deyil. ...
Amma təbii ki, bu, təcrübəli insanları dayandırmır... ağlına hansı fikir gəldi? Düzdür - müvəqqəti cədvəllər:

4) MÜVƏQƏQİ CƏDVƏLLƏR İLƏ BİRLİKDƏ İSTİFADƏ EDİLMƏZ

Ancaq bu, artıq texnoloji çətinliklər kimi görünmür, amma "həyat cənnət kimi görünməsin deyə" bizdən istədiklərinə çox bənzəyir :).

5) Yalnız ACS birləşmələrində istifadə edilə bilər
Bilməyənlər üçün bu, "Məlumat Dəsti Bağlantıları" sekmesindəki ACS-də. Onlardan tez-tez istifadə edirsiniz? Rahatdır? Görünür, bizi onlardan daha tez-tez istifadə etməyə məcbur etmək istəyirlər. Yalnız "Rabitə vəziyyəti" və "Rabitə parametri" sütunu var. Onların heç bir standart konfiqurasiyada istifadəsinə dair bir nümunə tapmadım və nədənsə sənədlərdə və Xrustalevanın işində hər şey şəffaf deyil. Kimsə mənə "bağlantı şərtinin" necə işlədiyini izah edə bilər. Oraya Mənbə Atributları = Alıcı Atributları yazsanız, işləmir. Əlbəttə ki, şərt "İfadə" sahəsinə yazıla bilər - əksər hallarda bu kifayətdir...

Ümumilikdə, bu problem əvvəllər belə bir yerdə həll edildi:
Code 1C v 8.x Function InitializeDataSource()

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Əgər DataCon > "20100101" Sonra
DataCon = "20100101";
endIf;

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

ArrayNumber = Yeni Massiv();
ArrayNumber.Add(Növ("Nömrə"));

ArrayString = Yeni Array();
ArrayString.Add(Type("String"));

ArrayData = Yeni Array();
ArrayDate.Add(Növ ("Tarix"));

//Cədvəldə mühasibat xərclərini dolduracağıq
TypeNumber = New DescriptionTypes(ArrayNumber, CN);
TypeString = New TypeDescription(ArrayString, KS);
TypeDate = New TypeDescription(ArrayDate);

//SQL-dən verilənlərin yüklənməsi üçün cədvəl
TZ = Yeni Dəyər Cədvəli();
TK.Columns.Add("Nomenklatura Kodu", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Dövr", Tarix Növü);

TK.Indices.Add("Dövr");

//SQL-ə qoşulun
Bağlantı sətri = "Provayder=SQLOLEDB.1; Davamlı Təhlükəsizlik Məlumatı=Doğru;İstifadəçi ID=sa;Pwd=;Məlumat Mənbəsi=;Hazırlanma üçün İstifadə Proseduru=1;Avtomatik Tərcümə=Doğru;Paket Ölçüsü=4096;İş Stansiyasının ID-si=;İstifadə edin Məlumat üçün Şifrələmə=Yanlış;Mümkün olduqda sütunların harmanlanması ilə etiketləyin=Yanlış;İlkin Kataloq=Hesabatlar";
Əlaqə = Yeni COMObject("ADODB.Connection");
Komanda = Yeni COMObject("ADODB.Command");
RecordSet = Yeni COMObject("ADODB.RecordSet");
Tarix = "";
cəhd
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = Əlaqə;
Command.CommandText = "S_select * PH-dən dövr >= "" + String(Format(StartDate, "DF=yyyyMMdd"))) + "" və dövr<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
İstisna
Texniki şərtlərin qaytarılması;
EndAttempt;

RecordSet.EOF = False Loop isə
Xətt = TK.Add();
Satır.NomenklaturaKod = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Dəyər;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
Row.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Ad).Dəyər;
RecordSet.MoveNext();
EndCycle;

Sorğu = Yeni Sorğu();
VrTable = Yeni TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Başlama tarixi", Başlama tarixi);
Request.SetParameter("DataCon", DateCon);
Query.Text = "SEÇ
| vrDataTable.Nomenklatura Kodu,
| vrDataTable.Qnty,
| vrDataTable.Period
|Məlumat cədvəlini yerləşdirin
|FROM
| &vDataTable AS vrDataTable
|HARADA
| vrDataTable.Period >= &Başlama Tarixi
| Və vrDataTable.Period<= &ДатаКон";
Request.Run();
TZ = Müəyyən edilməmiş;

Sorğu = Yeni Sorğu;
Query.TemporaryTableManager = VrTable;
Query.Text = "Budur, dəyişən cədvəlini əhatə edən sorğu";

Nəticə = Query.Run();
Nəticəni qaytarmaq;

EndFunction

ExternalSet = InitializeDataSource();
DataSet = yeni Struktur();
DataSet.Insert("SQL Cədvəli", ExternalSet);
TypicalReports.GenerateTypicalReport(BuObject, Nəticə, Şifrədən Çıxarma Məlumatı, ÇıxışToReportForm, DataSet);

Əslində, kod sətirləri çox deyil və onlar kifayət qədər standartdır... bu halda siz sorğu dizaynerinin tam funksionallığından istifadə edə və ACS-yə yalnız DATA COMPOSITION funksiyasını verə bilərsiniz.

Amma təbii ki, o qədər də gözəl görünmür... və hər dəfə dəyərləri cədvələ yükləmək üçün kod yazmaq və detalların adında səhv edib-etmədiyinizi yoxlamaq lazımdır... və bizə nə verildi. 1C-də birtəhər ürəkaçan görünür. Hansının istifadə etmək daha rahat olduğuna hələ qərar verməmişəm. Siz qərar verin və qərarlarınız və sizi onlara nəyin sövq etdiyini yazın.

Məlumat saytdan götürülüb

1C proqramının 8-ci versiyasında tərtibatçılar funksionallığa üçüncü tərəf verilənlər bazalarını qoşmaq və COM əlaqələri və OLE obyektlərindən istifadə etmədən konfiquratordan birbaşa məlumat əldə etmək imkanı əlavə etdilər. Bu xüsusiyyət yeni bir obyektdən istifadə etməklə həyata keçirilir - "Xarici Məlumat Mənbələri"

1C-də xarici məlumat mənbələri sistemdəki digər cədvəllərlə eyni şəkildə istifadə edilə bilər:

  1. Məlumat kompozisiya sistemindən (DCS) istifadə edərək hesabatlar və hesablamalar yaratarkən;
  2. Üçüncü tərəf mənbələrində saxlanılan məlumatlara keçid əldə etmək;
  3. Cədvəllərdə saxlanılan məlumatları dəyişdirmək üçün;
  4. Müraciətlər yaratarkən.

Bu mexanizmin digər 1C verilənlər bazaları ilə işləmək üçün nəzərdə tutulmadığını bilmək vacibdir, çünki 1C.Enterprise əməliyyat modelinin özü fiziki cədvəllər səviyyəsində məlumatlara müdaxilə etməyi nəzərdə tutmur.

Yeni mənbənin yaradılması

Proqrama yeni xarici mənbənin əlavə edilməsi “Konfiqurator” rejimində baş verir. Konfiqurasiya ağacında müvafiq filial var (şək. 1)

Yeni obyektin formasının yalnız dörd nişanı olmasına baxmayaraq, yeni mənbə yaratarkən çox çalışmalı olacaqsınız:

  1. Əsas;
  2. Məlumat;
  3. Funksiyalar;
  4. Hüquqlar.

Birinci sekmədə yalnız bir maraqlı parametr var - kilid idarəetmə rejimi. Əməliyyatlarda məlumatların bloklanması və ya məlumat axınlarının paralelləşdirilməsinin incəlikləri ilə bağlı heç bir sualınız yoxdursa, bu seçimi avtomatik bloklama rejimində tərk edə bilərsiniz. Bununla belə, belə bir yanaşma həddindən artıq məhdudiyyətlərə səbəb ola bilər (məsələn, ayrı bir qeyd əvəzinə proqram bütün fiziki cədvəli kilidlədikdə, digər istifadəçiləri onunla işləmək qabiliyyətindən məhrum edir).

İdarə olunan kilidlər, avtomatik kilidlərdən fərqli olaraq, DBMS-də deyil, proqramın özünə xas olan əməliyyat mexanizmindən istifadə edir, bu da cədvəl tutmalarını daha aşağı səviyyəyə ötürməyə imkan verir.

Bu parametri “Avtomatik və İdarə olunan” olaraq təyin etməklə biz sistemə hər bir xüsusi cədvəl üçün oxşar xüsusiyyətə birbaşa daxil olaraq hansı rejimin istifadə olunacağını müəyyən etmək imkanı veririk.

Xarici mənbə xüsusiyyətləri formasının "Məlumat" sekmesi

"Məlumatlar" nişanının forması Şəkil 1-də göstərilmişdir. 2

düyü. 2

Burada biz xarici mənbə cədvəlləri və kublar əlavə edə bilərik. Cədvəl əlavə etməyin iki yolu var:

  1. Əl ilə, sonra masa əlavə etmək üçün forma bizim qarşımızda açılacaq (şək. 3);

düyü. 3

  1. Və ya fiziki mənbə cədvəllərinin siyahısından seçin (şəkil 4), bu halda qarşımızda xüsusi konstruktor açılır.

düyü. 4

Cədvəl əlavə etmək formasına daha yaxından nəzər salaq. “Ad” xassəsi konfiqurasiyadakı obyekti unikal şəkildə müəyyən etmək üçün istifadə olunur.

Metaməlumat obyektinin və yekun fiziki cədvəlin müqayisəsi “Qabaqcıl” nişanında yerləşən “Məlumat mənbəyində ad” xüsusiyyəti vasitəsilə baş verir (Şəkil 5).

düyü. 5

Sonra cədvəlin növünü, daha doğrusu, obyektivliyini müəyyən etməliyik. Əgər strukturda saxlanılan məlumatlar hər hansı bir sahə vasitəsilə unikal şəkildə müəyyən edilə bilərsə, cədvəl obyekt ola bilər. Yazının fərdiliyi əsas sahələr dəsti ilə müəyyən edilirsə, cədvəl qeyri-obyekt tipinə malik olmalıdır.

Bu cür cədvəlləri digər metadata obyektləri ilə müqayisə edərək, aşağıdakı bənzətməni vermək olar:

  • Obyekt cədvəlləri istinad kitablarıdır;
  • Obyekt olmayanlar informasiya registrləridir.

Əsas sahələr dəsti növbəti forma parametrində (“Açar sahələr”) müəyyən edilir. Bu sahə tələb olunur, əgər onu boş qoysanız, konfiqurasiyanı saxlamaq uğursuz olacaq.

Şəkil 5-dən göründüyü kimi, formanın bəzi sahələri və düymələri redaktə edilə bilməz:

  • Məlumat mənbəyində ifadə;
  • Cədvəl məlumat növü;
  • Təqdimat sahəsi;
  • İşləyicilərə baxın.

Onlardan yalnız biz cədvəl sahələrini doldurduqdan, onların tipini təyin etdikdən və onlara identifikatorlar təyin etdikdən sonra istifadə edilə bilər (şək. 6).

düyü. 6

Burada "Nulla icazə ver" parametrinə diqqət yetirməlisiniz, əgər bu onay qutusu seçilibsə, belə bir sahəni açar kimi istifadə etmək məsləhət görülmür.

Masa qurucusu

Xarici mənbələrlə işləməkdə bəlkə də ən vacib və maraqlı məqam əlaqə sətirinin yaradılmasıdır. “Bağlantı sətri” parametrinin yanında üç nöqtə olan düyməni klikləsəniz, onun konstruktoru açılır.

Hər şeydən əvvəl, bizdən əlaqə üçün istifadə ediləcək sürücüyə qərar vermək istəniləcək (şək. 7)

düyü. 7

Bu parametrin yanlış tərifi üçüncü tərəfin məlumat bazasına qoşulmağa imkan verməyəcək. Siz həmçinin başa düşməlisiniz ki, açılan siyahıda göstərilən bütün drayverlər avtomatik olaraq əlaqə xətti yaratmaq üçün istifadə edilə bilməz. Platforma xəta yaradırsa (şək. 8), onda əlaqə sətri əl ilə daxil edilməli olacaq.

Şəkil 8

düyü. 9

Xəttin özü ciddi şəkildə tənzimlənən bir tikintidir.

Nümunə əlaqə sətri

Microsoft Access-də yaradılmış və D diskinin kökündə yerləşən üçüncü tərəf verilənlər bazasını nəzərdən keçirək. Bu verilənlər bazasını birləşdirmək üçün müvafiq drayverdən istifadə etməliyik, lakin onu sıra konstruktorunda seçmək Şəkil 8 xətası ilə nəticələnir.

Bağlantı parametrlərini özümüz quracağıq.

Driver=(Microsoft Access Driver (*.mdb)) – xəttin birinci hissəsi belə görünür. Buruq mötərizələrdə sürücünü müəyyən etdik.

Excel faylları üçün (Microsoft Excel Driver (*.xls)), 2003-cü ildən köhnə ofisdə yaradılmış Excel faylları üçün sürücü xətti (Microsoft Excel Driver (*.xls, *.xlsx, *.)) kimi görünəcək. xlsm, *.xlsb)).

Bu parametri növbəti parametrdən vergüllə ayıraraq yaddaşımızın ünvanını daxil etməliyik (bizim halda DBQ=D:\Database1.mdb).

Bu iki parametri əlavə edərək Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb bu parametri yazmaqla biz bu verilənlər bazasının daxili strukturlarına giriş əldə edirik.

"Xarici Mənbə" obyekti üçün onu yalnız konfiqurasiyada yaratmaq kifayət deyil, həmçinin "Müəssisə" rejimində qoşulmaq lazımdır. Bu, “Bütün funksiyalar”->Xarici mənbələr menyusundan edilə bilər. Cədvəlimizə ilk daxil olduğumuz zaman eyni əlaqə sətirini “Müəssisə” rejimində daxil etməliyik.

1C Enterprise rejimində siyahılarda onlarla işləyin.

Bununla belə, işdə tez-tez məlumatların bir hissəsinin başqa yerdə saxlandığı bir vəziyyət var.

  • Onlayn mağaza (adətən məlumatları xarici MySQL/SQL verilənlər bazasında saxlayır)
  • Başqa bir baza.

Başqa verilənlər bazalarında saxlanılan belə məlumatlarla işləmək üçün xüsusi mexanizmlər işlənib hazırlanmalıdır.

1C 8.2.14 versiyasında proqramçının işini xeyli asanlaşdıran 1C Xarici Məlumat Mənbələri adlı yenisi peyda oldu, çünki:

  • indi məlumatların əldə edilməsi üçün xüsusi mexanizmlərin yaradılmasına ehtiyac yoxdur
  • bu cür məlumatlar adi şəkildə əldə edilə bilər
  • bu cür məlumatlara 1C siyahılarında baxmaq olar.
    • Xarici məlumat mənbəyi 1C – xarici SQL verilənlər bazası

      Tutaq ki, bizdə SQL verilənlər bazası var, orada bizə lazım olan məlumat saxlanılır. 1C Xarici Məlumat Mənbəsi mexanizmindən istifadə edərək ondan məlumatları oxumağa çalışaq.

      Xarici 1C məlumat mənbəyi əlavə edək. Konfiquratora getməlisiniz, xarici məlumat mənbələri konfiqurasiya pəncərəsində, ağacın ən aşağı hissəsində yerləşir.

      1. Əlaqə

      Gəlin yeni xarici məlumat mənbəyi 1C əlavə edək, onu özbaşına adlandıraq.

      Verilənlər bazası cədvəllərdən ibarətdir. Biz onları əlavə edilmiş xarici məlumat mənbəyinə əlavə etməliyik. Bunun üzərinə sağ vurun və Cədvəl əlavə et seçin.

      İlk dəfə o, sizdən əlaqə sətrini təqdim etməyi təklif edəcək. Onu əl ilə daxil etmək və ya “…” düyməsini sıxmaqla yaratmaq olar.

      Xüsusi vəziyyətimizdə sürücü olaraq “SQL Server” seçəcəyik

      SQL-ə qoşulmaq üçün əsas parametrləri dolduraq. Server adı daxil edilə və ya siyahıdan seçilə bilər.

      1C SQL-ə qoşulacaq və siyahıdan müəyyən verilənlər bazasını seçməyi təklif edəcək.

      Bundan sonra, 1C bu verilənlər bazasındakı cədvəllərin siyahısını və onların sütunlarını göstərəcəkdir. Lazımi cədvəlləri seçmək üçün qutuları işarələməlisiniz.

      Cədvəllər və sütunlar əlavə olunacaq. Adlar uzaq verilənlər bazasında təyin olunduğu kimi olacaq. 1C-də siz onların adlarını dəyişdirə bilərsiniz (xüsusiyyətlərdə).

      Əlavə edilmiş cədvəlin bir nümunəsidir:

      Əlavə edilmiş sütunun bir nümunəsidir:

      1C platformasının 1C qovluqlarında olduğu kimi xarici cədvəllə işləməsi üçün cədvəldə əlavə parametrlər təyin edə bilərsiniz:

      • Key Field xassəsində sətrin unikal identifikasiyasını təmin edəcək sütunlardan birini təyin edin; bir neçə sətir unikallığı təmin edərsə, bu üsul işləmir (Kod sahəsinin analoqu)
      • Təqdimat sahəsi xassəsində xəttin qısa təsvirini təmin edəcək sütunlardan birini təyin edin (Ad sahəsinin analoqu)
      • Cədvəl Məlumat Tipi xassəsində Obyekt Məlumatını təyin edin.

      2. Baxın

      Uzaq bazaya qoşulma avtomatik olaraq həyata keçirilmir. Qoşulmaq üçün standart menyu seçməlisiniz.

      Standart filialda əlaqə parametrlərini (1C Müəssisə rejiminə xas) təyin etməyə və əlaqə yaratmağa imkan verən Xarici məlumat mənbələrinin idarə edilməsi xüsusi əmri var.

      Əvvəlcə verilənlər bazasına qoşulmaq üçün parametrləri təyin etməlisiniz.

      Konfiquratorda parametrləri etdikdə, nəticədə o, sizə əlaqə xəttini göstərdi. Konfiquratorda Cədvəl əlavə et düyməsini yenidən klikləməklə onu yenidən görə bilərsiniz.

      Bağlantı sətirini kopyalayın və 1C Enterprise rejimində təyin edin.

      Bundan sonra faktiki əlaqə qurmalısınız.

      Bağlantı qurulduqdan sonra siyahılarla işləmək mümkündür.

      3. 1C dilində istifadə edin

      Bağlantı 1C dilində proqram kodundan da edilə bilər.

      Bağlantı parametrləri aşağıdakı kimi müəyyən edilir:
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetGeneralConnectionParameters();

      ConnectionParameters.AuthenticationStandard = Doğrudur;
      ConnectionParameters.UserName = "sa";
      ConnectionParameters.Password = "parol";
      ConnectionParameters.ConnectionString = “konfiquratordan əlaqə sətri”;
      ConnectionParameters.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetGeneralConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Parametrlər);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Parameters);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Siz müntəzəm istifadə edərək verilənlər bazasından məlumatları sorğulaya bilərsiniz. Xarici mənbə OurExternalSource və ExternalSource Cədvəl cədvəlləri üçün sorğu mətninin nümunəsi:

      SEÇİN
      ExternalSourceTable.FieldName
      FROM
      ExternalDataSource.OurExternal Source.Cədvəl.External SourceTable"

      Xarici məlumat mənbəyi 1C - Excel faylı ilə işləmək

      Başqa bir varianta cəhd edək - xarici 1C məlumat mənbəyi vasitəsilə Excel faylı ilə işləmək.

      Sadə bir Excel faylı yaradaq.

      Xarici mənbə əlavə edək, onu özbaşına FileExcel adlandıraq. Gəlin ona “Sheet1$” cədvəlini əlavə edək. Asanlıqla gördüyünüz kimi, bu, Excel-də “$” simvolu əlavə edilmiş vərəqin adıdır.

      SQL-də olduğu kimi, sütunları əlavə edək. Onlar əl ilə əlavə edilə bilər. Əlavə etdiyiniz sütun növlərinin uyğun olduğundan əmin olmaq vacibdir, əks halda daha sonra “Məlumat növü uyğunsuzluğu” kimi xəta ala bilərsiniz.

      Sütun üçün 1C-də bir ad və məlumat mənbəyində bir ad göstərməlisiniz.

      Excel üçün bir xüsusiyyət var (“Çox az parametr. 3 tələb olunur” kimi xəta):

      • Excel cədvəlinin birinci sətrində sütun adları varsa, o zaman sadəcə bu sütunun adını göstərməlisiniz, məsələn, “Kod”.
      • Əks halda, tam adı cədvəl adı ilə “Sheet1$.Code” göstərməlisiniz, lakin parametrlərə “HDR=NO;” əlavə edin.

      Excel faylı üçün əlaqə parametrləri belə görünür:

      • XLSX faylları (Office 2007 və sonra)
        Driver=(Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • XLS faylları (əvvəllər)
        Sürücü=(Microsoft Excel Sürücüsü (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;
        Siz öz adınızı və faylın yolunu göstərməlisiniz.

Platformanın 8.3.5.1068 versiyasında (və daha sonra) 1C proqram təminatından istifadə edərək xarici mənbələrdə məlumatları əlavə etmək, dəyişdirmək və silmək mümkün oldu. Bu xüsusiyyətin nümunələri bu məqalədə təqdim olunur.

Xarici mənbələrə yazmağı mümkün etmək üçün 1C şirkəti məlumat cədvəllərinə və xarici mənbələrin sahələrinə yeni xüsusiyyətlər əlavə etdi:

  • Bütün masa üçün - əmlak Yalnız Oxu. Yalnız oxumaq = Doğrudur bu cədvəldəki məlumatların dəyişdirilməsinin mümkün olmadığını bildirir;
  • Fərdi cədvəl sahələri üçün - xüsusiyyətlər Yalnız Oxu, AllowNullDoldurma Dəyəri:
    • Yalnız oxumaq = Doğrudur bu sahədə məlumatların dəyişdirilməsinin mümkün olmadığını bildirir;
    • AllowNull = Doğrudur o deməkdir ki, bu sahəyə dəyər yazıla bilər NULL;
    • Doldurma Dəyəri bu sahənin standart dəyərini ehtiva edir (əgər varsa).

Siz (cədvəlləri əl ilə təsvir edərkən) və ya platforma (dizaynerdən istifadə edərək cədvəllər yaradarkən) bu xassələrdən aşağıdakı kimi istifadə edə bilərsiniz.

  • Yalnız oxumaq = Doğrudur məsələn, görünüşlər üçün ifadə (funksiya nəticəsi) və s. əsasında alınan cədvəllər təyin edin. Belə cədvəllərdəki məlumatlar dəyişdirilə bilməz;
  • Yalnız oxumaq = Doğrudur avtomatik təyin olunan sahələr üçün müəyyən edin ( AVTOARTMA), hesablanmış sahələr və s. Bu cür sahələrdə məlumatlar dəyişdirilə bilməz;
  • AllowNull = Doğrudurəsas sahələr və xarici mənbədə təsvir olunanlar istisna olmaqla, bütün sahələr üçün təyin edin NULL DEYİL;
  • Doldurma Dəyəri sahələr xarici mənbə bu sahənin standart dəyərini təyin etdikdə (dəyər DEFAULT).

Daxili dildən istifadə edərək və ya interaktiv şəkildə xarici mənbələrdəki məlumatları əlavə edə, dəyişdirə və silə bilərsiniz. Daxili dil bunun üçün aşağıdakı cədvəl meneceri metodlarından istifadə edir:

  • RecordSet yaradın()- qeyri-obyekt cədvəlləri üçün;
  • Yeni üsul CreateObject()- obyekt cədvəlləri üçün.

Müvafiq olaraq, obyektlər Xarici verilənlər mənbəyi cədvəli qeyd dəstiExternalDataSourceTableObject yeni üsullar meydana çıxdı yaz()Sil().

Məlumatların əlavə edilməsi

Xarici mənbəyə məlumat əlavə etdiyiniz zaman obyekt (və ya qeydlər dəsti) yaradırsınız, sahə dəyərlərini təyin edir və yazırsınız. Bununla belə, bilmək üçün faydalı olan bəzi xüsusiyyətlər var.

Məsələn, bir sahənin dəyərini təyin etməyə çalışsanız Yalnız oxumaq = Doğrudur, xəta atılacaq. Və ifadədə birbaşa verilənlər bazasına yazarkən INSERT belə sahələr atlanacaq. Qalan sahələr onlara təyin etdiyiniz dəyərləri ehtiva edir. Buna görə də dəyərlər Null və defolt dəyərlər sahələrə açıq şəkildə təyin edilməlidir.

  • id(AllowNull = Doğrudur);
  • ad(AllowNull = Doğrudur);
mFeature = ExternalDataSources.TableIm.shop_feature.CreateObject();

mCharacteristic.id = Kod; yaz() mCharacteristic.name = Ad; mCharacteristic.Write(); Bəyanatın icrası INSERT hadisə işləyicisinin əvvəlcə çağırılmasına səbəb olacaq Qeydiyyatdan əvvəl.

, sonra xarici mənbə cədvəlinə fiziki yazma yerinə yetirilir ( INSERT), sonra hadisə işləyicisi çağırılacaq Yazan zaman Xarici mənbə cədvəlinin açar sahəsi ilə aşağıdakıları edə bilərsiniz. Əgər əsas sahə dəyişkəndirsə, onda siz yazmadan əvvəl onun dəyərini “əl ilə” təyin edirsiniz. Açar sahəsinin dəyişdirilməsi qadağandırsa, platforma müstəqil olaraq açarı alacaq mCharacteristic.Write(); və ya dərhal sonra. Metoddan istifadə edərək bu prosesə müdaxilə edə bilərsiniz Qeydiyyatdan əvvəl).

SetLinkNew()

fiziki qeyddən əvvəl (hadisə idarəedicisində ) və ya fiziki qeyddən dərhal sonra (hadisə idarəedicisində.

Məlumatların dəyişdirilməsi

Məlumat dəyişdikdə, mövcud olan bütün cədvəl sahələrinin dəyərləri Yalnız oxumaq = YanlışMFeature = ExternalDataSources.TableIm.shop_feature.FindByField("id",kod); mObject = mCharacteristic.GetObject(); mObject.name = Ad; mObject.Write();.

Yalnız bəzi sahələri qeyd etmək lazımdırsa, metodlardan istifadə edərək birbaşa daxili dildən onların siyahısını təyin edə bilərsiniz.

SetWritableFields() GetWrittenFields().

Məlumatların silinməsi

Məlumatların silinməsi birbaşa verilənlər bazası cədvəlindən bir sıra silir. Bu halda, silinən obyektə istinadların axtarışı həyata keçirilmir. Əgər belə bir funksionallıq lazımdırsa, siz onu hadisə idarəedicisində özünüz proqramlaşdıra bilərsiniz

Xarici mənbələrdən məlumatların oxunması, əvvəlki kimi, əməliyyatdan kənar həyata keçirilir və yazarkən platforma gizli əməliyyat açır. Eyni zamanda, obyekt metodlarından istifadə edərək açıq əməliyyatlarda həm oxumaq, həm də yazmaq olar ExternalDataSourceManager:

  • Tranzaksiyaya başlayın();
  • CommitTransaction();
  • Ləğv Etmə().

Kilidlər

  • Avtomatik;
  • idarə olunur;
  • Avtomatik və idarə olunur.

eləcə də xarici mənbə cədvəlinin xassəsi Tranzaksiya İzolyasiya Səviyyəsi:

Bundan əlavə, üsulda kilidləmə səviyyəsini müstəqil olaraq təyin edə bilərsiniz Tranzaksiyaya başlayın().

Standart məqaləyə misallar əlavə etdim) Əgər daha çox vaxtım olsa, daha çox nümunə əlavə edəcəm.

Xarici məlumat mənbələri 1C - 1C xarici məlumat mənbələrinə qoşulmaq mümkün olan nisbətən yeni metadata obyekti 1C 8.3 və 8.2: SQL cədvəlləri, Excel, Access, FoxPro (dbf), başqa bir 1C verilənlər bazası, Oracle, Paradox (db) , - və hətta sadə txt/csv fayllarından oxumaq.

Bu, digər sistemlərlə qarşılıqlı fəaliyyət üçün bir çox imkanlar verir. Gəlin daha yaxından nəzər salaq.

1C 8-də xarici məlumat mənbələrinin qurulması

Xarici mənbələrin qurulması hər bir sistem növü üçün fərdi. Ancaq, bir qayda olaraq, quraşdırmanın ümumi hissəsi eynidır - bu, əlaqə xəttini təyin edir:

1C-də 267 video dərsi pulsuz əldə edin:

Əgər əlaqə sətri düzgün göstərilibsə, sistem sizə verilənlər bazasından istədiyiniz cədvəli seçməyi təklif edəcək. Nəticədə, əsas sahəni (unikal sahə) və təqdimat sahəsini (qeyd 1C-də necə əks olunacaq) təyin edə biləcəyimiz hazır bir cədvəl alacağıq:

1C 8.3-də xarici məlumat mənbələrindən istifadə

1C-də xarici məlumat mənbələri digər verilənlər bazası cədvəlləri kimi istifadə edilə bilər. Platforma müəyyən edilmədikdə onlar üçün avtomatik olaraq forma yaradır. Sorğularda xarici mənbələrdən alınan məlumatlardan da istifadə etmək mümkündür.