Ang pamamaraan para sa pagtatrabaho sa built-in na object ng kahilingan sa wika. Ano ang layunin ng object ng pagsasaayos ng "Wika"?

Ang pagbuo ng isang solusyon sa aplikasyon sa 1C: Enterprise system ay binubuo ng dalawang pangunahing aksyon: visual na disenyo ng mga bagay sa pagsasaayos at paglalarawan ng partikular na pag-uugali ng system gamit ang built-in na wika at wika ng query.

Ang built-in na wika ng 1C: Enterprise system ay may maraming pagkakatulad sa iba pang mga programming language, ngunit hindi direktang analogue ng alinman sa mga ito. Ang pinakamahalagang tampok nito:

· malambot na pag-type (ang uri ng isang variable ay tinutukoy ng uri ng halaga na nilalaman nito at maaaring magbago sa panahon ng operasyon);

· kakulangan ng paglalarawan ng software ng mga uri ng aplikasyon (ginagawa ang mga ito kapag nagdaragdag ng mga bagay sa pagsasaayos);

· built-in na wika na nakatuon sa kaganapan;

· lahat ng mga operator ay may parehong Russian at English spelling, na maaaring gamitin nang sabay-sabay.

Mga module ng pagsasaayos

Ang mga module ng solusyon sa aplikasyon ay idinisenyo upang ilagay ang teksto ng programa sa built-in na wika. Ang mga module na ito ay matatagpuan sa iba't ibang lugar sa configuration at may iba't ibang layunin. Karamihan sa mga module ay "nakatali" sa ilang partikular na configuration object o sa application solution mismo.

Ang mga sumusunod na uri ng mga module ng software ay nakikilala:

· Mga karaniwang module. Ang configuration ay maaaring magkaroon ng arbitrary na bilang ng mga module, kabilang ang wala. Ang mga karaniwang module mismo ay hindi tinatawag sa panahon ng proseso ng pagsasaayos. Nagsisilbi lamang ang mga ito upang maglaman ng mga teksto ng mga pamamaraan at pag-andar na maaaring tawagan mula sa iba pang mga module ng solusyon sa aplikasyon. Samakatuwid, kulang sila ng isang variable na seksyon ng paglalarawan at isang pangunahing seksyon ng programa. yun. Ang mga karaniwang module ay naglalaman lamang ng mga pamamaraan at function.

· Module ng aplikasyon. Palaging mayroong isang module ng application sa pagsasaayos. Isinasagawa ito kapag nagsimula ang system sa 1C: Enterprise mode at nilayon na gumawa ng mga aksyon na nauugnay sa session ng trabaho ng end user. Ang mga pangunahing kaganapan na maaaring iproseso sa isang module ng aplikasyon ay ang mga kaganapan sa pagsisimula at pagtatapos ng aplikasyon. Ang pagkakasunud-sunod mula sa tawag ay ipinapakita sa kanin. 1. Kaganapan Bago Simulan ang System Nangyayari kapag nagsimula ang system bago magbukas ang pangunahing window. Sa pamamagitan ng paghawak sa kaganapang ito, ang developer, halimbawa, ay may pagkakataong tumanggi na tumakbo kung ang anumang kundisyon ay hindi natutugunan. Kaganapan Kapag Sinisimulan ang System nangyayari pagkatapos buksan ang pangunahing window. Sa tagapangasiwa ng kaganapang ito, maaari mong, halimbawa, magpakita ng impormasyon tungkol sa mga taong may kaarawan, atbp.

· Module ng panlabas na koneksyon. Palaging mayroong isang panlabas na module ng koneksyon sa pagsasaayos. Ito ay isinasagawa kapag ang application ay na-access bilang isang COM server (sa panlabas na mode ng koneksyon). Sa panlabas na mode ng koneksyon, hindi ang ganap na 1C: Enterprise application ang inilunsad, ngunit isang "magaan na bersyon" kung saan ang lahat ng mga function na sa isang paraan o iba pang nauugnay sa organisasyon ng user interface ay hindi magagamit.

· Mga module ng object ng application. Ang bawat object configuration ng application (halimbawa, isang software na dokumento o isang direktoryo), ang data na maaaring baguhin sa 1C: Enterprise mode, ay may sariling module. Bilang karagdagan sa paglalarawan ng mga variable at ang pangunahing programa, ang isang object module ay maaaring maglaman ng isang paglalarawan ng mga pamamaraan - mga tagapangasiwa ng kaganapan na nauugnay sa isang ibinigay na object ng pagsasaayos. Mayroong dalawang mga kaganapan na nakataas para sa lahat ng mga bagay - Bago ang Pagre-record At Kapag Nagre-record.

· Mga module ng form. Ang bawat form ay may sariling module, na tumutukoy sa pag-uugali ng form at ang mga aksyon na ginawa mula dito, halimbawa, pagbubukas ng iba pang mga form. Itinaas ang mga kaganapan para sa lahat ng anyo Bago Buksan, Habang Pagbubukas, Bago Isara At Sa Pagsasara.

Konteksto

Sa 1C: Enterprise system, ang konteksto ay tumutukoy sa kapaligiran ng module, i.e. mga variable, bagay, katangian, pamamaraan at kaganapan na magagamit nito. Maaari naming makilala ang mga sumusunod na uri ng konteksto, at, nang naaayon, mga panuntunan para sa visibility ng mga na-export na variable, pamamaraan at function:

· Kontekstong pandaigdig, na makukuha sa lahat ng iba pang konteksto, ay binubuo ng mga sumusunod na bahagi:

§ mga katangian, pamamaraan at kaganapan ng pandaigdigang konteksto (halimbawa, ang ari-arian Petsa ng Paggawa);

§ mga enumerasyon ng system at mga set ng halaga ng system (halimbawa, Ibalik ang CodeDialog At Mga simbolo).

· Karaniwang Konteksto ng Module nabuo sa pamamagitan ng pandaigdigang konteksto at lokal na konteksto ng pangkalahatang module mismo (ibig sabihin, ang mga pamamaraan at mga function na tinukoy sa loob ng pangkalahatang module). Sa konteksto ng isang karaniwang module, ang mga na-export na pamamaraan at mga function ng iba pang mga karaniwang module ay magagamit. Ang mga na-export na variable, pamamaraan, at function ng application module ay hindi available.

· Sa konteksto ng isang module ng application o module ng panlabas na koneksyon Ang mga na-export na pamamaraan at mga function ng mga karaniwang module ay magagamit.

· Sa konteksto ng isang module ng object ng application may access sa mga detalye at tabular na bahagi ng bagay, pati na rin ang mga pamamaraan at kaganapan nito. Ang mga na-export na variable, pamamaraan at function ng application module (external connection module) at karaniwang module ay available dito.

· Sa konteksto ng isang form module available ang mga detalye ng form, pati na rin ang mga katangian ng form, pamamaraan at kaganapan. Kung ang isang form ay may pangunahing attribute na nakatalaga, ang mga katangian at pamamaraan ng application object na ginamit bilang pangunahing attribute ay magiging available sa form module.

Ang ugnayan sa pagitan ng mga konteksto ay ipinapakita sa eskematiko sa kanin. 2. Naka-on kanin. 3 inilalarawan ang posibleng interaksyon ng module ng journal form at ng module ng dokumento.


Mga pamamaraan at pag-andar

Ang mga pamamaraan at pag-andar ay mga bloke ng programa na maaaring tawagin sa pamamagitan ng pangalan mula sa ibang lokasyon, tulad ng isa pang pamamaraan. Naiiba ang mga function sa mga procedure dahil mayroon silang return value. Sa bersyon 8, ang pagkakasunud-sunod ng mga pamamaraan at pag-andar ay hindi mahalaga. Nangangahulugan ito na ang pamamaraan ay matatagpuan sa ibaba kung saan ito tinatawag.

Ang mga pamamaraan at function ay maaaring magkaroon ng mga parameter na tumutukoy kung anong mga aksyon ang dapat nitong gawin sa kung anong mga bagay. Ang mga parameter ng isang pamamaraan o function ay ipinasa sa pamamagitan ng sanggunian bilang default. Nangangahulugan ito na ang pagbabago ng isang pormal na parameter sa loob ng isang pamamaraan o function ay magbabago sa aktwal na parameter sa punto kung saan ito tinawag. Upang matiyak na ang isang parameter ay naipasa sa halaga, kailangan mong magpasok ng isang keyword bago ang pangalan ng parameter Ibig sabihin.

Halimbawa 1:

Pamamaraan Kalkulahin()

Halaga=Presyo*Dami;

Katapusan ng Pamamaraan

Pagkalkula(); // Tawagan ang procedure

Halimbawa 2:

Perem Glob;

// Paglalarawan ng pamamaraan

Pagkalkula ng Pamamaraan(Par1, Par2, ParZ) Export

Glob = Glob + Par1 + Par2 + ParZ;

Katapusan ng Pamamaraan

Pagkalkula(5, 6, 7); // Tawagan ang procedure

Halimbawa 3:

Perem Glob;

// Paglalarawan ng function

Pagkalkula ng Function(Par1, Par2, ParZ) Export

Lok = Glob + Par1 + Par2 + ParZ;

Ibalik ang Lock;

EndFunction

Res = Calc(5, 6, 7); // Function call

Uri ng data

Numero, String, Petsa, Boolean, Hindi Natukoy, Null (para sa mga hindi natukoy na halaga sa mga talahanayan ng database)

Uri. Ang mga halaga ng espesyal na uri na "Uri" ay kailangan upang kumatawan at maghambing ng mga uri ng data, halimbawa:

Pagdedeklara ng mga Variable

Lumilitaw ang mga variable sa programa sa mga sumusunod na kaso:

· pagkatapos ideklara ang mga ito gamit ang Variable operator.

Perem<Имя_переменной>[I-export];

Variable A, B;

· pagkatapos ng unang paglalagay ng variable na pangalan sa kaliwang bahagi ng assignment operator.

Halimbawa:

· kapag tinutukoy ang mga pangalan ng mga identifier ng mga na-edit na elemento ng dialog;

· kapag nagtatakda ng mga pormal na parameter ng mga pamamaraan.

Cast

Maaaring tahasan o implicit ang uri ng casting.

Para sa tahasang pag-cast, umiiral ang mga sumusunod na function: Numero, String, Petsa, Boolean. Awtomatikong ginagawa ng system ang implicit na uri ng casting kapag sinusuri ang mga expression.

Halimbawa: Ang halaga ng numeric na variable na MonthNumber ay tahasang na-convert sa isang string at idinagdag sa isa pang string:

A = “Buwan” + MonthNumber;

Mga direktoryo

Ang pagtatrabaho sa mga direktoryo ay isinasagawa gamit ang mga sumusunod na bagay:

· DirectoriesManager. Nagbibigay ng access sa lahat ng configuration reference book. Ang mga katangian ng bagay na ito ay tumutugma sa mga pangalan ng mga direktoryo at naglalaman ng mga bagay ng uri ng DirectoryManager.

· DirectoryManager. Nagbibigay ng access sa mga pagpapatakbo sa isang direktoryo bilang isang hanay ng mga elemento. Gamit ang mga pamamaraan ng bagay na ito, maaari kang maghanap, kumuha ng seleksyon, lumikha ng mga bagong elemento, at ma-access ang mga form at layout ng direktoryo.

