Sa platform na bersyon 8.3.5.1068 (at mas bago), naging posible na magdagdag, magbago at magtanggal ng data sa mga panlabas na mapagkukunan software 1C. Ang mga halimbawa ng tampok na ito ay ipinakita sa artikulong ito.

Upang gawing posible ang pag-record sa mga external na source, nagdagdag ang kumpanya ng 1C ng mga bagong property sa mga talahanayan ng data at field ng mga external na source:

  • Para sa buong talahanayan - ari-arian Read Only. ReadOnly = Totoo nangangahulugan na ang pagbabago ng data sa talahanayang ito ay imposible;
  • Para sa mga indibidwal na patlang ng talahanayan - mga katangian Read Only, AllowNull At Punan ang Halaga:
    • ReadOnly = Totoo nangangahulugan na ang pagbabago ng data sa larangang ito ay imposible;
    • AllowNull = Totoo nangangahulugan na ang isang halaga ay maaaring isulat sa field na ito NULL;
    • Punan ang Halaga naglalaman ng default na halaga ng field na ito (kung mayroon man).

Ikaw (kapag inilalarawan ang mga talahanayan nang manu-mano) o ang platform (kapag gumagawa ng mga talahanayan gamit ang isang taga-disenyo) ay maaaring gumamit ng mga katangiang ito bilang mga sumusunod.

  • ReadOnly = Totoo itakda, halimbawa, para sa mga view, mga talahanayan na nakuha batay sa isang expression (resulta ng function) at mga katulad nito. Ang data sa naturang mga talahanayan ay hindi mababago;
  • ReadOnly = Totoo tukuyin para sa mga patlang na awtomatikong itinakda ( AUTOINCREMENT), mga kalkuladong field at iba pa. Hindi mababago ang data sa naturang mga field;
  • AllowNull = Totoo itinakda para sa lahat ng mga field maliban sa mga pangunahing field at ang mga inilalarawan sa isang panlabas na pinagmulan bilang HINDI NULL;
  • Punan ang Halaga dapat itakda ang mga patlang sa kaso kapag tinukoy ng panlabas na mapagkukunan ang karaniwang halaga ng field na ito (value DEFAULT).

Maaari kang magdagdag, magbago, at magtanggal ng data sa mga panlabas na mapagkukunan gamit ang built-in na wika o interactive. Ginagamit ng built-in na wika ang mga sumusunod na pamamaraan ng manager ng talahanayan para dito:

  • CreateRecordSet()- para sa mga talahanayan na hindi bagay;
  • Bagong paraan CreateObject()- para sa mga talahanayan ng bagay.

Alinsunod dito, ang mga bagay ExternalDataSourceTableRecordSet At ExternalDataSourceTableObject lumitaw ang mga bagong pamamaraan Sumulat() At Tanggalin().

Pagdaragdag ng Data

Kapag nagdagdag ka ng data sa isang panlabas na pinagmulan, lumikha ka ng isang bagay (o recordset), magtakda ng mga halaga ng field, at magsulat. Gayunpaman, mayroong ilang mga tampok na kapaki-pakinabang na malaman tungkol sa.

Halimbawa, kung susubukan mong itakda ang halaga ng isang field na mayroon ReadOnly = Totoo, isang error ang itatapon. At kapag direktang sumulat sa database sa expression INSERT lalaktawan ang mga naturang field. Ang natitirang mga patlang ay naglalaman ng mga halaga na iyong itinalaga sa kanila. Samakatuwid ang mga halaga Null at ang mga default na halaga ay dapat na tahasang italaga sa mga field.

  • id(AllowNull = True);
  • pangalan(AllowNull = True);
mFeature = ExternalDataSources.TableIm.shop_feature.CreateObject();

mCharacteristic.id = Code; Sumulat() mCharacteristic.name = Pangalan; mCharacteristic.Write(); Pagpapatupad ng Pahayag INSERT ay magiging dahilan upang matawagan muna ang event handler Bago ang Pagre-record.

, pagkatapos ay isasagawa ang pisikal na pagsulat sa panlabas na pinagmulang talahanayan ( INSERT), pagkatapos ay tatawagin ang tagapangasiwa ng kaganapan Kapag Nagre-record Magagawa mo ang sumusunod gamit ang key field ng external source table. Kung ang isang key field ay nababago, pagkatapos ay "manual" mong itakda ang halaga nito bago magsulat. Kung ipinagbabawal ang pagpapalit ng key field, hiwalay na matatanggap ng platform ang key in mCharacteristic.Write(); o kaagad pagkatapos. Maaari kang makagambala sa prosesong ito gamit ang pamamaraan Bago ang Pagre-record).

SetLinkNew()

bago ang pisikal na pag-record (sa event handler ) o kaagad pagkatapos ng pisikal na pag-record (sa event handler.

Pagbabago ng data

Kapag nagbago ang data, ang mga halaga ng lahat ng mga patlang ng talahanayan na mayroon ReadOnly = Mali At MFeature = ExternalDataSources.TableIm.shop_feature.FindByField("id",code); mObject = mCharacteristic.GetObject(); mObject.name = Pangalan; mObject.Write();.

Kung kailangan mong i-record lamang ang ilang mga patlang, maaari mong tukuyin ang isang listahan ng mga ito nang direkta mula sa built-in na wika gamit ang mga pamamaraan.

SetWritableFields() GetWrittenFields().

Tinatanggal ang data

Ang direktang pagtanggal ng data ay nagtatanggal ng isang hilera mula sa isang talahanayan ng database. Sa kasong ito, hindi isinasagawa ang paghahanap ng mga sanggunian sa bagay na tinatanggal. Kung kailangan ang naturang functionality, maaari mo itong i-program sa mismong tagapangasiwa ng kaganapan

BeforeDelete() MFeature = ExternalDataSources.TableIm.shop_feature.FindByField("id",Code); mObject = mCharacteristic.GetObject(); mObject.Delete();:

  • Mga transaksyon;
  • Ang pagbabasa ng data mula sa mga panlabas na mapagkukunan, tulad ng dati, ay ginagawa sa labas ng isang transaksyon, at kapag nagsusulat, ang platform ay nagbubukas ng isang implicit na transaksyon. Kasabay nito, maaari mong isagawa ang parehong pagbabasa at pagsusulat sa mga tahasang transaksyon gamit ang mga object method;
  • ExternalDataSourceManager.

StartTransaction()

  • CommitTransaction();
  • CancelTransaction();
  • Mga kandado.

Auto Pinamamahalaan:

Bilang karagdagan, maaari mong independiyenteng itakda ang antas ng pag-lock sa pamamaraan Mga transaksyon.

Nagdagdag ako ng mga halimbawa sa karaniwang artikulo) Kung mayroon akong mas maraming oras, magdaragdag ako ng higit pang mga halimbawa.

Sa bersyon 8 ng programang 1C, idinagdag ng mga developer sa pag-andar ang kakayahang kumonekta sa mga database ng third-party at makakuha ng impormasyon mula sa kanila nang direkta mula sa configurator, nang hindi gumagamit ng Mga koneksyon sa COM at mga bagay na OLE. Ang tampok na ito ay ipinatupad gamit ang isang bagong bagay - "Mga Panlabas na Pinagmumulan ng Data"

Ang mga panlabas na mapagkukunan ng data sa 1C ay maaaring gamitin sa parehong paraan tulad ng iba pang mga talahanayan sa system:

  1. Kapag gumagawa ng mga ulat at kalkulasyon gamit ang isang data composition system (DCS);
  2. Upang makakuha ng mga link sa impormasyong nakaimbak sa mga mapagkukunan ng third party;
  3. Upang baguhin ang data na nakaimbak sa mga talahanayan;
  4. Kapag bumubuo ng mga kahilingan.

Mahalagang malaman na ang mekanismong ito ay hindi idinisenyo upang gumana sa iba pang mga database ng 1C, dahil ang 1C.Enterprise operating model mismo ay hindi nagpapahiwatig ng pagkagambala sa data sa antas ng mga pisikal na talahanayan.

Paglikha ng bagong pinagmulan

Ang pagdaragdag ng isang bagong panlabas na mapagkukunan sa programa ay nangyayari sa "Configurator" mode. Mayroong kaukulang sangay sa puno ng pagsasaayos (Larawan 1)

Kailangan mong magtrabaho nang husto kapag lumilikha ng isang bagong mapagkukunan, sa kabila ng katotohanan na ang anyo ng bagong bagay ay may apat na tab lamang:

  1. Basic;
  2. Data;
  3. Mga Pag-andar;
  4. Mga karapatan.

Ang unang tab ay mayroon lamang isang kawili-wiling parameter - ang lock control mode. Kung wala kang mga tanong tungkol sa pagharang ng data sa mga transaksyon o tungkol sa mga intricacies ng pag-parallelize ng mga daloy ng impormasyon, maaari mong iwanan ang parameter na ito sa mode awtomatikong pag-lock. Gayunpaman, ang gayong diskarte ay maaaring humantong sa labis na mga paghihigpit (halimbawa, kapag, sa halip na isang hiwalay na rekord, ang programa ay nagla-lock sa buong pisikal na talahanayan, na nag-aalis ng iba pang mga gumagamit ng kakayahang magtrabaho kasama nito).

Pinamamahalaang mga kandado, hindi tulad ng mga awtomatiko, gumagamit sila ng mekanismo ng transaksyon na naka-embed sa mismong programa, at hindi sa DBMS, na nagpapahintulot sa mga pagkuha ng talahanayan na mailipat sa mas mababang antas.

Sa pamamagitan ng pagtatakda ng parameter na ito sa "Awtomatiko at Pinamamahalaan," binibigyan namin ang system ng kakayahang matukoy kung aling mode ang gagamitin sa pamamagitan ng direktang pag-access sa isang katulad na property para sa bawat partikular na talahanayan.

Tab na "Data" ng form ng external na source na katangian

Ang anyo ng tab na "Data" ay ipinapakita sa Fig. 2

kanin. 2

Dito maaari tayong magdagdag ng mga external na source table at cube. Mayroong dalawang paraan upang magdagdag ng talahanayan:

  1. Manu-manong, pagkatapos ay magbubukas ang form para sa pagdaragdag ng talahanayan sa harap namin (Larawan 3);

kanin. 3

  1. O pumili mula sa listahan ng mga talahanayan ng pisikal na pinagmulan (Larawan 4), kung saan may isang espesyal na tagabuo na bubukas sa harap namin.

kanin. 4

Tingnan natin ang form para sa pagdaragdag ng talahanayan. Ang property na "Pangalan" ay ginagamit upang natatanging tukuyin ang isang bagay sa configuration.

Ang paghahambing ng metadata object at ang panghuling pisikal na talahanayan ay nangyayari sa pamamagitan ng property na "Pangalan sa data source" na matatagpuan sa tab na "Advanced" (Fig. 5)

kanin. 5

Susunod, dapat nating matukoy ang uri ng talahanayan, o sa halip ang pagiging objectivity nito. Kung ang data na nakaimbak sa isang istraktura ay maaaring natatanging makilala sa pamamagitan ng alinman sa isang field, ang talahanayan ay maaaring maging isang bagay. Kung ang indibidwalidad ng isang tala ay tinutukoy ng isang hanay ng mga pangunahing field, ang talahanayan ay dapat na may hindi uri ng bagay.

Ang paghahambing ng mga naturang talahanayan sa iba pang mga bagay ng metadata, ang sumusunod na pagkakatulad ay maaaring ibigay:

  • Ang mga talahanayan ng bagay ay mga sangguniang aklat;
  • Ang mga hindi bagay ay mga rehistro ng impormasyon.

Ang hanay ng mga pangunahing field ay tinukoy sa susunod na parameter ng form ("Mga Key Field"). Kinakailangan ang field na ito kung iiwan mo itong blangko, mabibigo ang pag-save ng configuration.

Tulad ng makikita mula sa Fig. 5, ang ilang mga patlang at mga pindutan ng form ay hindi nae-edit:

  • Expression sa data source;
  • Uri ng data ng talahanayan;
  • Larangan ng pagtatanghal;
  • Tingnan ang mga humahawak.

Magagamit lamang ang mga ito pagkatapos naming punan ang mga field ng talahanayan, tukuyin ang kanilang uri at magtalaga ng mga identifier sa kanila (Fig. 6)

kanin. 6

Dito dapat mong bigyang-pansin ang parameter na "Allow Null" kung ang checkbox na ito ay naka-check, hindi ipinapayong gamitin ang naturang field bilang isang susi.

Tagabuo ng mesa

Marahil ang pinakamahalaga at kawili-wiling punto sa pagtatrabaho sa mga panlabas na mapagkukunan ay ang paglikha ng isang string ng koneksyon. Magbubukas ang constructor nito kung iki-click mo ang button na may tatlong tuldok sa tabi ng parameter na "Connection string".

Una sa lahat, hihilingin sa amin na magpasya sa driver na gagamitin para sa koneksyon (Larawan 7)

kanin. 7

Ang maling kahulugan ng parameter na ito ay hindi magpapahintulot sa iyo na kumonekta sa isang third-party base ng impormasyon. Dapat mo ring maunawaan na hindi lahat ng driver na tinukoy sa drop-down na listahan ay maaaring gamitin upang awtomatikong bumuo ng isang string ng koneksyon. Kung ang platform ay bubuo ng isang error (Larawan 8), kung gayon ang string ng koneksyon ay kailangang manu-manong ipasok.

Fig.8

kanin. 9

Ang linya mismo ay isang mahigpit na kinokontrol na konstruksyon.

Halimbawang string ng koneksyon

Isaalang-alang natin ang isang third-party na database na nilikha sa Microsoft Access at matatagpuan sa ugat ng drive D. Upang ikonekta ang database na ito, dapat nating gamitin ang naaangkop na driver, ngunit ang pagpili nito sa row constructor ay nagreresulta sa error na Fig. 8.

Kami mismo ang magse-set up ng mga parameter ng koneksyon.

Driver=(Microsoft Access Driver (*.mdb)) – ito ang hitsura ng unang bahagi ng linya. Sa mga kulot na braces ay tinukoy namin ang driver.

Para sa mga file ng Excel ito ay magmumukhang ( Microsoft Excel Driver (*.xls)), para sa mga Excel file na ginawa sa isang opisina na mas matanda sa 2003, ang linya ng driver ay magmumukhang (Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)).

Ang paghihiwalay sa parameter na ito mula sa susunod na may kuwit, dapat naming ilagay ang address ng aming imbakan (sa aming kaso DBQ=D:\Database1.mdb).

Pagdaragdag ng dalawang parameter na ito, makakakuha tayo ng Driver=(Microsoft Access Driver (*.mdb));DBQ=D:\Database1.mdb.

Para sa object na "External Source", hindi sapat na gawin lamang ito sa configuration; Magagawa ito mula sa menu na "Lahat ng mga pag-andar"->Mga panlabas na mapagkukunan. Sa unang pagpasok namin sa aming talahanayan, kailangan naming ipasok ang parehong string ng koneksyon sa mode na "Enterprise".

Makipagtulungan sa kanila sa mga listahan sa 1C Enterprise mode.

Gayunpaman, sa trabaho ay madalas na isang sitwasyon kung saan ang bahagi ng data ay naka-imbak sa ibang lugar.

  • Online na tindahan (karaniwang nag-iimbak ng data sa isang panlabas na database ng MySQL/SQL)
  • Isa pang base.

Upang gumana sa naturang data na nakaimbak sa ibang mga database, kailangang bumuo ng mga espesyal na mekanismo.

Sa bersyon 1C 8.2.14, may lumabas na bago na tinatawag na 1C External Data Sources, na lubos na nagpapadali sa gawain ng programmer, dahil:

  • ngayon ay hindi na kailangang lumikha ng mga espesyal na mekanismo para sa pagkuha ng data
  • maaaring ma-access ang naturang data sa karaniwang paraan
  • maaaring matingnan ang naturang data sa mga listahan ng 1C.
    • Panlabas na data source 1C – panlabas na database ng SQL

      Sabihin nating mayroon tayong SQL database kung saan nakaimbak ang data na kailangan natin. Subukan nating basahin ang data mula dito gamit ang mekanismo ng 1C External Data Source.

      Magdagdag tayo ng external na 1C data source. Kailangan mong pumunta sa configurator, ang mga panlabas na mapagkukunan ng data ay matatagpuan sa window ng pagsasaayos, sa pinakailalim ng puno.

      1. Koneksyon

      Magdagdag tayo ng bagong external na data source na 1C, pangalanan ito nang basta-basta.

      Ang database ay binubuo ng mga talahanayan. Kailangan naming idagdag ang mga ito sa loob ng idinagdag na external na data source. I-click ito i-right click mouse at piliin ang Add Table.

      Sa unang pagkakataon, ipo-prompt ka nitong magbigay ng string ng koneksyon. Maaari itong maipasok nang manu-mano, o nabuo sa pamamagitan ng pag-click sa "..." na buton.

      Sa aming partikular na kaso, pipiliin namin ang "SQL Server" bilang driver

      Punan natin ang mga pangunahing parameter para sa pagkonekta sa SQL. Ang pangalan ng server ay maaaring ipasok o mapili mula sa listahan.

      Kokonekta ang 1C sa SQL at mag-aalok na pumili ng isang partikular na database mula sa listahan.

      Pagkatapos nito, magpapakita ang 1C ng isang listahan ng mga talahanayan sa database na ito at ang kanilang mga column. Kailangan mong lagyan ng tsek ang mga kahon upang piliin ang mga kinakailangang talahanayan.

      Idadagdag ang mga talahanayan at column. Ang mga pangalan ay magiging kapareho ng mga ito ay tinukoy sa remote database. Sa 1C maaari mong palitan ang pangalan ng mga ito (sa mga katangian).

      Narito ang isang halimbawa ng idinagdag na talahanayan:

      Narito ang isang halimbawa ng idinagdag na column:

      Upang gumana ang 1C platform sa isang panlabas na talahanayan sa parehong paraan tulad ng ginagawa nito sa mga direktoryo ng 1C, maaari mong tukuyin ang mga karagdagang parameter sa talahanayan:

      • Sa property na Key Field, tukuyin ang isa sa mga column na magbibigay ng natatanging pagkakakilanlan ng row; kung ang pagiging natatangi ay tinitiyak ng ilang linya, kung gayon ang pamamaraang ito hindi gumagana (katulad sa field ng Code)
      • Sa property ng Presentation Field, tukuyin ang isa sa mga column na magbibigay ng maikling representasyon ng linya (katulad sa field na Pangalan)
      • Sa property ng uri ng data ng talahanayan, tukuyin ang Object data.

      2. Tingnan

      Ang koneksyon sa remote base ay hindi awtomatikong ginagawa. Upang kumonekta, kailangan mong pumili ng karaniwang menu.

      Sa Standard branch matatagpuan espesyal na koponan Pamamahala ng external na data source, na nagbibigay-daan sa iyong tukuyin ang mga parameter ng koneksyon (partikular sa 1C Enterprise mode) at gumawa ng koneksyon.

      Una kailangan mong tukuyin ang mga parameter para sa pagkonekta sa database.

      Kapag ginawa mo ang mga setting sa configurator, ipinakita nito sa iyo ang string ng koneksyon bilang isang resulta. Makikita mo itong muli sa pamamagitan ng pag-click muli sa Add Table sa configurator.

      Kopyahin ang string ng koneksyon at tukuyin ito sa 1C Enterprise mode.

      Pagkatapos nito, kailangan mong gawin ang aktwal na koneksyon.

      Matapos magawa ang koneksyon, posible na magtrabaho kasama ang mga listahan.

      3. Gamitin sa 1C na wika

      Ang koneksyon ay maaari ding gawin mula sa program code sa 1C na wika.

      Ang mga parameter ng koneksyon ay tinukoy bilang mga sumusunod:
      ConnectionParameters = ExternalDataSources.SourceNameConfigurator.GetGeneralConnectionParameters();

      ConnectionParameters.AuthenticationStandard = True;
      ConnectionParameters.UserName = "sa";
      ConnectionParameters.Password = "password";
      ConnectionParameters.ConnectionString = "string ng koneksyon mula sa configurator";
      ConnectionParameters.DBMS = "MSSQLServer";

      ExternalDataSources.SourceNameConfigurator.SetGeneralConnectionParameters(ConnectionParameters);
      ExternalDataSources.SourceNameConfigurator.SetUserConnectionParameters(UserName(), Parameters);
      ExternalDataSources.SourceNameConfigurator.SetSessionConnectionParameters(Mga Parameter);
      ExternalDataSources.SourceNameConfigurator.SetConnection();

      Maaari kang mag-query ng data mula sa isang database gamit ang isang regular na . Isang halimbawa ng text ng query para sa isang panlabas na pinagmulan OurExternalSource at mga talahanayan na ExternalSourceTable:

      PUMILI
      ExternalSourceTable.FieldName
      MULA SA
      ExternalDataSource.OurExternalSource.Table.ExternalSourceTable"

      Panlabas na data source 1C - gumagana sa Excel file

      Subukan natin ang isa pang opsyon - nagtatrabaho sa isang Excel file sa pamamagitan ng panlabas na 1C data source.

      Gumawa tayo ng simpleng Excel file.

      Magdagdag tayo ng panlabas na pinagmulan, arbitraryong tawagan itong FileExcel. Idagdag natin ang talahanayang “Sheet1$” dito. Tulad ng madali mong nakikita, ito ang pangalan ng sheet sa Excel kasama ang pagdaragdag ng simbolo na "$".

      Tulad ng sa kaso ng SQL, magdagdag tayo ng mga column. Maaari silang idagdag nang manu-mano. Mahalagang tiyaking tumutugma ang mga uri ng mga column na idinaragdag mo, kung hindi, maaari kang makatanggap ng error sa ibang pagkakataon tulad ng "Hindi pagkakatugma ng uri ng data."

      Para sa column kailangan mong tumukoy ng pangalan sa 1C at pangalan sa data source.

      Mayroong isang tampok para sa Excel (error tulad ng "Masyadong kakaunti ang mga parameter. 3 ang kinakailangan"):

      • Kung sa unang linya Mga talahanayan ng Excel matatagpuan ang mga pangalan ng column, kailangan mo lang ipahiwatig ang pangalan ng column na ito, halimbawa "Code".
      • Kung hindi, kailangan mong tukuyin ang buong pangalan na may pangalan ng talahanayan na "Sheet1$.Code", ngunit idagdag ang "HDR=NO;" sa mga parameter.

      Mga setting ng koneksyon para sa Excel file ganito ang hitsura:

      • XLSX file ( Bersyon ng opisina 2007 at pataas)
        Driver=(Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb));DBQ=D:\FileExcel.xlsx;
      • XLS file (dating)
        Driver=(Microsoft Excel Driver (*.xls)); DriverID=790; DBQ=D:\FileExcel.xls;
        Dapat mong tukuyin ang iyong sariling pangalan at landas sa file.

