1 s scd vertė. SCD charakteristikų naudojimas. Skurdo vieta protingame pastate


Laba diena, mieli tinklaraščio svetainės skaitytojai! Praėjusį kartą jau palietėme temą, kurioje buvo kalbama apie funkcijos naudojimą. Ir šiandien, pirmajame iš šios straipsnių serijos, mes sužinosime Kam naudojami duomenų sudarymo lauko vaidmenys?, taip pat apsvarstykite šių vaidmenų užpildymo pavyzdžius.

ACS lauko vaidmuo rodo kas tai per laukas. Kiekvienas lauko vaidmuo gali turėti savo nuosavybę. Pavyzdžiui, jis turi skaitinę reikšmę ir apima laikotarpio numerį, jei laukas yra taškas. Jei ypatybės „Laikotarpis“ reikšmė yra 0 (nulis), tai reiškia, kad šis laukas nėra laikotarpis. Arba ypatybė „Dimension“ – yra nuoroda, kad laukas yra matmuo. Jei laukas yra matmuo, ši informacija naudojama apskaičiuojant balanso laukų sumas.

Kiekvienam duomenų sudėties schemos laukui galite nurodyti vaidmenį. Vaidmenys įtakos balanso skaičiavimų teisingumui. Visų pirma, pradinis ir galutinis likutis pagal kokią nors lentelę. Jei užklausoje pasirinkta virtuali lentelė „Likučiai ir apyvartos“, pradinis ir galutinis likučiai apskaičiuojami naudojant sudėtingą algoritmą, ypač jei naudojame papildomus skirtumus pagal laikotarpį.

Bet jei užklausose visa tai veikia teisingai, remiantis išvesties laukų rinkiniu, tada duomenų sudėtyje viskas yra šiek tiek blogiau. Galų gale, mes nežinome, kokius laukus vartotojas iš tikrųjų pasirinks. Viskas priklausys nuo jo ataskaitos versijos nustatymų, kuriuos jis gali bet kada pakeisti. Todėl duomenų komponavimo sistema turi savo tam tikro duomenų rinkinio pradžios ir pabaigos likučių skaičiavimo mechanizmą, ir tam atitinkamai naudojami vaidmenys. Atidarykime jį ir pamatysime, kad kiekvienam laukui galite nustatyti vaidmenis.

Pridėkime užklausos duomenų rinkinį. Norėdami tai padaryti, turime suaktyvinti šakninį elementą „Query Builder“. Atsiverskime kaupimo registro virtualią lentelę „Likučiai ir apyvartos“. Ką mes matome?

Kaip matote iš aukščiau esančios iliustracijos, matome, kad kai kuriuose laukuose vaidmuo buvo užpildytas. Taip atsitiko, nes nustatėme automatinio užbaigimo vėliavėlę. Tačiau tai ne visada įmanoma, todėl kartais tenka įvesti vaidmenį rankiniu būdu. Pažvelkime į porą pavyzdžių.

Tarkime, kad užklausoje naudojame , pavyzdžiui, užklausos kalbos operatorių „SELECT“. Apibūdinkime šią sąlygą:

PASIRINKIMAS, KAI Produkto likutisIrApyvarta.Nomenklatūra = Reikšmė(Katalogas.Nomenklatūra.Tuščia nuoroda) THEN Reikšmė(Katalogas.Nomenklatūra.Šampūnas) KITAS Produkto likutisIrApyvarta.Nomenklatūra PABAIGA

Šis įrašas reiškia, kad jei elementas atitinka tuščią nuorodą (mes nurodome funkcijos reikšmių katalogą „Nomenclature“, tuščią nuorodą), tada bus grąžinta iš anksto nustatyto elemento reikšmė. Tarkime, kad mūsų konfigūracijoje yra toks iš anksto nustatytas elementas ir jis vadinamas „Šampūnu“. IN kitaip, grąžiname pačios prekės vertę. Gauname šiuos dalykus:

Kaip matote, laukas „Nomenklatūra“ nebuvo užpildytas. Tačiau, kaip matote paveikslėlyje, iš tikrųjų mes neturime įvesto vaidmens lauke „Field1“, ir tokiu atveju likusi dalis nebus apskaičiuota teisingai.

Yra ir kitų pavyzdžių, kai vaidmens negalima priskirti savarankiškai. Pavyzdžiui, tai yra naudojimas, tai yra, tam tikra verčių lentelė pateikiama kaip įvestis, tarkime, įkelta iš kitos duomenų bazės, ir iš jos reikia apskaičiuoti likučius. Šiuo atveju vaidmenis turime skirti patys. Pažiūrėsime, kaip tai daroma.

Straipsnio pabaigoje noriu jums rekomenduoti nemokamą Anatolijaus Sotnikovo. Tai patyrusio programuotojo kursai. Jis jums parodys atskirai, kaip sudaryti ataskaitas prieigos kontrolės sistemoje. Jums tereikia atidžiai klausytis ir prisiminti! Gausite atsakymus į šiuos klausimus:
  • Kaip sukurti paprastą sąrašo ataskaitą?
  • Kam skirti stulpeliai „Laukai“, „Kelias“ ir „Pavadinimas“ skirtuke „Laukai“?
  • Kokie yra išdėstymo laukų apribojimai?
  • Kaip teisingai sukonfigūruoti vaidmenis?
  • Kokie yra išdėstymo laukų vaidmenys?
  • Kur užklausoje galiu rasti duomenų sudėties skirtuką?
  • Kaip sukonfigūruoti parametrus prieigos kontrolės sistemoje?
  • Pasidaro dar įdomiau...
Galbūt neturėtumėte patiems naršyti internete ieškant reikalingos informacijos? Be to, viskas paruošta naudojimui. Tiesiog pradėkite! Visa informacija apie tai, kas yra nemokamose vaizdo pamokose

Pateiksime pavyzdį konfigūracijoje „Valdymas“. gamybos įmonė“ versija 1.3. B informacinė bazė Prie visų katalogo „Organizacijos“ elementų buvo pridėtos ypatybės „Pagrindinis sandėlis“, „Susijusi sandorio šalis“ ir „Paskirties šalis“. Duomenų komponavimo sistemoje (DCS) turime sukurti ataskaitą, kurioje galėtume taikyti atranką pagal papildomas organizacijų charakteristikas.

Šiuo atveju dirbdami su objekto charakteristikomis naudosime standartines ACS funkcijas. Taip pat apsvarstysime tokių ataskaitų kūrimo ypatybę, ty nesugebėjimą naudoti papildomų charakteristikų duomenų sudėties schemos projektuotoje režimu „Konfigūratorius“. Pastaroji neleidžia naudoti charakteringų laukų nustatant laukus, kurie turi būti rodomi ataskaitoje, pasirinkimai, grupavimas ataskaitos struktūroje ir pan.

Ataskaitos kūrimas ir charakteristikų nustatymas

Sukurkime paprastą ataskaitą. Jame bus vienas duomenų rinkinys su tokia užklausa:

QueryText = "SELECT | Organizacijos . Susieti AS organizaciją,| Organizacijos . TIN,| Organizacijos . patikros punktas |NUO Katalogas“ ;

Ataskaitos struktūra išves tik išsamius įrašus su visais užklausoje pasirinktais laukais. Dizaineryje ataskaitos struktūros nustatymas atrodys taip:

Toliau pateiktoje ekrano kopijoje rodoma ataskaitos išvestis su dabartiniais nustatymais.

Puiku. Dabar pereikime prie charakteristikų nustatymo, bet prieš tai leiskite jums priminti bendras kontūras charakteristikų mechanizmo veikimas daugelyje standartinių konfigūracijų, įskaitant minkštuosius paleidiklius. Tam naudojami keli konfigūracijos objektai.

  1. Charakteristikos tipų planas „Objektų savybės“.
  2. Informacijos registras „Objektų savybių vertės“.

Grafiškai ryšį tarp informacijos bazės objekto ir jo charakteristikų galima pavaizduoti naudojant šią diagramą:

Leiskite mums išsamiau apibūdinti schemą. Informacijos registre „ObjectPropertyValues“ matmenyje „Objektas“ yra nuoroda į informacijos bazės elementą, kuriam išsaugoma nuosavybė. Mūsų pavyzdyje tai yra nuoroda į katalogo elementą „Organizations“. Visi galimos savybės objektai nustatomi pagal charakteristikų tipus (PVC) „Objektų savybės“. Detalių registre saugoma charakteristikos reikšmė priklauso nuo turimų duomenų tipų būdingo tipo plano elementui, įrašytam į Nekilnojamojo turto dimensiją. Šis aprašymas turėtų tik pateikti bendra idėja apie papildomą mechanizmą savybių. Praktiškai tai yra sudėtingiau.

Dabar pereikime prie charakteristikų nustatymo duomenų sudėties schemoje. Norėdami tai padaryti, paleiskite užklausos dizainą ir eikite į skirtuką „Charakteristikos“. Čia reikia pridėti lauką, skirtą informacijos bazės objektui sujungti su ypatybių ir savybių reikšmių lentelėmis. Anksčiau mes žiūrėjome į ryšio tarp konfigūracijos objektų schemą, kad būtų galima saugoti papildomus. savybės/charakteristikos. Remiantis šia informacija, sąranka bus tokia:

Po to duomenų rinkinio užklausa bus papildyta instrukcijomis, kaip gauti objekto charakteristikas.

" SELECT | Organizacijos . Susieti AS organizaciją,| Organizacijos . TIN,| Organizacijos . patikros punktas |NUO| Katalogas . Organizacijos AS Organizacijos | // Papildyti. charakteristikų gavimo instrukcijos |(CHARAKTERISTIKOS| TIPAS (Katalogas. Organizacijos) | CHARAKTERISTIKŲ TIPAI Charakteristikos tipų planas. Objekto savybės | LAUKO RAKTAS Nuoroda | LAUKO PAVADINIMAS Pavadinimas | SKRYDŽIO TIPO VERTĖS TypeValues | CHARAKTERISTIKOS VERTYBĖS Informacija Registras. Objekto nuosavybės vertybės | LAUKO OBJEKTAS Objektas | POLEVIDA nuosavybė | NAUDINGOS VERTĖS Reikšmė )"

Tai viskas. Ataskaitų funkcionalumas dabar leidžia pasirinkti laukus papildomoms ataskaitos charakteristikoms (išvesties laukams, pasirinkimams ir kt.). Bet yra vienas BET. Šiuos laukus ataskaitų nustatymuose galime naudoti tik 1C:Enterprise režimu. Konfigūruotoje nematome charakteristikų laukų, o tai yra logiška, nes charakteristikas įveda pats vartotojas ir saugomos informacinėje bazėje.

Bet jei reikia, prieš atidarydami pasirinkimą galime pridėti, pavyzdžiui, charakteristikų laukus. Pažvelkime į nedidelį pavyzdį.

Programinis darbas su charakteristikomis

Atidarydami ataskaitos formą, vykdykite šį programos kodą:

CurrentSettings = ComposerSettings. Nustatymai; CollectionCollection = dabartiniai nustatymai. Pasirinkimas. Elementai; // Pridėti pasirinkimą papildomai. prie prekės detalių "Pagrindinis sandėlis". [Pagrindinis sandėlis] // Pridėti pasirinkimą papildomai. į nomenklatūros rekvizitus "Įdarbinimo šalis" NovEl = CollectionSelections. Add(Tipas(" Pasirinkimas ElementData Layout" ) ) ; NewEl.ComparisonType = DataCompositionComparisonType. Equals; NewEl.LeftValue = . [Paskelbimo šalis]" ); NewEl. Naudojimas = False ; // Pridėti pasirinkimą papildomai. į elemento duomenis "Susijusi sandorio šalis" NovEl = CollectionSelections. Add(Tipas(" Pasirinkimas ElementData Layout" ) ); NewEl.ComparisonView = DataCompositionComparisonView. Equals; NewEl.LeftValue = NewDataCompositionField("Organization . [Susijusi sandorio šalis]" ); NewEl. Naudojimas = False ;

Tada, jei pažvelgsime į ataskaitos pasirinkimą 1C: Enterprise režimu, pamatysime šį paveikslėlį:

Taigi programiškai įtraukėme pasirinkimą, pagrįstą papildomomis katalogo „Organizacijos“ charakteristikomis, nepaisant to, kad šie laukai nebuvo pasiekiami ACS dizainere. Atkreipkite dėmesį į duomenų sudėties lauko apibrėžimo sintaksę.

NewDataCompositionField(" Organizacija . [Susijusi sandorio šalis]" ) ,

būtent tekstas „[Susijusi sandorio šalis]“. Jei rašytume taip:

NewDataCompositionField(" Organizacija . Susijusi sandorio šalis" ) ,

tada vykdydama ataskaitą ACS neteisingai aptiks išdėstymo laukus. Nustatymuose pasirinkimo laukai bus pažymėti kaip neteisingi:

Norėdami gauti papildomų ypatybių ir išsamios informacijos, kurios nėra ACS dizainerio programoje, turite naudoti šią sintaksę:

NewDataCompositionField(" . " )

Taigi galime nustatyti ataskaitos parametrus, net jei laukai nepasiekiami ACS dizainere.

Išvada

ACS charakteristikų parametrų naudojimas gali žymiai supaprastinti sudėtingų ataskaitų kūrimą. Nepaisant kai kurių darbo trūkumų, tokių kaip galimybė sukonfigūruoti pasirinkimą papildomai. ypatybės projektuotoje ir kt., charakteristikų mechanizmas gali būti laikomas reikšmingu žingsniu supaprastinant ataskaitų kūrimą sistemoje 1C: Enterprise.

Straipsnyje mes neatsižvelgėme į visas ACS charakteristikų galimybes. Be straipsnio apimties, yra tokių galimybių kaip: savavališkas duomenų šaltinių apibrėžimas tiek savybėms, tiek charakteristinėms reikšmėms, taip pat savininko pasirinkimas pagal visas turimas charakteristikas informacijos bazėje ir daug daugiau. Tema didelė, yra kur plėsti savo žinių ratą.

Viena iš svarbiausių verslo programinės įrangos sričių yra ataskaitų teikimas. Verslo likimas, ar tai būtų ataskaita mokesčių inspekcija arba prekių paklausos priklausomybės nuo sezono ir kitų veiksnių diagrama. Galinga ir lanksti ataskaitų teikimo sistema, leidžianti lengvai išgauti reikiamus duomenis iš sistemos, pateikti juos suprantama forma, leidžianti galutiniam vartotojui iš naujo sukonfigūruoti standartinę ataskaitą, kad duomenys matytų nauju žvilgsniu – tai idealu, kad kiekvienas verslo sistema turėtų siekti.

„1C: Enterprise“ platformoje už ataskaitų generavimą atsakingas mechanizmas, vadinamas „Duomenų sudarymo sistema“ (sutrumpintai kaip DCS). Šiame straipsnyje mes stengsimės duoti Trumpas aprašymas ACS mechanizmo ir jo galimybių idėjas ir architektūrą.


ACS yra mechanizmas, pagrįstas deklaratyviu ataskaitų aprašymu. Praėjimo kontrolės sistema skirta ataskaitoms generuoti ir sudėtingos struktūros informacijai rodyti. Beje, be ataskaitų kūrimo, ACS mechanizmas taip pat naudojamas „1C:Enterprise“ dinaminiame sąraše, įrankyje, kuriame pateikiama daug funkcijų sąrašo informacija (plokščių ir hierarchinių sąrašų rodymas, sąlyginis eilučių dizainas, grupavimas ir kt.). ).

Šiek tiek istorijos

Pačioje pirmoje platformos 1C:Enterprise 8 versijoje, 8.0 versijoje, ataskaitos buvo pateiktos taip:
  1. Viena ar daugiau užklausų buvo parašytos 1C užklausų kalba (į SQL panaši kalba, daugiau apie tai žemiau).
  2. Buvo parašytas kodas, kuris atliktų užklausų rezultatus perkelia į skaičiuoklės dokumentą ar diagramą. Kodas taip pat gali atlikti darbą, kurio nebuvo galima atlikti užklausoje - pavyzdžiui, jis apskaičiavo reikšmes naudodamas integruotą 1C kalbą.
Požiūris paprastas, bet ne pats patogiausias - yra minimalūs vizualiniai nustatymai, viskas turi būti užprogramuota „iš rankų į rankas“. Ir vienas iš to meto visiškai naujos platformos „1C:Enterprise 8“ kozirių buvo kodo, kurį reikėjo parašyti rankiniu būdu, kiekio sumažinimas programos sprendime, ypač naudojant vizualinį dizainą. Būtų logiška eiti tuo pačiu keliu ir ataskaitų teikimo mechanizme. Tai buvo padaryta kuriant naują mechanizmą – Duomenų komponavimo sistemą.

Viena iš idėjų, sudariusių prieigos kontrolės sistemos pagrindą, buvo ataskaitų lankstumas ir pritaikymas, kuris buvo prieinamas tiek kūrėjui, tiek galutiniam vartotojui. Idealiu atveju norėčiau suteikti galutiniam vartotojui prieigą prie tų pačių ataskaitų kūrimo įrankių rinkinio, kaip ir kūrėjui. Būtų logiška sukurti vieną visiems prieinamą įrankių rinkinį. Na, o kadangi priemonėse reikalingas galutinio vartotojo dalyvavimas, vadinasi, programavimo jose naudojimas turėtų būti sumažintas iki minimumo (geriausia visiškai panaikinti), o vizualinius nustatymus išnaudoti maksimaliai.

Problemos formulavimas

Kūrėjų komandos užduotis buvo sukurti ataskaitų teikimo sistemą, pagrįstą ne algoritminiu (ty per kodo rašymą), o deklaratyviu metodu kuriant ataskaitas. Ir manome, kad problema sėkmingai išspręsta. Mūsų patirtis rodo, kad apie 80 % reikalingų ataskaitų teikimo galima įgyvendinti naudojant ACS be vienos kodo eilutės (išskyrus formulių rašymą apskaičiuotiems laukams), dažniausiai naudojant vizualinius nustatymus.
Pirmosios SDS versijos sukūrimas užtruko apie 5 asmeninius metus.

Dvi kalbos

Kuriant ataskaitas naudojamos dvi kalbos. Viena yra užklausų kalba, naudojama duomenims gauti. Antroji – duomenų kompozicijos išraiškų kalba, skirta įvairiose sistemos dalyse naudojamoms išraiškoms rašyti, pavyzdžiui, duomenų kompozicijos nustatymuose, apibūdinti vartotojo laukų išraiškas.

Užklausos kalba

Užklausos kalba yra pagrįsta SQL ir ją lengva išmokti tiems, kurie išmano SQL. Prašymo pavyzdys:

Nesunku matyti SQL užklausų standartinių sekcijų analogus - SELECT, FROM, GROUP BY, ORDER BY.

Tuo pačiu metu užklausos kalboje yra daug plėtinių, skirtų atspindėti finansinių ir ekonominių problemų specifiką ir maksimaliai sumažinti pastangas kuriant taikomųjų programų sprendimus:

  • Prieiga prie laukų naudojant tašką. Jei lentelės laukai yra nuorodos tipo (jose saugomos nuorodos į kitos lentelės objektus), kūrėjas gali nurodyti juos užklausos tekste per „.“, o sistema neriboja įdėjimo lygių skaičiaus. tokių nuorodų (pavyzdžiui, Kliento užsakymas. Sutartis. Organizacija. Telefonas).
  • Daugiamatis ir daugiapakopis rezultatų formavimas. Sumos ir tarpinės sumos formuojamos atsižvelgiant į grupavimą ir hierarchiją, lygius galima pereiti bet kokia tvarka sumuojant ir užtikrinama teisinga sumų konstravimas pagal laiko matmenis.
  • Virtualių stalų palaikymas. Sistemos pateiktos virtualios lentelės leidžia gauti beveik paruoštus duomenis daugeliui taikomųjų programų, nekuriant sudėtingų užklausų. Taigi virtuali lentelė gali pateikti duomenis apie produktų likučius pagal laikotarpius tam tikru laiko momentu. Tuo pačiu metu virtualios lentelės maksimaliai išnaudoja saugomą informaciją, pavyzdžiui, anksčiau apskaičiuotas sumas ir pan.
  • Laikini stalai. Užklausos kalba leidžia užklausose naudoti laikinąsias lenteles. Jų pagalba galite pagerinti užklausos našumą, kai kuriais atvejais sumažinti blokavimų skaičių ir palengvinti užklausos teksto skaitymą.
  • Paketiniai prašymai. Kad darbas su laikinomis lentelėmis būtų patogesnis, užklausų kalba palaiko darbą su paketinėmis užklausomis – taigi, laikinos lentelės kūrimas ir jos naudojimas patalpinami į vieną užklausą. Paketinė užklausa yra užklausų seka, atskirta kabliataškiais („;“). Užklausos partijoje vykdomos viena po kitos. Paketinės užklausos vykdymo rezultatas, atsižvelgiant į naudojamą metodą, bus arba paskutinės paketo užklausos grąžintas rezultatas, arba visų paketo užklausų rezultatų masyvas tokia seka, kuria seka paketo užklausos. .
  • Referencinių laukų atvaizdų gavimas. Kiekviena objekto lentelė (kuriame saugoma žinynas ar dokumentas) turi virtualų lauką - „View“. Šiame lauke pateikiamas tekstinis objekto vaizdas ir palengvinamas ataskaitos kūrėjo darbas. Taigi dokumento lauke yra viskas pagrindinė informacija- dokumento tipo pavadinimas, jo numeris ir data (pvz., „Išpardavimas 000000003 nuo 2017-07-06 17:49:14“), taupantis kūrėją nuo skaičiuojamo lauko rašymo.
  • ir kt.