· DirectoryLink. Malinaw na kinikilala ang isang elemento (grupo) ng direktoryo at pinapayagan kang ma-access ito sa read-only na mode. Sa pamamagitan ng mga katangian at pamamaraan ng bagay na ito, maaari mong basahin ang mga detalye ng isang elemento (grupo) at ma-access ang mga tabular na bahagi nito. Ang halaga ng ganitong uri ay nakaimbak sa mga katangian na tumutukoy sa mga elemento ng direktoryong ito, halimbawa, sa katangian Empleado dokumento Recruitment isang link sa isang partikular na elemento ng direktoryo ay naka-imbak Mga empleyado.

· DirectoryObject. Nagbibigay ng nasusulat na access sa isang elemento. Ang bagay na ito ay naglalaman ng mga pamamaraan na nakakaapekto sa isang elemento sa database, halimbawa, mga pamamaraan Isulat At Tanggalin.

· DirectorySelection. Nagbibigay ng kakayahang umulit sa pamamagitan ng mga elemento ng direktoryo. Maaaring direkta o hierarchical ang sampling.

· Listahan ng Direktoryo. Isang bagay para sa pamamahala ng listahan ng mga elemento sa isang field ng talahanayan. Binibigyang-daan kang pamahalaan ang mga column, pagpili at pag-uuri sa listahan.

Sa 1C:Enterprise system?

1. Ang mga teksto ng configuration at database ay naka-imbak sa formatUNICODE

3. Walang tamang sagot

6.75 Para sa anong layunin iniimbak ang mga teksto ng pagsasaayos at database sa formatUNICODE?

1. Tinitiyak ng format na UNICODE ang immutability (pagsasarili ng operating system software platform) ng presentasyon ng impormasyon

2. FormatUNICODE nagbibigay-daan sa iyo na suportahan ang iba't ibang mga wika sa 1C:Enterprise system

3. Walang tamang sagot

6.76 Inilatag ang mga mekanismo ng internasyonalisasyon. ..

1. platform ng teknolohiya 1C:Enterprise

2. inilapat na mga solusyon

3. Tama ang sagot 1 at 2

4. walang tamang sagot

6.77 Ano ang localization code?

1. Isang string na binubuo ng isang code ng wika at isang code ng bansa na tumutukoy sa ilang rehiyon ng mundo

2. Software code ng produkto (ipinahiwatig sa registration form, dokumentasyon na kasama sa delivery kit)

3. Format ng string na opsyon para sa conversion

4. Tama ang kanyang sagot

6.78 Totoo ba na sa 1C:Enterprise 8 anumang tekstong impormasyon ay maaaring sabay na magsama ng mga character mula sa iba't ibang wika?

1. Oo, dahil ang lahat ng mga teksto ng pagsasaayos at database ay naka-imbak sa formatUNICODE

2. Depende sa mga setting na tinukoy sa paggawa ng infobase

3. Kung ito ay ibinigay ng configuration

6.79 Ano ang layunin ng object ng pagsasaayos ng "Wika"?

1. Upang lumikha ng interface ng programa sa iba't ibang wika

2. Upang lumikha ng mga tekstong dokumento sa iba't ibang wika

3. Ang nasabing bagay ay hindi umiiral sa 1C: Enterprise 8

6.80 Paano ko mababago ang wika para sa pagtingin (pag-edit) ng configuration?

1. Gamit ang button sa pagpili ng wika na matatagpuan sa status bar sa kanan ng button na "NUM".

2. Sa pamamagitan ng menu item na "Configuration - Configuration editing language"

3. Sa 1 C: Enterprise hindi umiiral ang posibilidad na ito

4. Sinasagot ni Verpa ang 1 at 2

6.81 Ano ang spelling ng mga built-in na operator ng wika?

1. Tanging pagsulat ng Ruso

3.

6.82 Posible bang gumamit ng mga built-in na operator ng wika sa Russian at English na pagsulat sa isang pinagmulang teksto?

1. Tanging sa mga espesyal na setting ng configurator

2. Oo, hindi ito nangangailangan ng pagbabago ng anumang mga setting ng configurator

3. Hindi, dahil ang built-in na opsyon sa wika ay nakatakda sa mga katangian ng pagsasaayos

6.83 Ano ang layunin ng built-in na wika?

1. Upang matukoy ang default na interface ng programa

2. Upang ilarawan (sa yugto ng pagbuo ng pagsasaayos) ng mga algorithm para sa paggana ng isang inilapat na gawain

3. Walang tamang sagot

6.84 Ano ang pagbabaybay ng mga built-in na function ng wika?

1. Tanging pagsulat ng Ruso

2. English spelling lamang

3. Pagsusulat ng Ruso at Ingles

4. Depende sa mga setting ng configurator

6.85 Ano ang ibig sabihin ng parameter L?(L) sa format string ng NumberInWriting() formatting function?

1. Lagdaan ang “output the fractional part in numbers/words”

2. Bilang ng mga decimal na lugar

3. Localization code

7. Tabular na modelo ng solusyon sa aplikasyon

7.1 Kapag nagse-set up ng mga paghihigpit sa pag-access ng data, maaari kang magtakda ng ilang (batay sa bilang ng mga patlang) na mga paghihigpit:

1. Para sa "Read" right

2. Para sa tamang "Pagbabago"

3. Para sa "Add" right

4. Para sa "Delete" right

5. Para sa lahat ng karapatan sa itaas

6. Para sa lahat ng posibleng karapatan

7.2 Kapag nagse-set up ng mga paghihigpit sa pag-access ng data, ang mga sumusunod ay maaaring gamitin bilang mga halaga kung saan ginagawa ang mga paghihigpit sa pag-access ng data:

1. Mga value ng parameter ng session lamang

2. Tanging data mula sa mga talahanayan (mga query)

3. Mga halaga ng parameter ng session at data mula sa mga talahanayan (mga query)

4. Mga value lang na may mga uri: Number, String, Boolean, Date

7.3 Alin sa mga pamamaraan sa itaas ang maaaring gamitin upang lumitaw ang code at pangalan ng direktoryo sa seksyong "Mga Patlang" ng taga-disenyo ng query?

1. Punan muna ang seksyong "Mga Talahanayan", at pagkatapos, piliin ang mga nais na bagay mula sa seksyong ito, ilipat ang mga ito sa seksyong "Mga Patlang" gamit ang isang dobleng pag-click gamit ang kaliwang pindutan ng mouse

2. Nang hindi pinupunan ang seksyong "Mga Talahanayan", agad na piliin ang mga kinakailangang bagay mula sa mga talahanayan - mga mapagkukunan ng data ng seksyong "Database", inililipat ang mga ito sa seksyong "Mga Patlang" gamit ang teknolohiyang Drag & Drop. Ang seksyong "Mga Talahanayan" ay awtomatikong napunan