Panlabas na data source 1C - isang medyo bagong metadata object 1C 8.3 at 8.2, kung saan posible na kumonekta sa 1C external na pinagmumulan ng data: SQL table, Excel, Access, FoxPro (dbf), isa pang 1C database, Oracle, Paradox (db) , - at kahit na nagbabasa mula sa simpleng mga file txt/csv.

Nagbibigay ito ng maraming posibilidad para sa interoperability sa ibang mga system. Tingnan natin nang maigi.

Pagse-set up ng external na data source sa 1C 8

Ang pag-set up ng mga panlabas na mapagkukunan ay indibidwal para sa bawat uri ng system. Ngunit, bilang panuntunan, ang pangkalahatang bahagi ng pag-setup ay pareho - ito ay nagtatakda ng string ng koneksyon:

Kumuha ng 267 video lesson sa 1C nang libre:

Kung ang string ng koneksyon ay tinukoy nang tama, ipo-prompt ka ng system na piliin ang nais na talahanayan mula sa database. Bilang resulta, makakakuha tayo ng isang yari na talahanayan kung saan matutukoy natin ang pangunahing field (isang natatanging field) at ang field ng presentasyon (kung paano makikita ang tala sa 1C):

Paggamit ng external na data source sa 1C 8.3

Ang mga panlabas na mapagkukunan ng data sa 1C ay maaaring gamitin tulad ng iba pang mga talahanayan ng database. Ang platform ay awtomatikong bumubuo ng isang form para sa kanila kung ang isa ay hindi tinukoy. Posible ring gumamit ng data mula sa mga panlabas na mapagkukunan sa mga query.

Bakit ang pagkakataong ito ay interesado? Ang sinumang tao na naka-program sa 1C ay lubos na pamilyar sa SQL at sa pangkalahatan ay pamilyar sa arkitektura at mga prinsipyo ng pag-unlad ng iba mga platform ng teknolohiya para sa mga aplikasyon ng negosyo ay sasabihin sa iyo nang may matatag na kumpiyansa kung ano ang pinakagusto niya tungkol sa 1C. Siyempre, ang tagabuo ng query ay ang pinaka-maginhawa at maalalahanin na mekanismo para sa pagsulat ng mga query para sa pagkuha ng data mula sa mga istrukturang may kaugnayan na personal kong nakatagpo. At ngayon ay binigyan kami ng 1C ng napakagandang pagkakataon na gamitin ito hindi lamang sa 1C, kundi pati na rin sa anumang iba pang mga talahanayan. Kaya lang ang "barrel of honey" na ito ay maraming "langaw sa ointment". Mga unang bagay muna:

1) I-setup at gamitin- kung walang "pagsasayaw na may tamburin" hindi ito gagana
a) Magdagdag ng external na data source - mukhang hindi ito kumplikado
b) suriin ang checkbox na "Pumili mula sa listahan" - sapilitan - ito ay kinakailangan upang suriin ang pag-andar sa simula at i-save ka mula sa hindi kinakailangang mga problema
c) - siguraduhing i-click ang "..." - ang koneksyon ay ODBC. Hindi OLEDB tulad ng nakasanayan nating lahat, ngunit isang antas na mas mababa

D) Ngunit narito maging MAINGAT.

Ito ay isang driver ng ODBC - kung gagamitin mo ang bersyon ng client-server, dapat itong nasa server. Kung ikaw ay bumubuo sa isang sistema at nagtatrabaho sa isa pa (tulad ng karaniwang nangyayari), siguraduhing walang mga sorpresa na naghihintay para sa iyo. Isang kakaibang rekomendasyon, ngunit piliin ang pinakaluma o pinakakaraniwang driver kung hindi ka partikular na nag-aalala tungkol sa bilis at hindi nilalayong lumampas sa mga kakayahan ng pamantayan ng SQL92. Bibigyan ka nito ng mas mahusay na pagkakatugma. Halimbawa para sa SQL Server 2008 ang pinakamahusay na driver Magkakaroon ng SQL Server Native Client 11, ngunit inirerekumenda ko ang pagpili lamang ng SQL Server, kung hindi, ang napaka katutubong kliyente na ito ay kailangang mai-install alinman sa server o sa lahat ng mga client machine (kung gumagamit ng bersyon ng file), at hindi ito magbibigay ng marami benepisyo para sa mga simpleng gawain.
e) Mga karaniwang dialog ng pagpili ng Server