Užklausos mechanizmas automatiškai modifikuoja užklausą, atsižvelgdamas į vaidmenis, kuriems priklauso vartotojas, kurio vardu vykdoma užklausa (t. y. vartotojas matys tik tuos duomenis, kuriuos turi teisę matyti) ir funkcines parinktis (t. y. pagal su sukonfigūruotais programos sprendimo funkcijomis).

Taip pat yra specialių užklausų kalbos plėtinių, skirtų prieigos kontrolės sistemoms. Išplėtimas atliekamas naudojant specialias sintaksines instrukcijas, įdėtas į riestinius skliaustus ir tiesiai į užklausos turinį. Naudodamas plėtinius kūrėjas nustato, kokias operacijas galutinis vartotojas galės atlikti tinkindamas ataskaitą.

Pavyzdžiui:

  • PASIRINKTI. Šiame sakinyje aprašomi laukai, kuriuos vartotojas galės pasirinkti išvestiei. Po šio raktinio žodžio pateikiami pagrindinio užklausų pasirinkimo sąrašo laukų, kuriuos bus galima konfigūruoti, slapyvardžiai, atskirti kableliais. Pavyzdys: (PASIRINKITE prekę, sandėlį)
  • KUR. Aprašyti laukai, kuriuose vartotojas gali taikyti pasirinkimą. Šiame pasiūlyme naudojami lentelės laukai. Pasirinkimo sąrašo laukų slapyvardžių naudoti neleidžiama. Kiekviena sąjungos dalis gali turėti savo WHERE elementą. Pavyzdžiai: (WHERE Prekė.*, Sandėlis), (WHERE dokumentas.data >= &pradžios data, dokumentas. data<= &ДатаКонца}
  • ir kt.
Plėtinių naudojimo pavyzdys:

Duomenų sudėties išraiškos kalba

Duomenų sudėties išraiškų kalba skirta rašyti išraiškoms, ypač naudojamoms pasirinktinioms lauko išraiškoms apibūdinti. SKD leidžia ataskaitoje apibrėžti pasirinktinius laukus naudojant savo išraiškas arba parinkčių rinkinius su jų pasirinkimo sąlygomis (analogiškai CASE SQL). Priskirti laukai yra panašūs į apskaičiuotus laukus. Jas galima nustatyti ir konfigūratoriuje, ir 1C:Enterprise režimu, tačiau įprastų modulių funkcijos negali būti naudojamos tinkintose lauko išraiškose. Todėl pasirinktiniai laukai yra skirti vartotojui, o ne kūrėjui.

Pavyzdys:

Prieigos kontrolės sistemos ataskaitos kūrimo procesas

Kurdami ataskaitą turime sukurti maketą, kuris apibrėžia, kaip duomenys bus rodomi ataskaitoje. Galite sukurti maketą pagal duomenų išdėstymo diagramą. Duomenų išdėstymo diagrama apibūdina duomenų, kurie pateikiami ataskaitai, esmę (iš kur gauti duomenis ir kaip galite valdyti jų išdėstymą). Duomenų sudėties schema yra pagrindas, kuriuo remiantis galima generuoti visų rūšių ataskaitas. Duomenų sudėties schemoje gali būti:
  • prašyti teksto su duomenų komponavimo sistemos instrukcijomis;
  • kelių duomenų rinkinių aprašymas;
  • išsamus turimų laukų aprašymas;
  • apibūdinti ryšius tarp kelių duomenų rinkinių;
  • duomenų gavimo parametrų aprašymas;
  • laukų išdėstymo ir grupavimo aprašymas;
  • ir kt.

Pavyzdžiui, galite įtraukti užklausą į duomenų sudėties schemą kaip duomenų rinkinį ir iškviesti užklausos konstruktorių, kuris leidžia grafiškai sukurti savavališko sudėtingumo užklausą:

Paleidus užklausos dizainerį, bus pateiktas užklausos tekstas (užklausos kalba 1C:Enterprise). Jei reikia, šį tekstą galima koreguoti rankiniu būdu:

Duomenų išdėstymo schemoje gali būti keletas duomenų rinkinių, duomenų rinkiniai gali būti bet kokiu būdu susieti makete, pridėti skaičiuojamųjų laukų, nurodyti ataskaitos parametrus ir t.t. Verta paminėti įdomią užklausos mechanizmo funkciją „1C: Enterprise“. Užklausos galiausiai paverčiamos SQL dialektu, būdingu DBVS, su kuria programa tiesiogiai veikia. Apskritai stengiamės maksimaliai išnaudoti DBVS serverių galimybes (mus riboja tai, kad naudojame tik tas galimybes, kurios vienu metu yra visose 1C:Enterprise platformos palaikomose DBVS – MS SQL, Oracle, IBM DB2 , PostgreSQL). Taigi, užklausos lygiu apskaičiuotuose laukuose galime naudoti tik tas funkcijas, kurios yra išverstos į SQL.

Tačiau duomenų komponavimo schemos lygmenyje jau galime pridėti pasirinktinius laukus ir naudoti juose esančias funkcijas integruotoje 1C kūrimo kalboje (įskaitant mūsų parašytas), o tai labai išplečia ataskaitų galimybes. Techniškai tai atrodo taip - viskas, ką galima išversti į SQL, yra išversta į SQL, užklausa vykdoma DBMS lygiu, užklausos rezultatai patalpinami į 1C programų serverio atmintį ir SKD apskaičiuoja kiekvieno įrašo reikšmes. apskaičiuotų laukų, kurių formulės parašytos 1C kalba.


Pasirinktinių laukų pridėjimas

Prie ataskaitos galite pridėti bet kokį lentelių ir diagramų skaičių:


Ataskaitų dizaineris


Vykdymo laiko ataskaita

Naudodamas SKD, vartotojas prie ataskaitos gali pridėti sudėtingų pasirinkimų (kurie bus pridėti prie užklausos reikiamose vietose), sąlyginį dizainą (leidžiant rodomus laukus formatuoti skirtingai – šriftu, spalva ir pan., atsižvelgiant į jų reikšmes ) ir daug daugiau. .

Ataskaitos sudarymo ir generavimo procesą galima trumpai apibūdinti taip:

  • Kūrėjas projektavimo metu, padedamas dizainerio (arba vykdymo metu, naudodamas kodą), nustato duomenų išdėstymo schemą:
    • Prašymo/prašymų tekstas
    • Apskaičiuojamų laukų aprašymas
    • Ryšiai tarp užklausų (jei jų yra keletas)
    • Ataskaitų parinktys
    • Numatytieji nustatymai
    • ir kt.
  • Aukščiau pateikti nustatymai išsaugomi makete
  • Vartotojas atidaro ataskaitą
    • Galbūt atlieka papildomus nustatymus (pvz., keičia parametrų reikšmes)
    • Spustelėkite mygtuką „Generuoti“.
  • Vartotojo nustatymai taikomi kūrėjo apibrėžtai duomenų sudėties schemai.
  • Suformuojamas tarpinis duomenų sudėties išdėstymas, kuriame pateikiamos instrukcijos, iš kur gauti duomenis. Visų pirma, koreguojamos makete nurodytos užklausos. Taigi ataskaitoje nenaudojami laukai pašalinami iš užklausos (taip daroma siekiant sumažinti gaunamų duomenų kiekį). Visi laukai, dalyvaujantys apskaičiuotose laukų formulėse, pridedami prie užklausos.
  • Įsijungia duomenų sudarymo procesorius. Išdėstymo procesorius vykdo užklausas, susieja duomenų rinkinius, apskaičiuoja apskaičiuotų laukų ir išteklių reikšmes bei atlieka grupavimą. Žodžiu, atlieka visus skaičiavimus, kurie nebuvo atlikti DBVS lygiu.
  • Duomenų išvesties procesorius paleidžia vykdymo užklausą ir atvaizduoja gautus duomenis skaičiuoklės dokumente, diagramoje ir pan.


Ataskaitos generavimo procesas naudojant ACS mechanizmą

Stengiamės sumažinti ataskaitų duomenų, perduodamų iš serverio į kliento programą, kiekį. Rodydami duomenis skaičiuoklės dokumente, atidarydami skaičiuoklės dokumentą, iš serverio perkeliame tik tas eilutes, kurias vartotojas mato dokumento pradžioje. Kai vartotojas juda pagal dokumento eilutes, trūkstami duomenys atsisiunčiami iš serverio į klientą.

Pasirinktiniai nustatymai

Visi ACS įrankiai yra prieinami tiek kūrėjui, tiek galutiniam vartotojui. Tačiau praktika parodė, kad galutinis vartotojas dažnai yra gąsdinamas įrankių galimybių gausos. Be to, daugeliu atvejų galutiniam vartotojui nereikia visos nustatymų galios - jam pakanka greitos prieigos prie vieno ar dviejų ataskaitos parametrų (pavyzdžiui, laikotarpio ir sandorio šalies) nustatymo. Pradedant nuo tam tikros platformos versijos ataskaitų kūrėjas turi galimybę pažymėti, kurie ataskaitos nustatymai yra prieinami vartotojui. Tai atliekama naudojant žymimąjį laukelį „Įtraukti į vartotojo nustatymus“. Be to, ataskaitos nustatymuose dabar yra vėliavėlė „Rodymo režimas“, kuri turi vieną iš trijų reikšmių:
  • Greita prieiga. Nustatymas bus rodomas tiesiai ataskaitos lango viršuje.
  • Įprasta. Nustatymas bus pasiekiamas spustelėjus mygtuką „Nustatymai“.
  • Nepasiekiamas. Šis nustatymas nebus pasiekiamas galutiniam vartotojui.


Ekrano režimo nustatymas projektavimo laiku


Rodykite nustatymą greitosios prieigos režimu vykdymo metu (po mygtuku Generuoti)

Plėtros planai

Viena iš mūsų prioritetinių sričių kuriant prieigos kontrolės sistemas yra vartotojų nustatymų supaprastinimas. Mūsų patirtis rodo, kad kai kuriems galutiniams vartotojams darbas su vartotojo nustatymais vis dar yra didelis darbas. Atsižvelgiame į tai ir dirbame šia kryptimi. Atitinkamai kūrėjams taip pat bus lengviau dirbti su prieigos kontrolės sistemomis, nes Mes, kaip ir anksčiau, norime pateikti vieną įrankį ataskaitoms kurti ir kūrėjui, ir galutiniam vartotojui.

Užklausos rengyklėje, kai ji iškviečiama iš duomenų šaltinio sąrankos formos, duomenų sudėties schemai. Yra skirtukas „charakteristikos“, kurio naudojimas dokumentacijoje nėra aiškiai aprašytas. Šiame straipsnyje pabandysiu paaiškinti, kaip ir kodėl charakteristikos naudojamos ACS.

Tipiškose konfigūracijose aktyviai naudojamas savybių ir savybių reikšmių mechanizmas, prieinamas beveik bet kokiam objektui. Primityviai žinynuose šis mechanizmas buvo įgyvendintas 7.7 konfigūracijomis. Dabar šis mechanizmas įgyvendinamas naudojant charakteristikų tipų planą ir informacijos registrą, tačiau idėja išlieka ta pati.

Kai pirmą kartą susidūriau su poreikiu naudoti šį mechanizmą prieigos kontrolės schemoje, labai ilgai stengiausi tvarkyti įdėtas užklausas, prijungti jas prie pagrindinio pasirinkimo ir sukti galvą, kaip atsižvelgti į galimą naujų tipų nuosavybės, kurių nebuvo ataskaitos rengimo metu. Visas savybių mechanizmas, būdamas paprastas ir logiškas vartotojo požiūriu, nebuvo tinkamas jokiam normaliam apdorojimui, kol neišsiaiškinau skirtuko „Charakteristikos“.

Skirtuke esanti lentelė yra labai kaprizinga, arba teisingai įvedate visą eilutę, arba išvis atsisakote įvesti eilutę; sistema neleis palikti nepilnai užpildytos eilutės „vėliau“.

Taigi, pereikime prie specifikos. Pirmas stulpelis: Tipas– čia pasirenkame objekto tipą, prie kurio bus pridedamos charakteristikos, pvz. „DirectoryLink.Nomenclature“

Tai reiškia, kad dabar bus galima gauti visų nurodyto tipo objektų nuosavybės vertes.

Toliau kitame stulpelyje Rūšių šaltinis turime nustatyti nuosavybės rodinio šaltinio parametrus. Galimi variantai stalo m prašymas, kodėl mums reikia pasirinkimo? prašymas Pasakysiu vėliau, dabar išsirinkime elementą stalo.

Stulpelyje Charakteristikos tipai turime pasirinkti infobazės lentelę, kurioje saugomi reikiami charakteristikų tipai, mūsų pavyzdyje tai bus „Charakteristikos tipų planas.Objektų savybės“.

Toliau stulpeliuose mums prieinamos vertės Raktų laukas, Vardo laukas Ir Reikšmės tipo laukas, tiesiogiai priklauso nuo mūsų pasirinktų lentelės laukų. IN Raktų laukas mes renkamės Nuoroda, V Vardo laukasSpektaklis(vartotojas matys jį kaip atributo pavadinimą), ir į Įveskite lauką atitinkamai TypeValue.

Dabar pereikime prie vertybių šaltinio. Mūsų verčių šaltinis bus informacijos registras „ObjectPropertyValues“, todėl stulpelyje pasirenkame Vertybių šaltinisstalo, ir stulpelyje Atributų vertės– „Informacijos registras. Objektų savybių vertės“. Stulpeliais Objektas, Nuosavybė, Reikšmė, pasirinkite atitinkamus registro laukus Objektas, Nuosavybė, Reikšmė.

Atrodytų, kad ir viskas. Einame į schemos nustatymus, pridedame grupavimą pagal produktus ir pridedame antraeilį grupavimą, pavyzdžiui, pagal Prekinius ženklus, turime tokią savybę.

Išplečiame nomenklatūros grupės detalių sąrašą ir... ten nematome jokių savybių:

Faktas yra tas, kad mes esame konfigūratoriuje, iš kurio nėra prieigos prie duomenų. Kaip atlikti reikiamus nustatymus? Patogiausias būdas tai padaryti yra naudoti duomenų sudarymo konsolę, esančią ITS diske arba tą, kuri yra įtraukta į „Kūrėjo įrankių“ posistemį. Bet jūs galite tiesiog atidaryti ataskaitos nustatymus įmonės režimu.

Taigi, atidarykime tą patį nustatymą, bet įmonės režimu:

Kaip matote, pridėjome naują „Išsamią informaciją“ ir nuosavybę „ Prekės ženklas“ išoriškai nesiskiria nuo įprastų katalogo detalių. Ir turtas“ Produkto tipas“ yra laužtiniuose skliaustuose, nes nuosavybės vaizde yra tarpas.

Tačiau mes taip pat turime turto “ Sutarties tipas“, kuris yra susietas su katalogu “ Sutartis“ ir neturi nieko bendra su „ Nomenklatūra“. Jei nenaudojama nustatyme " Sutarties tipas“ tada viskas veiks teisingai, bet jei pasirinksite, tada jis pasirodys neužpildytas, nes nei viename nomenklatūros elemente ši savybė nėra iš tikrųjų užpildyta. Tačiau kaip išfiltruoti nereikalingas savybes, kad jos nepakliūtų po kojomis?

Norėdami tai padaryti, turime pakeisti rodinio šaltinio nustatymą užklausų kūrėjo skirtuke „Characteristics“. Atminkite, kad straipsnio pradžioje pažadėjau jums pasakyti, kodėl reikalingas rodinio šaltinio tipas prašymas? Dabar kaip tik toks atvejis. Pakeiskite rodinio šaltinio tipą į prašymas. Charakteristikos tipų stulpelyje spustelėkite mygtuką „[...]“ ir atsidarys naujas užklausų kūrėjo langas.

Įveskite ten šią užklausą:

PASIRINKTI
Objekto savybės.Nuor.
Objekto ypatybės. Pavadinimas + „(nuosavybė)“ AS pavadinimas,
Objekto ypatybės.TypeValues
NUO
Charakteristikos tipų planas Objektų savybės AS Objektų savybės
KUR
Objekto ypatybės. Savybių paskirtis = VERTĖ ( Charakteristikos tipų planas. Objektų kategorijų savybių paskirtis. Katalogas_nomenklatūra)
IR (NE ObjectProperties.DeletionMark)
IR (NE ObjectProperties.Category)

Stulpeliais Raktų laukas, Vardo laukas Ir Reikšmės tipo laukas, pasirinkite atitinkamus pasirinkimo laukus: Nuoroda, vardas Ir TypeValue. Tai pasirodys taip:

Dabar, kai pereisime prie ataskaitos nustatymo, paveikslėlis išsamios nomenklatūros sąraše pasikeis:

Dabar produktas turi tik tas savybes, kurios jam yra priskirtos, be to, jos dabar pastebimai skiriasi nuo įprastų detalių dėl postscript (nuosavybė), kurį įtraukėme į nuosavybės pavadinimą prašyme.

Tai viskas, bet daugelis gali būti sumišę dėl to, kad konfigūravimo priemonėje jo nustatyti neįmanoma. Tikrai nieko blogo. Pakanka išsaugoti nustatymą (arba visą grandinę) į failą ir atkurti jį konfigūravimo priemonėje.

Konfigūratorius parodys išsamią informaciją, kurios ji nesupranta, su raudonais kryžiais kaip nepasiekiamą:

Bet tai nebėra baisu, nes ataskaita su tokiais nustatymais gali būti išsaugota konfigūracijoje ir ji veiks teisingai, kai ją atidarys vartotojas.

Redaktoriaus pasirinkimas
Savianalizė – tai žmogaus savęs tyrinėjimas, noras pažinti savo vidinį pasaulį, bandymas įsiskverbti į savo paties gelmes...

Visi mokesčių mokėtojai, naudojantys supaprastintą mokesčių sistemą (STS), privalo vesti pajamų ir išlaidų apskaitą (KUDiR). Jei...

Nasimas Nikolajus Talebas. Juoda gulbė. Po nenuspėjamumo ženklu (kolekcija)Juodoji gulbė. Po nenuspėjamumo ženklu, skirta Benoit...

Genetiniai elgesio tyrimai turi didelę reikšmę daugeliui biologijos ir medicinos sričių. Pirma, jie turi būti...
Nassimas Nicholas Talebas yra ekonomistas, prekybininkas ir rašytojas. Tallebas žinomas kaip žmogus, kuris tiria atsitiktinių įvykių poveikį ekonomikai ir...
pakeisti nuo 2015-06-29 - () Visa toliau pateikta medžiaga jau buvo rasta kituose straipsniuose. Šiame straipsnyje surinkta ir aptariama...
(vertinimai: 2, vidurkis: 3,00 iš 5) Pavadinimas: Juodoji gulbė. Po nenuspėjamumo ženklu (kolekcija) Autorius: Nassim Nicholas Taleb Metai: 2010...
Rusijoje formuojasi trijų pakopų draudimo rinkos reguliavimo sistema: Rusijos Federacijos civilinis ir mokesčių kodeksas, specialieji įstatymai dėl...
Šiuolaikinė žmonija šiuo metu turi gana daug įvairių įrodymų apie kitų pasaulių egzistavimą, išskyrus...