Pārskatu veidotāja un vaicājumu veidotāja darbs ar patvaļīgu datu avotu. Pārskatu veidotāja un vaicājumu veidotāja darbs ar patvaļīgu datu avotu Vaicājumu veidotājs 1c 8.2 izvēle

Platformas 1C astotā versija piedāvā daudz jaunu konfigurācijas objektu, no kuriem katram ir savas metodes un īpašības, kas vienkāršo lietojumprogrammu izstrādes procesu un optimizē veiktspēju. Viens no tiem ir Report Builder.

Par to, kas ir 1c atskaišu veidotājs, kādas funkcijas tas veic un kādu lietojumprogrammu ir atradis programmēšanā, un es vēlētos parunāt šajā rakstā.

1C pārskatu veidotājs - kas tas ir?

Tas ir konfigurācijas objekts, kas ļauj izvadīt datus izklājlapas dokumentā vai diagrammā. Datu avots var būt:

  1. Vaicājuma izpildes rezultāts;
  2. Izklājlapas dokumenta šūnu laukums;
  3. Dokumenta vai uzziņu grāmatas sadaļa tabulā;
  4. Reģistru ierakstu komplekts.

Turklāt pārskatu veidotājam 1C ir atribūts "Teksts", kurā var nosūtīt vaicājuma tekstu, kura rezultāts ir jāapskata.

1. attēlā parādīts koda gabals, kas ļauj parādīt patvaļīgu vērtību tabulu, izmantojot "Report Builder"

Tādējādi acīmredzams celtnieka izmantošanas gadījums ir ziņojumu izstrāde. Tas nav tik tiešs veidotāja izmantošanas virziens, kas tiek izmantots, lai lietotājs pielāgotu dažādus vaicājuma elementus (grupējumus, atlases utt.).

Starp citu, 1. attēlā redzamā koda izpildes rezultāts ir redzams 2. attēlā

2. attēls

Builder iestatīšana

Pārskatu veidotājs savā ziņā atgādina datu sastādīšanas sistēmu un to var izmantot gadījumos, kad ACS viena vai otra iemesla dēļ nav pieejama vai pastāv iespēja, ka tā darbosies nepareizi.

Tāpat kā ACS, celtnieks ietver:

  • Grupēšana (hierarhijas līmeņi, parādot informāciju);
  • Indikatori (vērtības, kuru kopējo summu vēlaties iegūt);
  • Papildu aprēķinātie lauki (elementu atribūti, darbību rezultāti ar vērtībām);
  • Filtri (atlases);
  • Šķirošana.

Veidotāja izskata izkārtojuma iestatījumos tiek pieņemti dažādi līmeņi un detalizācijas precizitāte.

Celtnieka izmantošanas algoritms

Protams, atkarībā no situācijas pārskata veidotāja izmantošanas programmas kods var ievērojami atšķirties. Pamata lietošanas algoritms nemainās:

  1. Mēs paziņojam par jauna ReportBuild tipa objekta izveidi;
  2. Šajā posmā atlases teksta izveidošanai varat izmantot QueryBuilder vai arī, izmantojot objektu DataSource Description, izmantot esošu atlasi;
  3. Pārskatu veidotāja iestatījumus var iestatīt, izmantojot veidotāja objekta metodi FillSettings ();
  4. Jūs varat atteikties izmantot standarta dizaina izkārtojumu, kas izveidots ar automātiskās ģenerēšanas metodi, būvniekā definējot objekta Izkārtojums rekvizītu;
  5. Ja DataSourceDescription netiek izmantots, šajā posmā ir nepieciešams izpildīt pieprasījumu, izmantojiet metodi Execute ();
  6. Pēdējais solis ir palaist metodi Output (), izvadi var izdarīt izklājlapas dokumentā vai attiecīgajā formas elementā.

Atšifrēšanas izmantošana celtniekā

Trešajā rindā 1. attēlā ir iekļauta šūnu dekodēšana būvētāja izpildes rezultātā.

Lai to izdarītu, mēs izmantojām rekvizītu FillDecoding. Šī rekvizīta veids ir ReporterDecodingFillType, tam var būt viena no trim vērtībām:

  1. Grupēšanas vērtības - aktivizējot šūnu, tiks izmantota tajā norādītā grupas vērtība;
  2. Neaizpildiet - noklusējuma vērtība, kas nozīmē, ka atšifrēšana netiks izmantota gala rezultātam;
  3. Atšifrēšana - atšifrēšanas struktūra tiks aizpildīta ar visu sākotnējā parauga grupu vērtībām.

Turklāt lietotājs pats var iestatīt atšifrēšanu, izmantojot ConfigureDecryption () metodi. Koda gabals, kurā darbojas šī metode, parādīts 3. attēlā

3. attēls

Izstrādātāja izmantošanas piemērs atlases iekļaušanai pārskatā

Mazliet no praktiskās daļas. Dažreiz ir situācija, kad ir nepieciešams izveidot atskaiti ar dažām atlasēm. Jūs varat atrisināt šo problēmu, izmantojot ACS, vai arī varat izmantot veidotāju:

  1. Sāksim ar izveidi ārējais ziņojums un pievienojot tam mainīgo ar patvaļīgu nosaukumu un ierakstot Report Builder (4. attēls);

4. attēls

  1. Izveidojiet pārskata veidlapu un ievietojiet tajā saskarnes objektu TableField, ierakstiet to kā Atlasi un saistiet to ar izveidotā atribūta rekvizītu Selection 5. attēls

5. attēls

  1. Mēs izveidojam OnOpen () procedūru, kas saistīta ar atbilstošo mūsu formas notikumu;

6. attēls

  1. Tajā ierakstītajā kodā obligāti jābūt vaicājumam pārskatu veidotājam, koda piemērs parādīts 6. attēlā, lai izveidotu veidotāja tekstu, varat izmantot vaicājuma konstruktoru, konstruktorā būvētāja nosacījumus un tā papildu iestatījumi ir norādīti attiecīgajā cilnē 7. attēls;

7. attēls

  1. Vaicājuma teksta cirtainajās () iekavās norādītie atlases nosacījumi tiks izpildīti tikai tad, ja lietotājs aktivizēs un izmantos atbilstošo atlasi;

  2. Procedūra, kas parāda būvētāja rezultātu, ir parādīta 8. attēlā un ir saistīta ar pogas Generate nospiešanu;

8. attēls

  1. Mēs saglabājam mūsu ziņojumu.

Mūsu izveidotā ziņojuma izskats un tā rezultāts ir parādīts 9. attēlā

9. attēls

Protams, viena raksta ietvaros ir diezgan grūti demonstrēt visas jaunā objekta iespējas, taču mums šķiet, ka ir iespējams gūt priekšstatu par to un sākt to izmantot, ņemot vērā iegūtās zināšanas.

1. Kas ir pārskatu veidotājs?

Pārskatu veidotājs ir objekts, kas ļauj iegūt rezultātu, pamatojoties uz norādīto vaicājuma tekstu un iestatījumus, un parādīt to izklājlapas dokumentā vai diagrammā.

Pārskatu veidotāja iestatījumos ietilpst:

  • grupējumi (piemēram: “Nomenklatūra”, “Darījuma partneris” ...),
  • rādītāji (piemēram: “Daudzums”, “Daudzums” ...),
  • papildu lauki (piemērs: “Nomenclature.Service”, “Counterparty.code” ...),
  • filtrs (piemērs: konkrētam postenim, darījumu partneru grupai ...) un
  • šķirošana (piemērs: “Nomenclature.Code”, “Counterparty.Name” ...)

Veidotāja iestatījumos ir vizualizācijas rīki, kas ļauj programmētājam ar minimālu piepūli nodrošināt lietotāju ar interfeisu viņu instalēšanai.

Pirms izlaišanas varat veidot pārskata veidotāja izkārtojumu, izmantojot izkārtojuma izkārtojumu.

Atskaites veidotāja vaicājuma izpildes rezultāta izvade tiek veikta ar vienu komandu.

2. Kur var izmantot atskaišu veidotāju?

Ar pārskatu veidotāja palīdzību jūs varat noformēt lielāko daļu pārskatu (piemēram: “Krājumu atlikumi”, “Pārdošana attiecīgajam periodam” ...). Tajā pašā laikā to izstrādes laiks un programmas kods tiks ievērojami saīsināts, palielināsies dizaina un funkcionalitātes kvalitāte.

Turklāt pārskatu veidotāju var izmantot gadījumos, kad rezultāta izvade nav nepieciešama, bet lietotājam ir jāpielāgo vaicājuma elementi, piemēram, grupas vai filtrs (piemēram: vienuma izkraušana xml failā vai dokumentu apstrāde, izmantojot noteiktu filtru).

Tā kā pārskatu veidotājs nav pieejams 1C: Enterprise serverī un netiek izmantots ārējā savienojuma modulī, šajos gadījumos ir jāizmanto vaicājumu veidotājs, kas ir līdzīgs pārskata veidotājam, taču tam nav vizuālo īpašību un metožu ("Layout", "OutputReportHeader", "Output ()", "CheckoutLayout ()" ...).

3. Nedaudz par jēdzieniem

Salīdzinājumā ar 7.7 versiju, versijā 8.0 ir notikušas nelielas koncepciju izmaiņas, tāpēc ir vērts nedaudz pakavēties pie tā.

Koncepcija

Apraksts

Līnijas mērījumi Grupējumu saraksts, pēc kuriem produkcija tiks veikta pa rindām (piemēram: “Nomenklatūra”, “Darījuma partneris” ...)
Kolonnu mērījumi Grupējumu saraksts, pēc kuriem izvade tiks veikta pa kolonnām (piemēram: “Noliktava”, “Mēnesis” ...).
Atlase Dažādu filtru kopums (piemērs: darbuzņēmēju grupa, konkrēta organizācija ...).
Pasūtījums Šķirošanas lauku kopa (piemērs: "Nomenclature.Code", "DocumentSales.Responsible" ...).
Lauks Viens no vaicājuma izvēles laukiem (piemērs: “Nomenklatūra”, “Darījuma partneris.kods”, “Daudzums”, “Daudzums” ...).
Atlasītie lauki Atlasīto lauku sarakstā ir indikatori (piemērs: “Daudzums”, “Daudzums” ...) un papildu lauki (detalizēta informācija par grupēšanu) (piemērs: “Nomenklatūra.Grupa”, “Darījuma partnera kods” ...).
Pieejamie lauki Lauku saraksts, kas pieejami pievienošanai grupēšanai, filtrēšanai, kārtošanai un atlasītajiem laukiem. Parasti tas ir aizpildīts ar vaicājuma atlases lauku sarakstu, taču to var programmiski rediģēt (jūs varat pievienot, mainīt un dzēst pieejamos laukus).

Ir svarīgi saprast, ka grupēšana, filtrēšana, šķirošana un atlasītie lauki nav tieši saistīti ar pieejamajiem laukiem, tie ir dažādi objekti.