3. Punan muna ang seksyong "Mga Talahanayan", at pagkatapos, piliin ang mga kinakailangang bagay mula sa seksyong ito, ilipat ang mga ito sa seksyong "Mga Patlang" gamit ang mga pindutan sa form na ">" """

4. Tama ang sagot I at 3

5. Ang mga sagot I, 2 at 3 ay tama

7.4 Upang mapabilis ang pagsasagawa ng kahilingan, kailangan mong:

1. Magtakda ng mga parameter para sa karamihan ng mga totoong talahanayan

2. Magtakda ng mga parameter para sa karamihan ng mga virtual na talahanayan

3. Sa halip na tukuyin ang mga parameter para sa isang tunay o virtual na talahanayan, gamitin ang pagpili na tinukoy ng "WHERE" query language construct

4. Tama ang sagot I at 2

7.5 Posible bang magtalaga ng bagong pangalan (alias) para dito kapag pumipili ng source table sa seksyong "Tables" ng query designer?

1. Oo kaya mo

2. Oo, maaari mo, ngunit kung ang data source ay isang nested query

3. Oo, maaari mo, ngunit kung ang pinagmumulan ng data ay isang virtual na talahanayan

4. Tama ang sagot 1 at 2

5. Tama ang sagot 1 at 3

7.6 Maaaring gumamit ng nested query:

1. Bilang talahanayan ng data source

2. Bilang isang operand ng mga pagpapatakbo ng paghahambing na "B" o "HINDI B" kapag nagtatakda ng mga parameter ng virtual na talahanayan

3. Bilang isang operand ng mga pagpapatakbo ng paghahambing na "B" o "HINDI B" kapag tinukoy ang pagbuo ng wika ng query na "WHERE"

4. Sinasagot ni Verpa ang 1, 2 at 3

7.7 Posible bang makakuha ng mga kabuuan ayon sa hierarchy gamit ang query designer?

1. Posible kung tinukoy mo ang kabuuang uri na "Mga Elemento at Hierarchy" para sa field ng pagpapangkat

2. Posible kung tinukoy mo ang kabuuang uri na "Hierarchy lamang" para sa field ng pagpapangkat

3. Sinasagot ni Verpa ang 1 at 2

7.8 Sa tab na "Mga Kundisyon" ng taga-disenyo ng query, maaaring makabuo ng hiwalay na linya ng listahan ng mga kundisyon:

1. I-double click gamit ang kaliwang pindutan ng mouse sa nais na field sa listahan ng mga available na field

2. Sa pamamagitan ng paglipat ng gustong field sa listahan gamit ang Drag & Drop technology

3. I-click ang "Add" button. Kung ang kundisyon ay arbitrary, kung gayon ang teksto ng kundisyon ay maaaring ipasok nang "manu-mano"

4. Tawagan ang menu ng konteksto at piliin ang "Idagdag" mula dito. Posibleng gumamit ng arbitraryong pagpapahayag

5. Lahat ng sagot sa itaas ay tama

7.9 Sa tab na "Mga Link" ng taga-disenyo ng query, maaari mong tukuyin ang:

1. Pagkonekta ng mga talahanayan ng data source at mga ugnayan sa pagitan ng mga ito

2. Pinagsasama-sama ang mga talahanayan ng data source at mga koneksyon sa pagitan ng mga ito

3. Mga ugnayan sa pagitan ng mga patlang ng talahanayan na nakuha bilang resulta ng query

4. Mga ugnayan sa pagitan ng mga field ng talahanayan ng data source at ng talahanayan na nakuha bilang resulta ng query

7.10 Kapag sumasali sa mga talahanayan ng data source sa query designer, maaari mong:

1. Magtalaga ng koneksyon nang hindi tinukoy ang kundisyon ng koneksyon

2. Magtalaga ng koneksyon na nagsasaad ng kundisyon ng koneksyon, at ang kundisyong ito ay maaari lamang maging isa

3. Magtalaga ng koneksyon na nagsasaad ng kundisyon ng koneksyon, at ang kundisyong ito ay maaari lamang maging simple

4. Italaga ang kinakailangang bilang ng mga koneksyon na nagsasaad ng kinakailangang bilang ng mga kundisyon ng komunikasyon, at ang mga kundisyong ito ay maaaring maging simple o arbitrary.

7.11 Ang paglikha ng koneksyon sa pagitan ng mga talahanayan ng data source sa query designer ay nagbibigay-daan sa:

1. Pagsasama lamang ng dalawang talahanayan ng data source

2. Pagkonekta sa kinakailangang bilang ng mga talahanayan ng data source

3. Pagkonekta lamang ng dalawang talahanayan ng data source, at ang checkbox na "Lahat" ay dapat na naka-check para sa hindi bababa sa isa sa mga talahanayan

Basic, na nagpapadali para sa mga baguhang developer na matuto. Gayunpaman, hindi ito direktang analogue ng alinman sa mga nakalistang wika.

Narito ang ilan lamang sa mga pinakamahalagang feature ng built-in na wika:

  • pre-compilation; bago ang pagpapatupad, ang mga module na naglalaman ng teksto sa built-in na wika ay na-convert sa panloob na code;
  • pag-cache ng mga pinagsama-samang module sa memorya;
  • malambot na pag-type - ang uri ng isang variable ay tinutukoy ng uri ng halaga na nilalaman nito at maaaring magbago sa panahon ng operasyon;
  • kakulangan ng paglalarawan ng software ng mga bagay sa pagsasaayos; maaaring gamitin ng developer ang alinman sa mga bagay na nakapaloob sa platform o mga bagay na nilikha ng system bilang resulta ng visual na disenyo ng solusyon sa application.

Built-in na wika na nakatuon sa kaganapan. Ang layunin ng built-in na wika sa 1C:Enterprise system ay tinutukoy ng ideolohiya ng paglikha ng mga solusyon sa aplikasyon. Ang mga solusyon sa aplikasyon sa 1C:Enterprise 8.0 ay hindi ganap na naka-code. Karamihan sa solusyon sa application ay nilikha ng developer sa pamamagitan ng visual na disenyo - paglikha ng mga bagong configuration object, pagtatakda ng kanilang mga katangian, mga form ng pagtatanghal, mga relasyon, atbp. Ginagamit lang ang built-in na wika upang matukoy ang gawi ng mga object solution sa application na naiiba sa standard one, at gumawa ng sarili nilang mga algorithm sa pagpoproseso ng data .

Para sa kadahilanang ito, ang mga module na naglalaman ng teksto sa built-in na wika ay ginagamit ng system sa partikular, dati nang kilalang mga sitwasyon na maaaring lumitaw sa panahon ng pagpapatakbo ng solusyon sa application. Ang mga ganitong sitwasyon ay tinatawag na mga pangyayari. Maaaring iugnay ang mga kaganapan sa paggana ng mga object solution sa application o sa mismong solusyon sa application, tulad nito.

Halimbawa, ang isang bilang ng mga kaganapan ay nauugnay sa paggana ng object ng solusyon sa application ng Direktoryo, na kung saan ay ang kaganapang BeforeWrite. Nangyayari ang kaganapang ito bago isulat ang data ng item ng direktoryo sa database. Ang isang developer, gamit ang isang built-in na wika, ay maaaring maglarawan ng isang algorithm na, halimbawa, ay susuriin ang kawastuhan ng data na ipinasok ng user. Sa pamamagitan ng paglalagay ng algorithm na ito sa naaangkop na module, titiyakin ng developer na sa tuwing magtatala ang user ng item sa direktoryo, isasagawa ng system ang algorithm na ginawa ng developer at titingnan kung nakalimutan ng user na punan ang mga kinakailangang detalye ng direktoryo.

Kaya, maaari nating sabihin na ang built-in na wika ay isang scripting language para sa programming business logic, at ang paggamit ng mga module sa built-in na wika ay nakasalalay sa kaganapan, i.e. ang mga module ay isinasagawa kapag may ilang mga kaganapan na nangyari sa panahon ng pagpapatakbo ng solusyon sa aplikasyon.

Mga Paunang Natukoy na Uri ng Data

Ang 1C:Enterprise 8.0 platform ay nagbibigay-daan sa developer na gumamit ng iba't ibang uri ng data.

Mayroong isang malaking bilang ng mga uri ng data na tinukoy sa antas ng mismong platform. Halimbawa ito primitive na uri ng data, gaya ng string, numero, petsa, atbp.


Paglalarawan primitive na uri ng data:

  • WALA- nawawalang halaga. Ginamit, halimbawa, sa mga query.
  • Hindi natukoy- walang laman, hindi natukoy na halaga. Ginagamit ito, halimbawa, kapag sinusuri ang pagpasa ng mga parameter kung ang parameter na ito ay tinanggal kapag tumatawag sa isang pamamaraan o function. Ang mga detalyeng may pinagsama-samang uri ng data ay nasa uri na "Hindi Natukoy" bilang default.
  • Boolean- naglalaman ng dalawang value: True o False. Ginamit, halimbawa, sa mga lohikal na expression - ang isang lohikal na expression ay may uri na "Boolean".
  • petsa- naglalaman ng petsa at oras. Ang default na halaga ay 01/01/01 00:00:00 petsa ng pagsisimula ng ating panahon. Ang oras ay sinusukat mula sa simula ng araw. Ang isang expression na may literal na uri na "petsa" ay nakasulat bilang mga sumusunod - "00010101000000". Una ang taon ay isinulat, pagkatapos ay ang buwan, pagkatapos ay ang petsa at pagkatapos ay ang oras. Posible ang sumusunod na entry: "20041031". Ang default na oras ay ang simula ng araw.
  • Linya- maaaring variable, fixed o walang limitasyong haba. Sa pangkalahatan, inirerekumenda na gumamit ng mga string ng variable na haba.
  • Numero- ang bilang ng bit depth ay nadagdagan sa 38 bits.
  • Uri- nagsisilbi upang matukoy ang mga uri ng mga halaga. Ginamit, halimbawa, upang ihambing ang mga uri ng data. Wala itong mga literal at ibinalik ng mga function Type(<Имя типа>) o TypeValue(<Значение>).

Gayundin, mayroon pa kumplikadong mga uri ng data. Halimbawa, sinusuportahan ng platform ang ilang uri na mga pangkalahatang koleksyon ng mga halaga: array, istraktura, listahan ng mga halaga, puno ng mga halaga, atbp.


Mga uri ng data "Mga Pangkalahatang koleksyon" - isang listahan (set) ng mga object ng data ng anumang uri, ang mga halaga nito ay maaaring ma-access sa pamamagitan ng brute force o sa pamamagitan ng isang tinukoy na index (key). Ang pagnunumero ng mga elemento ng koleksyon ay nagsisimula sa 0. Ang lahat ng tinukoy na uri ng data ay nilikha lamang sa pamamagitan ng program.

Array. Kinakatawan ang isang bilang na koleksyon ng mga halaga ng isang arbitrary na uri. Maaaring ma-access ang isang elemento ng array sa pamamagitan ng index nito. Ang mga elemento ng isang array ay maaaring, sa partikular, iba pang mga array. Binibigyang-daan ka nitong lumikha ng mga multidimensional na array.

Istruktura. Kumakatawan sa isang pinangalanang koleksyon na binubuo ng Key-Value pares. Ang susi ay maaari lamang maging isang string, ang halaga ay maaaring isang arbitrary na uri. Maaaring ma-access ang isang elemento ng istraktura sa pamamagitan ng halaga ng susi nito, i.e. sa pamamagitan ng pangalan. Karaniwang ginagamit upang mag-imbak ng maliit na bilang ng mga halaga, bawat isa ay may natatanging pangalan.

Korespondensiya. Tulad ng Structure, isa itong koleksyon ng Key - Value pairs. Gayunpaman, hindi tulad ng isang Structure, ang isang susi ay maaaring maging sa halos anumang uri.

Listahan ng mga halaga. Karaniwang ginagamit upang malutas ang mga problema sa interface. Binibigyang-daan kang bumuo ng mga dynamic na hanay ng mga halaga at manipulahin ang mga ito (magdagdag, mag-edit, magtanggal ng mga elemento, mag-sort). Maaari itong maglaman ng mga halaga ng anumang uri; bilang karagdagan, ang mga uri ng mga nakaimbak na halaga sa isang listahan ay maaaring magkakaiba.

Talaan ng mga halaga. Binibigyang-daan ka ng talahanayan ng halaga na bumuo at magmanipula ng mga dynamic na hanay ng mga halaga. Maaari itong punan ng mga halaga ng anumang uri, at sa isang talahanayan ang mga uri ng mga nakaimbak na halaga ay maaaring magkakaiba.

Puno ng mga halaga. Ang value tree ay isang dynamic na nabuong hanay ng mga halaga ng anumang uri, katulad ng isang talahanayan ng mga halaga. Hindi tulad ng isang talahanayan ng halaga, ang mga hilera ng isang puno ng halaga ay maaaring bumuo ng mga hierarchical na istruktura: ang bawat hilera sa puno ay maaaring magkaroon ng isang hanay ng mga subordinate na hilera, ang bawat isa sa mga subordinate na hilera ay maaari ding magkaroon ng isang hanay ng mga subordinate na hilera, at iba pa. Sa kasong ito, ang paghahanap ng mga halaga, pag-uuri, at pagkuha ng mga resulta ay maaaring isagawa alinman ayon sa kasalukuyang antas ng hierarchy, o kabilang ang lahat ng mga nasa ilalim.

COMSafeArray. Kumakatawan sa isang object wrapper sa isang multidimensional na SAFEARRAY array ng

Pamamaraan SelectFromFileClick(Element) // Pagpili ng file na may viewingFileSelectionDialog = NewFileSelectionDialog(FileSelectionDialogMode.Open); FileSelectionDialog.Directory = ""; FileSelectDialog.Preview = True; FileSelectionDialog.FilterIndex = 0; Kung FileSelectDialog.Select() Then File = New File(FileSelectDialog.FullFileName); Larawan = NewValueStorage(NewImage(FileSelectionDialog.FullFileName)); DisplayImage(); tapusin kung; Katapusan ng Pamamaraan

THIS_KEYWORD
<Это конструкция языка>,
<Это конструкция языка>
THIS_FUNCTION(<Это конструкция языка>)

Sa mga panuntunang naglalarawan ng isang wika ng query, ang mga pagbuo ng wika ay ipinahiwatig sa mga anggulong bracket. Ang mga keyword at pangalan ng function ay inilarawan sa malalaking titik.

Ang mga konstruksyon ng wika ay maaaring maglaman ng mga opsyonal na elemento - mga keyword, atbp. Sa mga panuntunang naglalarawan sa wika ng query, ang mga opsyonal na elemento ay nakapaloob sa mga square bracket na "[" at "]":

[ITO AY ISANG OPTIONAL NA SALITA] [<Это необязательная конструкция>]

Sa ilang mga kaso, ang disenyo ng wika ay maaaring gumamit ng isa sa ilang mga alternatibong elemento. Ang mga nasabing elemento sa mga panuntunan ay nakalista sa pamamagitan ng isang vertical bar na "|":

EITHER_THIS_WORD | O THIS_WORD
<Либо эта конструкция> | <Либо эта конструкция>

Ang mga paglalarawan ng lahat ng mga konstruksyon ay sinamahan ng mga halimbawa na nagpapaliwanag kung paano ginagamit ang mga ito sa wika ng query.

Mga komento sa Query Language

Ang katawan ng kahilingan ay maaaring magsama ng mga komento. Ang isang komento ay itinuturing na isang bahagi ng isang linya na nagsisimula sa pagkakasunud-sunod ng mga character // at nagpapatuloy hanggang sa dulo ng linya:

// Ito ay isang komento.

Ang mga komento ay binabalewala kapag ang kahilingan ay naisakatuparan.

Bilingual na representasyon ng mga keyword

Ang isa sa mga makabuluhang tampok ng 1C: Enterprise query language ay na, tulad ng sa built-in na wika, ang lahat ng mga keyword ay may dalawang spelling: sa Russian at English. Sa bandang huli sa kabanatang ito, ipinahiwatig ang mga baybay na Ruso ng mga keyword. Nasa ibaba ang isang talahanayan na nagpapakita ng mga sulat sa pagitan ng Ruso at Ingles at mga pagpipilian sa pagbabaybay para sa mga keyword sa wika ng query...... (inalis)

Mga pangunahing seksyon ng teksto ng kahilingan

Maaaring ilarawan ang text ng kahilingan sa pamamagitan ng sumusunod na panuntunan:

<Описание запроса>
[<Объединение запросов>]
[<Упорядочивание результатов>]
[AUTO ORDER]
[<Описание итогов>]

Tulad ng makikita mula sa panuntunang ito, ang teksto ng kahilingan ay binubuo ng ilang bahagi, o mga seksyon:

Sa seksyon<Упорядочивание результатов>Maaari mong tukuyin ang mga kondisyon ng pag-order para sa mga hilera sa resulta ng query. Ang pag-order ng resulta ng isang query ay tinatalakay sa pahina 324.

Binibigyang-daan ka ng AUTO ORDER na paganahin ang awtomatikong pag-order ng mga row sa resulta ng query. Ang mode na ito ay inilarawan sa pahina 331.

Sa seksyon<Описание итогов>Maaari mong tukuyin kung aling mga kabuuan ang dapat kalkulahin sa query. Ang seksyong ito ay inilarawan sa pahina 332.

Deskripsyon ng Kahilingan

Gaya ng nabanggit na, ang teksto ng kahilingan ay dapat na naglalaman ng isang seksyon ng paglalarawan ng kahilingan, na tumutukoy sa:

Mga field na ilalagay sa resulta ng kahilingan;

Mga pinagmumulan ng data ng query - mga talahanayan ng pinagmulan;

Mga kundisyon na nakakaapekto sa pagpili ng data sa isang kahilingan;

Ang pagkakasunud-sunod kung saan naka-grupo ang mga resulta ng query.

Ang seksyon ng paglalarawan ng kahilingan ay binubuo ng ilang magkakaugnay na pangungusap:

PILIIN [IBA] [UNA<Количество>]
<Список полей выборки>
[MULA SA<Список источников>]
[SAAN<Условие отбора>]
[GROUP BY<Поля группировки>]
[MAY<Условие отбора>]
[PARA SA PAGBABAGO [<Список таблиц верхнего уровня>]]

Ang paglalarawan ng kahilingan ay nagsisimula sa isang kinakailangang keyword PUMILI.

Alok SAAN<Условие отбора> nagbibigay-daan sa iyo na i-filter ang resulta ng query. Kasama lang sa resulta ang mga talaan kung saan totoo ang tinukoy na kundisyon. Ang mga tuntunin para sa paglalarawan ng mga kondisyon sa pagpili ay tinatalakay sa pahina 315.

Alok PARA SA PAGBABAGO ay nilayon upang ipahiwatig ang pangangailangan na harangan ang data na nabasa sa isang transaksyon.

Alok GRUPO ay nagbibigay-daan sa iyo na ilarawan ang pagkakasunud-sunod kung saan naka-grupo ang mga resulta ng query. Ang pagpapangkat ay tinalakay nang detalyado sa pahina 316.

Alok MAY nagbibigay-daan sa iyo na magpataw ng mga kundisyon sa mga resulta ng pagpapangkat. Inilarawan sa pahina 318.

Ang lahat ng mga halimbawa ng query sa kabanatang ito ay nagbibigay ng teksto ng query at ang resulta ng query. Ipinapalagay na ang teksto ng kahilingan ay ipinasa bilang isang parameter sa paraan ng Ipatupad ng object ng Kahilingan.

Magbigay tayo ng isang halimbawa ng isang medyo simpleng query na binubuo ng isang SELECT statement at isang listahan ng mga field ng pagpili.

//Kailangan mong magpakita ng listahan ng mga invoice sa ulat.

Resulta ng query:

Paggamit ng salitang IBA

Sa maraming mga sitwasyon, ito ay kanais-nais na ang parehong mga hilera sa isang ulat ay hindi paulit-ulit.

// Ito ay kinakailangan upang malaman kung aling mga katapat sa pangkalahatan
// ang mga kalakal ay ipinadala para sa panahon.
Piliin ang Document.Invoice.Counterparty

Resulta ng query:

Makikita na ang resulta ng query ay naglalaman ng maraming paulit-ulit na linya, na nagpapababa ng kalinawan nito. Upang maiwasan ang pag-uulit, dapat na tukuyin ang keyword na DIFFERENT sa paglalarawan ng query.

Piliin ang Iba't ibang Document.Invoice.Counterparty

Resulta ng query:

Paggamit ng salitang UNA

Sa ilang mga kaso, kinakailangang magpakita ng limitadong bilang ng mga row sa isang ulat. Upang gawin ito, sa paglalarawan ng query dapat mong tukuyin ang keyword UNA, at pagkatapos nito - ang kinakailangang bilang ng mga linya.

// Kailangang piliin ang limang pinakamahal na produkto.
// Ang pagpili ay dapat isagawa sa pababang pagkakasunud-sunod ng presyo ng produkto.
Piliin ang Una 5
Directory.Nomenclature.Name,
Directory.Nomenclature.Price ng Pagbili
Pagbukud-bukurin ayon sa Directory.Nomenclature.PurchasePrice Pababa

Resulta ng query:

Paglalarawan ng mga field ng pagpili

Pagkatapos ng ipinag-uutos na keyword na SELECT (at ang mga kwalipikadong salita na DIFFERENT at FIRST), isang listahan ng mga field ng pagpili ay tinukoy sa text ng kahilingan. Ipoproseso ang mga field na ito kapag kumukuha ng data sa isang kahilingan. Ang resulta ng query ay magkakaroon din ng set ng mga field na tinukoy sa listahang ito. Ang mga patlang ng pagpili ay inilarawan ayon sa mga sumusunod na patakaran:

<Описание поля>[ [PAANO]<Псевдоним поля>]

<Выражение>[.<Группа полей>]

Ang listahan ng mga field ng pagpili ay binubuo ng isa o higit pang mga elemento na pinaghihiwalay ng mga kuwit. Ang bawat isa<Поле выборки>binubuo ng isang paglalarawan ng field ng pagpili at isang opsyonal na alias ng field.

Sa halip na ilista ang mga field sa listahan ng pagpili, maaari kang tumukoy ng asterisk na “*”. Nangangahulugan ito na ang resulta ng query ay dapat maglaman ng lahat ng mga field na nasa source table - ang query data source na inilarawan sa listahan ng mga source.

Magkomento! Kapag tinukoy ang isang asterisk "*" sa listahan ng mga field ng pagpili, ang mga virtual na field ng source table ay hindi kasama sa resulta.

<Описание поля>tumutukoy kung paano dapat mabuo ang mga halaga ng field. Sa pinakasimpleng kaso, ang field ng pagpili ay isang link sa isang field sa source table. Maaaring tukuyin ang link sa pamamagitan ng pagtukoy sa talahanayan na naglalaman ng field na ito, o nang hindi tinukoy ang talahanayan mismo. Ang field dereferencing ay tinatalakay sa.

Sa pangkalahatan, ang field ng pagpili ay maaaring hindi lamang isang link sa isang field sa source table, kundi pati na rin ang ilan<Выражение>. Ang mga ekspresyon ay tinalakay nang detalyado sa pahina 344.

Maaaring pagsama-samahin ang mga resulta ng query gamit ang mga pinagsama-samang function na tinukoy bilang mga expression sa mga piling field. Ang pagpapangkat ng mga resulta ng query ay tinalakay sa pahina 316. Ang pinagsama-samang mga function ay inilarawan sa pahina 345.

Ang bawat field ng pagpili ay maaaring magtalaga ng alias. Sa hinaharap maaari itong magamit para sa mas maginhawang pag-access sa field na ito. Ang paggamit ng mga field alias ay tinalakay sa ibaba.

<Группа полей>maaari lamang tukuyin kapag ang piling field ay tumuturo sa isang nested table. Sa kasong ito, maaari mong tukuyin kung aling mga field ang dapat iproseso sa pagpili ng nested table. Kung hindi tinukoy ang isang pangkat ng field, ang lahat ng mga field ng nested table ay ipoproseso sa pagpili. Ang pag-access sa mga nested table ay inilarawan sa .

Mga alyas sa field sa listahan ng pagpili

Kung magtatalaga ka ng alias sa isang field ng pagpili, maaari kang sumangguni sa field na ito sa ibang pagkakataon gamit ang alias nito sa ORDER BY at TOTAL na mga clause, gayundin kapag nagtatrabaho sa resulta ng isang query. Ang ganitong paggamot ay maaaring maging mas maginhawa at visual, at sa ilang mga kaso ang tanging posible.

Maaaring mauna ang keyword na HOW sa field alias. Maaaring hindi matukoy ang salitang ito, ngunit kung ito ay tinukoy, ang visibility at pagiging madaling mabasa ng text ng kahilingan ay tataas.

Ang mga field alias ay itinakda alinsunod sa mga panuntunan para sa pagtatalaga ng mga variable identifier. Ang mga alias sa kahilingan ay hindi maaaring pareho.

Ang pagtatalaga ng mga alias sa mga field ay hindi mismo makakaapekto sa pagpili ng data sa query.

// Dapat mapili mula sa direktoryo ng produkto
// pangalan ng mga kalakal at pangalan ng mga pangkat.
Pumili
Direktoryo. Nomenclature. Pangalan Bilang Produkto,
Direktoryo. Nomenclature.Magulang.Pangalan Bilang Grupo
mula sa
Direktoryo.Nomenclature

Resulta ng query:

Tandaan na ang mga field sa resulta ng query sa field ay pinangalanang "Item" at "Group". Kung ang mga field alias ay hindi tinukoy, ang mga field sa resulta ng query ay tatawaging "Pangalan" at "Pangalan1" (ang mga pangalan ng field sa resulta ng query ay hindi maaaring tumugma, kaya ang "1" ay awtomatikong idinagdag sa pangalan ng pangalawang field), na hindi gaanong malinaw.

Mga nested na talahanayan sa listahan ng mga field ng pagpili

Ang isang field sa piling listahan ay maaaring sumangguni sa isang nested na talahanayan sa source ng data ng query. Sa kasong ito, ang field ng resulta ng query ay magiging uri ng Resulta ng Query, ibig sabihin, maglalaman ito ng nested na resulta ng query na nabuo batay sa isang nested source table.

Bilang default, lahat ng field ng nested table - ang data source - ay kasama sa nested na resulta. Posibleng tahasang tukuyin ang isang pangkat ng mga patlang na dapat na nasa isang nested na resulta ng query. Ang isang pangkat ng mga nested na field ng resulta ay inilalarawan ayon sa sumusunod na panuntunan:

(<Список вложенных полей>) | *

<Вложенное поле [, <Вложенное поле>[, ...] ]

<Список вложенных полей>binubuo ng isa o higit pang mga elemento na pinaghihiwalay ng mga kuwit. Kung ang listahan ay binubuo ng isang elemento, hindi ito kailangang ilakip sa mga panaklong.

Sa halip na maglista ng mga nested field, maaari kang tumukoy ng asterisk na “*”; ito ay nangangahulugan na ang nested query na resulta ay dapat maglaman ng lahat ng mga field na nasa nested table.

<Выражение>[[PAANO]<Псевдоним поля>]

<Вложенное поле>maaaring kumatawan sa ilang pagpapahayag. Sa pinakasimpleng kaso<Выражение>ay isang reference sa isang field sa isang nested table. Ang mga ekspresyon ay tinalakay nang detalyado sa pahina 344.

Ang bawat nested field ay maaaring magtalaga ng alias. Dagdag pa<Псевдоним поля>ay maaaring gamitin para sa mas maginhawang pag-access sa field na ito, katulad ng mga alias para sa mga field sa listahan ng pagpili - tingnan ang seksyong "Mga alyas para sa mga field sa listahan ng pagpili" sa

Maaaring italaga ang mga alias sa mga nested na field kahit na ang isang alias ay itinalaga sa nested table mismo.

//Kinakailangan na ipakita ang detalye ng mga invoice sa ulat,
// ang mismong dokumento, katawagan at dami.
Pumili

Document.Invoice.Composition.(Nomenclature Bilang Produkto, Dami)

Resulta ng query:

Link Tambalan
produkto Dami
Jeans para sa mga babae 4
Jeans para sa mga babae 5
Shirt na "Cowgirl" 5
Invoice 00005 na may petsang 02/24/2002 0:00:00 Jeans para sa mga babae 1
Jeans para sa mga babae 1
Moydodyr "Aquarium" 5
Lababo si "Lily" 8
Panghalo "Ultra" 10

Pakitandaan na ang field na "Composition" ng resulta ng query ay isang nested table na may mga field na "Nomenclature" at "Quantity".

//Ipakita ang lahat ng mga field ng tabular na bahagi ng invoice sa ulat.
Pumili
Document.Invoice.Link,
Document.Invoice.Composition.*

Ang layunin ng IZ clause ay magtalaga ng isang listahan ng mga source table - mga pinagmumulan ng data na ginamit sa isang ibinigay na SELECT statement.

Dapat tandaan na ang IZ clause sa query language ay opsyonal. Maaari itong alisin kung ang mga pinagmumulan ng data ay ganap na kwalipikado sa paglalarawan ng listahan ng mga field ng pagpili na nilalaman sa sugnay na SELECT. Pakitandaan na ang isang bilang ng mga halimbawa sa mga nakaraang seksyon ay hindi naglalaman ng IZ clause.

Pagkatapos ng keyword na IZ, isang listahan ng mga mapagkukunan ay ipinahiwatig. Sa pangkalahatan, ang listahan ng mga mapagkukunan ay inilalarawan ng sumusunod na hanay ng mga panuntunan:

<Источник>[, <Источник>[, ...]]

Ang mga mapagkukunan ng data ng query ay nakalista sa listahan ng pinagmulan, na pinaghihiwalay ng mga kuwit. Bawat<Источник>ang listahan ng mga mapagkukunan ay dapat magsama ng isang paglalarawan ng pinagmulan; bilang karagdagan, maaari itong tukuyin<Перечень соединений>- mga panuntunan para sa pagkonekta ng source sa iba pang source. Ang mga pagtutukoy ng koneksyon ay inilarawan.

<Описание источника> [ <Перечень соединений> ]

Kung ang data source ay isang infobase table,<Описание источника>naglalaman ng<Имя таблицы>.

<Таблица>[ [PAANO]<Псевдоним источника>]

Kung virtual ang source table, maaari mong tukuyin<Параметры>pagbuo nito. Ang mga parameter ng virtual na talahanayan ay inilarawan nang detalyado sa seksyong "Mga Pinagmumulan ng Data ng Query."

<Имя таблицы> [(<Параметры>)] | <Описание запроса>

Ang isang subquery ay maaari ding kumilos bilang isang pinagmumulan ng data ng query; sa kasong ito, naglalaman ang paglalarawan ng pinagmulan<Описание запроса>. Ang paggamit ng mga nested query ay inilarawan sa.

Ang paglalarawan ng data source ay maaari ding magtalaga ng alias nito. Dagdag pa<Псевдоним источника>ay maaaring gamitin para sa mas maginhawang pag-access sa source na ito. Ang paggamit ng mga alias ng data source ay tinatalakay sa.

Mga Detalye ng Koneksyon

Kapag tinutukoy ang maramihang mga mapagkukunan sa listahan ng pinagmulan, para sa bawat tala mula sa unang talahanayan ng pinagmulan, isang pagpipilian ang ginawa mula sa pangalawang talahanayan ng pinagmulan, at iba pa. Kaya, ang query ay nagreresulta sa lahat ng posibleng kumbinasyon ng lahat ng mga talaan mula sa lahat ng tinukoy na mapagkukunan.

Resulta ng query:

Counterparty bangko
Mga supplier JSCB InvestBank
Mga supplier JSCB PromStroyBank
Pabrika ng pagniniting "Zarya" JSCB InvestBank
Pabrika ng pagniniting "Zarya" JSCB PromStroyBank
Pabrika ng damit ng denim JSCB InvestBank
Pabrika ng damit ng denim JSCB PromStroyBank
Mga mamimili JSCB InvestBank
Mga mamimili JSCB PromStroyBank
Clothing fair JSCB InvestBank
Clothing fair JSCB PromStroyBank
Trading house na "Budenovsky" JSCB InvestBank
Trading house na "Budenovsky" JSCB PromStroyBank
Pavilion 45 sa wholesale market JSCB InvestBank
Pavilion 45 sa wholesale market JSCB PromStroyBank
Bavaria - porselana JSCB InvestBank
Bavaria - porselana JSCB PromStroyBank
Pabrika ng damit ng denim JSCB InvestBank
Pabrika ng damit ng denim JSCB PromStroyBank
JSCB PromStroyBank JSCB InvestBank
JSCB PromStroyBank JSCB PromStroyBank

Ang resulta ng query ay naglalaman ng mga kumbinasyon ng lahat ng mga katapat sa lahat ng mga bangko. Bilang isang patakaran, ang gayong resulta sa kanyang sarili ay hindi makatwiran. Karaniwan, ang mga kumbinasyon ng mga talaan mula sa iba't ibang mga talahanayan ng pinagmulan ay kailangang limitahan ng ilang kundisyon. Posible sa isang wika ng query na ilarawan ang gayong kumbinasyon ng mga mapagkukunan sa pamamagitan ng pagtukoy sa mga pinagmulan mismo at pagtukoy sa mga kondisyon kung saan ang mga kumbinasyon ng mga tala mula sa mga mapagkukunang ito ay kailangang isama sa resulta ng query.

Mayroong ilang mga uri ng mga koneksyon, inilalarawan sila ng mga sumusunod na patakaran:

<Соединение> [<Перечень соединений>]

Sa pangkalahatan<Перечень соединений>maaaring maglaman at maglarawan hindi lamang ng isang koneksyon (ng dalawang pinagmumulan), kundi pati na rin ng ilang koneksyon ng ilang pinagmumulan nang sabay-sabay.

[INTERNAL] SUMALI<Описание источника>NG<Условие отбора> |

KALIWA [OUTER] SUMALI<Описание источника>NG<Условие отбора> |

KANAN [OUTER] SUMALI<Описание источника>NG<Условие отбора> |

BUONG (Outer) SUMALI<Описание источника>NG<Условие отбора>

<Условие отбора>naglalaman ng mga kundisyon ayon sa kung saan ang pagpili ay dapat pagsamahin ang data mula sa orihinal na mga talahanayan - ang mga mapagkukunan ng query. Ang mga tuntunin para sa paglalarawan ng mga kundisyon sa isang query na wika ay tinatalakay sa pahina 357.

Ang mga keyword na KALIWA, KANAN at BUONG linawin ang katangian ng koneksyon. Maaaring hindi matukoy ang mga salitang INTERNAL o EXTERNAL; pinapataas ng mga ito ang kalinawan at pagiging madaling mabasa ng text ng kahilingan.

Ang mga pinagmumulan na pinagsasama ay hindi katumbas ng isa't isa, at sa ilang mga kaso ang resulta ay depende sa kung aling talahanayan ang unang nakalista, bago ang JOIN na keyword (sa kaliwa nito), at kung aling talahanayan ang nakalista sa pangalawa (sa kanan).

Ang ibig sabihin ng [INTERNAL] JOIN ay mula sa parehong source table - data source, tanging ang mga kumbinasyon ng mga record na nakakatugon sa tinukoy na kundisyon ang dapat isama sa resulta ng query. Ang natitirang mga tala ay hindi kasama sa resulta.

// Kailangang malaman kung aling mga bangko ang magkakasabay
// mga katapat (ang parehong mga pangalan ay naroroon
//kapwa sa direktoryo ng Counterparties at sa direktoryo ng Mga Bangko).
Pumili

Banks.Link How to Bank
Mula sa

Inner Join
Directory.Bank How Banks
Sa pamamagitan ng

Resulta ng query:

Counterparty bangko
JSCB PromStroyBank JSCB PromStroyBank

Ang LEFT [OUTER] JOIN ay nangangahulugan na ang resulta ng query ay dapat magsama ng mga kumbinasyon ng mga record mula sa parehong source table na nakakatugon sa tinukoy na kundisyon. Ngunit, hindi tulad ng panloob na pagsali, ang resulta ng query ay dapat ding magsama ng mga tala mula sa unang pinagmulan (ipinahiwatig sa kaliwa ng salitang SUMALI) kung saan walang nakitang mga tala mula sa pangalawang pinagmulan na tumutugma sa kundisyon.

Sa ganitong paraan, ang resulta ng query ay isasama ang lahat ng mga tala mula sa unang pinagmulan; isasama ang mga ito sa mga talaan mula sa pangalawang pinagmulan kung matugunan ang tinukoy na kundisyon. Mga linya ng resulta ng query kung saan walang nakitang mga tala mula sa pangalawang pinagmulan na tumutugma sa kundisyon ay maglalaman ng NULL sa mga field na nabuo batay sa mga talaan mula sa pinagmulang ito.

//Kailangang ipakita ang lahat ng katapat sa ulat, at para sa mga iyon
// na isa ring bangko - ipahiwatig ang isang link sa bangko.
Pumili
Counterparties. Link Bilang Counterparty,
Banks.Link How to Bank
Mula sa
Directory. Counterparties Paano Counterparties
Kaliwang Panlabas na Sumali
Directory.Bank How Banks
Sa pamamagitan ng
Counterparties.Name = Banks.Name

Resulta ng query:

Ang RIGHT [OUTER] JOIN ay nangangahulugan na ang resulta ng query ay dapat magsama ng mga kumbinasyon ng mga record mula sa parehong source table na nakakatugon sa isang tinukoy na kundisyon. Bilang karagdagan, ang resulta ng query ay dapat ding magsama ng mga tala mula sa pangalawang pinagmulan (ipinahiwatig sa kanan ng salitang CONNECTION) kung saan walang nakitang mga tala mula sa unang pinagmulan na tumutugma sa kundisyon.

Kaya, ang resulta ng query ay isasama ang lahat ng mga tala mula sa pangalawang pinagmulan; isasama ang mga ito sa mga talaan mula sa unang pinagmulan kung matugunan ang tinukoy na kundisyon. Mga linya ng resulta ng query kung saan walang nakitang mga tala mula sa unang pinagmulan na tumutugma sa kundisyon ay maglalaman ng NULL sa mga field na nabuo batay sa mga talaan mula sa pinagmulang ito.

//Kailangang ipakita ang lahat ng mga bangko sa ulat, at para sa mga iyon
// sino rin ang katapat - ipahiwatig ang isang link sa katapat.
PUMILI
Counterparties. Link Bilang Counterparty,
Banks.Link Like Bank
MULA SA
Directory. Counterparties Paano Counterparties
Kanan Outer Join
Directory.Bank How Banks
Sa pamamagitan ng
Counterparties.Name = Banks.Name

Resulta ng query:

Counterparty bangko
WALA JSCB InvestBank
JSCB PromStroyBank JSCB PromStroyBank

Ang FULL [OUTER] JOIN ay nangangahulugan na ang resulta ng query ay dapat magsama ng mga kumbinasyon ng mga tala mula sa parehong source table na nakakatugon sa isang tinukoy na kundisyon. Bilang karagdagan, ang resulta ng query ay dapat ding isama ang mga talaan mula sa parehong mga mapagkukunan kung saan walang nakitang mga tugma.

Sa ganitong paraan, ang resulta ng query ay isasama ang lahat ng mga talaan mula sa parehong mga mapagkukunan; sila ay konektado sa isa't isa kapag ang tinukoy na kondisyon ay natugunan. Mga linya ng resulta ng query kung saan walang nakitang mga tala mula sa anumang pinagmulan na tumutugma sa kundisyon ay maglalaman ng NULL sa mga field na nabuo batay sa mga talaan mula sa pinagmulang iyon.

// Kinakailangang ipakita ang lahat ng katapat at lahat ng mga bangko sa ulat,
// at ang mga pareho - i-print sa isang linya.
Pumili
Counterparties. Link Bilang Counterparty,
Banks.Link How to Bank
Mula sa
Directory. Counterparties Paano Counterparties
Buong Outer Join
Directory.Bank How Banks
Sa pamamagitan ng
Counterparties.Name = Banks.Name

Resulta ng query:

Mga alias ng data source

Kung magtatalaga ka ng alias sa isang data source, sa hinaharap ay maa-access ang source na ito gamit ang alias na ito (at hindi na maa-access sa pamamagitan ng pagtukoy sa pangalan ng talahanayan). Ang ganitong paggamot ay maaaring maging mas maginhawa at visual, at sa ilang mga kaso ang tanging posible.

Ang alias ay itinakda alinsunod sa mga panuntunan para sa pagtatalaga ng mga variable identifier. Ang mga alias sa kahilingan ay hindi maaaring pareho.

Maaaring mauna ang keyword na HOW sa source alias. Maaaring hindi matukoy ang salitang ito, ngunit kung ito ay tinukoy, ang visibility at pagiging madaling mabasa ng text ng kahilingan ay tataas.

Ang pagtatalaga ng mga alias sa mga pinagmumulan ay hindi mismo makakaapekto sa pagpili ng data sa query.

// Ang halimbawang ito ay nagpapakita ng paggamit
// sa listahan ng mga field ng pagpili ng alyas na Produkto,
// itinalaga sa source table na Directory.Nomenclature
Pumili
Pangalan ng Produkto,
Produkto.Magulang
Mula sa
Directory.Nomenclature.Product

Mga nested na talahanayan sa listahan ng pinagmulan

Ang listahan ng mga mapagkukunan ay maaari ding magsama ng mga nested table - mga bahagi ng tabular ng mga sangguniang aklat at dokumento.

//Kinakailangan na ipakita ang detalye ng mga invoice sa ulat -
// ipakita ang mismong dokumento, katawagan at dami.
//Ang listahan ng mga mapagkukunan ay naglalaman ng nested table na "Komposisyon" -
// tabular na bahagi ng invoice.
// Ang pagpili ay limitado sa walong mga tala upang hindi ma-overload ang halimbawa.
Piliin ang Una 8
Link, Nomenclature, Dami
Mula sa
Dokumento.Invoice.Komposisyon

Resulta ng query:

Link Nomenclature Dami
Invoice 00007 na may petsang 02/25/2002 21:03:21 Jeans para sa mga babae 4
Invoice 00006 na may petsang 02/25/2002 0:00:00 Jeans para sa mga babae 5
Invoice 00006 na may petsang 02/25/2002 0:00:00 Shirt na "Cowgirl" 5
Invoice 00005 mula 03/01/2002 20:58:28 Jeans para sa mga babae 1
Invoice 00004 na may petsang 03/01/2002 20:50:40 Jeans para sa mga babae 1
Invoice 00003 na may petsang 02/23/2002 0:00:00 Moydodyr "Aquarium" 5
Invoice 00003 na may petsang 02/23/2002 0:00:00 Lababo si "Lily" 8
Invoice 00003 na may petsang 02/23/2002 0:00:00 Panghalo "Ultra" 10

Pakitandaan na kapag tumutukoy ng nested table sa listahan ng mga source, posibleng ma-access ang parehong mga field ng nested table mismo at ang mga field ng top-level na talahanayan (ang isa na naglalaman ng nested table). Sa kasong ito, ang field na "Link" ng dokumento mismo ay na-access.

Mga subquery sa listahan ng pinagmulan

Sa listahan ng mga source ng query, maaaring gamitin ang isang subquery bilang source table. Sa kasong ito, naglalaman ang paglalarawan ng pinagmulan ng paglalarawan ng subquery. Ang paglalarawan ng isang nested query ay pinagsama-sama sa parehong paraan tulad ng isang regular na query: tingnan

Ang paggamit ng nested query bilang data source ay hindi naiiba sa paggamit ng infobase table. Ang lahat ng mga field na inilarawan sa listahan ng mga field ng pagpili ng subquery ay magagamit bilang mga field ng naturang source.

Ang resulta ay magiging eksaktong kapareho ng sa nakaraang halimbawa.

Pagbuo ng mga ulat

Nagtatrabaho sa mga kahilingan

Upang gumana sa mga query, ginagamit ang isang built-in na object ng wika Hiling . Pinapayagan ka nitong makakuha ng impormasyon na nakaimbak sa mga patlang ng database sa anyo ng isang sample na nabuo ayon sa tinukoy na mga patakaran.

Mga Pinagmumulan ng Data ng Query

Ang query ay tumatanggap ng paunang impormasyon mula sa isang set ng mga talahanayan. Ang mga talahanayan na ito ay kumakatawan sa data mula sa mga totoong talahanayan ng database sa isang madaling-analyze na form. Maaari silang nahahati sa dalawang malalaking grupo: tunay at virtual.

Ang mga totoong talahanayan, sa turn, ay maaaring maging object (reference) o non-object (non-reference):

Ang natatanging tampok ng mga totoong talahanayan ay naglalaman ang mga ito ng data mula sa isang tunay na talahanayan na nakaimbak sa isang database. Halimbawa, ang mga tunay na talahanayan ay ang talahanayang "Directory.Clients", na tumutugma sa direktoryo ng "Mga Kliyente", o ang talahanayang "Rehistro ng Pag-iipon. Natitirang Materyal", na tumutugma sa rehistro ng akumulasyon ng "Natitirang Materyal".

Ang mga virtual na talahanayan ay pangunahing nabuo mula sa data mula sa maraming mga talahanayan ng database. Halimbawa, ang isang virtual na talahanayan ay ang talahanayan na "Accumulation Register. Material Remainings. Balances and Turnovers", na nabuo mula sa ilang mga table ng accumulation register na "Material Remainings". Minsan ang mga virtual na talahanayan ay maaaring mabuo mula sa isang tunay na talahanayan (halimbawa, ang virtual na talahanayan na "Prices.SliceLast" ay nabuo batay sa talahanayan ng rehistro ng impormasyon na "Mga Presyo"). Gayunpaman, kung ano ang pagkakatulad ng lahat ng virtual na talahanayan ay maaari silang bigyan ng bilang ng mga parameter na tutukuyin kung anong data ang kasama sa mga virtual na talahanayang iyon. Maaaring iba ang hanay ng mga naturang parameter para sa iba't ibang virtual na talahanayan, at tinutukoy ng data na nakaimbak sa mga talahanayan ng database ng pinagmulan.

Ang mga totoong talahanayan ay nahahati sa object (reference) at non-object (non-reference) na mga talahanayan.

Ang mga talahanayan ng object (reference) ay nagbibigay ng impormasyon tungkol sa mga uri ng data ng reference (mga direktoryo, dokumento, mga plano para sa mga uri ng mga katangian, atbp.). At sa non-object (non-reference) - lahat ng iba pang uri ng data (constants, registers, atbp.).

Ang isang natatanging tampok ng mga object (reference) na talahanayan ay naglalaman ang mga ito ng field na "Link" na naglalaman ng link sa kasalukuyang record. Bilang karagdagan, para sa mga naturang talahanayan posible na makakuha ng isang pasadyang representasyon ng bagay; ang mga talahanayan na ito ay maaaring hierarchical at ang mga patlang ng naturang mga talahanayan ay maaaring maglaman ng mga nested na talahanayan (mga bahagi ng talahanayan).

Wika ng pagtatanong

Ang algorithm kung saan pipiliin ang data mula sa mga talahanayan ng pinagmulan ng kahilingan ay inilarawan sa teksto ng kahilingan sa isang espesyal na wika - wika ng tanong. Ang teksto ng kahilingan ay binubuo ng ilang bahagi:

    humiling ng paglalarawan,

    pinagsasama-samang mga query

    pag-order ng mga resulta,

    awtomatikong pag-order,

    paglalarawan ng mga resulta.

Ang tanging mandatoryong bahagi ng kahilingan ay ang una - ang paglalarawan ng kahilingan. Ang lahat ng iba ay naroroon kung kinakailangan.

Deskripsyon ng Kahilingan tumutukoy sa mga pinagmumulan ng data, mga field ng pagpili, pagpapangkat, atbp.

Pinagsasama-sama ang mga query tinutukoy kung paano pagsasama-samahin ang mga resulta ng maraming query.

Pag-aayos ng mga resulta tumutukoy sa mga kondisyon ng pag-order para sa mga hilera ng resulta ng query.

Auto-order nagbibigay-daan sa iyong paganahin ang awtomatikong pag-order ng mga hilera ng resulta ng query.

Paglalarawan ng mga resulta tinutukoy kung aling mga kabuuan ang dapat kalkulahin sa query at kung paano ipangkat ang mga resulta.

Report Register of Documents Provision of Services

Ang unang ulat na batayan kung saan magsisimula kaming pamilyar sa wika ng query ay ang ulat na "Rehistro ng Mga Dokumento para sa Probisyon ng Mga Serbisyo". Ipapakita lamang ng ulat na ito ang isang listahan ng mga dokumentong "Probisyon ng Serbisyo" na umiiral sa database sa pagkakasunud-sunod ng kanilang mga petsa at numero.

Gumawa tayo ng bagong configuration object sa configurator: Iulat ang “Register of Documents Provision of Services”. Pumunta tayo sa tab na "Layout" at ilunsad ang taga-disenyo ng output form.

Bilang data source para sa kahilingan, pipiliin namin ang object (reference) table ng mga dokumentong “Service Provision”. Mula sa talahanayang ito pipiliin namin ang mga sumusunod na field:

  • "Guro",

    "kliyente":

Pakitandaan na kapag pinili mo ang mga field na "Warehouse", "Master" at "Customer", ang mga field na "Warehouse.View", "Master.View" at "Customer.View" ay pinili din sa listahan ng mga napiling field. Ang katotohanan ay na sa pangkalahatang kaso ay ipinapalagay na ang mga field na ito ay ipapakita sa mga cell ng isang spreadsheet na dokumento. Dahil ang mga katumbas na field na "Warehouse", "Master" at "Customer" ay mga reference field, kung ang isang reference value ay ipinasa bilang isang parameter value para sa output, ang system ay magsasagawa ng karagdagang kahilingan upang makakuha ng representasyon ng field na ito (na magiging ipinapakita sa dokumento), na nagreresulta sa mas mabagal na output ng ulat. Samakatuwid, kapag pumipili ng mga patlang ng sanggunian, nag-aalok ang system na agad na isama ang mga representasyon ng mga patlang ng sanggunian sa listahan ng mga napiling patlang, sa inaasahan na gagamitin ang mga ito para sa output sa dokumento.

Pagkatapos nito, pumunta tayo sa tab na "Order" at ipahiwatig na ang resulta ng kahilingan ay dapat munang iayos ayon sa halaga ng field na "Petsa", at pagkatapos ay sa pamamagitan ng halaga ng field na "Probisyon ng Serbisyo. Link":

Pumunta tayo sa tab na "Ulat" at i-reset ang flag na "Use report builder":

I-reset natin ang flag na "Use report builder"...

I-click ang "OK". Ang taga-disenyo ay bubuo ng form ng ulat at layout. Buksan natin ang module ng form at hanapin sa loob nito ang pamamaraang "Rehistrasyon ng Mga Dokumento na Probisyon ng Mga Serbisyo". Sa pamamaraang ito, kung paano bubuo ang text ng kahilingan, na gagamitin para makuha ang data na interesado kami:

Query.Text = “PUMILI

Probisyon ng Mga Serbisyo.Petsa AS Petsa,

Probisyon ng Mga Serbisyo. Numero AS Number,

Probisyon ng mga Serbisyo. Warehouse,

Nagbibigay ng mga Serbisyo. Warehouse. Presentasyon,

Nagbibigay ng mga Serbisyo. Master,

Pagbibigay ng mga Serbisyo. Master. Presentasyon,

Probisyon ng mga Serbisyo. Kliyente,

Probisyon ng Mga Serbisyo. Kliyente. Kinatawan

Dokumento.Pagbibigay ng Mga Serbisyo PAANO Magbigay ng Mga Serbisyo

PAGSAY-BAYIN NG

Nagsisimula ang text ng kahilingan, tulad ng sinabi namin sa itaas, na may bahagi ng paglalarawan ng kahilingan:

I Probisyon ng Serbisyo. Petsa AS Petsa,

I Probisyon ng mga Serbisyo. Numero AS Number,

I Probisyon ng mga Serbisyo. Warehouse,

I Probisyon ng mga Serbisyo. Warehouse. Presentasyon,

Nagbibigay ako ng mga Serbisyo. Guro,

I Probisyon ng mga Serbisyo. Master. Presentasyon,

I Probisyon ng mga Serbisyo. Kliyente,

1 Probisyon ng Mga Serbisyo. Mga Kliyente. Kinatawan

I Dokumento. Pagbibigay ng Mga Serbisyo PAANO Magbigay ng Mga Serbisyo

Ang paglalarawan ng kahilingan ay nagsisimula sa isang kinakailangang keyword PUMILI. Sinusundan ito ng isang listahan ng mga piling field na naglalarawan sa mga field na dapat isama sa resulta ng query. Ang listahang ito ay maaaring maglaman ng parehong mga field mismo at ilang mga expression na kinakalkula batay sa mga halaga ng field.

Pagkatapos ng IZ keyword, ang mga pinagmumulan ng data ay ipinahiwatig - ang orihinal na mga talahanayan ng query, ang mga nilalaman nito ay pinoproseso sa query. Sa kasong ito, ito ang object (reference) table na "Document.Provision of Service". Pagkatapos ng keyword PAANO ipinahiwatig pseudonym pinanggalingan ng Datos. Sa aming kaso, ito ay "Pagbibigay ng Mga Serbisyo". Sa hinaharap, maa-access ang data source na ito sa katawan ng kahilingan gamit ang isang alias.

Nakikita namin ang tawag na ito sa paglalarawan ng mga field ng pagpili:

| Probisyon ng Mga Serbisyo.Petsa AS Petsa,

| Probisyon ng Mga Serbisyo. Numero AS Number,

| Probisyon ng mga Serbisyo. Warehouse,

| Nagbibigay ng mga Serbisyo. Warehouse. Presentasyon,

| Nagbibigay ng mga Serbisyo. Master,

| Pagbibigay ng mga Serbisyo. Master. Presentasyon,

| Probisyon ng mga Serbisyo. Kliyente,

| Probisyon ng Mga Serbisyo. Kliyente. Kinatawan

Ang mga patlang ng pagpili ay maaari ding magkaroon ng mga alias, na maaaring gamitin upang sumangguni sa field na ito sa ibang pagkakataon sa teksto ng kahilingan. Sa aming kaso, ito ang mga alyas na "Petsa" at "Numero".

Pagkatapos ng paglalarawan ng bahagi ng query sa aming halimbawa ay darating ang bahagi ng pag-order ng resulta:

|ORDER NI

| Petsa, | Numero";

Alok PAGSAY-BAYIN NG nagbibigay-daan sa iyo na pagbukud-bukurin ang mga hilera sa resulta ng query. Pagkatapos ng key clause na ito ay isang ordering expression, na, sa pangkalahatan, ay isang listahan ng mga field (expression) at output order. Sa aming kaso, ang pag-order ay isasagawa muna sa pamamagitan ng field ng pagpili, na na-access sa pamamagitan ng alias - "Code", at pagkatapos ay sa pamamagitan ng field - "Numero". Sa parehong mga kaso, ang pagkakasunud-sunod ng pag-uuri ay pataas, na siyang default na pagkakasunud-sunod.

Ngayon bigyang-pansin natin kung paano ipinapakita ang resulta ng query sa isang dokumento ng spreadsheet.

Pamamaraan Register of Documents Provision of Services (TabDoc) Export

//((CONSTRUCTOR_OUTPUT_FORM(Rehistro ng Mga Dokumento sa Probisyon ng Mga Serbisyo)// Ang fragment na ito ay itinayo ng tagabuo.// Kapag muling ginagamit ang constructor,// ipinakilala mano-mano mga pagbabago Mawawala!!!

Layout = GetLayout("Rehistro ng Mga Dokumento na Nagbibigay ng Mga Serbisyo"); Kahilingan = Bagong Kahilingan;

Resulta = Query.Run();

HeaderArea = Layout.GetArea("Header"); AreaBasement =

Layout.GetArea("TableFooter"); DetailRecordsArea =

TabDoc.Output(TableHeadArea); TabDoc.StartAutogruttingRows();

SelectDetails = Result.Select();

Habang SelectDetails.NextFunctions() Loop

AreaDetailRecords.Parameters.Fill(SelectionDetails);

TabDoc.Output(RecordsDetailsArea,DetailsSelection.Level()); EndCycle;

/L)CONSTRUCTOR_OUTPUT_FORM EndProcedure

Ang form ng ulat ay naglalaman ng isang elemento ng kontrol TabularDocumentField na may pangalang "TabDoc", na puno ng data batay sa layout na nabuo ng taga-disenyo.

Sa simula ng pamamaraan, nakuha namin ang layout ng ulat, kung saan nakuha namin ang mga lugar na umiiral dito sa kaukulang mga variable:

HeaderArea = Layout.GetArea("Header"); AreaBasement =

Layout.GetArea("Basement"); TableHeaderArea =

Layout.GetArea("TableHeader"); TableFooterArea =

Layout.GetArea("TableFooter"");DetailRecordsArea =

Layout.GetArea("Mga Detalye");

Pagkatapos ay ki-clear namin ang dokumento ng spreadsheet at ipinapakita ang mga lugar na iyon na hindi naglalaman ng data na nakuha mula sa resulta ng query:

TabDoc.Clear(); TabDoc.Output(AreaHeader);

TabDoc.Output(TableHeadArea); TabDoc.StartAutoGroupingRows();

Sa huling linya, idinagdag ng taga-disenyo ang simula ng awtomatikong pagpapangkat ng mga hilera. Sa halimbawang ito, wala kaming mga row na kailangang ipangkat, ngunit bilang default, palaging iminumungkahi ng taga-disenyo ang pagpapangkat ng mga row sa isang dokumento ng spreadsheet. Ang tawag na ito ay hindi makakaapekto sa bilis ng pag-output ng ulat, kaya hahayaan namin ang text ng constructor na hindi magbabago.

Pagkatapos nito, nakakakuha kami ng seleksyon mula sa resulta ng query, na dinadaanan namin sa isang loop:

Sa bawat pag-ulit ng loop, pinupunan namin ang mga parameter ng dating nakuhang layout area ng mga value na nakuha mula sa susunod na query result sample record at ipinapakita ang lugar na ito sa isang spreadsheet na dokumento.

Sa pagtatapos ng pamamaraan, ipinapakita namin ang mga huling bahagi ng layout sa isang dokumento ng spreadsheet:

TabDoc.FinishAutoGroupingRows();

TabDoc.Output(TableFooterArea);

TabDoc.Output(AreaFooter);

Ngayon, ilunsad natin ang 1C:Enterprise sa debug mode at tingnan ang resulta ng aming ulat:

Kaya, gamit ang halimbawa ng ulat na ito, ipinakita namin kung paano gamitin ang taga-disenyo ng output form at naging pamilyar sa ilang mga pangunahing pagbuo ng wika ng query.

Ang ulat ng “Service Rating” ay maglalaman ng impormasyon tungkol sa kung aling mga serbisyo ang nagdala sa Master of All Trades LLC ng pinakamalaking kita sa tinukoy na panahon. Gamit ang ulat ng “Service Rating” bilang isang halimbawa, ipapakita namin kung paano pumili ng data sa isang partikular na panahon, kung paano magtakda ng mga parameter ng query at kung paano gumamit ng data mula sa ilang mga talahanayan sa isang query at isama ang lahat ng data mula sa isa sa mga source sa resulta ng query.

Gumawa tayo ng bagong configuration object na "Service Rating" na Ulat. Pumunta tayo sa tab na "Mga Layout" at tawagan ang tagabuo ng output form.

Piliin natin ang object (reference) table ng directory na "Nomenclature" at ang virtual table ng accumulation register na "Sales.Turnover". Upang maalis ang kalabuan ng mga pangalan sa query, pinangalanan namin ang talahanayan na "Nomenclature" sa "SprNomenclature" (right-click na menu ng konteksto).

Pagkatapos ay ilagay ang cursor sa talahanayan ng "SalesTurover" at tawagan ang dialog para sa pagpasok ng mga parameter ng virtual na talahanayan:

Buksan ang dialog para sa pagpasok ng mga parameter ng virtual na talahanayan

Ipahiwatig natin na ang simula at pagtatapos ng panahon ay ipapasa sa kaukulang mga parameter na "StartDate" at "EndDate" (ang simbolo ng "&" bago ang pangalan ay nagpapahiwatig na ito ay isang parameter ng kahilingan):

Pagkatapos ay piliin mula sa mga talahanayan ang mga field na "SprNomenclature.Link" at "SalesTurover.RevenueTurover":

SprNomenclature.Presentation

SalesTurnoverRevenueTurnover

Pumunta tayo sa tab na "Mga Link" at tingnan na ang taga-disenyo ay nakagawa na ng koneksyon sa pagitan ng dalawang napiling talahanayan - ang halaga ng pagbabago sa rehistro ng "Nomenclature" ay dapat na katumbas ng sanggunian sa elemento ng direktoryo na "Nomenclature".

Ang tanging bagay na natitira para sa amin ay i-reset ang "Lahat" na bandila para sa talahanayan ng rehistro at itakda ito para sa talahanayan ng direktoryo.

Pipiliin namin ang lahat ng elemento mula sa direktoryo ng "Nomenclature".

Ang pagtatakda ng flag na "Lahat" sa talahanayan ng direktoryo ay nangangahulugan na ang lahat ng mga elemento ay pipiliin mula sa direktoryo at ang mga elementong ito ay itatalaga sa halaga ng turnover ng kita mula sa rehistro. Kaya, bilang isang resulta ng kahilingan, ang lahat ng mga serbisyo ay naroroon, at para sa ilan sa kanila ang paglilipat ng kita ay ipahiwatig. Para sa mga serbisyong hindi ibinigay sa napiling panahon, walang ipahiwatig.

Pumunta tayo sa tab na "Mga Kundisyon" at itakda ang mga kundisyon para sa pagpili ng mga elemento mula sa direktoryo ng "Nomenclature". Kapag nagtatakda ng mga kundisyon sa pagpili, muli kaming gagamit ng mga parameter ng query. Ang unang kundisyon ay dapat na ang napiling elemento ay hindi isang pangkat (upang magawa ito, lumipat sa mode na "Custom na Kundisyon").

Ang pangalawang kundisyon ay dapat na ang napiling item ay isang serbisyo (ito ang "Simpleng Kundisyon"):

Sa hinaharap, bago isagawa ang kahilingan, ipapasa namin ang katumbas na halaga ng enumeration sa parameter na "Uri ng Nomenclature".

Pumunta tayo sa tab na "Mga Asosasyon/Alyas" at tukuyin na ang view ng item sa direktoryo ay magkakaroon ng alias na "Serbisyo", at ang field ng rehistro ay magkakaroon ng alias na "Kita":

Pumunta tayo sa tab na "Order" at ipahiwatig na ang resulta ng query ay dapat pagbukud-bukurin sa pababang pagkakasunud-sunod ng halaga ng field na "Kita."

Sa tab na "Mga Kabuuan", tinutukoy namin na kailangan naming magpakita ng mga pangkalahatang kabuuan, at dapat silang ang kabuuan ng mga halaga sa field na "Kita":

Sa tab na "Ulat," i-clear ang flag na "Gumamit ng tagabuo ng ulat."

Ngayon, pumunta tayo sa tab na "Output Form". Ipahiwatig natin na ang mga parameter na "Petsa ng Pagtatapos" at "Petsa ng Pagsisimula" ay ie-edit sa form sa mga input field ng uri ng "Petsa". Para sa parameter na "Uri ng Nomenclature", sa kabaligtaran, aalisin namin ang flag ng pag-edit sa form:

I-click ang "OK". Bubuo ang platform ng layout at form ng ulat. Buksan ang module ng form at hanapin ang procedure na "Service Rating" dito.

Sa pamamaraang ito, sa bahagi kung saan nakatakda ang mga parameter ng query, tutukuyin namin ang halaga ng parameter na "Uri ng Nomenclature" (naka-highlight ang mga pagwawasto nang naka-bold):

| LEFT CONNECTION RegisterAccumulation.Sales, Turnover(&StartDate,

| &Petsa ng pagkawalang bisa,)

| PAANO SALESTurnover

|ORDER NI | Kita DOWN

|RESULTA HALAGA (Kita) NG | KARANIWAN";

RequestSetParameterC"Uri ng Nomenclature",

Mga Paglilipat.Mga Uri ng Nomenclature.Service);

Query.SetParameter("StartDate",StartDate); Request.SetParameterC"EndDate", EndDate);

Ngayon tingnan natin ang teksto ng kahilingan na nabuo ng tagabuo:

| SprNomenclature.Representasyon BILANG Representasyon,

|SalesTurnover.RevenueTurnover BILANG Kita

| Directory.Nomenclature AS RefNomenclature

LEFT CONNECTION RegisterAccumulations.Sales.Turnover(&StartDate,

| PAANO SALESTurnover

| Software SalesTurover.Nomenclature = SprNomenclature.Link

| (RefNomenclature.ThisGroup = False) AT

| SprNomenclature.Type of Nomenclature = &Uri ng Nomenclature

|ORDER NI

| Kita DOWN

|RESULTA HALAGA (Kita) NI

Una, gaya ng dati, dumating ang bahagi ng paglalarawan ng kahilingan at naglalaman ito ng mga konstruksyon na bago sa amin.

Kapag inilalarawan ang mga mapagkukunan ng kahilingan (pagkatapos ng IZ keyword), ginamit ang kakayahang tumukoy ng ilang mga mapagkukunan ng kahilingan:

| Directory.Nomenclature AS RefNomenclature

|&EndDate,)

| PAANO SALESTurnover

| Software SalesTurover.Nomenclature = SprNomenclature.Link

Sa kasong ito, ang mga talaan ay pinili mula sa dalawang mapagkukunan: "SprNomenklatura" at "SalesTurover", kasama ang pangunahing pangungusap LEFT CONNECTION... NG inilalarawan ang paraan kung saan pagsasama-samahin ang mga talaan mula sa dalawang mapagkukunang ito.

LEFT CONNECTION nangangahulugan na ang resulta ng query ay dapat magsama ng mga kumbinasyon ng mga tala mula sa parehong mga mapagkukunan na tumutugma sa kundisyong tinukoy pagkatapos ng keyword na BY. Bilang karagdagan, ang resulta ng query ay dapat ding magsama ng mga tala mula sa una (ipinahiwatig sa kaliwa ng salita COMPOUND) pinagmulan kung saan walang nakitang mga tala na tumutugma sa kundisyon mula sa pangalawang pinagmulan.

Walang bago para sa amin sa paglalarawan ng unang pinagmulan at ang kundisyon ng koneksyon, ngunit kapag inilalarawan ang pangalawang pinagmulan, ginagamit namin ang kakayahang magtakda ng mga parameter ng virtual na talahanayan ng query:

| RegisterAccumulations.Sales.Turnover(&StartDate, &EndDate,)

Ang unang parameter ay ang simula ng panahon para sa pagkalkula ng mga kabuuan, ang pangalawa ay ang pagtatapos ng panahon. Bilang resulta, ang source table ay maglalaman lamang ng turnover na kinakalkula sa panahon ng inilipat. Dito dapat mong laging tandaan na kung magpapasa kami ng isang petsa bilang mga parameter na ito (at sa aming kaso ito ang magiging kaso), kung gayon ang petsa ay naglalaman din ng oras na tumpak sa pangalawa.

Kung alam nang maaga na ang user ay hindi magiging interesado sa mga resulta ng ulat sa mga panahong tinukoy na may katumpakan ng mga segundo, kung gayon ang sumusunod na tampok ay dapat isaalang-alang: bilang default, ang oras sa petsa ay nakatakda sa 00 :00:00. Samakatuwid, kung hindi ka gagawa ng mga espesyal na hakbang, lumalabas na kapag itinakda ng user ang panahon ng pag-uulat mula 03/01/2004 hanggang 03/31/2004, ang mga kabuuan ng rehistro ay kakalkulahin mula sa simula ng araw 03/01/ 2004 00:00:00 hanggang sa simula ng araw 03/31/2004 00:00: 00. Kaya, ang data para sa ika-31 araw, maliban sa simula ng araw, ay hindi isasama sa pagkalkula, na lubos na magugulat sa gumagamit.

Upang maalis ang sitwasyong ito, dalawang bagay ang dapat gawin.

Una, sa form ng ulat, limitahan ang kakayahan ng user na ipasok ang petsa ng pagsisimula at petsa ng pagtatapos sa pamamagitan ng pagtatakda ng komposisyon ng petsa para sa kaukulang mga field ng input bilang "Petsa":

Alamin natin ang komposisyon ng petsa...

Pangalawa, kapag nagpapasa ng mga parameter, gamitin ang built-in na function Katapusan ng araw(). Upang gawin ito, bumalik sa module ng form ng ulat at gawin ang mga kinakailangang pagbabago (naka-highlight ang mga karagdagan nang naka-bold):

ProcedureFormActionsRatingServicesGenerate(Button) //((CONSTRUCTOR_WEEKEND_FORM_PROCEDURE_CALL(RatingServices) //Ang fragment na ito ay binuo ng constructor. // Kapag muling ginagamit ang constructor, // ang mga manu-manong ginawang pagbabago ay mawawala!!!

TabDoc = FormElements.TableField;

//))CONSTRUCTOR_OUTPUT_FORM_CALL_PROCEDURE

Co. netProcedures

Patuloy nating tingnan ang text ng kahilingan. Bilang bahagi ng paglalarawan ng query, may isa pang konstruksiyon na bago sa amin - pagtatakda ng mga kundisyon para sa pagpili ng data mula sa mga talahanayan ng pinagmulan:

| SprNomenclature.Representasyon BILANG Representasyon,

| SalesTurnover.RevenueTurnover BILANG Kita

| Directory.Nomenclature AS RefNomenclature

| LEFT CONNECTION RegisterAccumulations.Sales.Turnover(&StartDate,

| &Petsa ng pagkawalang bisa,

| PAANO SALESTurnover

| Software SalesTurover.Nomenclature = SprNomenclature.Ssshka

| SprNomenclature.ThisGroup = Mali AT

| SprNomenclature.Type of Nomenclature = &Uri ng Nomenclature

Ang kundisyon ng pagpili ay palaging nauunahan ng isang keyword SAAN. Pagkatapos nito ay inilarawan ang kundisyon mismo. Pakitandaan na ang mga field ng source table kung saan inilapat ang kundisyon ay maaaring hindi kasama sa listahan ng pagpili (tulad ng sa aming kaso). Bilang karagdagan, ginagamit ng aming kundisyon ang parameter ng query na "Uri ng Nomenclature."

HALAGA NG RESULTA (Kita) PO

Palagi itong nagsisimula sa isang keyword RESULTA, na sinusundan ng isang paglalarawan ng kung anong mga kabuuan ang makikita sa resulta ng query. Kaagad pagkatapos ng salita RESULTA inilalarawan ang mga pinagsama-samang function na kailangang kalkulahin sa mga resulta. Sa aming kaso, ang halaga sa field na "Kita" ay kakalkulahin. Sinusundan ito ng keyword na PO, pagkatapos ay inilarawan ang mga pagpapangkat kung saan kakalkulahin ang mga kabuuan. Sa aming kaso wala sila at ang keyword lamang ang ginagamit KARANIWAN, na nagpapahiwatig na ang mga kabuuan ay kakalkulahin para sa buong talahanayan sa kabuuan.

Ngayong tapos na tayong pamilyar sa text ng kahilingan, ilunsad natin ang 1C:Enterprise sa debugging mode at tingnan kung paano gumagana ang aming ulat.

Itakda natin ang panahon ng pag-uulat mula 03/01/2004 hanggang 04/30/2004. Magiging ganito ang resulta:

Ngayon, baguhin natin ang petsa ng pagtatapos sa 03/31/2004 at tiyaking kasama sa ulat ang data para sa Marso 31: