Bahay / Internet / 1s 8 paglikha mula sa isang dynamic na listahan. Mga setting ng dynamic na listahan

1s 8 paglikha mula sa isang dynamic na listahan. Mga setting ng dynamic na listahan

Sa wakas, ang pangarap ng sinumang "pitong manlalaro" ay natupad. Gaano kadalas hiniling ng mga user ng program 7.7 na gumawa ng normal na pagpili ng mga item. Upang makita mo ang mga balanse, presyo, at itakdang mga filter. Kinailangan kong makabuo ng iba't ibang mga trick, hanggang sa pagsulat ng mga panlabas na bahagi. Sa 1C 8.2, lumitaw ang mga dynamic na listahan. Iminumungkahi kong isaalang-alang kung ano ito at kung ano ang maibibigay nila sa atin sa 1C 8.3.

Isaalang-alang natin bilang batayan ang ilan pagsasaayos ng pagsubok 1C: "Enterprise accounting 3.0". Hindi kami pipili ngayon, magdagdag lamang ng isa pang form ng pagpili sa reference na aklat na "Nomenclature" at gawin itong pansamantalang pangunahing:

Kapag ginawa, ang system ay bilang default na magdagdag ng field ng talahanayan na may uri ng "Dynamic na listahan" sa form.

Pumunta tayo sa mga ari-arian nito at tingnan kung ano ang naroon.

Una sa lahat, interesado kami sa checkbox na "Arbitrary na kahilingan." Siya ang magbubunyag sa atin ng lahat ng mga pakinabang ng isang dynamic na listahan. Magkakaroon tayo ng pagkakataong magsulat ng sarili nating query, at may mga parameter. Lagyan ng check ang kahon at i-click ang link na "Buksan":

Magbubukas ang isang window na may handa na code para sa . Sa ngayon, ang lahat ng mga field ng "Nomenclature" na direktoryo ay simpleng nakalista doon.

Kumuha ng 267 1C na mga aralin sa video nang libre:

Gaya ng nakikita mo, mayroong isang call button "" at isang checkbox na nagbibigay-daan sa iyong dynamic na baguhin ang mga nilalaman ng listahan. Ibig sabihin, kapag may binago ang isa pang user sa direktoryo, magbabago rin ito sa aming listahan. Bilang karagdagan, mayroong tab na Mga Setting, ngunit hahawakan namin iyon sa ibang pagkakataon.

Custom na query sa dynamic na listahan

Una, gawin natin ang query na kailangan natin gamit ang mga balanse at presyo. Higit o mas kaunti tulad nito:

Tab ng mga setting

At ngayon ang pinaka masarap! Pumunta sa tab na "Mga Setting". At agad naming nakita na sa unang tab maaari kaming gumawa ng anumang mga pagpipilian para sa anumang field sa kahilingan:

Programmatically pagtatakda ng mga parameter ng query sa isang dynamic na listahan 1C 8.3

Huwag kalimutan na mayroon kaming dalawang parameter sa kahilingan: "Panahon" at "Uri ng presyo". Dapat naming ipasa ang mga ito sa kahilingan, kung hindi, magkakaroon ng error.

Isulat natin ang mga parameter na ito sa mga parameter ng form, at idagdag ang mga sumusunod na linya sa module ng form:

&OnServerProcedure OnCreateOnServer(Failure, StandardProcessing) List. Mga pagpipilian. SetParameterValue("Panahon", Mga Parameter. Petsa) ; Listahan. Mga pagpipilian. SetParameterValue("PriceType" , Parameters.PriceType) ; EndProcedure

Bilang karagdagan sa mga primitive na uri ng data na maaaring matagpuan sa anumang programming language, may mga natatanging uri sa 1C. Ang bawat isa sa kanila ay may sariling mga katangian, pamamaraan, pag-andar, layunin at mga nuances ng paggamit sa system. Ang isa sa mga uri na ito ay isang dynamic na listahan, na lubos na nagpapasimple sa maraming mga inilapat na gawain. Iyon ang dahilan kung bakit dapat alam ng mga developer at kayang pangasiwaan ang maraming gamit na tool na ito.

Mga tampok ng mga dynamic na listahan sa 1C

Ang layunin ng ganitong uri ay magpakita ng impormasyon mula sa anumang mga talahanayan ng database, anuman ang uri nito. Ang mekanismo ay nilikha batay sa SKD at may katulad na mga kakayahan. Ngunit hindi ito nangangahulugan na tiyak na kailangan mong magsulat ng isang query sa wikang 1C, kahit na ang posibilidad na ito ay umiiral at kailangan mong gamitin ito. Maaari mong tukuyin lamang ang talahanayan, ang impormasyon kung saan ka interesado, at ang 1C ay hiwalay na bubuo ng isang simpleng query.

Upang makita kung paano nabuo ang isang dynamic na listahan at kung anong data ang ipinapakita nito, kailangan mong buksan ang mga pinamamahalaang form, kung saan ito matatagpuan, sa configurator: sa listahan ng mga detalye sa pamamagitan ng menu ng konteksto buksan ang mga ari-arian nito at bigyang pansin ang item na "Arbitrary Request". Kung walang checkbox, ipinapakita ng parameter na "Pangunahing talahanayan" ang talahanayan ng database kung saan kinukuha ang data. Kung hindi, ipinapakita ng dynamic na listahan ang custom na data ng query, na makikita sa pamamagitan ng pagbubukas ng setup ng listahan.

Ang isang arbitrary na schema ng query ay mas karaniwang ginagamit, dahil nagbibigay ito ng magandang pagkakataon upang pagsamahin at ipakita ang isang malawak na pagkakaiba-iba ng data. Kadalasan, ginagamit ang mekanismong ito upang ipakita ang mga balanse ng stock, presyo ng item, kita, gastos, o pagbili. Kailangan mong gamitin ito nang maingat, dahil maaaring bumaba ang pagganap sa mga kumplikadong query.

Ang isa pang kapaki-pakinabang na pag-aari ng dynamic na listahan ay binuksan sa pamamagitan ng pag-click sa inskripsyon na "Mga setting ng listahan". Binibigyang-daan ng menu na ito, kahit na gumagamit ng karaniwang hanay ng mga field, na gawing mas naa-access at naiintindihan ng mga end user ang impormasyon. Arbitrary na kahilingan man ito o hindi, makakakita ka ng tab na "Mga Setting" kung saan maaari mong tukuyin ang:

  • Pagpili ng isang dynamic na listahan;
  • pagpapangkat;
  • pag-uuri;
  • Dekorasyon.

Ang paggamit ng mga parameter ay ginagawang versatile at flexible ang mga dynamic na listahan. Maaari mo ring itali ang mga ito sa mga props sa isang pinamamahalaang form, at magbabago ang data depende sa mga opsyon na pinili ng user. Ang paggamit ng mga mekanismong ito ay mauunawaan at pahalagahan sa pamamagitan ng pagtingin sa mga halimbawa ng mga problema sa totoong mundo.

Bilang halimbawa, isaalang-alang ang problema ng pagpapakita ng mga labi ng katawagan sa isang pinamamahalaang form. Sa totoong kasanayan, ang mga naturang order ay medyo karaniwan sa iba't ibang mga pagsasaayos, at ang dynamic na listahan ay perpekto bilang isang tool. Para sa gawaing ito, kakailanganin nating gumamit ng arbitrary na query, mga parameter ng dynamic na listahan at mga setting nito.

Para sa higit na kalinawan, gagawa kami ng hiwalay panlabas na pagproseso at maglagay ng dynamic na listahan dito. Upang maipatupad ang aming mga plano, magkakaroon ng ilang mga talahanayan na may mga nomenclature, kaya kailangan naming payagan ang isang arbitrary na kahilingan. Sa loob nito, ilalarawan namin ang kaliwang koneksyon ng reference book na may listahan ng mga nomenclature at rehistro ng mga nalalabi at itakda ang reference na libro bilang pangunahing talahanayan. Ang ganitong pamamaraan ay magbibigay-daan sa mga user, habang nagtatrabaho sa isang dynamic na listahan, na magdagdag o magbago ng nomenclature.



Pumili ng isang katawagan. Pangalan. Pangalan bilang isang pangalan, mga kalakal at mga costlar ng pagbebenta. Sklad bilang isang bodega, mga kalakal at mga gastos sa pagbebenta. Damit bilang isang bilang ng mga pag-install mula sa isang direktoryo. Katawagan bilang isang katawagan ng kaliwang koneksyon ng rehistro. Pagpapatuloy. Mga Output (& & rural

Dahil ginamit ang parameter na CurrentDate sa aming kahilingan, kailangan naming itakda ang halaga nito bago gamitin ang pagproseso. Upang gawin ito, sa form na module sa pamamaraang "On CreationOnServer" sa pamamagitan ng isang karaniwang command, italaga ang function na "CurrentSessionDate" dito gamit ang isang karaniwang command. Kailangan din naming magpakita ng isang dynamic na listahan sa control form at baguhin ang pagkakasunud-sunod ng mga field para sa kalinawan. I-drag ang props na "Nomenclature Remains" sa mga elemento ng form (kaliwa sa itaas) at gamitin ang mga asul na arrow upang baguhin ang pagkakasunud-sunod ng mga field sa talahanayan sa form.

&At Server Procedure On CreationAt Server(Failure, StandardProcessing) Nomenclature Remains.Parameters.SetParameterValue("CurrentDate",CurrentSessionDate()) EndProcedure


Nasa yugto na ito, maaari naming buksan ang aming panlabas na pagproseso sa 1C at makita na gumagana ang dynamic na listahan. Maaari naming tingnan ang mga balanse, lumikha ng mga nomenclature at mga grupo, at maghanap. Kadalasan hinihiling ng mga customer na idagdag ang kakayahang pumili ng petsa kung kailan nila makikita ang balanse. Sa kaso ng isang form na may isang dynamic na listahan, ito ay ibinibigay ng isang karagdagang field at setting ng mga parameter na gumagamit nito.

Idinaragdag namin ang attribute na "Remains Date" ng uri ng "Date" at ilipat ito sa mga elemento ng form. Sa mga field event, gumawa kami ng event na "OnChange" at isinusulat ang code para sa pagtatakda ng parameter na "CurrentDate" na ginamit sa dynamic na query. Upang kapag binubuksan ang form, agad na nauunawaan ng user kung anong petsa niya nakita ang mga balanse, gagawa kami ng maliliit na pagbabago sa pamamaraan ng OnCreateOnServer.



&OnServerProcedureOnCreateOnServer(Failure, StandardProcessing)RemainsDate = CurrentSessionDate(); Item Remains.Parameters.SetParameterValue("CurrentDate", RemainsDate); Katapusan ng Pamamaraan &Sa Pamamaraan ng Client RemainsDateOnChange(Element) Item Remains.Parameters.SetParameterValue("CurrentDate",RemainsDate); EndProcedure

Bilang resulta, ang aming Dynamic List form ay maaaring magpakita ng mga balanse para sa anumang petsa.

Nasasaklaw lang namin ang isang maliit na bahagi ng mga kakayahan ng toolkit na ito, ngunit ito ay sapat na upang maunawaan ang kaginhawahan ng ganitong uri ng dynamic na listahan. Ang isang katulad na mekanismo ay ginagamit para sa maraming mga gawain, ngunit kadalasan ito ay matatagpuan sa mga tipikal na pagsasaayos sa pinamamahalaang mga form:

  1. pagpili;
  2. Mga listahan.

Upang makakuha ng dynamic na listahan at ang kahilingan nito sa mga karaniwang pinamamahalaang form, kailangang buksan ng developer ang kinakailangang form sa configurator. Sa seksyong mga attribute, hanapin ang attribute na may uri ng data na "DynamicList" (madalas na pinipili ito naka-bold). Ang mga katangian nito ay naglalaman ng teksto ng kahilingan, mga pagpipilian at iba pang mga setting.

bahay Mga tala mula sa Looking Glass

04/21/2014 Pagkuha ng dynamic na data ng listahan

Ipinatupad sa bersyon 8.3.6.1977.

Ipinatupad namin ang kakayahang madali at maginhawang makakuha ng data na ipinapakita gamit ang isang dynamic na listahan.

Maaaring kailanganin mo ang data ng dynamic na listahan upang mai-print ito sa isang hindi karaniwang, "tiyak" na form. O upang maisagawa ang ilang mga aksyon sa kanila. Halimbawa, magpadala ng sulat sa lahat ng mga katapat na napili mo sa listahan ayon sa ilang pamantayan.

Bilang karagdagan, mayroong ilang mga gawain kung saan ang user, bilang karagdagan sa listahan ng mga elemento, ay nais ding makita ang buod ng data na nauugnay sa listahang ito. Halimbawa, ang pagkakaroon ng mga napiling produkto ng isang partikular na pangkat ng produkto at isang partikular na supplier, agad niyang gustong makita ang kabuuang bilang ng mga naturang produkto sa database.

Ang dynamic na listahan mismo ay hindi makakapagbigay sa iyo ng impormasyong ito. Ang layunin ng isang dynamic na listahan ay upang magbigay ng isang mabilis na view ng malaking halaga ng data. Samakatuwid, binabasa nito ang data sa mga tipak na kinakailangan upang ipakita sa isa o dalawang screen. At "walang alam", halimbawa, tungkol sa kabuuang dami ng data na kailangan niyang basahin.

Sa pangkalahatan, upang makuha ang karagdagang impormasyon na gusto ng user, kailangan mong i-query ang database. Eksaktong kapareho ng ginamit sa dynamic na listahan.

Magagawa mo ito noon pa. Ngunit hindi ito laging madali. Pagkatapos ng lahat, bilang karagdagan sa teksto ng orihinal na query, ayon sa kung saan gumagana ang dynamic na listahan, kailangan mong malaman ang lahat ng mga pagpipilian, pag-uuri, at iba pang mga parameter na interactive na itinakda ng user sa talahanayan na nagpapakita ng data.

Ngayon ang gawaing ito ay madaling malutas. Ang talahanayan ng dynamic na listahan ay may dalawang bagong pamamaraan:

  • GetExecutableDataCompositionSchema();
  • GetExecutableDataCompositionSettings().

Kaya, nakukuha mo mismo ang scheme ng komposisyon ng data, at, pinaka-mahalaga, ang lahat ng mga setting nito, salamat sa kung saan nakikita ng user ang listahan nang eksakto kung ano ito. Ang kailangan mo lang gawin ay programmatically na bumuo ng layout at i-output ito sa isang koleksyon ng mga halaga (para sa programmatic processing) o isang spreadsheet na dokumento (para sa display):

Bilang resulta, makakakuha ka ng istraktura (o ulat) na naglalaman ng mga column at row na ipinapakita sa isang dynamic na talahanayan ng listahan.

Ang mahalagang punto ay ang layout at mga setting na nakukuha mo mula sa dynamic na talahanayan ng listahan ay isinasaalang-alang, bukod sa iba pang mga bagay, ang visibility ng mga column at ang paghahanap na inilapat. Dahil ang mga setting ay nakuha nang hiwalay, maaari mong baguhin ang komposisyon ng mga patlang para sa iyong sariling mga layunin at makuha, halimbawa, ang lahat ng mga hanay ng listahan, at hindi lamang ang mga nakikita ng gumagamit.

Kapag nag-output sa isang spreadsheet na dokumento, may isa pang magandang sandali. Sa pangkalahatan, ang hitsura ng ulat ay tumutugma sa hitsura mga dynamic na talahanayan ng listahan sa oras na natanggap ang schema at mga setting. Kasama ang kondisyonal na disenyo ng talahanayan. Kakailanganin mo lang ng ilang karagdagang aksyon kung gusto mong ilipat din ang kondisyonal na disenyo ng form sa ulat.

Sa proseso ng pag-finalize ng mga configuration, ang bawat 1C programmer ay nakakaharap ng mga dynamic na listahan.
Ang isang dynamic na listahan ay isang interface object na ginagamit upang ipakita ang iba't ibang mga listahan ng mga database object o non-object data - magrehistro ng mga entry.
Halimbawa, ang isang dynamic na listahan ay ginagamit upang magpakita ng isang listahan ng mga item:

Upang ipakita ang mga posibilidad ng isang dynamic na listahan, gumawa tayo ng panlabas na pagproseso, idagdag ang pangunahing form. Magdagdag tayo ng bagong attribute na may uri na "Dynamic List" sa form. Pumunta tayo sa mga ari-arian nito at tingnan kung ano ang naroon.
Interesado kami sa property na "Custom request." Ang pagpapagana nito ay magpapakita sa amin ng lahat ng posibilidad ng isang dynamic na listahan. Magagawa nating magsulat ng query gamit ang halos lahat ng feature ng query language ng 1C: Enterprise system. Lagyan ng check ang kahon at i-click ang link na "Buksan":

Bilang default, magpapakita ang aming listahan ng listahan ng mga item na may kabuuang balanse para sa lahat ng warehouse. Upang ipatupad ang naturang listahan, idagdag ang sumusunod na query:


Bilang pangunahing talahanayan, pipiliin namin ang "Directory. Nomenclature", ito ay magpapahintulot sa amin na magtrabaho kasama ang isang dynamic na listahan, tulad ng sa isang listahan ng mga nomenclature - magdagdag, baguhin, markahan para sa pagtanggal ng mga elemento ng direktoryo. Katulad nito, ginagawa ang pagtatakda ng pangunahing talahanayan abot-kayang pagkakataon dynamic na pagbabasa ng data - nangangahulugan ito na ang sample ay gagawin sa mga bahagi, kung kinakailangan.
Susunod, kailangan naming lumikha ng mga elemento ng form para sa aming listahan:

Kung susubukan naming patakbuhin ang aming pagproseso sa form na ito, magkakaroon kami ng error:


Upang alisin ito, dapat mong itakda ang halaga ng parameter na "Panahon". Upang gawin ito, maaari mong gamitin ang paraan na "SetParameterValue" ng koleksyon ng "Mga Parameter" ng dynamic na listahan. Ang pamamaraan ay tumatagal ng dalawang mga parameter:
. "Parameter" - Uri: String; DataCompositionParameter. Ang pangalan ng parameter o data composition parameter na ang value ay itatakda;
. "Halaga" - Uri: Arbitraryo. Ang halaga na itatakda.
Maaaring tawagan sa "OnCreateOnServer" handler ng form:

May tanong ka ba, kailangan mo ba ng tulong ng consultant?


Bigyan natin ang user ng kakayahang baguhin ang panahon para sa pagtanggap ng mga balanse. Upang gawin ito, idagdag natin ang katangian at ang elemento ng form na "Petsa" na nauugnay dito:


Sa handler ng "OnChange" ng elemento ng form na "Date," tawagan ang "SetParameterValue" na paraan, na ipinapasa ang value ng nauugnay na attribute bilang value. Katulad nito, babaguhin namin ang pamamaraan na "On CreationAtServer" ng form. Dahil ang pamamaraan ay magagamit sa kliyente, hindi na kailangang tawagan ang server:


Ngayon, kapag nagbago ang petsa, awtomatikong ia-update ang mga balanse:




Ipagpalagay na gusto ng mga user na makita ang alinman sa mga kasalukuyang balanse o inaasahang mga resibo. Isaalang-alang natin ang isa sa mga opsyon sa pagpapatupad. Magdagdag tayo ng katangian ng Boolean form at isang nauugnay na radio button:


Kapag binabago ang halaga ng switch, babaguhin namin ang text ng kahilingan. Upang gawin ito, gagamitin namin ang tagapangasiwa ng kaganapan na "OnChange" ng elemento ng form na "DisplayQuantityToReceipt". Kailangan nating baguhin ang property na "QueryText" ng dynamic na listahan depende sa value ng attribute. Dahil ang property na ito ay hindi available sa client, kinakailangan ang isang server procedure call:


Ang resulta ng mga pagbabagong ginawa: