19.03.2021

1c xarici məlumat mənbələri funksiyası zəng. Xarici məlumat mənbələri. Bağlantı simli nümunəsi


8.3.5 versiyasından başlayaraq, platforma xarici məlumat mənbələrinin cədvəllərinə məlumat yazma qabiliyyətini tətbiq etdi. Bu məqalədə konfiqurasiyanı üçüncü tərəf sistemləri ilə birləşdirmək üçün mövcud imkanları genişləndirən bu funksionallıq müzakirə olunur.

Uyğunluq

Məqalədə 1C 8.3.5 platforması müzakirə olunur. Material, platformanın cari buraxılışları üçün də aktualdır.

"1C: Enterprise 8" də xarici məlumat mənbələrinə yazma

8.2.14 platformasında metadata ağacına yeni bir obyekt əlavə edildi - xarici məlumat mənbələri. Bu mexanizmin məqsədi 1C ilə əlaqədar xarici verilənlər bazasından məlumat almaqdır.

Yeni platforma buraxılışları ilə xarici məlumat mənbələri inkişaf etdi, məsələn, onları müvəqqəti cədvəllərə yerləşdirmək, adi cədvəllərlə birləşmə etmək mümkün oldu.

Bu yazıda, geliştiricinin xarici məlumat mənbələrinə yazmaq üçün hansı vasitələrə sahib olduğunu araşdıracağıq.

Bütün hərəkətlər Microsoft DBMS -də edildi SQL Server 2008 R2.

8.3.4 platformasında xarici məlumat mənbələrində təsvir olunan funksiyalardan istifadə etmək bacarığı həyata keçirildi.

Bu xüsusiyyət, SQL Server tərəfində saxlanılan prosedurları yerinə yetirməyə və onların köməyi ilə xarici mənbələrdən, o cümlədən yazıya daxil olmağa imkan verir.

Bir nümunəyə baxaq. SQL Management Studio istifadə edərək kursy_test adında yeni bir verilənlər bazası yaradaq. Bütün digər təcrübələr onun üzərində aparılacaq.

Bu verilənlər bazasında nomenklatura cədvəli yaradacağıq, bunun üçün aşağıdakı məzmunda bir skript yazacağıq:

İSTİFADƏ EDİN [kursy_test]
GET
Cədvəl yaradın [dbo]. [nomenklatura] (
[id] [int] NULL DEYİL,
[Təsvir] [nvarchar] (150) NULL DEYİL,
[qiymət] [rəqəmsal] (15, 2) NULL,
SINIRLAMA [PK_id] İLK AÇAR ([id])
GET

İcra nəticəsində aşağıdakı quruluşa malik bir cədvəl yaradılacaq:

İndi məlumatların dəyişdirilməsinin həyata keçiriləcəyi iki saxlanmış prosedur yaratmalıyıq.

İlk prosedura insert_nomenklatura çağıracağıq. Masaya yeni bir sıra əlavə etmək üçün hazırlanacaq. Yaradılma ssenarisi belə olacaq:

İSTİFADƏ EDİN [kursy_test]
GET
PROSEDUR YARADIN insert_nomenklatura
@id int,
@description nvarchar (150),
@qiymət rəqəmi (15, 2)
AS
BAŞLAYIN
Daxil et [kursy_test] .dbo. [nomenklatura] ([id], [təsvir], [qiymət])
DƏYƏRLƏR (@id, @description, @qiymət)
SON
GET

Update_nomenklatura adlı ikinci prosedur cədvəldəki mövcud rekordu yeniləyəcək. Bunu yaratmaq üçün aşağıdakı skript işə salındı:

Obyekt Tarayıcısında yaradılan cədvəl və iki saxlanılan prosedur belə görünür:

Microsoft SQL Server tərəfindəki bütün hazırlıq addımlarını tamamladıq, indi 1C: Enterprise 8 konfiquratoruna keçin.

Nomenklatura adlı yeni bir xarici məlumat mənbəyi yaradın. Bu məlumat mənbəyində yeni bir cədvəl yaratarkən, məlumat mənbəyinə qoşulmaq üçün aşağıdakı parametrləri təyin edirik:

Aşağıdakı əlaqə simini göstərəcəyik:

Sürücü = (SQL Server); Server = (yerli); Verilənlər bazası = kursy_test; İstifadəçi Id = sa; Şifrə =;

Sa istifadəçisinin bir şifrəsi varsa, bu əlaqə siminin Parol parametrində göstərilməlidir.

Bütün əlaqə parametrləri düzgün göstərildikdə, OK düyməsini tıkladığınızda, məlumat mənbəyində mövcud olan cədvəlləri ehtiva edən bir pəncərə açılacaq:

Bizi maraqlandıran cədvəl sahələrini qeyd edirik. Düymə basıldıqda Hazırdır dbo_nomenklatura cədvəli Nomenklatura xarici məlumat mənbəyində yaradılacaq:

İndi məlumat mənbəyimizin "Funksiyalar" sekmesine keçirik.

Bənzər bir sehrbazdan istifadə edərək iki saxlanmış prosedur əlavə edirik:

Növbəti alırıq görünüş"Funksiyalar" nişanları:

İndi proqramlaşdıraq istifadəçi interfeysi xarici məlumat mənbəyi ilə işləmək.

Komanda panelindəki siyahı formunda, "Əlavə et" düyməsini aşağıdakı idarəçi ilə yerləşdirin:

& OnClient
Prosedur əlavə et ()
Xəbərdarlıq = Yeni Təsvir Xəbərdarlıqları("OpenTableCompletion", ThisObject);
OpenForm (
"ExternalDataSource.Nomenklatura.Table.dbo_nomenklatura.ObjectForm"
, , , , , ,
Xəbərdarlıq, ModeOpenWindowForms.LockAllInterface);
Prosedurun sonu

& OnClient
Saxlama Proseduru (Əmr)
Serverdə saxla();
EndProcedure və OnServer
Prosedur Serverdə saxla()
Əgər Object.Ref.Empty() Sonra
ExternalDataSources.Nomenklatura.dbo_insert_nomenklatura
Əks halda
ExternalDataSources.Nomenklatura.dbo_update_nomenklatura
(Object.id, Object.description, Object.price);
EndIf;
Prosedurun sonu

Müəssisə rejimində siyahı forması belə görünür:

Obyektin forması aşağıda göstərilmişdir:

Böyütmək üçün görüntüyə vurun.

Beləliklə, saxlanılan prosedurlardan istifadə edərək xarici məlumat mənbələrinə yazmağı həyata keçirdik.

Platformada 8.3.5 çıxdı yeni fürsət- Yuxarıda müzakirə olunan saxlanılan prosedurların mexanizmini keçmədən birbaşa xarici məlumat mənbələrinə yazmaq.

Məlumatlar həm proqram, həm də interaktiv olaraq düzəldilə bilər. Və nümunəmiz üçün konfiqurasiyaya müraciət etməyəcəksiniz.

Komanda çubuqlarında və "Daha çox" menyusunda "Yeni", "Kopyala", "Dəyişdir" və s. Kimi standart düymələri görə bilərsiniz.

Böyütmək üçün görüntüyə vurun.

Və obyekt şəklində "Yaz" və "Yaz və bağla" düymələri var idi:

Gördüyünüz kimi, indi xarici mənbələrlə işləmək kataloqlarla, sənədlərlə və s.

Xarici məlumat mənbələrinə yazmağı mümkün etmək üçün metadata səviyyəsində hansı dəyişikliklərin edildiyini düşünün.

Məlumat cədvəlinə yeni bir mülk əlavə edildi Yalnız oxumaq(növü boolean).

Bu xüsusiyyət True olaraq təyin edilərsə, platform bu cədvələ məlumat yaza bilməz.

Məlumat cədvəli sahəsi indi aşağıdakı xüsusiyyətlərə malikdir:

  • Yalnız oxumaq(tip - boolean) - bu sahədə verilənləri dəyişdirmək mümkündürmü;
  • İzin Ver Null(tip - boolean) - bu sahədə NULL dəyərinin saxlanılmasının mümkün olub -olmaması.

Mülkiyyət Yalnız oxumaq olaraq təyin olunmalıdır Doğru verilənlər bazası sahələrinin avtomatik dəyişdirilməsi, avtomatik yaradılan açar sahələri, hesablanmış sahələr və s.

Daxili dildən istifadə edərək xarici mənbələrdəki məlumatları əlavə edə, dəyişdirə və silə bilərsiniz.

Bunu etmək üçün obyektlər ExternalDataSourceTableRecordSetExternalDataSourceTableObject yeni metodlar tətbiq olunur Yaz ()Sil ().

Proqram olaraq əlavə etmə nümunəsinə baxaq yeni giriş Yuxarıda müzakirə olunan xarici məlumat mənbəyi üçün.

& OnClient
Prosedur Proqramatik olaraq yaradın(Əmr)
Proqramatik olaraq OnServer yaradın();
EndProcedure və OnServer

Prosedur Proqramatik olaraq OnServer yaradın()
WritableObject=
ExternalDataSources.Nomenklatura.Tables.dbo_nomenklatura.CreateObject();
WritableObject.id= 5 ;
WritableObject.description= "Qarderob";
WritableObject.price= 5000 ;
WritableObject.();
Prosedurun sonu

Xarici məlumat mənbəyi cədvəlinin obyekt modulunda, indi kimi hadisələri yazmaq üçün hadisə işləyicilərini təyin edə bilərsiniz Yazmadan əvvəl (), Qeyd edərkən () və s.:

Bu yazıda, xarici məlumat mənbələrinə məlumat yazmaq üçün iki variant nəzərdən keçirildi - saxlanılan prosedurlardan və 8.3.5 platformasının yeni mexanizmlərindən istifadə etməklə.

Beləliklə, platforma artıq xarici tətbiqlərlə tam inteqrasiya mexanizmlərini tətbiq edir.

8.3.6 versiyasında yuxarıda təsvir olunan funksiyalar yeni xüsusi GetMutableFields () və SetMutableFields () metodlarının köməyi ilə genişləndirilmişdir. Onların köməyi ilə, VIEW cədvəlinin konfiquratorda yalnız oxumaq üçün işarələnmiş sahələrində bir yazma əməliyyatı aparmaq mümkündür. Bunun sayəsində TID cədvəlinin ayrı -ayrı sahələrinə yazmağın yalnız tətbiqin iş məntiqinə uyğun olaraq lazım olduğu halda mümkün olduğu bir ssenarini həyata keçirmək mümkün oldu.

8.3.7 versiyasında, görünüş cədvəllərinin hansı xüsusi sahələrində NULL dəyərlər ola biləcəyini təyin edən mexanizm təkmilləşdirildi. Bu nöqtəyə qədər bütün görünüş masaları bu dəyəri götürə bilər. Bu dəyişiklik, dinamik siyahılarda bu sahələrə görə sıralama sürətinin artması ilə əlaqədardır.

8.3.8 versiyası ilə nəhayət xarici bir məlumat mənbəyinin əməliyyat vəziyyətində olub olmadığını müəyyən etmək mümkündür. Bu funksionallıq yeni ExternalDataSourceManager.TransactionActive () metodu ilə tətbiq olunur.

Sonda qeyd edirik ki, yuxarıda göstərildiyi kimi xarici məlumat mənbələri üçün klassik əlaqəli modeldən olan məlumat cədvəlləri təsvir edilmişdir. Platforma, digər tərəfdən, məlumatlarla işləmək üçün fərqli bir paradiqmadan istifadə edərək, geliştiriciyə müəyyən növ tətbiq obyektləri (kataloqlar, sənədlər, reyestrlər və s.) Buna görə də sistem xarici məlumat mənbələri cədvəlləri ilə işləyərkən öz "doğma" obyektlərinə xas olan çox funksiyanı dəstəkləmir. Buna görə, VID cədvəllərinin istifadəsini nəzərə alaraq bir növ iş məntiqi inkişaf etdirməkdən çəkinmək tövsiyə olunur, əgər bu artıq inteqrasiya vəzifələri ilə əlaqəli deyilsə. mövcud sistemlər... Ya da sadə dillə desək, tətbiqinizdə fəal şəkildə istifadə olunan məlumatları başqa bir cədvəldə saxlamamağa çalışmalısınız. xarici sistem bu sistem tərəfindən istifadə edilmədikdə.

Növbəti məqalədə 1C: Enterprise sistemində xarici məlumat mənbələri texnologiyasından istifadənin məntiqi davamını nəzərdən keçirəcəyik.

1s deyil, məlumatlarla işləmək üçün, məsələn: SQL verilənlər bazası, Giriş bazası, Excel faylı və bir çox digərləri, 8.2.14 versiyasından başlayaraq texnoloji platformaya Xarici məlumat mənbələri adlı bir mexanizm (obyekt) təqdim edildi.

Bu yazıda necə qarşılıqlı təsir etdiyinə baxaq bu obyektöyrəşdiyimiz Excel faylı ilə. Məsələn, * .xls faylından verilənləri 1C verilənlər bazasına müəyyən tezliklə oxumağa ehtiyac var. Əvvəllər Com obyektlərini istifadə edərək işə salmalı idiksə, onda dəyərlər cədvəli yaradın, məlumat sətirini sətirlə oxuyun, indi manipulyasiya məlumatları yox olur. Xarici Məlumat mənbəyindən istifadə edərkən dərhal sorğu edə və məlumat ala bilərik.

Tutaq ki, var Excel iş dəftəri aşağıdakı məzmun. Hansı məlumatları oxumalıyıq.

Əvvəla, konfiqurator rejimində yeni bir məlumat mənbəyi əlavə edin və onu da Excel adlandırın.

İndi məlumatları, sonra 1C -də sahib olacağımız sahələri olan bir cədvəl əlavə etməliyik. Sütunlar faylda adlandırıldığı kimi onları da eyni şəkildə yaradaq. Bunu etmək üçün yaradılan obyektə gedin və Məlumat sekmesinde Əlavə et düyməsini basın. Burada 1c-in avtomatik olaraq özünü konfiqurasiya etməyə çalışdıqda tez-tez problemlər olduğu üçün onu əllə yaratmağı məsləhət görürəm.

Cədvəlimizin adını DataTable -a təyin edəcəyik. Bundan sonra, Məlumat sekmesine gedin və sahələr yaradın (fayla bənzər).

Hər bir sahənin xüsusiyyətlərində, məlumat mənbəyində Ad, Tip və Adı göstərməlisiniz (faylla eyni).
Məlumat mənbəyində bir ad təyin edirik. Burada vərəqin adını *ilə göstəririk. sonunda "$" işarəsi olan xls. Sheet1 $ var.
Açar sahələri göstərdiyinizə əmin olun. Burada, verilənlər bazası nəzəriyyəsindən, sətrin tam unikallığını təmin edəcək sahəni göstərmək lazımdır.
Təqdimat sahəsi - sətrin qısa bir təsvirini təmin edəcək sahəni göstəririk, bizim vəziyyətimizdə Nomenklatura.

Hər şey! Bu əslində bütün ayardır. Sonra hər hansı bir prosedurda əlaqə simini göstərməlisiniz və bağlandıqdan sonra məlumat mənbəyi ilə işləyə bilərsiniz.

Üçün əlaqə xətti XLS faylları X (Ofis versiyası 2007 və yuxarı)

Sürücü = (Microsoft Excel Sürücüsü ( * .xls, * .xlsx, * .xlsm, * .xlsb)); DBQ = D: \ FileExcel.xlsx;

XLS və daha əvvəlki fayllar üçün əlaqə simli.

Sürücü = (Microsoft Excel Sürücüsü (* .xls)); Sürücü id = 790; DBQ = D: \ FileExcel.xls;

Yenisini yaradaq xarici emal, əlaqəni bağlayacaq və bildirəcəkdir.

Prosedur Düyməni basaraq (Button) ConnectionParameters = New ExternalDataSourceConnectionParameters; Bağlantı parametrləri. ConnectionString = “Sürücü = (Microsoft Excel Sürücüsü (*. Xls)); Sürücü id = 790; DBQ = D: \ meyvə. xls; "; ExternalDataSources. Excel. SetGeneralConnectionParameters (ConnectionParameters); ExternalDataSources. Excel. Bir əlaqə qurun (); İstək = Yeni İstək (); Sorğu. Mətn = "SEÇ | Məlumat Cədvəli. Kod, | Məlumat Cədvəli. Nomenklatura, | Məlumat Cədvəli. Edizm, | Məlumat Cədvəli. Miqdarı | QAYDADAN | ExternalDataSource. Excel. Cədvəl. Məlumat Cədvəli AS Məlumat Cədvəli "; TK = İstək. İcra etmək ( ). Boşaltma (); Hesabat ("Bağlandı"); Prosedurun sonu

Bir dayanma nöqtəsi təyin etsək və TK -da nə olduğunu görsək, aşağıdakıları görəcəyik:

P.S. Excel faylının özündə, sahələrin adlarından əvvəl heç bir şey olmamalıdır boş xətlərəks halda odbc xətası atılacaq. sqlstate 07002 (excel odbc driver çox az parametr).

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

Ancaq işdə, məlumatların bir hissəsi başqa bir yerdə saxlanıldıqda bir vəziyyət yaranır.

  • İnternet mağaza (ümumiyyətlə məlumatları xarici MySQL / SQL verilənlər bazasında saxlayır)
  • Başqa bir baza.

Digər məlumat bazalarında saxlanılan bu cür məlumatlarla işləmək üçün xüsusi mexanizmlər hazırlamaq lazımdır.

1C 8.2.14 versiyasında, proqramçı işini xeyli asanlaşdıran Xarici məlumat mənbələri 1C adlı yenisi ortaya çıxdı, çünki:

  • indi məlumatların qəbulu üçün xüsusi mexanizmlər yaratmağa ehtiyac yoxdur
  • bu cür məlumatlara adi qaydada daxil olmaq mümkündür
  • bu cür məlumatları 1C siyahılarında görmək olar.
    • Xarici məlumat mənbəyi 1C - xarici SQL verilənlər bazası

      Tutaq ki, ehtiyac duyduğumuz məlumatları saxlayan bir SQL verilənlər bazamız var. 1C Xarici Məlumat Qaynağı mexanizmindən istifadə edərək ondan məlumatları oxumağa çalışaq.

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

      1. Bağlantı

      Yeni bir xarici məlumat mənbəyi 1C əlavə edək, özbaşına adlandıraq.

      Verilənlər bazası cədvəllərdən ibarətdir. 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ə bir əlaqə xətti istəyəcək. Əl ilə daxil edilə bilər və ya yaradıla bilər, bunun üçün "..." düyməsini basmalısınız.

      Xüsusi vəziyyətimizdə bir sürücü olaraq "SQL Server" seçəcəyik.

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

      1C SQL -ə qoşulacaq və siyahıdan müəyyən bir verilənlər bazası 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ə sütunlarını göstərəcəkdir. Lazımi cədvəlləri yoxlama işarələri ilə seçmək lazımdır.

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

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

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

      1C platformasının 1C istinad kitablarında olduğu kimi xarici bir masa ilə işləməsi üçün cədvəldə əlavə parametrlər göstərilə bilər:

      • Açar sahəsinin xüsusiyyətində, sətrin unikal identifikasiyasını təmin edəcək sütunlardan birini göstərin; bir neçə sətir unikallığı təmin edərsə bu yolla işləmir (Kod sahəsinin analoqu)
      • Təqdimat sahəsinin xüsusiyyətində, sətrin qısa təsvirini təmin edəcək sütunlardan birini göstərin (Ad sahəsinə bənzər)
      • Cədvəl məlumat növü xüsusiyyətində Obyekt məlumatlarını göstərin.

      2. Baxış

      Uzaq bazaya qoşulma avtomatik olaraq edilmir. Bağlanmaq üçün tipik bir menyu seçməlisiniz.

      Standart filialda, əlaqə parametrlərini (1C Enterprise rejiminə aid olan) təyin etməyə və qoşulmağa imkan verən xarici məlumat mənbələrini idarə et xüsusi bir əmri var.

      Əvvəlcə verilənlər bazasına qoşulmaq üçün parametrləri göstərməlisiniz.

      Parametrləri konfiquratorda qurduğunuzda, nəticədə sizə əlaqə simini göstərdi. Yenidən konfiquratorda Cədvəl əlavə et düyməsini basaraq bunu görə bilərsiniz.

      Bağlantı simini kopyalayın və 1C Enterprise rejimində göstərin.

      Bundan sonra həqiqi əlaqəni 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ə olan proqram kodundan da edilə bilər.

      Bağlantı parametrləri aşağıdakı kimi təyin olunur:
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetGeneralConnectionParameters ();

      ConnectionParameters.AuthenticationStandard = Doğru;
      Bağlantı Parameters.UserName = "sa";
      Bağlantı Parameters.Password = "parol";
      Connection Parameters.ConnectionString = "konfiquratordan əlaqə simli";
      Bağlantı Parametrləri.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetGeneralConnectionParameters (ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters (İstifadəçi Adı (), Parametrlər);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters (Parameters);
      ExternalDataSources.SourceNameConfigurator.InstallConnection ();

      Adi məlumatlardan istifadə edərək verilənlər bazasından məlumat sorğu edə bilərsiniz. Xarici qaynaq OurExternalSource və ExternalSourceTable cədvəlləri üçün nümunə sorğu mətni:

      SEÇİN
      ExternalSourceTable.FieldName
      BURADAN
      ExternalDataSource.OurExternalSource.Table.ExternalSourceTable "

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

      Başqa bir variantı sınayaq - xarici 1C məlumat mənbəyi ilə Excel faylı ilə işləmək.

      Sadə bir Excel faylı yaradaq.

      Xarici bir qaynaq əlavə edək, adını FileExcel qoyaq. Buna "Sheet1 $" cədvəlini əlavə edək. Asanlıqla görə biləcəyiniz kimi, Excel -də "$" simvolu əlavə olunan vərəqin adı budur.

      SQL -də olduğu kimi sütunlar əlavə edək. Əl ilə əlavə edilə bilər. Əlavə edilmiş sütun növlərinin yazışmalarını izləmək vacibdir, əks halda daha sonra "Məlumat növlərinin uyğunsuzluğu" tipli bir səhv əldə edə bilərsiniz.

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

      Excel üçün bir xüsusiyyət var ("Çox az parametr. 3 tələb olunur" kimi bir səhv):

      • Birinci sətirdə olarsa Excel cədvəlləri sütunların adları yerləşir, onda bu sütunun adını göstərməlisiniz, məsələn, "Kod".
      • Əks təqdirdə, "Sheet1 $ .Code" cədvəl adı ilə tam adı göstərməlisiniz, ancaq parametrlərə "HDR = NO;" əlavə edin.

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

      • XLSX faylları (Office 2007 və daha yüksək)
        Sürücü = (Microsoft Excel Sürücüsü ( * .xls, * .xlsx, * .xlsm, * .xlsb)); DBQ = D: \ FileExcel.xlsx;
      • XLS faylları (əvvəllər)
        Sürücü = (Microsoft Excel Sürücüsü (* .xls)); Sürücü id = 790; DBQ = D: \ FileExcel.xls;
        Öz adınızı və fayla gedən yolu göstərməlisiniz.

Release 8.2.14.533, nəhayət, platformanın 14 -cü buraxılışının az -çox sabit bir versiyasıdır. Nəhayət, gözəl bir fürsəti - "xarici məlumat mənbələrini" sınamaq üçün fürsət özünü təqdim etdi.

Bu fürsət niyə bu qədər maraqlıdır? Eyni zamanda 1C -də proqramlaşdıran hər kəs SQL ilə kifayət qədər tanışdır və ən azından ümumi mənada işgüzar tətbiqlər üçün digər texnologiya platformalarının inkişaf etdirilməsinin arxitekturası və prinsipləri ilə tanış olan hər kəs, 1C -də ən çox nəyi sevdiyini sizə xəbər verəcəkdir. Əlbəttə ki, sorğu qurucusu, şəxsən rastlaşdığım əlaqəli strukturlardan məlumat əldə etmək üçün sorğu yazmaq üçün ən əlverişli və inkişaf etmiş mexanizmdir. İndi 1C bizə yalnız 1C ilə deyil, hər hansı digər masalarla da istifadə etmək üçün gözəl bir fürsət verdi. Budur, bu "bal barelinə" tökülən "məlhəmdə uçmaq" dəstəsi. Hər şey qaydasında:

1) Qurmaq və istifadə etmək - "bir dəfinlə rəqs etmədən" işləməyəcək

A) Xarici bir məlumat mənbəyi əlavə edin - mürəkkəb bir şey yoxdur
b) "Siyahıdan seçin" işarəsini qoyun - lazımdır - bu, əvvəlində performansı yoxlamaq üçün lazımdır və sizi lazımsız problemlərdən xilas edəcək.
v)
(IMG: http: //pics.livejournal.com/comol/pic/0000cr1r.png)
- "..." düyməsini basdığınızdan əmin olun - əlaqə ODBC -dir. Hamımızın öyrəşdiyi kimi OLEDB deyil, aşağıda bir səviyyə

Burda ol ÇOX DİQQƏTLİ.

Bu bir ODBC sürücüsüdür - müştəri -server versiyasını istifadə edirsinizsə, serverdə olmalıdır. Bir sistem üzərində inkişaf edirsinizsə və işləyən versiya digər tərəfdən (adətən olduğu kimi) sizin üçün heç bir sürpriz olmadığından əmin olun. Qəribə bir tövsiyə, ancaq sürəti xüsusilə narahat etmirsinizsə və SQL92 standartının imkanlarından kənara çıxmaq fikriniz yoxdursa, ən köhnə və ya ən ümumi sürücünü seçin. Bu sizə ən yaxşı uyğunluğu verəcək. Məsələn, SQL Server 2008 üçün ən yaxşı sürücü SQL Server Native Client 11 olacaq, amma yalnız SQL Server 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 (fayl versiyasından istifadə edildikdə) quraşdırılmalıdır. sadə işlərə çox fayda vermir.

E) Standart Server seçim dialoqları

G) Cədvəl və detallar seçin ... əla bir fürsət - istədiyiniz kimi dərhal adını dəyişə bilərsiniz (həm də detalları), xüsusiyyətlərdə isə məlumat mənbəyi sahələrinin adlarını göstərəcəksiniz.

H) İndi başladın, sorğu tərtibatçısını açın - axmaqlıqla cədvəldən bütün qeydləri seçirsən və OPA - bir səhv. Nə etməli? İdarə olunan bir interfeysiniz varsa, xidmət menyusuna baxın və müntəzəmdirsə ...
Şəxsən mən aşağıdakı kodu istifadə etdim:

Parametrlər = ExternalDataSources.DAX.GetGeneralConnectionParameters ();
Parameters.AuthenticationStandard = Doğru;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER = (SQL Server); SERVER = server; UID = sa; PWD =; DATABASE = verilənlər bazası";
Parameters.DBMS = "MSSQLServer";

ExternalDataSources.DAX.SetGeneralConnectionParameters (Parameters);
ExternalDataSources.DAX.SetUserConnectionParameters (İstifadəçi Adı (), Parametrlər);
ExternalDataSources.DAX.SetSessionConnectionParameters (Parameters);

ExternalDataSources.DAX.InstallConnection ();

Bəlkə bəzi parçalara ehtiyac yoxdur, amma işləyir. Kodu icra etməlisiniz BİR DƏFƏ... Bundan sonra normal olaraq bağlanacaq ... əlbəttə mistisizm - nəyə 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 çox istəyirsən ...

3) DAXİLİ MƏLUMAT KAYNAKLARI İLƏ BİRGƏ İSTİFADƏ EDİLMƏZ
Bu fakt məni şəxsən öldürdü.

Necədir ... sonra gözlədikləri və artıq təqdim etdikləri və dodaqlarını yaladıqları üçün indi bir istəkdə məlumatlarımızı 1C ilə birləşdirəcəyik, çökəcəyik - qruplaşdıracağıq, hesabata daxil edəcəyik, amma belə idi orada deyil ...

Ancaq təbii olaraq təcrübəli insanlar bununla dayanmır ... ağlına nə fikir gəldi? Düzdür - müvəqqəti cədvəllər:

4) ONLARI VAQT CƏDVƏLLƏRİ İLE BİRGƏ İSTİFADƏ ETMƏYİN

Ancaq bu texnoloji çətinliklərə bənzəmir, amma "həyat cənnətə bənzəməsin" (IMG :) istədiklərimizə çox bənzəyir.

5) Yalnız ACS əlaqələrində istifadə edilə bilər

Bilməyənlər üçün - bu "Dataset Links" sekmesinde ACS -də. Onlardan tez -tez istifadə edirsiniz? Rahat? Görünür, bizi onlardan daha tez -tez istifadə etməyə məcbur etmək istəyirlər. Yalnız "Bağlantı Şərti" və "Bağlantı Parametrləri" sütunu var. Heç bir tipik konfiqurasiyada istifadə nümunəsi tapmadım; sənədlərdə və Xrustalevada hər şey birtəhər şəffaf deyil. Kimsə mənə "keçid şərti" nin necə işlədiyini izah edə bilər. Orada Source Props = Receiver Revision yazsanız işləmir. Əlbəttə ki, şərt "İfadə" sahəsində yazıla bilər - əksər hallarda bu kifayətdir ... amma nədənsə onu əldə etmək çox da asan deyil.

Ümumiyyətlə, bu vəzifə əvvəllər belə bir yerdə həll edildi:

InitializeDataSource () funksiyası

StartDate = SettingsComposer.Settings.DataParameters.Elements.Value;
DateCon = SettingsComposer.Settings.DataParameters.Elements.Value;
Əgər DateCon> "20100101" olarsa
DateCon = "20100101";
EndIf;

CC = Yeni Təsnifat Nömrələri (15.2);
KS = Yeni String Təsnifatçıları (255);

ArrayNumber = Yeni Array ();
ArrayNumber.Add (Növ ("Sayı"));

ArrayString = Yeni Array ();
ArrayString.Add (Növ ("String"));

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

// Cədvəldə mühasibat xərclərini dolduracağıq
TypeNumber = Növlərin Yeni Təsviri (ArrayNumber, CN);
TypeString = Növlərin NewDescription (ArrayString, KS);
TypeDate = NewDateDescription (ArrayDate);

// SQL -dən məlumat yükləmək üçün cədvəl
TK = Yeni Dəyərlər Cədvəli ();
TZ.Kolonki.Add ("NomenclatureCode", StringType);
TK.Columns.Add ("Qnty", TypeNumber);
TK.Kolonki.Add ("Dövr", TypeDate);

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

// SQL -ə qoşulun
ConnectionString = "Təchizatçı = SQLOLEDB.1; Davamlı Təhlükəsizlik Məlumatı = Doğru; İstifadəçi ID = sa; Pwd =; Məlumat Mənbəsi =; Hazırlanma İstifadə Proseduru = 1; Avtomatik Tərcümə = Doğru; Paket Ölçüsü = 4096; İş İstasyonu ID =; Şifrələmədən istifadə edin Məlumat üçün = Yanlış; Mümkün olduqda sütun yığımı ilə etiket = Yanlış; İlk Kataloq = Hesabatlar ";
Bağlantı = Yeni COMObject ("ADODB.Connection");
Komanda = Yeni COMObject ("ADODB.Command");
RecordSet = Yeni COMObject ("ADODB.RecordSet");
Tarix = "";
Cəhd
Connection.Open (SocrLP (ConnectionString));
Command.ActiveConnection = Bağlantı;
Command.CommandText = "PH -dən * seçin" burada period> = "" + String (Format (DateStart, "DF = yyyyMMdd")) + "" və dövr RecordSet = Command.Execute ();
RecordSet.MoveFirst ();
İstisna
TK qaytarılması;
Cəhdlərin sonu;

RecordSet.EOF = Yanlış Döngə
String = TK.Add ();
String.NomenclatureCode = RecordSet.Fields (RecordSet.Fields.Item (1) .Ad) .Dəyər;
String.Qnty = RecordSet.Fields (RecordSet.Fields.Item (12) .Ad) .Dəyər;
String.Period = RecordSet.Fields (RecordSet.Fields.Item (13) .Ad) .Dəyər;
RecordSet.MoveNext ();
Dövrün sonu;

İstək = Yeni İstək ();
VRTable = NewTemporaryTablesManager ();
Request.SetParameter ("vrTableData", TK);
Request.SetParameter ("StartDate", StartDate);
Request.SetParameter ("DateCon", DateCon);
Request.Text = "SEÇ
| vpDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vpDataTable.Period
| POST Məlumat Cədvəli
|
| & vrDataTable AS vrDataTable
| HARADA
| timeDataTable.Period> = & StartDate
| VRDataTable.Period Request.Run ();
TK = Müəyyən edilməmiş;

İstək = Yeni İstək;
Query.TemporaryTablesManager = VRTable;
Query.Text = "İşdə şifahi cədvəlin iştirak etdiyi sorğu";

Nəticə = Query.Run ();
Geri Ödəmə Nəticəsi;

EndFunction

OuterSet = InitializeDataSource ();
Dataset = Yeni Struktur ();
DataSet.Insert ("SQL Cədvəli", ExternalSet);
Tipik Hesabatlar. Tipik Hesabat Yarat (ThisObject, Nəticə, Məlumatların Çözülməsi, Hesabat Formasına Çıxış, Dataset);

Əslində çox sayda kod xətləri yoxdur və onlar olduqca standartdır ... eyni zamanda sorğu tərtibatçısının tam funksiyasından istifadə edə və ACS -də yalnız DATA LINK funksiyasını verə bilərsiniz.

Ancaq əlbəttə ki, bir o qədər də gözəl görünmür ... və hər dəfə kodu yazmaq və detallar adına səhv etdiyinizi yoxlamaq üçün dəyərlər cədvəlinə boşaltma ... 1C görünüşdə yarı ürəkli verildi. Hələ istifadə etmək üçün daha əlverişli olduğuna qərar verməmişəm. Siz qərar verin və qərarlarınız və bunları sizə nəyin səbəb olduğunu yazın.

[linki görmək üçün qeydiyyatdan keçməlisiniz]


2021
maccase.ru - Android. Markalar. Dəmir. xəbərlər