1s ckd karaniwang halimbawa ng panahon. Karaniwang parameter at Panahon at mga problemang ginagamit

Kaya, magsimula na tayo.

Para sa pagiging simple, pag-unawa sa halimbawa na gagawin namin sa isang simpleng rehistro ng akumulasyon.

Sa aking kaso, ito ang rehistro ng akumulasyon na "Magtrabaho sa pagsasaayos ng accounting".

Halimbawa, ilalagay namin ang mga parameter nito nang mahigpit (hindi sa pamamagitan ng malambot na pagpapataw ng mga parameter sa ACS):

Magbayad ng pansin, ang pagiging regular ng virtual table ay "Record".

Ngunit, tulad ng nabanggit sa itaas, kailangan namin ang panahon sa mga tuntunin ng pagiging regular, kaya iminumungkahi kong kalkulahin ang patlang na "Panahon" sa sumusunod na paraan (hindi ganap na maganda, ngunit hindi ko nakita ang mas mahusay na mga pagpipilian):

Tulad ng nakikita mo mula sa screenshot, isang parameter ang naipasa sa kahilingan, na ipinapahiwatig ng gumagamit sa form: Halaga ng Enumerasyon na "Frequency" - ang pag-enumer na ito ay nasa halos lahat ng mga tipikal na solusyon.

Isinasaad namin ang mga magagamit na uri nito sa tab na "Mga Parameter":

Sa setting na ito, nai-format namin ang aming panahon upang ang lahat ay maganda at nakalulugod sa mata)

Narito ang mga format mismo:

Buwan: DF \u003d "MMMM yyyy" g. ""

Araw: DF \u003d dd.MM.yyyy

Linggo: DF \u003d "" Linggo mula noong "dd.MM.yyyy"

Quarter: DF \u003d "k" quarter "yyyy" g. ""

Taon: DF \u003d "yyyy" g. ""

Decade: DF \u003d "" Decade with "dd.MM.yyyy"

Semester: DF \u003d "" Semester na may "dd.MM.yyyy"

Yun lang Bilang isang resulta, mayroon kaming isang kahanga-hangang larawan:

Kapag lumilikha ng mga ulat sa ACS, madalas na kinakailangan upang ipakita ang pagpipilian ng isang panahon sa form ng ulat, upang hindi mo kailangang maglagay ng mga petsa nang manu-mano, ngunit pumili mula sa isang listahan ng mga karaniwang panahon, tulad ng: "Mga Taon", "Buwan", "Linggo", atbp. ... Para sa mga parameter ng uri ng Petsa, maaari mo lamang tukuyin ang "Simula ng taong ito, buwan, atbp.", Ngunit ang "Wakas" ay hindi ibinigay.

Ang totoo, sa mga uri ng data, ang uri na "Karaniwang petsa ng pagsisimula" ay magagamit, ngunit nais ko rin ang "Karaniwang petsa ng pagtatapos".

Mayroong isang paraan upang makaikot dito.

  1. Lumikha ng isang bagong Parameter, pangalanan itong "Panahon"
  2. Itakda natin ang uri ng "Karaniwang panahon" para sa parameter na ito
  3. Sa patlang na "Pagpapahayag" ng mga parameter ng "BeginPeriod" at "EndPeriod" na ginagamit sa kahilingan, itakda ang mga expression " & Period.SartartDate "at" & Panahon.EndDate "ayon sa pagkakabanggit.

Ngunit mayroong isang maliit na kahusayan. Kung gagamitin namin ang mga virtual na talahanayan sa query, kung gayon, malamang, titigil ang ulat sa paggana at isang mensahe ng error tulad ng "Tingnan ang error sa pagpoproseso, i-type ang hindi pagtutugma, numero ng parameter ..." ay ipapakita.

Upang maiwasan ito, kailangan mong alisin ang lahat ng mga parameter ng mga virtual na talahanayan.

At idagdag ang mga ito sa mga talahanayan sa tab na "Komposisyon ng data".

Upang maipakita ang mga parameter sa mabilis na mga setting ng ulat, paganahin ang kaukulang watawat para sa mga parameter ng ulat.

Ngayon ang pagpili ng panahon sa form ng ulat ay ganito.

Lumikha tayo ng isang ulat na may isang query sa dataset:

PUMILI ng mga Item sa Warehouse Warehouse, Mga Produkto sa Warehouse Nomenclature, Mga Produkto sa Warehouse Dami na Natitira mula sa Rehistro ng Akumulasyon. Mga Kalakal sa Warehouse. Balances (& MyDate,) AS Goods In Warehouse