E) Inirerekomenda kong sagutin ang "oo" sa tanong tungkol sa pag-save ng password, kung hindi, hindi mo masisimulan ang negosyong ito.
g) Piliin ang talahanayan at mga detalye... isang magandang pagkakataon - maaari mo itong palitan kaagad ng pangalan ayon sa gusto mo (at ang mga detalye din), at sa mga katangian makikita mo ang mga pangalan ng mga field ng data source

Z) Ngayon ilunsad mo ito, buksan ang taga-disenyo ng query - tanga na piliin ang lahat ng mga tala mula sa talahanayan at OPA - isang error. Ano ang gagawin? Kung mayroon kang pinamamahalaang interface, tingnan ang menu ng serbisyo, at kung regular...
Personal kong ginamit ang code na ito:
Code 1C v 8.x Mga Parameter = ExternalDataSources.DAX.GetGeneralConnectionParameters();
Parameters.AuthenticationStandard = True;
Parameters.UserName = "sa";
Parameters.Password = "pas";
Parameters.ConnectionString = "DRIVER=(SQL Server);SERVER=servet;UID=sa;PWD=;DATABASE=database";
Parameters.DBMS = "MSSQLServer";

ExternalDataSources.DAX.SetCommonConnectionParameters(Parameters);
ExternalDataSources.DAX.SetUserConnectionParameters(UserName(), Parameters);
ExternalDataSources.DAX.SetSessionConnectionParameters(Mga Parameter);

ExternalDataSources.DAX.SetConnection();
Maaaring hindi kailangan ang ilang piraso, ngunit gumagana ito.
Kailangan mong patakbuhin ang code ONCE. Pagkatapos nito ay magiging normal na ang kumonekta... mistisismo siyempre - kung bakit ito kinakailangan ay hindi malinaw...

2) Read-only na data source- Oo, ang mga himala ay hindi nangyayari ... ngunit kung minsan ay gusto mo ito ...

3) HINDI SILA MAAARING GAMITIN KASAMA SA INTERNAL DATA SOURCES
Sa personal, ang katotohanang ito ay pinatay ako sa lugar.

Paano ito... kung ano ang hinihintay namin at naisip na namin at dinilaan ang aming mga labi tungkol sa kung paano namin ngayon pagsasamahin ang aming data sa 1C sa isang kahilingan, i-collapse ito - pangkatin ito, ipasok ito sa ulat, ngunit hindi iyon ang kaso ...
Ngunit siyempre hindi ito humihinto sa mga taong may karanasan... ano ang pumasok sa isip? Tama iyon - mga pansamantalang talahanayan:

4) HINDI SILA MAAARING GAMITIN KASAMA NG MGA TEMPORARY TABLES

Ngunit hindi na ito mukhang mga teknolohikal na paghihirap, ngunit mukhang katulad ng gusto nilang gawin natin "upang ang buhay ay hindi parang paraiso" :).

5) Magagamit lamang sa mga koneksyon sa ACS
Para sa mga hindi nakakaalam, ito ay nasa ACS sa tab na "Mga Link sa Set ng Data". Madalas mo bang ginagamit ang mga ito? Komportable? Tila gusto nilang pilitin kaming gamitin ang mga ito nang mas madalas. Mayroon lamang column na "Kondisyon ng komunikasyon" at "Parameter ng komunikasyon". Wala akong nakitang halimbawa ng kanilang paggamit sa anumang karaniwang pagsasaayos, at sa anumang paraan ang lahat ay hindi malinaw sa dokumentasyon at sa gawain ni Khrustaleva. Maaari bang ipaliwanag sa akin ng sinuman kung paano gumagana ang "kondisyon ng koneksyon". Kung isusulat mo ang Source Attributes = Receiver Attributes doon, hindi ito gagana. Siyempre, ang kundisyon ay maaaring isulat sa patlang na "Expression" - sa karamihan ng mga kaso ito ay sapat na... ngunit sa paanuman ay hindi ito gumagana nang napakadali.