Galvenā atšķirība ir tā, ka pieejamajam laukam nav rekvizīta “Datu ceļš” (piemērs: “Nomenclature.Code”, “Quantity”), jo tas ir tikai sava veida lauka apraksts, ar kuru mēģinās mēģināt atrodiet atbilstību starp vaicājuma atlases laukiem, to pievienojot grupēšanas, filtrēšanas, kārtošanas vai atlasīto lauku sarakstam.

Tajā pašā laikā nav iespējams programmiski pievienot vienu no pieejamajiem laukiem nevienam no iepriekš minētajiem sarakstiem, jo, no vienas puses, pieejamā laukā nav tādu metožu kā “AddWelected ()” vai “AddInSelectedFields ()” , bet, no otras puses, pievienojot jaunu elementu jebkuram no iepriekš minētajiem sarakstiem, jums jānorāda rekvizīts “Datu ceļš”, kas ne vienmēr sakrīt ar lauka nosaukumu (piemēram: “Nomenclature.Parent” un laukiem “Nomenclature.Pent.Parent” ir tāds pats nosaukums “Parent”).

4. Pārskatu veidotāja tipisks lietošanas gadījums

Darbību secība, strādājot ar pārskatu veidotāju, ir šāda:

  1. Izveidojiet jaunu objektu “Report Builder”;
  2. Piešķiriet pieprasījuma tekstu rekvizītam “Teksts”;
  3. Ja vaicājuma tekstā pārskata veidotāja iestatījumi nebija norādīti, izpildiet metodi “FillSettings ()”;
  4. Nodrošiniet lietotājam iespēju mainīt pārskatu veidotāja iestatījumus;
  5. Ja nepieciešams, varat atteikties automātiski ģenerēt izkārtojumu, ko veic atskaišu veidotājs, un piešķirt fiksētu izkārtojumu rekvizītam Izkārtojums;
  6. Ja nepieciešams, varat piešķirt vienu no standarta vai savu izkārtojumu īpašumam "Izkārtojums", un, ja atskaišu veidotāja automātiski ģenerētais izkārtojums ir aizstāts ar fiksētu, tad izpildiet metodi "Checkout Layout ()";
  7. Izsauciet metodi "Run ()";
  8. Izsauciet metodi "Output ()".
Builder = jauns "Report Builder"; Postroitel.Tekst = "Izvēlieties izšķirtspēju | DenezhnyeSredstvaKompaniiOstatki.StrukturnayaEdinitsa, | Summa (DenezhnyeSredstvaKompaniiOstatki.SummaOstatok) kā summa | | NO | RegistrNakopleniya.DenezhnyeSredstvaKompanii.Ostatki ((StrukturnayaEdinitsa *).) | | Pec | DenezhnyeSredstvaKompaniiOstatki.StrukturnayaEdinitsa | | KOPĀ REZULTĀTI (summa) PA | VISPĀRĪGI, | struktūrvienība "; Builder.FillSettings (); // Šeit jūs varat dot lietotājam iespēju // mainīt pārskatu veidotāja iestatījumus Builder.Layout = GetLayout ("CustomLayout");
Builder.Layout.Layout = GetLayoutLayout (StandardLayout.Classic);
Builder.CheckLayout ();
Celtnieks. Palaist ();
Celtnieks. Displejs ();

5. Dažu pārskata veidotāja rekvizītu apraksts

Īpašums

Apraksts

Teksts Satur pārskata veidotāja vaicājuma tekstu. Ja pārskata veidotāja vaicājuma tekstā nav iestatījumu vienumu “(…)”, varat izmantot metodi FillSettings (), lai automātiski aizpildītu iestatījumus, pamatojoties uz vaicājuma tekstu.
TextHeader Teksts, kas tiks parādīts pārskata nosaukumā (piemērs: “Krājumu atlikumi uz 01.01.2004.”, “Pārdošana 2004. gada janvārī” ...).
OutputReport nosaukums
DisplayHatTable
ShowGeneralResults
DisplayBasementTables
DisplayFooterReport
Šīs īpašības nosaka, vai tiek attiecīgi parādīts pārskata nosaukums, tabulas galvene, kopsummas, tabulas kājene un pārskata kājene.
DisplayDetailedRecords Īpašums ir atbildīgs par detalizētu ierakstu piespiedu demonstrēšanu vai aizliegšanu.
Automātiski detalizēti ieraksti Ja rekvizīts “AutoDetailed Records” ir iestatīts uz True, katrs detalizētais ieraksts tiks parādīts tikai tad, ja tas atšķiras no grupas.
Pieejamie lauki Satur to lauku sarakstu, kas pieejami pievienošanai grupām, filtram, atlasītajiem laukiem un kārtošanai.
MērījumiStrings
Mērījumu kolonnas
Satur grupējumu sarakstu pēc rindām un kolonnām.
Atlase Satur filtru sarakstu, ko definējis pārskatu veidotājs.
SelectedFields satur atlasīto rādītāju sarakstu un atribūtu grupēšanu.
Pasūtījums satur kārtošanas lauku sarakstu.
Parametri Satur būvētāja parametru sarakstu (kas deklarēti veidotāja vaicājuma tekstā, izmantojot simbolu “&”).
Rezultāts Satur pārskata veidotāja vaicājuma izpildes rezultātu (QueryResult tipa objektu).

6. Stenogrammu apstrāde ar atskaišu veidotāju

Rekvizītā "FillDecryption" ir viena no trim iespējām atšifrēšanas aizpildīšanai izvadē:

1. variants: neaizpildiet (neizmantojiet atšifrēšanu).

2. opcija: vērtību sagrupēšana (atšifrējot šūnu, tiks atvērta tajā parādītā grupas vērtība).

3. variants: atšifrēšana (atšifrēšana tiks aizpildīta ar struktūru, kas satur visu grupu vērtības). Šajā gadījumā ir nepieciešams apstrādāt izklājlapas dokumenta “Atšifrēšanas apstrāde” notikumu, kur nepieciešams analizēt pārsūtīto struktūru un veikt noteiktas darbības.

Svarīgs moments ir tas, ka trešajā variantā nav iespējams izvadīt izveidoto izklājlapas dokumentu, kopš tā laika nav iespējams apstrādāt atšifrēšanu, kuras notikums tiek apstrādāts tās formas modulī, kurā izklājlapas dokumenta lauks atrodas.

Ja atšifrēšanas aizpildīšanai izmantojat trešo opciju, varat izmantot metodi "ConfigureDecryption ()", kas paredzēta, lai izpildītu un parādītu pārskatu, ņemot vērā lietotāja veikto atšifrēšanu.

Pārskatu veidotājs var būt tas pats vai jauns. Pielāgojot atšifrēšanu, visi pielāgoto pārskatu veidotāja filtri tiks noņemti un visi uzstādīti filtri sākotnējais vaicājumu veidotājs un filtri grupēšanas vērtībās no atšifrēšanas.

7. Ziņošana

Rekvizītā Layout ir izkārtojums, kas tiek izmantots, izvadot rezultātu izklājlapas dokumentā. Ja nav definēts, izkārtojums tiek ģenerēts automātiski.

Rekvizītos "ReportHeader Layout", "TableHeader Layout", "DetailRecords Layout", "GeneralTotals Layout", "TableFootboard Layout" un "ReportFootboard Layout" ir teritorijas nosaukums attiecīgi atskaites veidotāja izkārtojumā vai atsevišķi izvadē izmantotie izkārtojumi. tabulas, pārskata nosaukuma, galvenes kopsummas, tabulas kājenes un pārskata kājenes izklājlapas dokumentā. Ja apgabalu nosaukumi atbilst pārskatu veidotāja izkārtojuma nosaukumiem, rekvizīti nav jāaizpilda.

Rekvizītā "Izkārtojuma izkārtojums" ir ietverts izkārtojums, kas izmantots, lai veidotu pārskatu veidotāja izkārtojumu. Šūnu izrotājuma izkārtojuma izrotājums tiks piemērots ziņu veidotāja izkārtojuma šūnām.

Lai iegūtu vienu no standarta dizaina opcijām, varat izmantot globālā konteksta metodi “GetDesignLayout ()”.

Ja atskaites veidotāja rekvizītam "Izkārtojums" ir piešķirts fiksēts izkārtojums, tā noformēšanai ir nepieciešama metode "Checkout Layout ()".

Rekvizīts “DimensionDimensionsInstringsLocation” definē vienu no trim iespējām grupējumu parādīšanai pēc rindām.
1. variants: kopā (vienā kolonnā).
Piemērs:

2. variants: atsevišķi (dažādās kolonnās).
Piemērs:


Piemērs:

Rekvizīts "PlacementDimensionsInColumns" definē vienu no trim iespējām grupējumu parādīšanai pēc kolonnām.
1. variants: kopā (vienā rindā).
Piemērs:

2. variants: atsevišķi (dažādās rindās).
Piemērs:

3. variants: atsevišķi un tikai kopā.
Piemērs:

Īpašums "PlacementTotalsInLows" definē vienu no četriem veidiem, kā kopējās summas parādīt rindās.
1. variants: nosaukumā (tikai virs nākamajiem grupējumiem un detalizētiem ierakstiem).

2. opcija: galvenē un kājenē (virs un zem nākamajiem grupējumiem un detaļām).

3. variants: pagrabā (zem turpmākajām grupām un detalizētiem ierakstiem, virs tiem tiek parādīts tikai grupas apraksts).

4. variants: tikai pagrabā (tikai zemāk sekojošajiem grupējumiem un detalizētiem ierakstiem).

Īpašums “ Rezultātu izvietošana kolonnās”Definē vienu no četriem veidiem, kā rādīt kopsummas kolonnās.

1. variants: nosaukumā (tikai pa kreisi no nākamajām grupām un detalizētiem ierakstiem).

2. iespēja: galvenē un kājenē (pa kreisi un pa labi no nākamajām grupām un detalizētiem ierakstiem).

3. variants: pagrabā (pa labi no turpmākajām grupām un detalizētiem ierakstiem, pa kreisi no tiem tiek parādīts tikai grupas apraksts).

4. variants: tikai pagrabā (tikai pa labi no turpmākajām grupām un detalizētiem ierakstiem).

Īpašums “ Dimensijas atribūtu izvietošana rindās”Definē vienu no trim iespējām atribūtu grupēšanai pēc līnijām.

1. variants: kopā (vienā papildu kolonnā).
Piemērs:

2. variants: kopā ar mērījumiem (kolonnās ar grupējumiem).
Piemērs:

3. variants: atsevišķi (dažādās papildu kolonnās).
Piemērs:

Īpašums “ PlacingDimensionAttributesInColumns”Definē vienu no trim iespējām, kā detalizēti grupēt informāciju pēc kolonnām.

1. variants: kopā (vienā papildu rindā).
Piemērs:

2. variants: kopā ar mērījumiem (rindās ar grupējumiem).
Piemērs:

3. variants: atsevišķi (dažādās papildu rindās).
Piemērs:

8. Pārskatu veidotāja rezultāts

Metode “Run ()” izpilda pārskatu veidotāja vaicājumu un aizpilda rekvizītu “Rezultāts”.
Izmantojot metodi GetRequest (), varat iegūt pārskatu veidotāja vaicājumu, kas tiek izpildīts, izsaucot metodi Run ().

Metode "Output ()" rezultātu izvada izklājlapas dokumentā vai diagrammā. Ja nenorādīsit objektu, uz kuru vēlaties izvadīt, tiks izveidots jauns izklājlapas dokuments.

Jauna izklājlapas dokumenta izvades piemērs:
Celtnieks. Displejs ();

Esoša izklājlapas dokumenta izvades piemērs:
Builder.Offer (FormElements.ResultTable);

Diagrammas izvades piemērs:
Builder.Output (FormElements.ResultDiagram, "Quantity");

Ja jums ir jāatspoguļo pārskata veidotāja rezultāts rakurstabulā vai šarnīra diagrammā, jums nevajadzētu izmantot metodi “Output ()”, bet aizpildīt rakurstabulas vai šarnīra diagrammas rekvizītu “DataSource”. Avots var būt vai nu pārskatu veidotāja rezultāts, vai arī pats pārskatu veidotājs. Pārskatu veidotāja rezultāts neprasa vaicājuma pārsniegšanu, taču pārskata veidotājs ļauj mainīt grupējumu sastāvu.

9. Celtnieka iestatījumu saglabāšana un atjaunošana

Metode “GetSettings ()” ļauj iegūt pašreizējos pārskatu veidotāja iestatījumus ar iespēju norādīt, kuri no tiem (piemērs: tikai filtrs, filtrs un šķirošana ...).

Metode “SetSettings ()” ļauj ielādēt pārskatu veidotāja iestatījumus ar iespēju norādīt, kuri no tiem (piemērs: tikai filtrs, filtrs un šķirošana ...).

10. Pārskatu veidotāja grupējumi un lauki

Pārskatu veidotāja kategorija tiek grupēta pēc rindām vai kolonnām.

Grupēšanas galvenās detaļas ir

  • “Nosaukums” (mainīgā identifikators) (piemērs: “nomenklatūra”, “darījuma partneris” ...),
  • "Prezentācija" (prezentācija pēc izejas) (piemērs: "Pārdošanas dokuments", "Mērvienība" ...),
  • "DataPath" (ceļš uz pieprasījuma atlases lauku) (piemērs: "Nomenclature", "DocumentSales.Organization" ...)

un, ja grupa ir veidota saskaņā ar uzziņu grāmatu, tad arī

  • “DimensionType” (viena no iespējām filtrēšanai pēc lauka vērtībām: hierarhija (dalībnieki un grupas), tikai hierarhija (tikai grupas) vai dalībnieki (tikai dalībnieki)).

Turklāt ir vairākas īpašības, kas ļauj grupai piešķirt izkārtojumus, kas tiks izmantoti, izvadot izklājlapas dokumentu.

  • “Izkārtojums” ir apgabala nosaukums pārskatu veidotāja izkārtojumā vai atsevišķs izkārtojums, ko izmanto, parādot grupēšanu.
  • “LayoutHierarchy” ir apgabala nosaukums atskaites veidotāja izkārtojumā vai atsevišķs izkārtojums, ko izmanto, parādot grupēšanas hierarhiju.
  • “FooterLayout” ir apgabala nosaukums būvētāja izkārtojumā vai atsevišķs izkārtojums, ko izmanto, parādot grupēšanas kājeni.
  • “HierarchyFooterLayout” ir apgabala nosaukums veidotāja izkārtojumā vai atsevišķs izkārtojums, ko izmanto, parādot grupēšanas hierarhijas kājeni.
  • “BasementLevels Layouts” - pagraba izkārtojumu masīvs dažādiem grupēšanas līmeņiem.
  • “Līmeņu izkārtojumi” - dažādu grupu līmeņu izkārtojumu masīvs.

Pārskatu veidotāja lauks ir viens no atlasītajiem laukiem. Galvenās lauka detaļas ir

  • “Nosaukums” (lauka identifikators) (piemērs: “Daudzums”, “Nomenklatūras kods”, “Periods” ...),
  • "Prezentācija" (prezentācija izvadē) (piemērs: "Daudzums", "Kods", "Periods" ...) un
  • “Datu ceļš” (ceļš uz vaicājuma izvēles lauku) (piemērs: “Daudzums”, “Nomenklatūra. Kods”, “Periods” ...).

Izmantojot grupu vai lauku sarakstu, varat veikt vairākas darbības.

  • "Ievietot ()" - pievienojiet grupējumu / lauku norādītajai pozīcijai.
  • “Pievienot ()” - pievienojiet grupu / lauku saraksta beigās.
  • “Index ()” - iegūstiet grupas grupas / lauka indeksu.
  • “Numurs ()” - iegūstiet grupējumu / lauku skaitu sarakstā.
  • “Atrast ()” - atrodiet grupu / lauku sarakstā pēc nosaukuma.
  • “Notīrīt ()” - notīriet grupu / lauku sarakstu.
  • “Get ()” - iegūt grupēšanu / lauku pēc indeksa.
  • "Pārvietot ()" - pārvietojiet grupu / lauku pēc norādītā pozīciju skaita.
  • “Noņemt ()” - noņemiet grupu / lauku no saraksta.

11. Celtnieku valoda

Pārskatu veidotājam ir sava valoda. Šī ir izplatīta vaicājumu valoda, kas papildināta ar “(…)” konstrukcijām. Izmantojot šos konstruktus, jūs varat atteikties no metodes FillSettings () un pielāgot pārskata veidotāju vaicājuma pamattekstā.
Tādējādi jūs varat pielāgot vienumus "SELECT", "WHERE", "ORDER BY", "RESULTS BY" un veikt arī dažas citas interesantas lietas. Šajā gadījumā veidotāja vaicājuma galvenais teksts būs noklusējuma iestatījumi, savukārt konstrukcijas (…) aprakstīs pieejamos iestatījumus.

Ja atlases lauks ļauj kaut ko iegūt ar punktu, pēc lauka varat norādīt “. *”, Pēc tam lietotājs varēs izvēlēties lauka detaļas. Piemēram, “Nomenclature. *” Ļauj kārtot pēc “Nomenclature.Code” vai filtrēt pēc “Nomenclature.Service”. Bet “Daudzums. *” Nav jēgas, jo laukā “Daudzums” nav detalizētas informācijas, kas nozīmē, ka pietiek ar to, lai vienkārši norādītu “Daudzums”.

SELECT konstrukcijā norādītie lauki ierobežo lietotājam pieejamo lauku sarakstu.
"WHERE" konstrukcijā norādītie lauki ierobežo filtru izmantojamo lauku sarakstu.
Konstrukcijā “ORDER BY” norādītie lauki ierobežo šķirojamo lauku sarakstu.
Konstruktā "KOPĀ" norādītie lauki ierobežo kopu grupēšanas lauku sarakstu.

Un tagad par interesantajām lietām.

Pirmkārt, pieprasījuma galvenajā tekstā avotu parametros var izmantot arī konstrukcijas (...). Piemēram, ja tā vietā
| NO
| Uzkrājumu reģistrs. Uzņēmuma preču atlikumi. Atlikušie (un beigu datums)
norādīt
| NO
| Uzkrājumu reģistrs. Uzņēmuma preču atlikumi. Atlikušie ((un beigu datums))
tad šajā gadījumā filtru būs iespējams iestatīt pēc lauka "EndDate".

Tajā pašā laikā pirmajā gadījumā ir jāiestata pārskata veidotāja parametrs “Beigu datums”, otrajā gadījumā tas nav nepieciešams, turklāt, ja nav norādīta atlase ar lauku “Beigu datums”, tad šis tabulas “Uzkrājumu reģistrs.” parametrs netiks ieskaitīts.

Otrkārt, avotus vaicājuma tekstā var atzīmēt kā neobligātus, ievietojot tos “(…)” konstrukcijā. Piemēram, ja jūs sastādāt pieprasījuma tekstu šādi

| IZVĒLIES


| LotProductsCompaniesBalances.QuantityBalance AS QuantityByBatch
| (Atlasīt
| Uzņēmuma preču atlikumi Atlikumi. Nomenklatūra AS Nomenklatūra,
| Uzņēmuma preču atlikums Atlikums. Daudzuma atlikums AS Daudzums,
| Daudz prečuUzņēmumiBilances.DaudzumsBalance AS DaudzumsPārdod
| NO
| Uzkrājumu reģistrs. Uzņēmuma preču atlikumi. Paliek AS preču atlikumi. Uzņēmuma atlikumi
| (KREISĀ PIEVIENOTIES UZKRĀŠANAS REĢISTRAM. DAUDZ PREČU UZŅĒMUMA. LĪDZSVARI KĀ DAUDZ PREČU UZŅĒMUMA BILANCES
| Pēc preču bilancēmUzņēmuma atlikumi. Nomenklatūra = Daudz produktuProduktu uzņēmuma atlikumi. Nomenklatūra)
| TOTALS SUM (daudzums), SUM (QuantityByLots) BY
| VISPĀRĪGI
| Nomenklatūra

tad kreisais savienojums ar pakešreģistru tiks veikts tikai tad, ja atlasīto lauku sarakstā būs lauks “QuantityByBatch”.

Treškārt, avotu parametros varat norādīt, ka filtru iestatīšanas gadījumā, ja iespējams, tos lietojiet nevis vaicājuma izpildes rezultātam, izmantojot elementu “WHERE”, bet pašam avotam. Tādējādi tā vietā
| Uzkrājumu reģistrs. Preču atlikumiCompany.Remains ()

ir jēga rakstīt

| Uzkrājumu reģistrs. Uzņēmuma preču atlikumi. Paliek (, (Nomenklatūra. *, Uzņēmuma noliktava. *, Pasūtījums. *, Mazumtirdzniecības cena, Raksturīga nomenklatūra. *))

Nu, ceturtkārt, visgaršīgākais, manuprāt. Ja avotā ir norādīts parametrs “Frequency” (tabulām, kas ļauj iegūt apgrozījumu), to var iestatīt arī kā “(…)”, un, nedaudz manipulējot ar veidotāja vaicājuma tekstu, mēs varam izmantot grupējumus pēc periodiem.

Piemērs: | ATLASĪT ATĻAUTU | PartyGoodsCompanyObotory.Nomenklatūra, | AMOUNT (Lots of GoodsCompaniesTurnover.CostArrival) AS Izmaksas, | AMOUNT (Lots of ProductsCompanyTurnover.CostExpense) AS Izmaksu izdevumi | | NO | Uzkrājumu reģistrs.PartyCompanyGoods.Turnover (, (& & Periodicity), | (Nomenklatūra. *)) AS BatchCompanyGoodsTurnovers | | KRAVAS | PartyGoodsCompaniesObototy.Nomenklatūra | | KOPĀ SUMMA (CostPrihod), SUM (CostExpenditure) ON VISPĀRĪGI, | Nomenklatūra | (SELECT | Batch of ProductsCompanyTurnovers.Nomenclature. *, | Reģistrators. *, | BeginningPeriod (Period, Day) AS PeriodDay, | BeginningPeriod (Period, Week) AS PeriodWeek, | BeginningPeriod (Period, Decade) AS PeriodDecade, | BeginningPeriod ) AS perioda mēnesis, | perioda sākums (periods, ceturksnis) AS perioda ceturksnis, | perioda sākums (periods, pusgads) AS periods pusgads, | perioda sākums (periods, gads) AS perioda izmaksasExpense) AS izmaksas | (PASŪTĪT PĒC | PrečuCompanyObototy.Nomenclature. *, | Reģistrators. *, | CostPrihod, | CostExpenditure) | | (KUR | Daudz prečuCompanyTurnooms.Nomenclature. *, | Reģistrators. *, | AMOUNT (Lots ofGoodsCompanyTurnovers.CostIncoming) AS CostIncome, | SUM (Lots ofGoodsCompanyTurnovers.CostExpense) AS CostExpense) | | (KOPĀ | Nomenklatūra. *, | Reģistrators. *, | Perioda sākums (Periods, Diena) AS PeriodDay, | Perioda sākums (Periods, Nedēļa) AS PeriodWeek, | Perioda sākums (Periods, Desmitgade) AS PeriodDecade, | Perioda sākums (Periods, Mēnesis) AS Perioda mēnesis PeriodsGads)

Ir viena nianse, lai grupēšana pēc periodiem darbotos, jums jāpievieno filtrs pēc parametra “Frekvence”. Lai to nedarītu manuāli, ērtības labad varat to programmatiski pievienot pirms atskaišu veidotāja palaišanas un pēc izpildes to izdzēst, lai tas jums netraucētu, jo šādu filtru nav iespējams saprast no veselais saprāts. Tas tiek darīts apmēram šādi

IfReportBuilder.AvailableFields.Find ("Biežums")<>Undefined Tad periodiskums = undefined; IfReportBuilder.DimensionsStrings.Find ("PeriodYear")<>Nezināms VAI pārskatu veidotājs.DimensionsColumns.Find ("PeriodYear")<>Undefined Tad periodiskums = 9; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodSemi-Year")<>Nezināms VAI pārskatu veidotājs.DimensionsColumns.Find ("PeriodHalf Year")<>Undefined Tad periodiskums = 8; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodQuarter")<>Nezināms VAI pārskatu veidotājs.DimensionsColumns.Find ("PeriodQuarter")<>Undefined Tad periodiskums = 7; EndIf; Ja ReportBuilder.DimensionsRows.Find ("PeriodMonth")<>Nezināms VAI pārskatu veidotājs.DimensionsColumns.Find ("PeriodMonth")<>Undefined Tad periodiskums = 6; EndIf; IfReportBuilder.DimensionsStrings.Find ("PeriodDecade")<>Nezināms VAI pārskatu veidotājs.DimensionsColumns.Find ("PeriodDecade")<>Nav definēts, tad periodiskums = 5; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodWeek")<>Nezināms VAI pārskatu veidotājs.DimensionsColumns.Find ("PeriodWeek")<>Undefined Tad periodiskums = 4; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodDay")<>Nezināms VAI pārskatu veidotājs.DimensionsColumns.Find ("PeriodDay")<>Nav definēts, tad periodiskums = 3; EndIf; IfReportBuilder.DimensionsStrings.Find ("Logger")<>Nezināms VAI pārskatu veidotājs.DimensionsColumns.Find ("Logger")<>Nezināms VAI pārskatu veidotājs.SelectedFields.Find ("Logger")<>Undefined Tad periodiskums = 2; EndIf; Ja frekvence<>Undefined Tad SelectionFieldBy Periodic = ReportBuilder.Selection.Add ("Frekvence"); SelectionFieldBy Periodicity.Value = Periodiskums; SelectionFieldByFrequency.Usage = True; EndIf; EndIf; Celtnieks. Palaist (); Ja atlases lauks pēc frekvences<>Undefined ThenReportBuilder.Collection.Remove (ReportBuild.Choice.Index (SelectionFieldBy Periodic)); EndIf;

12. Celtnieka pielāgošana

Lai dotu lietotājam iespēju mainīt grupējumu sarakstu, filtrēt, atlasītos laukus vai šķirošanu, pietiek ar to, lai izveidotu pārskata atribūtu "Builder" un atskaites formā ievietotu tabulas lauku un norādītu to kā datus avots "Builder.DimensionsRows", "Builder.DimensionsColumns", "Builder.Choose", "Builder.ChosenFields" vai "Builder.Order".

Turklāt kā datu avotu varat norādīt arī "Builder.AvailableFields" un tādējādi, pirmkārt, jūs varat redzēt pieejamo lauku sarakstu un, otrkārt, izmantojot konteksta izvēlne pievienot laukus grupējumiem, atlasei, atlasītajiem laukiem vai filtram.

Vaicājuma valoda 1C 8 ir labi pazīstamās "strukturētās programmēšanas valodas" (kā to bieži dēvē par SQL) vienkāršots analogs. Bet 1C tas tiek izmantots tikai datu nolasīšanai, objekta datu modelis tiek izmantots, lai mainītu datus.

Vēl viena interesanta atšķirība ir krievu sintakse. Lai gan patiesībā jūs varat izmantot konstrukcijas angļu valodā.

Pieprasīt piemēru:

IZVĒLIES
Bankas.
Bankas. Korra konts
OF
Bankas AS Bankas

Šis pieprasījums ļaus mums redzēt informāciju par visu datu bāzē esošo banku nosaukumiem un korespondentkontiem.

Vaicājuma valoda ir vienkāršākā un efektīva metode informācijas iegūšana. Kā redzat no iepriekš minētā piemēra, vaicājuma valodā jums jāpieprasa metadatu nosaukumi (tas ir sistēmas objektu saraksts, kas veido konfigurāciju, tas ir, direktoriji, dokumenti, reģistri utt.).

Vaicājuma valodas konstrukciju apraksts

Vaicājumu struktūra

Lai iegūtu datus, pietiek izmantot konstrukcijas "SELECT" (atlasīt) un "FROM" (no). Vienkāršākais pieprasījums sekojoši:

SELECT * FROM Directories. Nomenklatūra

Kur "*" nozīmē visu tabulas lauku un atsauču atlasi. Nomenklatūra ir tabulas nosaukums datu bāzē.

Apskatīsim sarežģītāku un vispārīgāku piemēru:

IZVĒLIES
<ИмяПоля1>AS<ПредставлениеПоля1>,
Summa (<ИмяПоля2>) AS<ПредставлениеПоля2>
OF
<ИмяТаблицы1>AS<ПредставлениеТаблицы1>
<ТипСоединения>SAVIENOJUMS<ИмяТаблицы2>AS<ПредставлениеТаблицы2>
BY<УсловиеСоединениеТаблиц>

KUR
<УсловиеОтбораДанных>

IEKĀRTOT
<ИмяПоля1>

KĀRTOT PĒC
<ИмяПоля1>

REZULTĀTI
<ИмяПоля2>
BY
<ИмяПоля1>

IN šo pieprasījumu mēs izvēlamies lauka “FieldName1” un “FieldName1” datus no tabulām “TableName1” un “TableName”, piešķiram sinonīmus laukiem, izmantojot operatoru “AS”, savienojam tos ar noteiktu “TableCondition” nosacījumu.

No saņemtajiem datiem mēs atlasām tikai tos datus, kas atbilst nosacījumam no "WHERE" "DataFeed Condition". Pēc tam mēs pieprasījumu sagrupējam pēc lauka "FieldName1", vienlaikus summējot lauku "FieldName2". Laukam "FieldNameField1" mēs izveidojam kopsummas. un pēdējais lauks "FieldName2".

Pēdējais solis ir kārtot pieprasījumu, izmantojot konstrukciju ORDER BY.

Vispārējās konstrukcijas

Apskatīsim vaicājuma valodas 1C 8.2 vispārīgās konstrukcijas.

PIRMAISn

Caur šo operatoru jūs varat iegūt n pirmo ierakstu skaitu. Ierakstu secību nosaka pieprasījumā esošā secība.

ATLASIET PIRMO 100
Bankas.
Bankas. Kods AS BIC
OF
Bankas AS Bankas
KĀRTOT PĒC
Bankas.

Pieprasījumā tiks saņemti pirmie 100 direktorija "Banks" ieraksti alfabētiskā secībā.

ATĻAUTS

Šis dizains ir būtisks darbam ar mehānismu. Mehānisma būtība ir ierobežot lasīšanu (un citas darbības) lietotājiem tikai noteiktiem ierakstiem datu bāzes tabulā, nevis tabulai kopumā.

Ja lietotājs ar pieprasījumu mēģina nolasīt ierakstus, kas viņam nav pieejami, viņš saņem kļūdas ziņojumu. Lai no tā izvairītos, jums jāizmanto konstrukcija "ATĻAUTS", tas ir, pieprasījumā tiks lasīti tikai tam atļautie ieraksti.

ATLASĪT ATĻAUTI
Papildinformācijas veikals. Saite
OF
Atsauce. Papildu informācijas glabāšana

DAŽĀDI

Izmantojot "DIFFERENT", jūs varēsit izslēgt virkņu dublikātus no 1C vaicājuma rezultāta ievadīšanas. Dublēšana nozīmē, ka visi pieprasījuma lauki sakrīt.

ATLASIET PIRMO 100
Bankas.
Bankas. Kods AS BIC
OF
Bankas AS Bankas

EmptyTable

Šo struktūru vaicājumu apvienošanai izmanto ļoti reti. Pievienojoties, vienā no tabulām var būt nepieciešams norādīt tukšu ligzdotu tabulu. Operators "EmptyTable" ir tieši piemērots tam.

Piemērs no palīdzības 1C 8:

Atlasiet atsauci. Numurs, EMPTY TABLE. (Nom, Tov, Qty) AS Sastāvs
NO dokumenta. Izmaksas
APVIENOT VISUS
SELECT atsauce. Skaits, Sastāvs. (LineNumber, Item, Quantity)
FROM Document.Invoice Document.Invoice.Content. *

IR NULL

Ļoti noderīga funkcija, kas ļauj izvairīties no daudzām kļūdām. YesNULL () ļauj NULL vērtību aizstāt ar vēlamo. To ļoti bieži izmanto, lai pārbaudītu vērtības klātbūtni pievienotajās tabulās, piemēram:

IZVĒLIES
NomenklatūraRef.Ref.
Ir NULL (preces atlikums. Daudzuma atlikums, 0) kā daudzuma atlikums
OF


Jūs to varat izmantot citā veidā. Piemēram, ja katrai rindai nav zināms, kurā tabulā ir vērtība:

IS NULL (InvoiceInvoiceDate, InvoiceDate)

AS ir operators, kas ļauj mums piešķirt tabulai vai laukam nosaukumu (sinonīmu). Iepriekš redzējām izmantošanas piemēru.

Šīs konstrukcijas ir ļoti līdzīgas - tās ļauj iegūt virknes attēlojumu vēlamā vērtība... Vienīgā atšķirība ir tā, ka REPRESENTATION pārveido jebkuras vērtības virknes tipam, un REFERENCE REPRESENTATION - tikai atsauces vērtības. REFERENCES REPREZENTĀCIJU ieteicams izmantot datu sastāva sistēmas vaicājumos, lai optimizētu, ja, protams, filtros nav paredzēts izmantot atsauces datu lauku.

IZVĒLIES
View (Link), // line, piemēram "Avansa ziņojums Nr. 123, datēts ar 2015.10.10
Pārstāvība (dzēšanas atzīme) AS dzēšanas atzīmes teksts, // virkne, "Jā" vai "Nē"
Atsauces skats (dzēšanas atzīme) AS dzēšanas atzīme Būla // Būla, patiesa vai nepatiesa
OF
Dokuments. Avansa ziņojums

IZTEIKT

Express ļauj konvertēt lauka vērtības vēlamajā datu tipā. Vērtību var pārveidot par primitīvu vai atsauces tipu.

Express for reference tips tiek izmantots, lai ierobežotu pieprasītos datu tipus sarežģīta tipa laukos, ko bieži izmanto, lai optimizētu sistēmas veiktspēju. Piemērs:

EXPRESS (Izmaksas. Subconto1 tabula kā atsauce. Izmaksu raksti). ActivityTypeFor nodokļu izmaksu uzskaite

Primitīvu tipu gadījumā šo funkciju bieži izmanto, lai ierobežotu rakstzīmju skaitu neierobežota garuma laukos (šādus laukus nevar salīdzināt). Lai izvairītos no kļūdas “ Nederīgi parametri salīdzināšanas darbībā. Nevar salīdzināt laukus
neierobežots garums un nesaderīgu veidu lauki
Šādi lauki ir jāizsaka šādi:

EXPRESS (komentārs AS rindā (150))

ATŠĶIRĪBA

Iegūstiet 267 1C video pamācības bez maksas:

IS NULL izmantošanas piemērs 1C pieprasījumā:

IZVĒLĒTIES NO
Spr
LEFT JOIN uzkrāšanas reģistrs. Produkti noliktavās. Kreisais AS BalanceGoods
Programmatūras nomenklatūraRef.Ref = ImplementedCommentsComponentsRemains.Nomenclature
KUR IR PREČU BILANCE. Daudzums Bilance ir NULL

Datu tipu vaicājumā varat definēt šādi: izmantojot funkcijas TYPE () un TYPE () vai izmantojot loģiskais operators SAITE. Abas funkcijas ir līdzīgas.

Iepriekš noteiktas vērtības

Papildus nodoto parametru izmantošanai pieprasījumos 1C vaicājuma valodā varat izmantot iepriekš definētas vērtības vai. Piemēram, uzskaitījumi, iepriekš definēti direktoriji, kontu plāni utt. Šim nolūkam tiek izmantots “Value ()” konstrukts.

Lietojuma piemērs:

WHERE Nomenclature.NomenclatureType = Vērtība (Directory.NomenclatureTypes.Product)

WHERE Darījumu partneri. Kontakta informācijas tips = vērtība (uzskaitījums. Kontakta informācija. Tips. Tālrunis)

WHERE Konta atlikumi. Konts = vērtība (kontu plāns. Pašpietiekams. Peļņas zaudējums)

Savienojumi

Ir 4 veidu savienojumi: Kreisais, PA LABI, PILNĪGA, IEKŠĒJA.

PA KREISI UN PA labi PIEVIENOTIES

Savienojumus izmanto, lai sasaistītu divas tabulas atbilstoši noteiktam nosacījumam. Funkcija plkst Kreisais savienojums ar to, ka mēs ņemam pirmo norādīto tabulu pilnībā un otro tabulu sasaistām pēc nosacījuma. Otrās tabulas lauki, kurus nevar saistīt ar nosacījumu, ir aizpildīti ar vērtību NULL.

Piemēram:

Atgriezīs visu darījumu partneru tabulu un aizpildīs lauku “Banka” tikai tajās vietās, kur būs izpildīts nosacījums “Darījuma partneri.Vārds = Bankas.Vārds”. Ja nosacījums nav izpildīts, tiks iestatīts lauks Banka NULL.

Pareizais savienojums 1C valodā absolūti tas pats Kreisais savienojums, izņemot vienu atšķirību - Pareiza savienojums Galvenā tabula ir otrā, nevis pirmā.

PILNA SAVIENOJUMS

PILNA SAVIENOJUMS atšķiras no kreisās un labās puses ar to, ka parāda visus ierakstus no divām tabulām, savieno tikai tos, kuriem var pievienoties pēc nosacījuma.

Piemēram:

OF

PILNA SAVIENOJUMS
Bankas AS Bankas

BY

Vaicājuma valoda pilnībā atgriezīs abas tabulas tikai tad, ja ir izpildīts nosacījums, lai pievienotos ierakstiem. Atšķirībā no kreisās / labās pievienošanās, NULL var parādīties divos laukos.

IEKŠĒJAIS SAVIENOJUMS

IEKŠĒJAIS SAVIENOJUMS atšķiras no pilnīgā ar to, ka tajā tiek parādīti tikai tie ieraksti, kurus varētu savienot ar norādīto nosacījumu.

Piemēram:

OF
Darbuzņēmēju AS klienti

IEKŠĒJAIS SAVIENOJUMS
Bankas AS Bankas

BY
Klienti.Vārds = Bankas.Vārds

Šis pieprasījums atgriezīs tikai tās rindas, kurās bankai un darījuma partnerim ir tāds pats nosaukums.

Asociācijas

COMBINE un COMBINE ALL konstrukcija apvieno divus rezultātus vienā. Tie. divu izpildīšanas rezultāts tiks "sapludināts" vienā, kopējā.

Tas ir, sistēma darbojas tāpat kā parasti, tikai pagaidu tabulai.

Kā lietot INDEX PROGRAMMATŪRU

Tomēr jāņem vērā viens punkts. Indeksa izveidošana uz pagaidu tabulas arī prasa laiku. Tāpēc ieteicams izmantot "" konstrukciju tikai tad, ja ir droši zināms, ka pagaidu tabulā nebūs 1-2 ierakstu. Pretējā gadījumā efekts var būt pretējs - indeksēto lauku veiktspēja nekompensē indeksa veidošanas laiku.

IZVĒLIES
Valūtas kursi SliceLast. Valūta AS valūta,
Valūtas kursiSliceLast.Course
POST Valūtas kursi
OF
Informācijas reģistrs. Valūtas kursi. SliceLast (& Period,) AS valūtas kursiSliceLast
RĀDĪTĀJS
Valūta
;
IZVĒLIES
Cenas
CenasNomenklatūras .Cena,
Cenu nomenklatūra. Valūta,
Valūtas kursi.
OF
Informācijas reģistrs. NomenklatūraPrices.SliceLast (& Period,
B nomenklatūra (& nomenklatūra) UN PriceType = & PriceType) AS Cenas
KREISĀS SAVIENĪBAS valūtas kursi kā valūtas kursi
ON RatesNomenclature.Currency = RatesCurrency.Currency

Grupēšana

1C vaicājuma valoda ļauj izmantot īpašas apkopošanas funkcijas, grupējot vaicājuma rezultātus. Grupēšanu var izmantot arī bez apkopošanas funkcijām, lai "novērstu" dublikātus.

Ir pieejamas šādas funkcijas:

Daudzums, skaits, dažādu skaits, maksimums, minimums, vidējais.

1. piemērs:

IZVĒLIES
Preču, pakalpojumu, preču, nomenklatūras pārdošana,
SUMMA (Preču, pakalpojumu, preču pārdošana. Daudzums) AS daudzums,
SUMMA (GoodsServicesGoods.Amount pārdošana) AS Summa
OF

IEKĀRTOT
Preču, pakalpojumu, preču, nomenklatūras realizācija

Pieprasījums saņem visas rindas ar precēm un apkopo tās pēc daudzuma un summām preces kontekstā.

2. piemērs

IZVĒLIES
Bankas. Kods,
QUANTITY (DIFFERENT Banks.Link) AS QuantityDoubles
OF
Bankas AS Bankas
IEKĀRTOT
Banku kods

Šajā piemērā BIC direktorijā tiks parādīts BIC saraksts un parādīts, cik katram no tiem ir dublikātu.

Rezultāti

Kopā ir veids, kā iegūt datus no hierarhiskas sistēmas. Kopsavilkuma laukos var izmantot apkopošanas funkcijas, tāpat kā grupām.

Viens no populārākajiem kopsummas izmantošanas veidiem praksē ir preču partiju norakstīšana.

IZVĒLIES




OF
Document.RoodsServices.Goods ASGoodsServicesGoods pārdošana
KĀRTOT PĒC

REZULTĀTI
SUM (daudzums),
SUM (summa)
BY
Nomenklatūra

Vaicājuma rezultāts būs šāds hierarhisks:

Vispārīgs kopsavilkums

Ja vēlaties iegūt visu "kopsummu" kopsummu, izmantojiet operatoru "VISPĀRĪGI".

IZVĒLIES
Preču Pakalpojumu Preču realizācija. Nomenklatūra AS Nomenklatūra,
GoodsServicesGoods.Link AS dokumenta realizācija,
Preču, pakalpojumu, preču realizācija. AS daudzums,
PrecesPakalpojumiPreču pārdošana. Summa AS Summa
OF
Document.RoodsServices.Goods ASGoodsServicesGoods pārdošana
KĀRTOT PĒC
GoodsServicesGoods.Link.Date ieviešana
REZULTĀTI
SUM (daudzums),
SUM (summa)
BY
VISPĀRĪGI
Nomenklatūra

Vaicājuma izpildes rezultātā tiek iegūts šāds rezultāts:

Kurā 1 grupēšanas līmenī ir visu nepieciešamo lauku apkopošana.

Pasūtīšana

Operators ORDER BY tiek izmantots, lai kārtotu vaicājuma rezultātu.

Šķirošana pēc primitīviem tipiem (virkne, skaitlis, būla skaitlis) notiek saskaņā ar parastajiem noteikumiem. Atsauces tipu laukos šķirošana notiek pēc saites iekšējā attēlojuma (unikālā identifikatora), nevis pēc koda vai saites attēlojuma.

IZVĒLIES

OF
Atsauce. Nomenklatūra AS nomenklatūra
KĀRTOT PĒC
Nosaukums

Vaicājumā tiks parādīts nomenklatūras uzziņu grāmatas nosaukumu saraksts alfabētiskā secībā.

Automātiskā pasūtīšana

Vaicājuma rezultāts bez šķirošanas ir haotiski parādīts rindu kopums. 1C platformas izstrādātāji, izpildot vienus un tos pašus vaicājumus, negarantē virkņu izvadi vienā secībā.

Ja jums tabulas ieraksti jāparāda konsekventā secībā, jums jāizmanto konstrukcija "Automātiskā pasūtīšana".

IZVĒLIES
Nomenklatūras nosaukums AS nosaukums
OF
Atsauce. Nomenklatūra AS nomenklatūra
AUTO PASŪTĪŠANA

Virtuālās tabulas

Virtuālās tabulas 1C ir unikāla 1C vaicājuma valodas iezīme, kas nav atrodama citās līdzīgās sintaksēs. Virtuālā tabula - ātrs veids profila informācijas iegūšana no reģistriem.

Katram no reģistru veidiem ir savs virtuālo tabulu komplekts, kas var atšķirties atkarībā no reģistra iestatījumiem.

  • pirmā šķēle;
  • pēdējās griezums.
  • pārpalikumi;
  • apgriezieni;
  • atlikumi un apgrozījumi.
  • kustības no subkonto;
  • apgriezieni;
  • RPM Dt Kt;
  • pārpalikumi;
  • atlikumi un apgrozījumi
  • subconto.
  • bāze;
  • diagrammas dati;
  • faktiskais derīguma termiņš.

Risinājumu izstrādātājam dati tiek ņemti no vienas (virtuālās) tabulas, bet faktiski 1C platforma ņem no daudzām tabulām, pārveidojot tās vēlamajā formā.

IZVĒLIES
Produkti Noliktavās Bilances un Apgrozījums. Nomenklatūra,
ProduktiGlabātavāsBalancesAndTurnover.QuantityBeginant Bilance,
Preces noliktavās Bilances un Apgrozījums. Daudzums Apgrozījums,
Preces noliktavāsBalancesAndTurnovers.QuantityIncome,
Preces noliktavās Bilances un Apgrozījums. Daudzums Patēriņš,
ProduktiGlabātavāsBalancesAtPārdodumi.QuantityFinal Bilance
OF
Uzkrājumu reģistrs. Preces noliktavās. Atlikumi un apgrozījums AS preces noliktavās. Atlikumi un apgrozījums

Šāds pieprasījums ļauj ātri saņemt liels skaits dati.

Virtuālās tabulas parametri

Augsti svarīgs aspekts darbs ar virtuālajām tabulām - izmantojot parametrus. Virtuālās tabulas parametri - specializēti parametri izvēlei un regulēšanai.

Šādām tabulām tiek uzskatīts par nepareizu, izmantojot atlasi konstrukcijā "WHERE". Papildus tam, ka pieprasījums kļūst neoptimāls, ir iespējams saņemt arī nepareizus datus.

Šādu parametru izmantošanas piemērs:

Uzkrājumu reģistrs. Produkti Noliktavās. Atlikumi un apgrozījumi (& PeriodBeginning, & PeriodEnd, Mēnesis, Kustības un PeriodBorders, Nomenklatūra = & DesiredNomenclature)

Virtuālo tabulu algoritms

Piemēram, visbiežāk izmantotajā virtuālajā tabulā "Atlikumi" tiek glabāti dati no divām fiziskām tabulām - atlikumi un kustības.

Izmantojot virtuālo tabulu, sistēma veic šādas manipulācijas:

  1. Aprēķināto vērtību datumu un mērījumu ziņā iegūstam vistuvāk kopsummas tabulā.
  2. “Pievienojiet” summu no kustību tabulas summai no kopsummas tabulas.


Šādas vienkāršas darbības var ievērojami uzlabot sistēmas darbību kopumā.

Izmantojot vaicājumu veidotāju

Vaicājumu konstruktors- 1C uzņēmuma sistēmā iebūvēts rīks, kas ievērojami atvieglo datu bāzes vaicājumu izstrādi.

Vaicājuma konstruktoram ir diezgan vienkāršs, intuitīvs skaidra saskarne... Tomēr aplūkosim tuvāk vaicājuma konstruktora izmantošanu.

Vaicājuma teksta konstruktoru palaiž konteksta izvēlne (ar peles labo pogu) pareizajā vietā programmas kodā.

1C vaicājuma konstruktora apraksts

Apskatīsim katru dizaina cilni tuvāk. Izņēmums ir cilne Builder, kas ir citas diskusijas tēma.

Tab Tabulas un lauki

Šajā cilnē ir norādīts datu avots un lauki, kurus vēlaties parādīt pārskatā. Patiesībā konstrukcijas SELECT .. NO.

Avots var būt fiziska datu bāzes tabula, virtuālā reģistra tabula, pagaidu tabulas, ligzdoti vaicājumi utt.

Virtuālo tabulu konteksta izvēlnē varat iestatīt virtuālās tabulas parametrus:

Cilne Saites

Cilni izmanto, lai aprakstītu vairāku tabulu savienojumus, izveido konstrukcijas ar vārdu CONNECTION.

Cilne Grupēšana

Šajā cilnē sistēma ļauj grupēt un apkopot tabulas rezultāta obligātos laukus. Apraksta konstrukciju izmantošanu GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, QUANTITY, DAŽĀDU SKAITS.

Nosacījumi cilne

Atbild par visu, kas notiek pieprasījuma tekstā pēc WHERE konstrukcijas, tas ir, par visiem nosacījumiem, kas uzlikti saņemtajiem datiem.

Cilne Papildu

Tab Papildus ir pilns ar visu veidu parametriem, kas ir ļoti svarīgi. Apsvērsim katru no īpašībām.

Grupēšana Notiek ierakstu iegūšana:

  • Pirmais N- parametrs, kas vaicājumam atgriež tikai N ierakstus (operators FIRST)
  • Neatkārtojas- nodrošina saņemto ierakstu unikalitāti (operators DAŽĀDI)
  • Atļauts- ļauj atlasīt tikai tos ierakstus, kurus sistēma ļauj atlasīt, ņemot vērā (konstrukcija ATĻAUTA)

Grupēšana Pieprasījuma veids nosaka, kāda veida vaicājums būs: datu ielāde, pagaidu tabulas izveidošana vai pagaidu tabulas iznīcināšana.

Zemāk ir karogs Bloķējiet saņemtos datus vēlākām izmaiņām... Tas ļauj iespējot iespēju iestatīt datu bloķēšanu, kas nodrošina datu drošību no brīža, kad tie tiek lasīti, lai mainītos (attiecas tikai uz Automātiskais režīms slēdzenes, dizains PAR MAIŅU).

Cilne Savienības / aizstājvārdi

Šajā vaicājumu noformētāja cilnē varat iestatīt iespēju kombinēt dažādas tabulas un aizstājvārdus (KĀ uzbūve). Tabulas ir norādītas kreisajā pusē. Ja jūs iestatīsit karodziņus pretī galdam, tiks izmantota UNION konstrukcija, pretējā gadījumā - UNION ALL (abas metodes atšķiras). Labajā pusē redzama lauku atbilstība dažādas tabulas ja atbilstība nav norādīta, vaicājums atgriezīs NULL.

Cilne Pasūtījums

Šeit jūs norādāt vērtību kārtošanas secību (ORDER BY) - dilstošā (DESCENT) vai augošā (RETURN).

Ir arī interesants karogs - Automātiskā pasūtīšana(pieprasījumā - AUTO PASŪTĪŠANA). Pēc noklusējuma 1C sistēma datus parāda “haotiskā” secībā. Ja iestatīsit šo izvēles rūtiņu, sistēma kārtos datus pēc iekšējiem datiem.

Cilne Vaicājumu pakete

Vaicājumu noformētāja cilnē varat izveidot jaunus, kā arī izmantot to kā navigāciju. Pieprasījuma tekstā paketes atdala ar “;” (komata periods).

Vaicājuma poga vaicājumu veidotājā

Vaicājuma konstruktora apakšējā kreisajā stūrī ir poga Vaicājums, ar kuru jūs jebkurā laikā varat apskatīt vaicājuma tekstu:

Šajā logā varat veikt pieprasījuma korekcijas un izpildīt to.


Izmantojot vaicājumu konsoli

Vaicājumu konsole ir vienkāršs un ērts veids, kā atkļūdot sarežģītus vaicājumus un ātri iegūt informāciju. Šajā rakstā es mēģināšu aprakstīt, kā izmantot vaicājumu konsoli, un sniegt saiti vaicājumu konsoles lejupielādei.

Apskatīsim šo rīku tuvāk.

Lejupielādējiet 1C vaicājumu konsoli

Pirmkārt, lai sāktu darbu ar vaicājumu konsoli, jums tas kaut kur jālejupielādē. Procesi parasti tiek sadalīti divos veidos - pārvaldītās veidlapās un regulārajās formās (vai dažreiz tās tiek izsauktas uz 8.1 un 8.2 / 8.3).

Es mēģināju apvienot šos divus veidus vienā apstrādē - vajadzīgajā darbības režīmā tiek atvērta vajadzīgā veidlapa ( kontrolēts režīms konsole darbojas tikai treknrakstā).

1C vaicājumu konsoles apraksts

Sāksim apskatīt vaicājumu konsoli ar galvenā apstrādes paneļa aprakstu:

Vaicājuma konsoles galvenē var redzēt milisekunžu precizitāti pēdējā vaicājuma izpildes laikā, kas ļauj salīdzināt dažādus konstruktīvus veiktspējas ziņā.

Pirmā komandu joslas pogu grupa ir atbildīga par pašreizējo pieprasījumu saglabāšanu ārējā failā. Tas ir ļoti ērti, jūs vienmēr varat atgriezties pie sarežģīta vaicājuma rakstīšanas. Vai, piemēram, saglabājiet noteiktu konstrukciju tipisko piemēru sarakstu.

Kreisajā pusē laukā Vaicājums varat izveidot jaunus vaicājumus un saglabāt tos koka struktūrā. Otrā pogu grupa ir atbildīga tikai par pieprasījumu saraksta pārvaldīšanu. Ar to jūs varat izveidot, kopēt, dzēst, pārvietot pieprasījumu.

  • Izpildītizmeklēšana- vienkārša izpilde un rezultāta iegūšana
  • Palaist paketi- ļauj jums skatīt visus starpposma pieprasījumus pieprasījumu komplektā
  • Pagaidu tabulu apskate- ļauj tabulā redzēt rezultātus, kurus atgriež pagaidu vaicājumi

Pieprasīt parametrus:

Ļauj iestatīt pieprasījuma pašreizējos parametrus.

Vaicājuma parametru logā ir interesanti šādi:

  • Poga Iegūstiet no pieprasījuma izstrādātāja ērtībai pieprasījumā automātiski atrod visus parametrus.
  • Karogs Vienoti parametri visiem pieprasījumiem- instalējot, tā apstrāde neizdzēš parametrus, pārejot no pieprasījuma uz pieprasījumu vispārīgais saraksts pieprasījumiem.

Iestatiet parametru kā vērtību sarakstu tas ir ļoti vienkārši, izvēloties parametra vērtību, nospiediet pogu, lai notīrītu vērtību (krustu), sistēma piedāvās izvēlēties datu tipu, kur jums jāizvēlas “Vērtību saraksts”:

arī iekšā augšējais panelis ir ļoti daudz pogas, lai izsauktu vaicājuma konsoles iestatījumus:

Šeit jūs varat norādīt automātiskās saglabāšanas vaicājumu opcijas un vaicājuma izpildes opcijas.

Vaicājuma teksts tiek ievadīts konsoles vaicājuma laukā. To var izdarīt, izmantojot vienkāršu vaicājumu testa komplektu vai izsaucot īpašu rīku - vaicājumu noformētāju.

1C 8 vaicājuma konstruktors tiek izsaukts no konteksta izvēlnes (peles labā poga), noklikšķinot uz ievades lauka:

Arī šajā ēdienkartē ir tādi noderīgas funkcijas kā rindas pārtraukuma rakstzīmju (“|”) notīrīšana vai pievienošana pieprasījumam vai pieprasījuma koda iegūšana tik ērtā formā:

Pieprasījums = jauns pieprasījums;
Request.Text = "
| IZVĒLIES
| Valūtas. Saite
| NO
| Katalogs. Valūtas AS valūtas ”;
QueryResult = Query.Run ();

Vaicājuma konsoles apakšējā laukā tiek parādīts vaicājuma rezultātu lauks, kuram tika izveidota šī apstrāde:



Arī vaicājumu konsole papildus sarakstam var parādīt datus koka formā - vaicājumiem, kas satur kopsummas.

Vaicājumu optimizēšana

Viens no kritiskie punkti 1C uzņēmuma produktivitātes paaugstināšanā 8,3 ir optimizācijapieprasījumiem... Šis punkts ir ļoti svarīgs arī tad, kad nokārtojot sertifikātu... Zemāk mēs runāsim par tipiskiem vaicājumu suboptimālā darba iemesliem un optimizācijas metodēm.

Atlases virtuālajā tabulā, izmantojot WHERE konstrukciju

Filtri virtuālās tabulas detaļām jāpielieto tikai caur BT parametriem. Nekādā gadījumā nevajadzētu izmantot WHERE konstrukciju izvēlei virtuālajā tabulā, tā ir rupja kļūda no optimizācijas viedokļa. Atlases gadījumā, izmantojot WHERE, sistēma faktiski saņems VISUS ierakstus un tikai pēc tam atlasīs nepieciešamos.

PA LABI:

IZVĒLIES

OF
Uzkrājumu reģistrs. Savstarpējie norēķini ar Deponentiem Organizācijas. Paliek (
,
Organizācija = & Organizācija
Un indivīds = & Individuāls) KĀ savstarpējie norēķini ar Deponentiem Organizācijas

Nepareizi:

IZVĒLIES
Savstarpējie norēķiniWithDeponentsOrganizationsBalances.AmountBalance
OF
Uzkrāšanas reģistrs. Savstarpējie norēķini ar deponentiem Organizācijas. Bilances (,) AS Savstarpējās norēķini ar ar Deponentiem Organizācijas Balances
KUR
SettlementsWith DeponentsOrganizationsBalances.Organization = & Organizācija
Un savstarpējie norēķini ar DeponentsOrganizationsBalances.Personal = & Individual

Sarežģīta tipa lauka vērtības iegūšana caur punktu

Saņemot salikta tipa datus vaicājumā caur punktu, sistēma savienojas ar kreiso savienojumu tieši tik daudz tabulu, cik salikta tipa laukā ir iespējami tipi.

Piemēram, optimizācijai ir ļoti nevēlami atsaukties uz reģistra ieraksta lauku - reģistrators. Reģistratoram ir salikts datu tips, ieskaitot visus iespējamos dokumentu veidus, kas var ierakstīt datus reģistrā.

Nepareizi:

IZVĒLIES
Ierakstu kopa. Ierakstītājs. Datums,
Ierakstu kopa. Skaits
OF
Uzkrājumu reģistrs. Produkti Organizācijas AS SetRecords

Tas ir, faktiski šāds pieprasījums attieksies nevis uz vienu tabulu, bet gan uz 22 datu bāzes tabulām (šajā reģistrā ir 21 reģistratora veids).

PA LABI:

IZVĒLIES
IZVĒLE
KAD precesOrg.Registrar LINK dokuments. Preču pakalpojumu reālizstrāde
TAD IZTEIKT (GoodsOrg.Registrar AS dokuments. GoodsServices reālizācija). Datums
KAD GoodsOrg.Registrar LINK dokuments. Preču pakalpojumu piegāde
TAD IZTEIKT (GoodsOrg.Registrar AS dokuments. GoodsServices pienākšana). Datums
END AS datums,
ProductsOrg.Quantity
OF
Uzkrājumu reģistrs. Produkti Org

Vai arī otrais variants ir šādas informācijas pievienošana rekvizītiem, piemēram, mūsu gadījumā - datuma pievienošana.

PA LABI:

IZVĒLIES
Preces Organizācijas. Datums,
ProduktiOrganizācijas.Skaits
OF
Uzkrājumu reģistrs. Organizāciju preces kā organizāciju preces

Apakšvaicājumi pievienošanās stāvoklī

Optimizēšanai ir nepieņemami apakšapziņu izmantošana pievienošanās apstākļos, tas ievērojami palēnina vaicājumu. Šādos gadījumos ieteicams lietot VT. Lai izveidotu savienojumu, jums jāizmanto tikai metadati un BT objekti, iepriekš tos indeksējot pēc savienojuma laukiem.

Nepareizi:

IZVĒLIES ...

Kreisais savienojums (
Atlasīt no informācijas reģistra. Ierobežojumi
KUR ...
IEKĀRTOT ...
) Līdz…

PA LABI:

IZVĒLIES ...
POST Limits
NO informācijas reģistra. Ierobežojumi
KUR ...
IEKĀRTOT ...
RĀDĪTĀJS…

IZVĒLIES ...
NO dokumenta. Preču pakalpojumu reālizstrāde
LEFT LOIN Limits
BY…;

Ierakstu savienošana ar virtuālām tabulām

Pastāv situācijas, kad, pievienojoties virtuālajai tabulai ar citiem, sistēma nedarbojas optimāli. Šajā gadījumā, lai optimizētu vaicājuma veiktspēju, varat mēģināt ievietot virtuālo tabulu pagaidu tabulā, atceroties indeksēt pievienotos laukus pagaidu tabulas vaicājumā. Tas ir saistīts ar faktu, ka BT bieži tiek iekļauti vairākās DBVS fiziskajās tabulās, kā rezultātā to atlasīšanai tiek veikts apakšvaicājums, un problēma ir līdzīga iepriekšējam punktam.

Filtru izmantošana neindeksētos laukos

Viena no visbiežāk pieļautajām kļūdām, rakstot vaicājumus, ir nosacījumu izmantošana neindeksētos laukos, tas ir pretrunā vaicājumu optimizācijas noteikumi. DBVS nevar optimāli izpildīt vaicājumu, ja vaicājums pārklājas ar neindeksētiem laukiem. Ja tiek ņemta pagaidu tabula, ir nepieciešams arī indeksēt pievienošanās laukus.

Katram nosacījumam jābūt piemērotam indeksam. Piemērots indekss, kas atbilst šādām prasībām:

  1. Indeksā ir visi nosacījumā norādītie lauki.
  2. Šie lauki atrodas pašā indeksa sākumā.
  3. Šīs atlases ir pēc kārtas, tas ir, vērtības, kas nav saistītas ar vaicājuma nosacījumu, nav "saķīlētas" starp tām.

Ja DBVS neatradīs pareizos indeksus, tiks skenēta visa tabula - tas ļoti negatīvi ietekmēs veiktspēju un var izraisīt visa ierakstu komplekta ilgstošu bloķēšanu.

Loģiskas VAI izmantošana apstākļos

Tas ir viss, šajā rakstā tika apskatīti vaicājumu optimizācijas aspektu pamati, kas jāzina katram 1C ekspertam.

Ļoti noderīgs bezmaksas video kurss par vaicājumu izstrādi un optimizāciju, ļoti iesaku iesācējiem un ne tikai!

Izstrādājot pārskatus, dažreiz ir nepieciešams parādīt pārskatu, par kuru datus nevar iegūt, izmantojot vaicājuma valodu. Šāda situācija var rasties, piemēram, ja datu aprēķināšanai tiek izmantots noteikts sarežģīts algoritms vai dati no pārskata izejas netiek iegūti no informācijas bāze, un, piemēram, no ārējais fails... Pārskatu veidotājs nodrošina iespēju izvest pārskatu no patvaļīga datu avota.
Pārskata sagatavošanai kā datu avotu var izmantot:

  • Vērtību tabula,
  • Pieprasījuma rezultāts,
  • IzklājlapaDokumentu šūnu reģions,
  • Tabulas daļa,
  • Uzkrāšanas reģistrsRecordSet,
  • Datu lapaRecordSet,
  • Grāmatvedības reģistrsRecordSet,
  • Aprēķinu reģistrsRecordSet.
Lai pārskatu veidotājs varētu parādīt patvaļīga datu avota pārskatu, pietiek ar datu avota apraksta iestatīšanu rekvizītam DataSource builder. Rekvizītā DataSource pārskata veidotājs var būt tipa DataSource Apraksts vērtība. Objektā DataSourceDescription ir pats datu avots, kā arī datu avotu kolonnu apraksts. Katrā datu avota slejas aprakstā ir:
  • Nosaukums - satur kolonnas nosaukumu datu avotā,
  • PathData - satur kolonnu atkarības aprakstu viens no otra. Kolonna, kuras datu ceļš iegūts, izmantojot punktu no cita lauka datu ceļa, tiek uzskatīta par citas kolonnas atribūtu. Ja laukā ir vārds Atveidojums, atdalīts ar punktu, tad šis lauks tiek uzskatīts par kolonnas attēlojumu, no kura datu ceļa tiek iegūts attēlojums. Piemēri. Ja slejā "Nomenklatūra" ir ceļš uz datiem "Nomenklatūra" un kolonnā "Kods" ir ceļš uz datiem "Nomenklatūra.Kods", tad šī kolonna tiks uzskatīta par kolonnas "Nomenklatūra" atribūtu. Kolonna ar ceļu uz datiem "Nomenklatūra. Attēlojums" tiks uzskatīta par kolonnas "Nomenklatūra" attēlojumu,
  • Lauks - zīme, ka šo kolonnu var izmantot kā pārskata lauku,
  • Pasūtījums ir zīme, ka pasūtīšana ir iespējama noteiktā kolonnā,
  • Atlase ir zīme, ka konkrētai kolonnai ir iespējams uzspiest atlasi,
  • Dimensija - zīme, ka šo kolonnu var izmantot kā atskaites grupēšanu,
  • Kopā ir virkne, kurā ir izteiksme kopējās vērtības aprēķināšanai. Pārskatu veidotājam šīs virknes izteiksme atbilst izteiksmei, lai aprēķinātu vaicājuma valodā izmantoto kopsummu,
Iestatot datu avotu objektam DataSourceDescription, kolonnu apraksti tiek izveidoti un aizpildīti automātiski.

Objektam DataSourceDescription ir konstruktors, kā parametru var nodot datu avotu, kuram ir izveidots apraksts, savukārt rekvizīts DataSource tiks aizpildīts ar pārsūtīto datu avotu, kolonnu apraksti tiks aizpildīti ar informāciju par kolonnām no plkst. datu avotu.

Datu avota iestatīšanas piemērs pārskatu veidotājam:

ReportBuilder.DataSource = NewDataSourceDescription (ValueTableResult);

Turpmākais darbs ar pārskatu veidotāju neatšķiras no darba ar pārskatu veidotāju vaicājuma režīmā: pārskatu veidotājs nodrošina tā pilnīgu funkcionalitāti, izņemot hierarhisko kopsummu izvadi. Turklāt, strādājot ar patvaļīgu datu avotu, jūs nevarat saņemt vaicājumu no pārskatu veidotāja, kas tiks izmantots, lai izgūtu datus no informācijas bāzes.

Darbs ar pielāgotu datu avotu Query Builder ir tas pats, kas strādāt ar pielāgoto atskaišu veidotāju.

1C programmēšana sastāv ne tikai no programmas rakstīšanas. 1C ir lietotāju darbību un datu lietnis, ar kuru viņš strādā.

Dati tiek glabāti datu bāzē. 1C pieprasījumi ir veids, kā iegūt datus no datu bāzes, lai tos parādītu lietotājam formā vai tos apstrādātu.

Būtiska ziņojuma daļa ir 1C pieprasījums. ACS ziņojuma gadījumā šis ir ziņojuma vairākums.

Apsēdies. Ievelc elpu. Atslābinies. Tagad es jums pastāstīšu jaunumus.

Lai programmētu 1C, nepietiek ar 1C programmēšanas valodas zināšanu. Jums jāzina arī 1C pieprasījumu valoda.

1C vaicājuma valoda ir pilnīgi atsevišķa valoda, kas ļauj mums norādīt, kādi dati mums jāiegūst no datu bāzes.

Tas ir arī divvalodīgs - tas ir, jūs varat rakstīt krievu vai angļu valodā. Tas ir ārkārtīgi līdzīgs mēlei SQL vaicājumi un tie, kas zina, var atpūsties.

Kā tiek izmantoti 1C pieprasījumi

Kad lietotājs sāk 1C Enterprise režīmā, palaistajā klientā nav neviena grama datu. Tāpēc, kad jums jāatver direktorija, 1C pieprasa datus no datu bāzes, tas ir, veic 1C pieprasījumu.

1C pieprasījumi ir:

  • Automātiski pieprasījumi 1C
    Tos sistēma automātiski ģenerē. Jūs esat izveidojis dokumentu saraksta veidlapu. Pievienota kolonna. Tas nozīmē, ka, atverot šo veidlapu uzņēmuma režīmā, tiks veikts pieprasījums un tiks pieprasīti dati šai kolonnai.
  • Pusautomātiskie 1C pieprasījumi
    1C valodā ir daudz metožu (funkciju), kurām piekļūstot, ir pieprasījums datu bāzei. Piemēram, GetObject ()
  • Manuāli 1C pieprasījumi (programmētājs tos ir uzrakstījis tieši kā pieprasījumu)
    Jūs varat pats ierakstīt 1C pieprasījumu kodā un izpildīt to.

1C pieprasījumu izveide un izpilde

1C pieprasījums ir faktiskais pieprasījuma teksts 1C vaicājuma valodā.
Tekstu var rakstīt ar pildspalvām. Tas ir, ņem un raksti (ja zini šo valodu).

Tā kā 1C popularizē vizuālās programmēšanas jēdzienu, kur daudz vai gandrīz visu var izdarīt, nerakstot kodu ar pildspalvām, ir īpašs Query Constructor objekts, kas ļauj uzzīmēt vaicājuma tekstu, nezinot vaicājuma valodu. Tomēr brīnumi nenotiek - tam jums jāzina, kā strādāt ar konstruktoru.

Pēc tam, kad 1C pieprasījuma teksts ir gatavs, tas ir jāizpilda. Šim nolūkam 1C kodā Request () ir objekts. Lūk, piemērs:

Pieprasījums = jauns pieprasījums ();
Request.Text = "Atlasīt
| Nomenklatūra. Ref.
| NO
| Atsauce. Nomenklatūra AS nomenklatūra
| KUR
| Nomenklatūra.Pakalpojums ";
Selection = Query.Run (). Atlasiet ();

Report (Sample.Link);
Cikla beigas;

Kā redzat piemērā - pēc 1C pieprasījuma izpildes rezultāts nonāk pie mums, un mums tas ir jāapstrādā. Rezultāts ir viena vai vairākas tabulas rindas (īpašā formā).

Rezultātu var ievietot regulārā tabulā:
Fetch = Query.Run (). Izkraut (); // Rezultāts ir vērtību tabula

Vai vienkārši apiet līnijas.
Selection = Query.Run (). Atlasiet ();
Kamēr izlasi. Nākamā () cilpa
// Dariet kaut ko ar vaicājuma rezultātiem
Cikla beigas;

Darbs ar 1C pieprasījumiem

1C pieprasījumu pamatprincipi

1C vaicājuma veidošanas pamatprincipi ir:
Atlasiet lauku sarakstu no tabulas tabulas, kur nosacījumi

Šāda 1C pieprasījuma veidošanas piemērs:

IZVĒLIES
// atlasāmo lauku saraksts
Saite,
Vārds,
Kods
OF
// tabulas nosaukums, no kura mēs atlasām datus
// tabulu saraksts ir objektu saraksts konfiguratora logā
Katalogs. Nomenklatūra
KUR
// norādīt atlasi
Produkta tips = & Pakalpojums // izvēle pēc ārējās vērtības
Vai arī pakalpojums // Būla tipa mainīgais “Service”, atlase pēc vērtības True
KĀRTOT PĒC
// Šķirošana
Nosaukums

Tabulu saraksts 1C

Konfiguratora logā varat redzēt tabulu nosaukumus. Ir nepieciešams rakstīt tikai "Directory", nevis "Directories", piemēram, "Directory.Nomenclature" vai "Document.Realization of GoodsServices" vai "Accumulation Register.Sales".

Reģistriem ir papildu tabulas (virtuālās), kas ļauj iegūt kopējos skaitļus.

Informācijas reģistrs.RegisterName.Last Slice (& Date) - 1C pieprasījums no informācijas reģistra, ja tas ir periodisks, uz noteiktu datumu

Uzkrājumu reģistrs. Reģistra nosaukums. Atlikumi (& Datums) - 1C pieprasījums no bilances reģistra uz noteiktu datumu

Uzkrāšanas reģistrs. Reģistrācijas nosaukums. Apgrozījumi (& sākuma datums un beigu datums) - 1C pieprasījums no apgrozījuma reģistra par periodu no sākuma datuma līdz beigu datumam.

Papildu principi

Kad mēs pieprasām dažu datu sarakstu, darbojas pamatprincipi. Bet mēs varam pieprasīt arī numurus, un pieprasījums var tos mums aprēķināt (piemēram, pievienot).

IZVĒLIES
// Quantity (FieldName) - skaita daudzumu
// Lauks AS OtherName - pārdēvē lauku
Numurs (saite) AS Ievietoto dokumentu skaits
OF

KUR
Izpildīts

Šis 1C pieprasījums mums atgriezīs kopējo dokumentu skaitu. Tomēr katram dokumentam ir lauks Organizācija. Pieņemsim, ka mēs vēlamies aprēķināt katras organizācijas dokumentu skaitu, izmantojot 1C vaicājumu.

IZVĒLIES
// tikai dokumenta lauks
Organizācija,
// skaitīt summu
Daudzums (saite) AS daudzums pa organizācijām
OF
Dokuments. Preču pakalpojumu atjaunošana
KUR
Izpildīts
IEKĀRTOT

Organizācija

Šis 1C pieprasījums mums atgriezīs dokumentu skaitu katrai organizācijai (viņi arī saka "organizāciju kontekstā").

Mēs papildus aprēķināsim šo dokumentu summu, izmantojot 1C pieprasījumu:

IZVĒLIES
// tikai dokumenta lauks
Organizācija,
// skaitīt summu

// aprēķināt summu

OF
Dokuments. Preču pakalpojumu atjaunošana
KUR
Izpildīts
IEKĀRTOT
// jāizmanto, ja lauku sarakstā ir skaitīšanas funkcija () un viens vai vairāki lauki vienlaikus - tad jums ir jāgrupējas pēc šiem laukiem
Organizācija

Šis 1C pieprasījums arī atdos mums dokumentu daudzumu.

IZVĒLIES
// tikai dokumenta lauks
Organizācija,
// skaitīt summu
Daudzums (saite) AS daudzums pēc organizācijas,
// aprēķināt summu
Summa (dokumenta summa) AS summa
OF
Dokuments. Preču pakalpojumu atjaunošana
KUR
Izpildīts
IEKĀRTOT
// jāizmanto, ja lauku sarakstā ir skaitīšanas funkcija () un viens vai vairāki lauki vienlaikus - tad jums ir jāgrupējas pēc šiem laukiem
Organizācija
REZULTĀTI VISPĀRĪGI

1C vaicājuma valoda ir plaša un sarežģīta, un mēs vienā stundā neizskatīsim visas tās iespējas - izlasiet mūsu nākamās nodarbības.

Īsumā par papildus iespējas 1C vaicājuma valoda:

  • Datu apvienošana no vairākām tabulām
  • Ligzdoti vaicājumi
  • Partijas pieprasījums
  • Veidojot savas virtuālās tabulas
  • Vaicājums no vērtību tabulas
  • Iebūvēto funkciju izmantošana vērtības iegūšanai un manipulēšanai ar vērtībām.

1C vaicājumu noformētājs

Lai pieprasījuma tekstu nerakstītu ar roku, ir 1C vaicājumu noformētājs. Vienkārši noklikšķiniet ar peles labo pogu jebkurā moduļa vietā un atlasiet 1C Query Builder.

1C vaicājumu noformētājā kreisajā pusē atlasiet vajadzīgo tabulu un velciet to pa labi.

Tabulā atlasiet nepieciešamos laukus 1C vaicājumu noformētājā un velciet pa labi. Ja vēlaties ne tikai atlasīt lauku, bet arī tam piemērot summēšanas funkciju - pēc vilkšanas veiciet dubultklikšķi uz lauka ar peli. Pēc tam cilnē Grupēšana jums būs jāizvēlas (velciet un nometiet) vajadzīgos laukus grupēšanai.

1C vaicājumu noformētāja cilnē Nosacījumi tādā pašā veidā varat atlasīt nepieciešamos filtrus (velkot laukus, pēc kuriem veicat atlasi). Neaizmirstiet izvēlēties pareizo stāvokli.

Cilnē Pasūtījums ir norādīta šķirošana. Cilnē Kopā - summējot kopsummas.

Ar 1C vaicājumu noformētāja palīdzību jūs varat izpētīt jebkuru esošo vaicājumu. Lai to izdarītu, ar peles labo pogu noklikšķiniet uz esošā pieprasījuma teksta un atlasiet arī 1C vaicājumu noformētāju - un pieprasījums tiks atvērts 1C vaicājumu noformētājā.