Pumunta tayo ngayon sa tab na mga parameter at tingnan na ang system, bilang karagdagan sa aming & MyData parameter, ay lumikha din ng parameter ng & Panahon.
Upang maingat na obserbahan ang mga panahon, lumikha tayo ng pangunahing anyo ng ulat at maglagay ng isang patlang ng talahanayan na may data dito: Mga Setting ng Komposisyon. Mga setting. Mga Parameter ng Data

I-save natin ang ulat at buksan ito sa enterprise. Sa patlang ng talahanayan na may mga parameter, ang parameter na & Panahon lamang ang ipinapakita:

Alinsunod dito, ang anumang pagbabago sa parameter na ito ay hindi magbibigay ng nais na resulta.

Bakit hindi magagamit ang opsyong & MyDate? Siyempre, dahil sa mga parameter ng tab mayroon itong isang checkbox Nililimitahan ang kakayahang magamit.

Tinatanggal namin ang daw. Ngayon nakikita namin ang pareho sa mga magagamit na parameter. Lamang kapag bumubuo ng ulat ay makikita namin na ang ulat ay tumutugon sa parameter ng & Panahon, at hindi sa & MyDate.

Sa halimbawang ito, ang pinakasimpleng bagay ay upang palitan ang pangalan ng parameter at MyDate sa & Panahon sa query at makamit ang nais na resulta. Ngunit marahil mayroon kang isang kahilingan na nagamit na ang parameter ng & Panahon, o ang iyong mga paniniwala sa relihiyon ay hindi pinapayagan kang gamitin ang parameter na ito, sa anumang kaso, malulutas mo ang problemang tulad nito:

PUMILI ng mga Item sa Warehouse Warehouse, Mga Produkto sa Warehouse Nomenclature, Mga Produkto sa Warehouse Dami na Natitira mula sa Rehistro ng Akumulasyon. Mga Kalakal sa Warehouse. Balances ((& MyDate),) AS Goods In Warehouse

UPD mula sa gumagamit Boo:

Ang pangunahing problema kapag gumagamit ng mga "pamantayan" (idinagdag ng system) na mga parameter ay kapag gumagamit ng maraming mga virtual na talahanayan sa isang ulat, kung ang parameter na ito ay tinukoy, ang halaga nito ay gagamitin sa lahat ng iba pang mga kaso sa halip na "pagmamay-ari".

Narito ang isang halimbawa:

PUMILI ng Mga ManggagawaSP.Empleee, WorkersSP.CauseChangeStates, WorkersSP.Period, WorkersSPOtherDate.Period AS Peri22, Workers SPOtherDate.ReasonChangeStatus ASCauseWorkerChangesPeriod2FROM.Employees & Registro KALIWAN NG SUMALIRehistro sa Impormasyon. Mga WorkerOrganisasyon. SliceLast (& OtherDate,) AS Workers SPOtherDate NG Mga EmpleyadoSP. Empleyado \u003d Mga empleyado SPOtherDate. Empleyado

Sa pangalawang subquery, ang halaga ng parameter na "standard" na PERIOD ay gagamitin bilang parameter ng slice date, at hindi ang halaga ng OtherDate.

Ang "glitch" na ito ay mapapanood kahit na ang pangalawang subquery ay ipinapakita sa ikalawang hanay ng data at na-link sa pamamagitan ng ACS. Ang pagpipilian na gumagamit ng isang expression tulad ng "ADDKDATE (& Panahon, MONTH, -1)" sa pangalawang query ay hindi gagana rin, ang buwan ay hindi ibabawas. Ngunit ang pagpapalit ng pangalan ng parameter na "Panahon" sa query sa, halimbawa, malulutas ng "FirstDate" ang problemang ito.

Sa pamamagitan ng paraan, eksakto ang parehong problema ay sinusunod sa mga virtual na talahanayan ng akumulasyon at mga rehistro sa accounting na ginamit upang makuha, halimbawa, mga turnover. Doon idinagdag ng system ang mga parameter na "Pagsisimula ng Panahon" at "Pagtatapos ng Panahon".
Kaya't sa kaso ng mga query ng kahit bahagyang nadagdagan ang pagiging kumplikado, makatuwiran upang patayin ang pagkakaroon at paggamit ng "karaniwang mga panahon".

Ang ilang mga tampok ng pagtatakda ng panahon sa ACS.

Karamihan sa mga ulat na binuo gamit ang Data Composition System (ACS) ay nangangailangan ng gumagamit na ipasok ang panahon kung saan mabubuo ang ulat.

Bilang isang patakaran, sa ACS, ang pagpasok ng panahon ay isinaayos sa pamamagitan ng mga parameter, gamit ang sumusunod na konstruksyon tingnan. Ang pamamaraang ito ng pagpasok sa panahon ay itinuturing na "klasiko", inilarawan ito sa isang artikulo tungkol sa ITS at iba pang panitikan tungkol sa pag-unlad sa 1C, kaya kukunin namin ito bilang isang batayan. Isaalang-alang bilang isang halimbawa ng isang simpleng query na tumatanggap ng lahat ng Mga Dokumento ng Pagbebenta ng Mga Kalakal / Serbisyo para sa isang naibigay na panahon, kita n'yo

Kapag ginagamit ang ulat na ito, itinatakda ng gumagamit ang panahon sa pamamagitan ng mga parameter na nakikita. Tila tama ang lahat ... NGUNIT mayroong isang maliit na problema:

Ang bagay ay ang napakaraming mga gumagamit na "naiintindihan" ang panahon na naiiba kaysa sa 1C na "naiintindihan" ito, mga halimbawa:

Mula sa pananaw ng gumagamit, ang oras ay hindi nakatakda, iyon ay, HINDI LIMITADO, ibig sabihin, LAHAT ng mga dokumento ay dapat na isama sa ulat nang walang anumang limitasyon sa petsa.

"Mula sa pananaw" ng 1C system, ang parameter ng panahon ay itinakda at ... pareho ng mga hangganan nito ay katumbas ng 01.01.0001 at ang mga dokumento lamang na may walang laman na petsa ang maisasama sa ulat, na sa kasanayan ay nangangahulugang walang isang dokumento ang maisasama.

Mula sa pananaw ng gumagamit, ang lahat ng mga dokumento na nagsisimula sa petsa 28.01.2010 ay dapat na isama sa ulat.

"Mula sa pananaw" 1C, ang panahon na 28.01.2010 - 01.01.0001 ay magdudulot ng isang pagbubukod.

Maaari mong, syempre, subukang ipaliwanag sa gumagamit kung bakit hindi ipinapakita ng ulat ang mga dokumento na inaasahan niyang makita at kung paano ipinakita ang panahon mula sa "pananaw" ng 1C, ngunit ito ay isang walang pasasalamat na negosyo, at kahit na mali. Ang isang mabuting programa ay dapat, una sa lahat, ay maging maginhawa para sa gumagamit, dahil ang programa ay umiiral para sa gumagamit, at hindi kabaligtaran, samakatuwid, ang 1C ay dapat na "turuan" upang maunawaan ang panahon habang nauunawaan ito ng gumagamit, lalo:

isa). Ang Pagsisimula ng Panahon at Pagtatapos ng Panahon ay hindi tinukoy -\u003e lahat ng mga dokumento.

2). Ang Simula lamang ng Panahon ang tinukoy -\u003e lahat ng mga dokumento na nagsisimula sa Simula ng Panahon

3). Bilang karagdagan, susuriin namin na ang Wakas ng Panahon\u003e \u003d Simula ng Panahon, at kung hindi ito natupad, ipalagay namin na ang Pagtatapos ng Panahon ay hindi tinukoy, ibig sabihin 2).

Batay sa itaas, ang expression para sa EndDate parameter ay:

WHEN & Period.EdDate \u003d DATETIME (1,1,1)

TAPOS PETSA PANAHON (3999,12,31)

Kailan at Panahon.Pagtatapos ng Petsa<&Период.ДатаНачала

TAPOS PETSA PANAHON (3999,12,31) PETSA PANAHON (3999,12,31,23,59,59)

& Panahon. Petsa ng Pagtatapos

Ang pangwakas na pagtingin sa aming pagtatayo ng pagpipilian ng panahon ay ipinakita sa

Tandaan: ang mekanismong ito para sa pagtatakda ng mga parameter ay inilaan para sa mga lumang platform na 1C 8.1 at 8.2 (at mga pagsasaayos na tumatakbo sa ilalim ng kanilang kontrol), sa mga mas lumang bersyon ng platform ng 1C mayroong mga built-in na mekanismo para sa pagkontrol sa hindi natapos na mga parameter at hindi na kailangang gumamit ng mekanismo na inilarawan sa artikulong ito, bukod sa sa ilang mga bersyon ng 1C platform, posible ang mga error at maling operasyon.

Tinalakay sa artikulong ito ang ilan sa mga pagtutukoy ng pagtatakda ng panahon kapag ginagamit ang Data Composition System (ACS), mga problemang lumabas dahil sa pagkakaiba ng konsepto ng isang panahon sa pagitan ng isang ordinaryong gumagamit at ng 1C system, pati na rin ang mga iminungkahing paraan upang malutas ang mga ito.
Karamihan sa mga ulat na binuo gamit ang Data Composition System (ACS) ay nangangailangan ng gumagamit na ipasok ang panahon kung saan mabubuo ang ulat. Bilang isang patakaran, sa ACS, ang pagpasok ng panahon ay isinaayos sa pamamagitan ng mga parameter, sa tulong ng sumusunod na konstruksyon tingnan. Larawan 1 Ang pamamaraang ito ng pagpasok ng isang panahon ay itinuturing na "klasiko", inilarawan ito sa isang artikulo sa ITS at iba pang panitikan sa pag-unlad sa 1C, kaya isasagawa namin ito bilang isang batayan. Isaalang-alang bilang isang halimbawa ng isang simpleng query na tumatanggap ng lahat ng Mga Dokumento ng Pagbebenta ng Mga Kalakal / Serbisyo para sa isang naibigay na panahon, kita n'yo Larawan 2 Kapag ginagamit ang ulat na ito, itinatakda ng gumagamit ang panahon sa pamamagitan ng mga parameter na nakikita. Larawan 3 Tila tama ang lahat ... NGUNIT mayroong isang maliit na problema:

Ang bagay ay ang napakaraming mga gumagamit na "naiintindihan" ang panahon na naiiba kaysa sa 1C na "naiintindihan" ito, mga halimbawa:
isa). Isaalang-alang Larawan 3
Mula sa pananaw ng gumagamit, ang oras ay hindi nakatakda, iyon ay, HINDI LIMITADO, ibig sabihin, LAHAT ng mga dokumento ay dapat na isama sa ulat nang walang anumang limitasyon sa petsa.
"Mula sa pananaw" ng 1C system, ang parameter ng panahon ay itinakda at ... pareho ng mga hangganan nito ay katumbas ng 01.01.0001 at ang mga dokumento lamang na may walang laman na petsa ang maisasama sa ulat, na sa kasanayan ay nangangahulugang walang isang dokumento ang maisasama.
2). Isaalang-alang Larawan 4
Mula sa pananaw ng gumagamit, ang lahat ng mga dokumento na nagsisimula sa petsa 28.01.2010 ay dapat na isama sa ulat.
"Mula sa pananaw" 1C, ang panahon na 28.01.2010 - 01.01.0001 ay magtataas ng isang pagbubukod.

Maaari mong, syempre, subukang ipaliwanag sa gumagamit kung bakit hindi ipinapakita ng ulat ang mga dokumento na inaasahan niyang makita at kung paano ipinakita ang panahon mula sa "pananaw" ng 1C, ngunit ito ay isang walang pasasalamat na negosyo, at kahit na mali. Ang isang mabuting programa ay dapat, una sa lahat, ay maging maginhawa para sa gumagamit, dahil ang programa ay umiiral para sa gumagamit, at hindi kabaligtaran, samakatuwid, ang 1C ay dapat na "turuan" upang maunawaan ang panahon habang nauunawaan ito ng gumagamit, lalo:
isa). Ang Pagsisimula ng Panahon at Pagtatapos ng Panahon ay hindi tinukoy -\u003e lahat ng mga dokumento.
2). Ang Simula lamang ng Panahon ang tinukoy -\u003e lahat ng mga dokumento na nagsisimula sa Simula ng Panahon
3). Bilang karagdagan, susuriin namin na ang Wakas ng Panahon\u003e \u003d Simula ng Panahon, at kung hindi ito natupad, ipalagay namin na ang Pagtatapos ng Panahon ay hindi tinukoy, ibig sabihin 2).
Batay sa itaas, ang expression para sa EndDate parameter ay magiging ganito:

SELECT WHEN & Period. Petsa ng Pagtatapos \u003d DATE TIME (1,1,1) THEN DATE TIME (3999,12,31,23,59,59) ELSE SELECT WHEN & Period. End Date<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

Ang pangwakas na pagtingin sa aming pagtatayo ng pagpipilian ng panahon ay ipinakita sa Larawan 5