Kontakti

Izmantojot skd raksturlielumus. Raksturlielumu mehānisma izmantošanas īpatnības datu noliktavā Veidojam atskaites prezentācijas iestatījumus

Piemērs tiks sniegts par konfigurācijas "Ražošanas uzņēmuma vadība" versiju 1.3. Informācijas bāzē visiem direktorija "Organizācijas" elementiem ir pievienoti rekvizīti "Galvenā noliktava", "Saistītais darījuma partneris" un "Atrašanās vietas valsts". Mums datu kompozīcijas sistēmā (SKS) ir jāizveido atskaite, kurā varam uzlikt atlasi par organizāciju papildu raksturlielumiem.

Šajā gadījumā mēs izmantosim standarta ACS funkcionalitāti, lai strādātu ar objektu īpašībām. Mēs apsvērsim arī šādu atskaišu izstrādes iezīmi, proti, nespēju izmantot papildu raksturlielumus datu kompozīcijas shēmas konstruktorā režīmā "Konfigurators". Pēdējais neļauj izmantot raksturīgos laukus atskaites izvadlauku iestatīšanā, atlasēs, grupēšanā atskaites struktūrā utt.

Izveidojiet pārskatu un iestatiet raksturlielumus

Izveidosim vienkāršu pārskatu. Tam būs viena datu kopa ar šādu vaicājumu:

QueryText = " SELECT | Organizācijas . Saistīt AS organizāciju,| Organizācijas . TIN,| Organizācijas . kontrolpunkts |NO Direktorija" ;

Pārskata struktūrā tiks parādīti tikai detalizēti ieraksti ar visiem vaicājumā atlasītajiem laukiem. Konstruktorā pārskata struktūras iestatījums izskatīsies šādi:

Tālāk esošajā ekrānuzņēmumā ir parādīta pārskata izvade ar pašreizējiem iestatījumiem.

Lieliski. Tagad pāriesim pie raksturlielumu iestatīšanas, bet pirms tam es vispārīgi atgādināšu par raksturlielumu mehānisma darbību vairumā tipisko konfigurāciju, ieskaitot mīkstos starterus. Šim nolūkam tiek izmantoti vairāki konfigurācijas objekti.

  1. Pazīmju tipu plāns "Objektu īpašības".
  2. Informācijas reģistrs "ObjectPropertyValues".

Grafiski sakarību starp informācijas bāzes objektu un tā raksturlielumiem var attēlot šādi:

Sīkāk aprakstīsim shēmu. Informācijas reģistrā "ObjectPropertyValues" dimensijā "Object" ir ietverta atsauce uz informācijas bāzes elementu, kuram rekvizīts tiek glabāts. Mūsu piemērā šī ir saite uz direktorija elementu "Organizations". Visas iespējamās objekta īpašības ir noteiktas raksturlielumu tipu (PVC) plānā "Objektu īpašības". Informācijas reģistrā saglabātā raksturlieluma vērtība ir atkarīga no pieejamajiem datu tipiem raksturīgā tipa plāna elementam, kas ierakstīts Īpašuma dimensijā. Šim aprakstam jāsniedz tikai vispārīgs priekšstats par pievienošanas mehānismu. īpašības. Praksē tas ir grūtāk.

Tagad pāriesim pie raksturlielumu iestatīšanas datu kompozīcijas shēmā. Lai to izdarītu, palaidiet vaicājumu veidotāju un dodieties uz cilni "Raksturojumi". Šeit jāpievieno lauks informācijas bāzes objekta saistīšanai ar rekvizītu un rekvizītu vērtību tabulām. Iepriekš mēs apsvērām saziņas shēmu starp konfigurācijas objektiem papildu glabāšanai. īpašības/īpašības. Pamatojoties uz šo informāciju, iestatīšana būs šāda:

Pēc tam datu kopas pieprasījums tiks papildināts ar instrukcijām objektu raksturlielumu iegūšanai.

" IZVĒLIES | Organizācijas . Saistīt AS organizāciju,| Organizācijas . TIN,| Organizācijas . kontrolpunkts |NO| Katalogs . Organizācijas AS Organizācijas | // Pievienot. instrukcijas raksturlielumu iegūšanai |(SPECIFIKĀCIJAS| VEIDS (Rokasgrāmata. Organizācijas) | RAKSTUROJU VEIDI Pazīmju tipu plāns. PropertiesObjects | LAUKA ATSLĒGA Saite | LAUKA NOSAUKUMS Apraksts | FIELDVALUETypeValue | RAKSTURĪBU VĒRTĪBAS Informācijas reģistrs. ValuesPropertiesObjects | LAUKA OBJEKTS Objekts | POLEVIDA īpašums | NODERĪGA Vērtība)"

Tas ir viss. Atskaites funkcionalitāte tagad ļauj pārskatā atlasīt papildu raksturlielumu laukus (izvades laukus, filtrus utt.). Bet ir viens BET. Mēs varam izmantot šos laukus pārskatu iestatījumos tikai režīmā 1C:Uzņēmums. Konfiguratorā nevaram redzēt raksturlielumu laukus, kas ir loģiski, jo raksturlielumus ievada lietotājs un saglabā infobāzē.

Bet, ja ir nepieciešamība, atlasei pirms tās atvēršanas varam pievienot, piemēram, raksturīgus laukus. Apskatīsim nelielu piemēru.

Programmatisks darbs ar raksturlielumiem

Atverot atskaites formu, izpildiet šādu programmas kodu:

CurrentSettings = Iestatījumi Komponists. Iestatījumi; Atlases kolekcija = CurrentSettings. Atlase. Elementi; // Atlases pievienošana, pievienojot. preces "Galvenā noliktava" rekvizīti. [ Galvenā noliktava] // Atlases pievienošana, pievienojot. nomenklatūras "Atrašanās vietas valsts" rekvizīti NewEl = Izlases kolekcija. Add(Type(" Datu izkārtojuma atlases elements" ) ) ; NewEl.ComparisonType = DataCompositionComparisonType. Vienāds ar; NewEl.LeftValue = . [ Atrašanās vietas valsts]" ); NewEl. Usage = False ; // Atlases pievienošana, pievienojot. nomenklatūras "Saistītais darījuma partneris" rekvizīti NewEl = Izlases kolekcija. Add(Type(" Datu izkārtojuma atlases elements" ) ) ; NewEl.ComparisonType = DataCompositionComparisonType. Equals; NewEl.LeftValue = NewDataCompositionField(" Organization . [Saistītais darījuma partneris]" ); NewEl. Usage = False ;

Tad, ja skatāmies uz atskaites atlasi režīmā 1C:Uzņēmums, mēs redzēsim šādu attēlu:

Tādējādi mēs programmatiski pievienojām atlasi pēc direktorija "Organizācijas" papildu raksturlielumiem, neskatoties uz to, ka šie lauki nebija pieejami ACS konstruktorā. Ievērojiet datu sastāva lauka definēšanas sintaksi.

New DataCompositionField (" Organizācija . [Saistītais darījuma partneris]" ) ,

proti, teksts "[Saistītais darījuma partneris]". Ja mēs rakstām šādi:

New DataCompositionField (" Organizācija . Saistītais darījuma partneris" ) ,

tad, palaižot atskaiti, ACS nepareizi noteiks izkārtojuma laukus. Iestatījumos atlases lauki tiks izcelti kā nepareizi:

Papildu rekvizītiem un atribūtiem, kas nav pieejami ACS konstruktorā, programmatiski piekļūstot, ir jāizmanto šāda sintakse:

New DataCompositionField(" . " )

Tādējādi mēs varam iestatīt atskaites iestatījumus pat tad, ja lauki nav pieejami ACS konstruktorā.

Secinājums

Izmantojot ACS raksturlielumu iestatījumus, ir iespējams ievērojami vienkāršot sarežģītu atskaišu izstrādi. Neskatoties uz dažiem trūkumiem darbā, piemēram, nespēju konfigurēt atlasi papildu. īpašības konstruktorā utt., raksturlielumu mehānismu var uzskatīt par nozīmīgu soli atskaišu izstrādes vienkāršošanā sistēmā 1C:Enterprise.

Rakstā mēs esam apsvēruši tālu no visām ACS raksturlielumu iespējām. Ārpus raksta darbības jomas palika šādas iespējas: patvaļīga datu avotu definēšana gan rekvizītiem, gan raksturlielumu vērtībām, kā arī īpašnieka izvēle visiem pieejamajiem raksturlielumiem informācijas bāzē un daudz kas cits. Tēma ir liela, ir daudz ko paplašināt viņu zināšanu loku.

Piemērs, kā var iegūt iepriekšējā ieraksta laukus grupējumā un ne tikai. Ērts, lai aprēķinātu starpību starp iepriekšējās un pašreizējās cenas vērtībām.

Risinājuma būtība ir izmantot izteiksmes valodas SKD funkciju Aprēķināt izteiksmi() pievienotajā aprēķinātajā laukā, kuru es piezvanīju Delta. Funkcijai ir šādi parametri:

Iespējas:

  • Izteiksme. Tips Līnija;
  • grupēšana. Tips Līnija;
  • Aprēķina veids. Tips Līnija;
  • Sākt
  • Beigas. Virkne, kas satur vienu no opcijām;
  • Šķirošana. Līnija;
  • Hierarhiskā kārtošana;
  • To pašu vērtību pasūtījuma apstrāde

Mūs interesē parametri 4 un 5 ( Sākt Un Beigas). Izteiciens izskatīsies šādi:

isNULL((APRĒĶINĀT IZTEIKSMI("Cena", "Iepriekšējais", "Iepriekšējais") — cena), 0)

Šeit mēs aprēķinām lauka iepriekšējo vērtību Cena un atņemiet no tā pašreizējā lauka vērtību Cena. Protams, pirmajam ierakstam iepriekšējā vērtība netiks aprēķināta un atņemšanas ar pašreizējā lauka vērtību rezultāts būs Null, lai viss būtu “tīrs”, mēs izmantojam funkciju isNULL (isNull), lai pārvērstu Null uz nulli. .

Ievietojiet vērtību tabulu izklājlapas dokumenta šūnā

Dažreiz ir nepieciešams ievietot dokumenta tabulas daļu vai datus, kas ir tabulas daļas rindas, vienā izklājlapas dokumenta šūnā, piemēram, šādi:

Lai to izdarītu, jums jāizmanto funkcija: ComputeExpressionGroupedValueTable() , kam ir šādi parametri:

  • Izteiksme ir vērtējamā izteiksme. Ierakstiet virkni. Rindā var būt vairākas izteiksmes, kas atdalītas ar komatiem. Katrai izteiksmei var sekot izvēles atslēgvārds AS un vērtību tabulas kolonnas nosaukums. Piemēram: "Līgumslēdzējs, summa(Apgrozījuma summa) kā pārdošanas apjoms".
  • Lauku izteiksmju grupas- grupēšanas lauka izteiksmes, kas atdalītas ar komatiem. Piemēram, "Līgumslēdzējs, puse";
  • Ierakstu izvēle ir izteiksme, kas tiek lietota detalizētiem ierakstiem. Piemēram, "Dzēšanas atzīme = False";
  • Grupēšanas izvēle- atlase, kas piemērota grupu ierakstiem. Piemēram: "Summa(Apgrozījuma summa) > &Parametrs1".

Lai to izdarītu, mēs izveidojam aprēķinātu lauku, kurā parādīsim iegūto tabulu, pēc tam ievietojam šo lauku resursos ar izteiksmi CalculateExpressionGroupedValueTable ("Nomenklatūra, daudzums")

Skaitļu kolonnas

Piemērs, kā kolonnas var numurēt SKD.

Risinājuma būtība:

  1. Mēs izveidojam vaicājumu, kurā mēs numurējam vaicājuma rezultāta rindas noteiktā subordinācijā
  2. Rezultāta parādīšana krustveida tabulā

SVARĪGS!

Pēc tam, kad vaicājuma rindas ir numurētas, tās jāievieto BT un pēc tam jāizvēlas no šī BT, pretējā gadījumā ACS darīs visu savā veidā un grupējumā nonāks nepareizie lauki.

Lai iegūtu rezultātu, ir jāizveido aprēķināts lauks ar izteiksmi "Darbinieks" + formāts (NPP,"FH=3; FH=") un aprēķināto lauka nosaukumu, kurā ērti ievietot Darbinieku, tad ievietojam lauku Pilnais vārds uz resursu ar izteiksmi Maksimums (pilns vārds) vai vienkārši Pilnais vārds- nav atšķirības

Mainīgas grupas ar krāsu izcelšanu

Kaut kur Mista vai tajā pašā 1Cskd.ru bija jautājums, kā izcelt līnijas, kas veido grupas ar dažādām krāsām

To panāk, izveidojot aprēķinātu lauku:

Aprēķināt izteiksmi ("Daudzums (dažādas preces)", "Pirmais", "Iepriekšējais", "Kopā") % 2

Mēs uzskaitām dažādu lauka Nomenklatūras "grupējumu" skaitu, grupējumus var saskaitīt, iestatot parametra ProcessingSameOrderValues ​​vērtību = "Kopā"

Atlikušais dalījums ar divi liks skaidrs, vai šī grupa ir pāra vai nav, attiecīgi mēs izveidojam nosacītu dizaina elementu ar nosacījumu Lauks = 1

Paliekot raksturlielumu kontekstā. Raksturlielumi katrā rindā ar daudzumu iekavās

Tajā pašā 1CSkd.ru bija tāda tēma, kurā autors lūdz palīdzību ziņojuma sastādīšanā, kur vienā no kolonnām ir nepieciešams raksturlielumu saraksts (apavu izmēri) ar to skaitu. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

Tas tiek panākts, izmantojot to pašu funkciju Aprēķināt izteiksmi ar GroupingArray()

Šajā piemērā funkcija izskatās šādi:

Aprēķināt izteiksmiWith GroupingArray("Nomenklatūras raksturojums.Description +
""("" + Formāts(atlikuma skaits,""CH=0"") + "")""",
,
"VērtībaAizpildīta(FeatureNomenclature)")

Trešais parametrs ir atlase, tas ļauj izvairīties no tukšas virknes "" prezentācijas - attiecīgi jūs neredzēsit atlikumus bez īpašībām

Savienojiet divas tabulas ar taustiņu String = Skaitlis

Vai arī variants, kā skaitļa tipa vērtību pārvērst virknē SKD

Periodiski forumos redzu tādu tēmu kā "Kā vaicājumā pārvērst skaitli par virkni". Ja rakstāt ziņojumu par ACS un jums ir jāveic šāda pārveidošana, tad pieprasījumā nav jāraksta nekādi triki.

Lai pārvērstu skaitli virknē, vienkārši izmantojiet SKD datu kompozīcijas sistēmas izteiksmes valodas funkciju Līnija() vai Formāts ()

Lai pārvērstu virkni par skaitli, varat izmantot funkciju Aprēķināt ()

Kārtot pēc virknes kā pēc numura

Savā piemērā es vienkārši parādīšu darbinieku direktoriju, sakārtojot to pēc personāla numura (koda)

Rezultāts izskatīsies šādi:

Tas tiek panākts, izveidojot aprēķināto lauku un izmantojot izteiksmes valodas funkciju SKD Aprēķināt ()

  1. Izveidojiet aprēķināto lauku TabNumberNumber, ar izteicienu: Aprēķināt (darbinieks. kods)
  2. Kārtot pēc šī lauka

patiesībā tā ir virknes pārvēršana skaitļā, izmantojot izteiksmes valodas SKD funkciju Aprēķināt ()

Iesaku arī apskatīt "Video pamācības par skd" (viegli meklējamas Google)

Izstrādājot, es izmantoju konvertētu .

Viena no svarīgākajām biznesa programmatūras jomām ir ziņošana. Tas, cik viegli ir pielāgot esošo pārskatu mainīgajām uzņēmējdarbības (un likumdošanas) vajadzībām vai izveidot jaunu, var būt atkarīgs (un ne pārnestā nozīmē!) No uzņēmuma likteņa, vai tas ir ziņojums nodokļu inspekcijai vai diagramma par preču pieprasījuma atkarību no sezonas un citiem faktoriem . Jaudīga un elastīga atskaišu sistēma, kas ļauj viegli iegūt no sistēmas pareizos datus, pasniegt tos saprotamā formā, ļaujot gala lietotājam pārkonfigurēt standarta atskaiti, lai datus redzētu jaunā gaismā – tas ir ideāls, lai ikviens biznesa sistēmai ir jātiecas.

1C:Enterprise platformā par atskaišu ģenerēšanu ir atbildīgs mehānisms, ko sauc par datu kompozīcijas sistēmu (īsumā ACS). Šajā rakstā mēs centīsimies sniegt īsu aprakstu par ACS mehānisma ideju un arhitektūru un tā iespējām.


ACS ir mehānisms, kura pamatā ir deklaratīvs ziņojumu apraksts. ACS ir paredzēts, lai izveidotu pārskatus un parādītu informāciju, kurai ir sarežģīta struktūra. Starp citu, papildus atskaišu izstrādei ACS mehānisms tiek izmantots arī 1C: Enterprise dinamiskajā sarakstā, kas ir rīks saraksta informācijas parādīšanai ar bagātīgu funkcionalitāti (plakanu un hierarhisku sarakstu rādīšana, nosacījuma rindu formatējums, grupēšana utt.) .

Mazliet vēstures

Pašā pirmajā platformas 1C:Enterprise 8 versijā, 8.0 versijā, ziņojumi tika veikti šādi:
  1. Viens vai vairāki vaicājumi tika uzrakstīti 1C vaicājumu valodā (SQL līdzīga valoda, vairāk par to tālāk).
  2. Tika uzrakstīts kods, kas pārsūtīja izpildīto vaicājumu rezultātus uz izklājlapas dokumentu vai diagrammu. Kods varētu veikt arī darbu, ko nevar veikt vaicājumā - piemēram, tas aprēķināja vērtības, izmantojot iebūvēto 1C valodu.
Pieeja ir vienkārša, bet ne ērtākā - vizuālo iestatījumu ir minimāli, viss ir jāprogrammē no rokām. Un viens no tolaik pilnīgi jaunās 1C:Enterprise 8 platformas trumpjiem bija manuāli rakstāmā koda daudzuma samazināšana aplikācijas risinājumā, it īpaši vizuālā noformējuma dēļ. Būtu loģiski iet to pašu ceļu ziņošanas mehānismā. Tas tika darīts, izstrādājot jaunu mehānismu – Datu kompozīcijas sistēmu.

Viena no idejām, kas veidoja ACS pamatu, bija atskaišu elastība un pielāgošana, kas ir pieejama gan izstrādātājam, gan gala lietotājam. Ideālā gadījumā mēs vēlamies nodrošināt galalietotājam piekļuvi tai pašam pārskatu izstrādes rīku komplektam, ko nodrošina izstrādātājs. Būtu loģiski padarīt vienu instrumentu kopumu pieejamu ikvienam. Tā kā rīki ir saistīti ar galalietotāja līdzdalību, tas nozīmē, ka programmēšanas izmantošana tajos ir jāatceļ līdz minimumam (labākais, pilnībā jāizslēdz), un vizuālie iestatījumi ir jāizmanto maksimāli.

Problēmas formulēšana

Izstrādātāju komandas uzdevums bija šāds – izveidot atskaišu sistēmu, kuras pamatā būtu nevis algoritmisks (ti, koda rakstīšana), bet gan deklaratīva pieeja atskaišu veidošanai. Un mēs uzskatām, ka problēma ir veiksmīgi atrisināta. Mūsu pieredze liecina, ka aptuveni 80% no nepieciešamās atskaites var realizēt, izmantojot ACS bez vienas koda rindiņas (izņemot formulu rakstīšanu aprēķinātajiem laukiem), lielākoties - caur vizuālajiem iestatījumiem.
Pirmās ACS versijas izstrāde aizņēma aptuveni 5 cilvēkgadus.

Divas valodas

Atskaišu veidošanā ir iesaistītas divas valodas. Viena no tām ir vaicājuma valoda, ko izmanto datu iegūšanai. Otrā ir datu kompozīcijas izteiksmes valoda, kas paredzēta izteiksmju rakstīšanai, ko izmanto dažādās sistēmas daļās, piemēram, datu kompozīcijas iestatījumos, lai aprakstītu pielāgotas lauka izteiksmes.

Vaicājuma valoda

Vaicājumu valoda ir balstīta uz SQL, un to viegli pārvalda tie, kas zina SQL. Pieprasījuma piemērs:

Ir viegli redzēt standarta SQL vaicājumu sadaļu analogus - SELECT, FROM, GROUP BY, ORDER BY.

Tajā pašā laikā vaicājumu valoda satur ievērojamu skaitu paplašinājumu, kuru mērķis ir atspoguļot finanšu un ekonomisko uzdevumu specifiku un maksimāli samazināt centienus izstrādāt lietišķos risinājumus:

  • Atsauces uz laukiem ar punktu. Ja jebkuras tabulas lauki ir atsauces tipa (tajos tiek glabātas saites uz citas tabulas objektiem), izstrādātājs var atsaukties uz tiem vaicājuma tekstā, izmantojot ".", savukārt šādu saišu ligzdošanas līmeņu skaitu neierobežo sistēmā (piemēram, Klienta pasūtījums.Līgums.Organizācija. Tālrunis).
  • Daudzdimensionāla un daudzlīmeņu rezultātu veidošana. Kopsummas un starpsummas tiek veidotas, ņemot vērā grupējumu un hierarhiju, līmeņus var apiet patvaļīgā secībā ar starpsummas summēšanu, tiek nodrošināta korekta kopsummu konstruēšana pēc laika dimensijām.
  • Atbalsts virtuālajiem galdiem. Sistēmas nodrošinātās virtuālās tabulas ļauj iegūt gandrīz gatavus datus lielākajai daļai lietojumprogrammu uzdevumu bez nepieciešamības rakstīt sarežģītus vaicājumus. Tādējādi virtuālā tabula var sniegt datus par preču bilanci periodu kontekstā noteiktā laika brīdī. Tajā pašā laikā virtuālās tabulas maksimāli izmanto saglabāto informāciju, piemēram, iepriekš aprēķinātās kopsummas utt.
  • Pagaidu galdi. Vaicājumu valoda ļauj vaicājumos izmantot pagaidu tabulas. Ar to palīdzību jūs varat uzlabot vaicājuma veiktspēju, dažos gadījumos samazināt bloķēšanas skaitu un padarīt vaicājuma tekstu vieglāk lasāmu.
  • pakešu pieprasījumi. Ērtākam darbam ar pagaidu tabulām vaicājumu valoda atbalsta darbu ar pakešu vaicājumiem - tādējādi pagaidu tabulas izveide un tās izmantošana tiek ievietota vienā vaicājumā. Pakešu pieprasījums ir pieprasījumu secība, kas atdalīta ar semikolu (";"). Paketē esošie pieprasījumi tiek izpildīti viens pēc otra. Pakešu vaicājuma izpildes rezultāts atkarībā no izmantotās metodes būs vai nu pēdējā pakešu vaicājuma atgrieztais rezultāts, vai visu pakešu pieprasījumu rezultātu masīvs tādā secībā, kādā seko pakešu pieprasījumi. .
  • Atsauces lauka skatu iegūšana. Katrai objektu tabulai (kurā tiek glabāts direktorijs vai dokuments) ir virtuālais lauks - "Representation". Šis lauks satur objekta tekstuālu attēlojumu un atvieglo ziņotāja darbu. Tātad dokumentam šajā laukā ir visa galvenā informācija - dokumenta veida nosaukums, tā numurs un datums (piemēram, "Izpārdošana 000000003 no 07/06/2017 17:49:14"), saglabājot izstrādātāju no plkst. aprēķinātā lauka rakstīšana.
  • un utt.
Vaicājumu dzinējs automātiski modificē vaicājumu, ņemot vērā tā lietotāja lomas, kura vārdā vaicājums tiek izpildīts (t.i., lietotājs redzēs tikai tos datus, kurus viņam ir tiesības redzēt) un funkcionālās iespējas (t.i., saskaņā ar tas, kas konfigurēts lietojumprogrammas risinājuma funkcionalitātē).

SKD ir arī īpaši vaicājumu valodu paplašinājumi. Izvēršana tiek veikta, izmantojot īpašas sintakses instrukcijas, kas ir ievietotas cirtainos iekavās un ievietotas tieši pieprasījuma tekstā. Ar paplašinājumu palīdzību izstrādātājs nosaka, kādas darbības gala lietotājs varēs veikt, pielāgojot atskaiti.

Piemēram:

  • IZVĒLIES. Šajā teikumā ir aprakstīti lauki, kurus lietotājs varēs atlasīt izvadei. Pēc šī atslēgvārda galvenā vaicājumu atlases saraksta lauku aizstājvārdi, kas būs pieejami pielāgošanai, tiek atdalīti ar komatiem. Piemērs: (ATLASĪT nomenklatūru, noliktavu)
  • KUR. Apraksta laukus, kuros lietotājs var piemērot atlasi. Šajā priekšlikumā tiek izmantoti tabulas lauki. Atlasīto saraksta lauku aizstājvārdu izmantošana nav atļauta. Katra savienības daļa var saturēt savu WHERE elementu. Piemēri: (WHERE Nomenklatūra.*, Noliktava ), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
  • un utt.
Paplašinājumu izmantošanas piemērs:

Datu kompozīcijas izteiksmes valoda

Datu kompozīcijas izteiksmju valoda ir paredzēta izteiksmju rakstīšanai, ko izmanto, jo īpaši, lai aprakstītu pielāgotas lauka izteiksmes. ACS ļauj pārskatā definēt pielāgotus laukus, izmantojot vai nu savas izteiksmes, vai opciju kopas ar nosacījumiem to atlasei (analoģiski CASE SQL). Pielāgotie lauki ir analogi aprēķinātajiem laukiem. Tos var iestatīt gan konfiguratorā, gan režīmā 1C:Enterprise, bet parasto moduļu funkcijas nevar izmantot pielāgotās lauka izteiksmēs. Tāpēc pielāgotie lauki ir vairāk paredzēti lietotājam, nevis izstrādātājam.

Piemērs:

Ziņojuma izveides process par ACS

Veidojot pārskatu, mums ir jāizveido izkārtojums, kas nosaka, kā dati tiks attēloti pārskatā. Varat izveidot izkārtojumu, pamatojoties uz datu kompozīcijas shēmu. Datu kompozīcijas shēma apraksta atskaitei sniegto datu būtību (no kurienes iegūt datus un kā kontrolēt to sastāvu). Datu kompozīcijas shēma ir pamats, uz kura var ģenerēt visa veida atskaites. Datu kompozīcijas shēmā var būt:
  • pieprasīt tekstu ar datu kompozīcijas sistēmas instrukcijām;
  • vairāku datu kopu apraksts;
  • detalizēts pieejamo lauku apraksts;
  • attiecību apraksts starp vairākām datu kopām;
  • datu ieguves parametru apraksts;
  • lauku izkārtojumu un grupējumu apraksts;
  • un utt.

Piemēram, varat pievienot vaicājumu datu kompozīcijas shēmai kā datu kopu un izsaukt vaicājuma konstruktoru, kas ļauj grafiski izveidot patvaļīgas sarežģītības vaicājumu:

Vaicājumu veidotāja palaišanas rezultāts būs vaicājuma teksts (vaicājuma valodā 1C:Enterprise). Ja nepieciešams, šo tekstu var manuāli pielāgot:

Datu kompozīcijas shēmā var būt vairākas datu kopas, datu kopas var sasaistīt izkārtojumā patvaļīgā veidā, pievienot aprēķinātos laukus, iestatīt atskaites parametrus utt. Ir vērts pieminēt interesantu vaicājuma mehānisma funkciju programmā 1C: Enterprise. Vaicājumi galu galā tiek tulkoti SQL dialektā, kas ir raksturīgs DBVS, ar kuru lietojumprogramma strādā tieši. Kopumā mēs cenšamies maksimāli izmantot DBVS serveru iespējas (mūs ierobežo fakts, ka izmantojam tikai tās iespējas, kas vienlaikus ir pieejamas visās platformas 1C:Enterprise atbalstītajās DBVS - MS SQL, Oracle, IBM DB2 , PostgreSQL). Tādējādi vaicājuma līmenī aprēķinātajos laukos mēs varam izmantot tikai tās funkcijas, kas ir tulkotas SQL.

Bet datu kompozīcijas shēmas līmenī mēs jau varam pievienot pielāgotus laukus un izmantot tajos funkcijas iebūvētajā 1C izstrādes valodā (arī mūsu rakstītajā), kas ievērojami paplašina atskaišu iespējas. Tehniski tas izskatās šādi - viss, ko var tulkot SQL, tiek tulkots SQL, vaicājums tiek izpildīts DBMS līmenī, vaicājuma rezultāti tiek ievietoti 1C lietojumprogrammu servera atmiņā, un ACS aprēķina vērtības. aprēķināto lauku katram ierakstam, kura formulas ir rakstītas 1C valodā.


Pielāgotu lauku pievienošana

Pārskatam varat pievienot neierobežotu skaitu tabulu un diagrammu:


Pārskatu noformētājs


Pārskats izpildlaikā

Ar ACS palīdzību lietotājs var atskaitei pievienot sarežģītas atlases (kas tiks pievienotas vaicājumam vajadzīgajās vietās), nosacītu noformējumu (ļaujot formatēt dažādi – fontu, krāsu u.c. – izvades laukus atkarībā no to vērtības) un daudz ko citu.

Īsi aprakstiet pārskata izveides un ģenerēšanas procesu šādi:

  • Izstrādātājs projektēšanas laikā ar dizainera palīdzību (vai izpildes laikā ar koda palīdzību) nosaka datu izkārtojuma shēmu:
    • Pieprasījuma/pieprasījumu teksts
    • Aprēķināto lauku apraksts
    • Attiecības starp vaicājumiem (ja ir vairāk nekā viens)
    • Atskaites opcijas
    • Noklusējuma iestatījumi
    • utt.
  • Iepriekš minētie iestatījumi tiek saglabāti izkārtojumā
  • Lietotājs atver pārskatu
    • Iespējams, veic papildu iestatījumus (piemēram, maina parametru vērtības)
    • Nospiež pogu "Ģenerēt".
  • Lietotāja iestatījumi attiecas uz izstrādātāja noteikto datu kompozīcijas shēmu.
  • Tiek izveidots starpposma datu sastāva izkārtojums, kas satur norādījumus, no kurienes iegūt datus. Jo īpaši tiek laboti izkārtojumā norādītie vaicājumi. Tātad lauki, kas pārskatā netiek izmantoti, tiek noņemti no pieprasījuma (tas tiek darīts, lai samazinātu saņemto datu apjomu). Visi lauki, kas tiek izmantoti aprēķināto lauku formulās, tiek pievienoti vaicājumam.
  • Datu kompozīcijas procesors ir iekļauts korpusā. Izkārtojuma procesors izpilda vaicājumus, saista datu kopas, aprēķina aprēķināto lauku un resursu vērtības, veic grupēšanu. Vārdu sakot, tas veic visus aprēķinus, kas netika veikti DBVS līmenī.
  • Datu izvades procesors palaiž vaicājumu izpildei un izvada saņemtos datus izklājlapas dokumentā, diagrammā utt.


Atskaites ģenerēšanas process, izmantojot ACS mehānismu

Mēs cenšamies samazināt no servera uz klienta lietojumprogrammu pārsūtīto pārskatu datu apjomu. Parādot datus izklājlapas dokumentā, atverot izklājlapas dokumentu, mēs pārsūtām no servera tikai tās rindas, kuras lietotājs redz dokumenta sākumā. Lietotājam pārvietojoties pa dokumenta līnijām, trūkstošie dati tiek lejupielādēti no servera klientam.

Lietotāja iestatījumi

Visi ACS rīki ir pieejami gan izstrādātājam, gan gala lietotājam. Taču prakse rāda, ka galalietotāju bieži biedē rīka iespēju pārpilnība. Turklāt vairumā gadījumu gala lietotājam nav nepieciešama visa iestatījumu jauda - viņam pietiek ar ātru piekļuvi viena vai divu pārskata parametru iestatīšanai (piemēram, periods un darījuma partneris). Sākot ar noteiktu platformas versiju, atskaites izstrādātājam ir iespēja atzīmēt, kuri atskaites iestatījumi ir pieejami lietotājam. Tas tiek darīts, izmantojot izvēles rūtiņu "Iekļaut lietotāja iestatījumos". Turklāt pārskata iestatījumos tagad ir karodziņš “Displeja režīms”, kam ir viena no trim vērtībām:
  • Ātra piekļuve. Iestatījums tiks parādīts tieši pārskata loga augšdaļā.
  • Parasta. Iestatījums būs pieejams, izmantojot pogu "Iestatījumi".
  • Nav pieejams. Iestatījums nebūs pieejams gala lietotājam.


Displeja režīma iestatīšana projektēšanas laikā


Parādīt iestatījumu ātrās piekļuves režīmā izpildlaikā (zem pogas Ģenerēt)

Attīstības plāni

Viena no prioritātēm ACS izstrādē mums ir lietotāja iestatījumu vienkāršošana. Mūsu pieredze liecina, ka daļai galalietotāju darbs ar lietotāja iestatījumiem joprojām ir nopietns darbs. Mēs to ņemam vērā un strādājam šajā virzienā. Attiecīgi arī izstrādātājiem kļūs vieglāk strādāt ar ACS, jo mēs, tāpat kā iepriekš, vēlamies nodrošināt vienotu rīku komplektu pārskatu iestatīšanai gan izstrādātājam, gan gala lietotājam.

Labdien, dārgie emuāra vietnes lasītāji! Iepriekšējā reizē jau pieskārāmies tēmai, kurā tika runāts par funkcijas izmantošanu. Un šodien, pirmajā no šīs rakstu sērijas, mēs mācīsimies kam paredzētas datu kompozīcijas lauka lomas, kā arī apsveriet šo lomu aizpildīšanas piemērus.

SKD lauka loma norāda kas ir šis lauks. Katra lauka loma var saturēt savu rekvizītu. Piemēram, tam ir skaitliska vērtība un tajā ir perioda numurs, ja lauks ir punkts. Ja rekvizīta "Periods" vērtība ir 0 (nulle), tas nozīmē, ka šis lauks nav periods. Vai rekvizīts "Dimension" — satur zīmi, ka lauks ir dimensija. Ja lauks ir dimensija, šī informācija tiek izmantota, aprēķinot kopējo summu atlikušajiem laukiem.

Varat norādīt lomu katram datu sastāva shēmas laukam. Lomas ietekmēt atlikumu aprēķināšanas pareizību. Jo īpaši sākotnējais un galīgais atlikums kādai tabulai. Ja vaicājumā ir atlasīta virtuālā tabula "Atlikumi un apgrozījumi", tad sākuma un beigu atlikumi tiek aprēķināti pēc sarežģīta algoritma, īpaši, ja mēs izmantojam papildu apvērsumus pa periodiem.

Bet, ja tas viss darbojas pareizi vaicājumos, saskaņā ar izvades lauku komplektu, tad datu sastāvā viss ir nedaudz sliktāks. Galu galā mēs nezinām, kurus laukus lietotājs patiesībā atlasīs. Viss būs atkarīgs no viņa ziņojuma versijas konfigurācijas, kuru viņš var mainīt jebkurā laikā. Tāpēc datu kompozīcijas sistēmai ir savs mehānisms noteiktas datu kopas sākuma un beigu atlikumu aprēķināšanai, un tam tiek izmantotas attiecīgi lomas. Atvērsim to un redzēsim, ka katram laukam var iestatīt lomas.

Pievienosim vaicājuma datu kopu. Lai to izdarītu, mums ir jāaktivizē saknes elements "Query Builder". Pievērsīsimies uzkrāšanas reģistra virtuālajai tabulai "Atlikumi un apgrozījumi". Ko mēs redzam?

Kā redzams no ilustrācijas iepriekš, mēs redzam, ka dažiem laukiem loma ir aizpildīta. Tas notika, jo mums ir iestatīts karodziņš "Automātiskā pabeigšana". Bet tas ne vienmēr ir iespējams, tāpēc dažreiz loma ir jāiestata manuāli. Apskatīsim pāris piemērus.

Pieņemsim, ka vaicājumā mēs izmantojam, piemēram, mēs izmantojam vaicājuma valodas operatoru "SELECT". Aprakstīsim šo nosacījumu:

IZVĒLE, KAD Preču atliekas un apgrozījums.Nomenklatūra = Vērtība(Katalogs.Nomenklatūra.TukšaAtsauce) TAD Vērtība(Kataloga.Nomenklatūra.Šampūns) CITI Preču atliekas AtlikumiUn apgrozījums.Nomenklatūra BEIGAS

Šis ieraksts nozīmē, ka, ja nomenklatūra atbilst nulles atsaucei (mēs atsaucamies uz funkcijas vērtības atsauci "Nomenklatūra", nulles atsauce), tad tiks atgriezta iepriekš definētā elementa vērtība. Pieņemsim, ka mūsu konfigurācijā ir šāds iepriekš definēts elements un to sauc par "Šampūnu". Pretējā gadījumā mēs atgriežam pašas preces vērtību. Mēs iegūstam sekojošo:

Kā redzat, laukam "Nomenklatūra" loma netika aizpildīta. Bet, kā redzat attēlā, patiesībā laukam “Field1” nav iestatīta loma, un šajā gadījumā atlikums netiks pareizi aprēķināts.

Ir arī citi piemēri, kad lomu nevar noteikt atsevišķi. Piemēram, tas ir , tas ir, noteikta vērtību tabula tiek piegādāta kā ievade, piemēram, ielādēta no citas datu bāzes, un atlikums ir jāaprēķina no tās. Šajā gadījumā mums pašiem jāpiešķir lomas. Kā tas tiek darīts, mēs apsvērsim.

Raksta beigās es vēlos jums ieteikt bez Anatolija Sotņikova. Šis ir pieredzējuša programmētāja kurss. Viņš jums atsevišķi parādīs, kā izveidot pārskatus ACS. Jums tikai rūpīgi jāieklausās un jāatceras! Jūs saņemsiet atbildes uz tādiem jautājumiem kā:
  • Kā izveidot vienkāršu saraksta pārskatu?
  • Kam paredzētas cilnes Lauki kolonnas Lauks, Ceļš un Virsraksts?
  • Kādi ir ierobežojumi izkārtojuma laukiem?
  • Kā pareizi iestatīt lomas?
  • Kādas ir izkārtojuma lauku lomas?
  • Kur vaicājumā var atrast datu izkārtojuma cilni?
  • Kā konfigurēt parametrus SKD?
  • Vēl interesantāk...
Varbūt nevajag mēģināt pašam sērfot internetā, meklējot nepieciešamo informāciju? Turklāt viss ir gatavs lietošanai. Vienkārši sāciet! Visa informācija par to, kas ir pieejams bezmaksas video pamācībās

Piesakieties kā students

Pierakstieties kā students, lai piekļūtu skolas saturam

1C 8.3 datu kompozīcijas sistēma iesācējiem: rezultātu (resursu) skaitīšana

Šīs nodarbības mērķis būs:

  • Uzrakstiet ziņojumu, kurā tiek parādīts produktu saraksts (Pārtikas katalogs), to kaloriju saturs un garša.
  • Grupējiet produktus pēc krāsas.
  • Iepazīstieties ar apkopošanas līdzekli (resursiem) un aprēķinātajiem laukiem.

Jauna pārskata izveide

Tāpat kā iepriekšējās nodarbībās, atveriet datu bāzi " Deli" konfiguratorā un izveidojiet jaunu pārskatu, izmantojot izvēlni" Fails"->"Jauns...":

dokumenta veids - ārējais ziņojums:

Pārskata iestatījumu veidlapā ierakstiet nosaukumu " 3. nodarbība"un nospiediet pogu" Atvērt datu kompozīcijas diagrammu":

Atstājiet noklusējuma shēmas nosaukumu un noklikšķiniet uz " Gatavs":

Vaicājuma pievienošana, izmantojot konstruktoru

Cilnē " Datu kopa"klikšķis zaļš plus zīmi un atlasiet " Pievienot datu kopu — vaicājums":

Tā vietā, lai manuāli rakstītu pieprasījuma tekstu, palaidiet vēlreiz vaicājumu konstruktors:

Cilnē " tabulas"velciet galdu" Ēdiens" no pirmās kolonnas uz otro:

Izvēlieties no tabulas Ēdiens" lauki, kurus mēs pieprasīsim. Lai to izdarītu, velciet laukus " Vārds", "Nogaršot", "Krāsa" Un " kalorijas"no otrās kolonnas uz trešo:

Tas izrādījās šādi:

Nospiediet pogu " labi" - pieprasījuma teksts tika ģenerēts automātiski:

Ziņojuma prezentācijas iestatījumu veidošana

Dodieties uz grāmatzīmi Iestatījumi"un noklikšķiniet uz burvju nūjiņa, zvanīt iestatījumu konstruktors:

Izvēlieties pārskata veidu Saraksts..." un nospiediet pogu " Tālāk":

Velciet un nometiet no kreisās kolonnas uz labo laukus, kas tiks parādīti sarakstā, un noklikšķiniet uz " Tālāk":

Velciet no kreisās kolonnas uz labo lauku " Krāsa"- saskaņā ar to notiks grupēšana rindiņas ziņojumā. Nospiediet " labi":

Un šeit ir konstruktora rezultāts. Mūsu pārskata hierarhija:

  • ziņojumu kopumā
  • grupēšana "Krāsa"
  • detalizēti ieraksti - rindas ar ēdienu nosaukumiem

Saglabāt atskaiti (poga disketi) Un bez aizvēršanas konfigurators, mēs to nekavējoties atvērsim lietotāja režīmā. Tas izrādījās šādi:

Kolonnu secības maiņa

Bet pieņemsim mainīt pasūtījumu kolonnas (bultiņas uz augšu un uz leju), lai tas izskatās kā attēlā zemāk:

Saglabājiet pārskatu un atkārtoti atveriet to lietotāja režīmā:

Lieliski, tas ir daudz labāk.

Summējot (summa) pēc kaloriju satura

Būtu jauki parādīt kopējo pārtikas produktu kaloriju saturu pa grupām. Lai redzētu visu produktu, piemēram, baltā vai dzeltenā, kaloriju satura summu. Vai arī uzziniet visu datubāzē esošo pārtikas produktu kopējo kaloriju saturu.

Tam ir resursu aprēķināšanas mehānisms.

Iet uz cilni " Resursi" un velciet lauku " kalorijas"(mēs to apkoposim) no kreisās kolonnas uz labo.

Tajā pašā laikā izteiksmes laukā nolaižamajā sarakstā atlasiet " Daudzums (kalorijas)", jo kopsumma būs visu summā iekļauto elementu summa:

Pārskata saglabāšana un ģenerēšana:

Mums ir rezultāti katrai grupai un ziņojumam kopumā.

Summējot (vidēji) pēc kaloriju satura

Tagad padarīsim to tā, lai tiktu parādīta cita kolonna vidēji produktu kaloriju saturs pa grupām un kopumā pārskatam.

Nav iespējams pieskarties jau esošajai ailei "Kaloriju saturs" - tajā jau ir redzama kopējā summa, tāpēc pievienosim vēl vienu lauku, kas būs precīza lauka "Kalorijas" kopija.

Lai izveidotu šādu "virtuālo" lauku, mēs izmantojam mehānismu aprēķinātie lauki.

Dodieties uz grāmatzīmi Aprēķinātie lauki"un nospiediet zaļš plus zīme:

Kolonnā " Datu ceļš"uzrakstiet jaunā lauka nosaukumu ( kopā, bez atstarpēm). Lai to sauc Vidējās kalorijas", un kolonnā " Izteiksme" ierakstām jau esoša lauka nosaukumu, uz kura pamata tiks aprēķināts jaunais lauks. Tur rakstām " kalorijas". Kolonna " galvene" tiks aizpildīts automātiski.

Mēs esam pievienojuši jaunu lauku (" Vidējās kalorijas"), taču pārskatā tas pats par sevi neparādīsies - jums tas ir jāzvana vēlreiz iestatījumu konstruktors("burvju nūjiņa") vai pievienojiet šo lauku manuāli.

Rīkosimies otrais veidā. Lai to izdarītu, dodieties uz cilni " Iestatījumi", izvēlieties" Ziņot" (galu galā mēs vēlamies pārskatam pievienot lauku kopumā), atlasiet zemāk esošo cilni " Atlasītie lauki" un velciet lauku " Vidējās kalorijas" no kreisās kolonnas uz labo:

Tas izrādījās šādi:

Pārskata saglabāšana un ģenerēšana:

Lauks ir parādījies, un mēs redzam, ka tā vērtības ir lauka "Kalorijas" vērtības. Lieliski!

Lai to izdarītu, mēs atkal izmantojam mums jau pazīstamo mehānismu. resursus(rezumējot). Dodieties uz grāmatzīmi Resursi" un velciet lauku " Vidējās kalorijas" no kreisās kolonnas uz labo:

Tajā pašā laikā kolonnā Izteiksme"izvēlēties" Vidējais (vidējais kaloriju daudzums)":

Pārskata saglabāšana un ģenerēšana:

Mēs redzam, ka grupām, tas ir, katrai krāsai un pārskatam kopumā, vidējā vērtība tika aprēķināta diezgan pareizi. Bet klāt papildu ieraksti atsevišķiem produktiem (nevis grupām), kurus vēlaties noņemt no pārskata.

Vai jūs zināt, kāpēc tie parādījās (tas nozīmē, ka nav grupās)? Jo, kad mēs pievienojām lauku " Vidējās kalorijas" pārskata iestatījumos, otrajā darbībā mēs atlasījām visu ziņojumu un šis jaunais lauks skāra elementu " Detalizēti ierakstus".

Izlabosim kļūdu. Lai to izdarītu, atgriezieties cilnē " Iestatījumi", izvēlieties" Detalizēti ieraksti"vispirms augšā (2. darbība) un pēc tam" Detalizēti ieraksti"no apakšas (3. darbība), dodieties uz grāmatzīmi" Atlasīts lauki" un labajā kolonnā skatiet elementu " Auto".

Elements " Auto" - tas nav viens lauks. Šie ir vairāki lauki, kas automātiski tiek parādīti šeit, pamatojoties uz augstākiem iestatījumiem.

Lai redzētu, kas ir šie lauki - noklikšķiniet uz elementa " Auto" pa labi pogu un izvēlieties " Izvērst":

Elements " Auto" izvērsts šādos laukos:

Šeit ir mūsu lauks Vidējās kalorijas"kas šeit nokļuva no rindkopas" Ziņot"Kad mēs to vilkām uz turieni. Vienkārši pacelsimies atzīmējiet blakus šim laukam, lai noņemtu tā izvadi.



patika raksts? Dalies ar to