Sa kabuuan, ang problemang ito ay dati nang nalutas sa isang lugar tulad nito:
Code 1C v 8.x Function InitializeDataSource()

DateStart = SettingsComposer.Settings.DataParameters.Items.Value;
DataCon = SettingsBuilder.Settings.DataParameters.Items.Value;
Kung ang DataCon > "20100101" Pagkatapos
DataCon = "20100101";
endIf;

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

ArrayNumber = Bagong Array();
ArrayNumber.Add(Type("Number"));

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

ArrayData = Bagong Array();
ArrayDate.Add(Type("Date"));

//Pupunan namin ang accounting cost sa table
TypeNumber = Bagong Uri ng Paglalarawan(ArrayNumber, CN);
TypeString = Bagong TypeDescription(ArrayString, KS);
TypeDate = Bagong TypeDescription(ArrayDate);

//table para sa paglo-load ng data mula sa SQL
TZ = New ValueTable();
TK.Columns.Add("NomenclatureCode", TypeString);
TK.Columns.Add("Qnty", TypeNumber);
TK.Columns.Add("Period", DateType);

TK.Indices.Add("Panahon");

//Kumonekta sa SQL
String ng Koneksyon = "Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Pwd=;Data Source=;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=;Gumamit Encryption para sa Data=False;Tag na may column collation kapag posible=False;Initial Catalog=Ulat";
Koneksyon = Bagong COMObject("ADODB.Connection");
Command = Bagong COMObject("ADODB.Command");
RecordSet = Bagong COMObject("ADODB.RecordSet");
Petsa = "";
Pagtatangka
Connection.Open(AbbrLP(ConnectionString));
Command.ActiveConnection = Koneksyon;
Command.CommandText = "S_elect * mula sa PH kung saan ang panahon >= "" + String(Format(StartDate, "DF=yyyyMMdd")) + "" at tuldok<= "" + Строка(Формат(ДатаКон, "ДФ=ггггММдд")) + """;
RecordSet = Command.Execute();
RecordSet.MoveFirst();
Exception
Pagbabalik ng mga teknikal na pagtutukoy;
EndAttempt;

Habang ang RecordSet.EOF = False Loop
Linya = TK.Add();
Row.NomenclatureCode = RecordSet.Fields(RecordSet.Fields.Item(1).Name).Value;
Row.Qnty = RecordSet.Fields(RecordSet.Fields.Item(12).Name).Value;
Row.Period = RecordSet.Fields(RecordSet.Fields.Item(13).Name).Value;
RecordSet.MoveNext();
EndCycle;

Kahilingan = Bagong Kahilingan();
VrTable = Bagong TemporaryTableManager();
Query.SetParameter("vrDataTable", TK);
Query.SetParameter("Petsa ng Pagsisimula", Petsa ng Pagsisimula);
Request.SetParameter("DataCon", DateCon);
Query.Text = "PUMILI
| vrDataTable.NomenclatureCode,
| vrDataTable.Qnty,
| vrDataTable.Period
|Place DataTable
|MULA
| &vDataTable BILANG vrDataTable
|SAAN
| vrDataTable.Period >= &StartDate
| At vrDataTable.Period<= &ДатаКон";
Request.Run();
TZ = Hindi Natukoy;

Kahilingan = Bagong Kahilingan;
Query.TemporaryTableManager = VrTable;
Query.Text = "Narito ang isang query na kinasasangkutan ng variable na talahanayan";

Resulta = Query.Run();
Resulta ng Pagbabalik;

EndFunction

ExternalSet = InitializeDataSource();
DataSet = bagong Structure();
DataSet.Insert("SQL Table", ExternalSet);
TypicalReports.GenerateTypicalReport(ThisObject, Resulta, Decryption Data, OutputToReportForm, DataSet);

Sa totoo lang, walang maraming linya ng code at medyo karaniwan ang mga ito... sa kasong ito, maaari mong gamitin ang buong pag-andar ng taga-disenyo ng query, at ibigay lamang ang DATA COMPOSITION function sa ACS

Ngunit siyempre hindi ito maganda... at sa bawat oras na kailangan mong magsulat ng code upang mag-upload ng mga halaga sa isang talahanayan at suriin kung nagkamali ka sa pangalan ng mga detalye... at kung ano ang ibinigay sa amin sa 1C mukhang half-hearted. Hindi pa ako nakakapagpasya kung alin ang mas maginhawang gamitin. Magpasya ka, at magsulat tungkol sa iyong mga desisyon at kung ano ang nag-udyok sa iyo sa kanila.

Ang impormasyon na kinuha mula sa site