Izteikt kā skaitli 1s vaicājumā 8.2.

31.10.2021

Šajā rakstā mēs analizēsim veidu konvertēšanas iespējas 1C vaicājumu valodā, ko nodrošina funkcija “Express”.
Apskatīsim vairākas šīs funkcijas izmantošanas iespējas.
Un pirmā iespēja ir skaitļu noapaļošana.

Lai to izdarītu, ir jāizmanto funkcija Express šādā formātā:

Express(<Число>kā numurs (<ДлинаЧисла>,<Точность>))

Kur:
Numurs— lauks, kas jānoapaļo
LengthNumbers— maksimālais skaitļa garums
Precizitāte— skaitļu noapaļošanas precizitāte

Gan garuma, gan precizitātes parametriem jābūt pozitīviem veseliem skaitļiem.
Skatiet, kā šī funkcija darbojas zemāk esošajā attēlā.

Otrs lietošanas gadījums ir stīgu liešana. Ļoti bieži konfigurācijās tiek izmantotas neierobežota garuma virknes, kas uzliek dažus ierobežojumus. Piemēram, mēs nevaram salīdzināt neierobežota garuma virknes.
Tālāk esošajā vaicājumā laukam FullName ir neierobežota garuma tipa virkne, un šis vaicājums nedarbosies.

Lai tas darbotos, neierobežota garuma lauks ir jāpārvērš virknē ar noteiktu garumu, izmantojot funkciju Express šādā formātā:

Express(<Строка>kā virkne (<ДлинаСтроки>)

Kur
Līnijas garums– maksimālais garums, līdz kuram tiks samazināta virkne.
Pārstrādāsim vaicājumu: nosacījumā neierobežotu virkni pārveidosim par virkni ar noteiktu garumu. Tad kļūdu nebūs.

Apskatīsim pēdējo un, es teiktu, vissvarīgāko tā pielietojuma iespēju: strādājot ar saliktā tipa laukiem.
Tālāk ir norādīti divi vaicājumi, kas izmanto saliktos laukus. Pirmais ir nepareizs, bet otrais ir pareizs.

Tie. Ja jums ir nepieciešams iegūt kāda sarežģīta veida lauku, vienmēr iegūstiet šī lauka vērtību tikai pēc veida atrašanas, izmantojot funkciju Express. Šajā gadījumā dokumentiem un uzziņu grāmatām būs šāds formāts:

Express(<Документ>kā Dokuments.<ИмяТаблицы>)
Express(<Справочник>kā direktoriju.< ИмяТаблицы >)
.

Kur
Tabulas nosaukums— objekta nosaukums .

Strādājot ar saliktajiem tipiem, vienmēr izmantojiet ekspresfunkciju, tā ievērojami optimizē vaicājumu.

Ja jūs joprojām "peldat" vaicājumu valodas konstrukcijās un jums ir grūtības ar pat visvairāk vienkārši vaicājumi, tad es iesaku jums savu kursu “Vaicājumi 1C no iesācēja līdz profesionālim”. Kur šie un daudzi citi jautājumi tiek apspriesti sīkāk.

Kas ir īpašs šajā kursā:
Kurss ir paredzēts tiem, kuri nepārzina vaicājumu valodu 1C;
Mācību materiāls ir labi noformēts un viegli apgūstams;
Vairāki desmiti nodarbību;
Noderīgi praktiski piemēri;
Visas nodarbības tiek pasniegtas skaidrā un vienkāršā valodā

Maniem lasītājiem 25% atlaižu kupons: hrW0rl9Nnx

Cenšos izlaist dažādus interesantus bezmaksas raksti un video pamācības. Tāpēc es ļoti priecāšos, ja atbalstīsiet manu projektu, pārskaitot jebkuru summu:

Jūs varat pārskaitīt jebkuru summu tieši:
Yandex.Money - 410012882996301
Tīmekļa nauda — R955262494655

Pievienojieties manām grupām.

Šajā rakstā mēs vēlamies ar jums visu apspriest 1C vaicājumu valodas funkcijas, un arī vaicājumu valodas konstrukcijas. Kāda ir atšķirība starp funkciju un dizainu? Funkcija tiek izsaukta ar iekavām un iespējamajiem parametriem tajās, un konstrukcija tiek rakstīta bez iekavām. Neapšaubāmi visas 1C vaicājumu valodas struktūras un funkcijas padarīt datu iegūšanas procesu elastīgu un daudzfunkcionālu. Šīs funkcijas un konstrukcijas attiecas uz pieprasījuma laukiem, un dažas attiecas arī uz nosacījumiem.

1C vaicājumu valodas funkcijas

Jo skaidrs apraksts 1C vaicājumu valodas funkcijas ir daudz retāk nekā struktūru apraksti, mēs nolēmām sākt aplūkot funkcijas. Tagad apskatīsim katru atsevišķi, aprakstot tā mērķi, sintaksi un lietošanas piemēru, tātad:

1. Funkcija DATETIME - šī funkcija izveido konstantu lauku ar tipu "Datums".

Sintakse: DATETIME(<Год>,<Месяц>,<День>,<Час>,<Минута>,<Секунда>)

Lietošanas piemērs:

2. Funkcija DATE DIFFERENCE- atgriež starpību starp diviem datumiem vienā no dimensijām (gads, mēnesis, diena, stunda, minūte, sekunde). Mērījums tiek nodots kā parametrs.

Sintakse: DIFFERENCEDATE(<Дата1>, <Дата2>, <Тип>)

Lietošanas piemērs:

Query.Text = "SELECT | DIFFERENCEDATE(DATETIME(2015, 4, 17), DATETIME(2015, 2, 1), DAY) | AS Dienu skaits";

3. Funkcija VALUE- iestata nemainīgu lauku ar iepriekš definētu ierakstu no datu bāzes, jūs varat arī iegūt jebkura veida tukšu saiti.

Sintakse: VALUE(<Имя>)

Lietošanas piemērs:

Request.Text = "SELECT //iepriekš definēts elements | VĒRTĪBA(Directory.Currencies.Dollar) AS dolārs, //tukša saite | VĒRTĪBA(Dokuments.Preču un pakalpojumu saņemšana.EmptyLink) AS kvīts, //pārskaitījuma vērtība | VĒRTĪBA(Pārskaitījums Juridiska fiziska persona) AS Privātpersona, //iepriekš definēts konts VĒRTĪBA(Kontu plāns. Pašuzskaite.Materiāli) AS Konts_10" ;

4. SELECT funkcija- mūsu priekšā ir IF konstrukcijas analogs, kas tiek izmantots kodā, tikai šis tiek izmantots 1C vaicājumos.

Sintakse: IZVĒLE, KAD<Выражение>TAD<Выражение>CITĀDI<Выражение>BEIGAS

Lietošanas piemērs:

Request.Text = //ja summa ir lielāka par 7500, tad ir jābūt atlaidei 300 rubļu apmērā, //tātad, ja nosacījums tiek aktivizēts, funkcija //atgriež Summa - 300 //pretējā gadījumā pieprasījums vienkārši atgriezīs summu "ATLASĪT | IZVĒLĒTIES | KAD TKRkvītis.Summa > 7500 | TAD TKRkvītis.Summa - 300 | CITI TKRkvītis.Summa | BEIGAS KĀ SummaAratlaidi | NO |

5. EXPRESS funkcija- ļauj izteikt konstantu lauku ar noteiktu veidu.

Sintakse: EXPRESS (lauka nosaukums kā tipa nosaukums)

Lietošanas piemērs:

Query.Text = "ATLASĪT DAŽĀDU | Pārdošana.Reģistra numurs, | IZVĒLĒTIES | WHEN Pārdošana. Reģistratūras saites dokuments.Izdevumi | THEN EXPRESS(Pārdošana.Reģistrs kā dokuments.Izdevumi) | ELSE SELECT | WHEN Pārdošana.Reģistras saites dokuments.Ieviešana | THEN EXPRESS(Sales.Registrar AS Document.Implementation) |. END AS Uzkrāšanas reģistrs Pirkumi";

Vai ir vēl kāda iespēja izmantot funkciju EXPRESS jaukta tipa laukos, kur tās rodas? Vienkāršākais piemērs ir jebkura reģistra “reģistrators”. Tātad, kāpēc mums varētu būt nepieciešams kvalificēt veidu reģistratorā? Apskatīsim situāciju, kad no reģistratūras atlasām lauku "Numurs", no kuras tabulas tiks izvēlēts numurs? Pareizā atbilde visiem! Tāpēc, lai mūsu vaicājums darbotos ātri, mums ir jānorāda precīzs veids, izmantojot funkciju EXPRESS

Lietošanas piemērs:

Query.Text = "SELECT | EXPRESS(Nomenclature.Comment AS Line(300)) AS Comment, | EXPRESS(Nomenclature.Sum AS Number(15,2)) AS Sum |FROM | Directory.Nomenclature AS Nomenclature";

6. ISNULL funkcija(alternatīvā pareizrakstība ISNULL) - ja laukam ir NULL tips, tas tiek aizstāts ar funkcijas otro parametru.

Sintakse: ISNULL(<Поле>, <ПодставляемоеЗначение>)

Lietošanas piemērs:

Ņemiet vērā arī to, ka ir ieteicams VIENMĒR aizstāt NULL tipu ar kādu vērtību, jo salīdzinājums ar tipu NULL vienmēr atgriež FALSE, pat ja jūs salīdzināt NULL ar NULL. Visbiežāk NULL vērtības veidojas tabulu savienošanas rezultātā (visu veidu savienojumi, izņemot iekšējos).

Query.Text = //Atlasīt visu preci un tās atlikumus //ja kādā vienībā nav bilances, tad būs lauks //NULL, kas tiks aizstāts ar vērtību 0 "SELECT | No. Link, | ISNULL (ProductsInStockRemains.InStockRemaining, 0) KĀ Atlikuši |. Katalogs.Nomenklatūra AS Nr. |.KREISĀS DARBĪBAS |

7. REPREZENTĀCIJAS funkcija- ļauj iegūt pieprasījuma lauka attēlojumu.

Sintakse: PERFORMANCE(<НаименованиеПоля>)

Lietošanas piemērs:

Query.Text = "SELECT | REPREZENTĀCIJA(FreeRemainingRemains.Nomenclature) AS Nomenklatūra, | REPREZENTĀCIJA(FreeRemaining.Warehouse) AS Noliktava, | FreeRemainingRemaining.InStockRemaining |FROM |Uzkrāšanas reģistrs.FreeRemainingAS FreeRemaining"

Konstrukcijas 1C vaicājumu valodā

Mēs ar jums apspriedām iepriekš 1C vaicājumu valodas funkcijas, tagad ir laiks apsvērt konstrukcijas 1C vaicājumu valodā, tie ir ne mazāk svarīgi un noderīgi, sāksim.

1. Būvniecība LINK- ir loģisks operators atsauces veida pārbaudei. Visbiežāk sastopams, pārbaudot kompleksa tipa lauku ar noteiktu tipu. Sintakse: SAITE<Имя таблицы>

Lietošanas piemērs:

Pieprasījums.Teksts = //ja ierakstītāja vērtības tips ir dokuments Kvīts, //tad vaicājums atgriezīs "Preču saņemšana", pretējā gadījumā "Preču pārdošana" "SELECT | SELECT | WHEN Remaining.Registrar LINK Dokuments.Preču saņemšanaPakalpojumi | TAD ""Saņemšana"" |. END AS Pārvietošanās veids |. Atlikušo produktu reģistrs noliktavās" ;

2. Dizains STARP- šis operators pārbauda, ​​vai vērtība ir norādītajā diapazonā.

Sintakse: STARP<Выражение>UN<Выражение>

Lietošanas piemērs:

Request.Text = //iegūstiet visu nomenklatūru, kuras kods ir diapazonā no 1 līdz 100 "SELECT | Nomenclature.Link | FROM | Directory.Nomenclature AS Nomenclature | WHERE | Nomenclature.Code BETWEEN 1 UN 100" ;

3. B un B būvniecības HIERARHIJA- pārbaudiet, vai vērtība ir pārsūtītajā sarakstā (masīvus, vērtību tabulas utt. var pārsūtīt kā sarakstu). Operators IN HIERARHIJA ļauj skatīt hierarhiju (kontu plāna izmantošanas piemērs).

Sintakse: IN(<СписокЗначений>), HIERARHJĀ(<СписокЗначений>)

Lietošanas piemērs:

Pieprasījums.Teksts = //atlasīt visus konta apakškontus "SELECT | Pašpietiekams. Saistīt AS kontu | NO | Kontu plāns. Pašpietiekams AS Pašpietiekams | KUR | Pašpietiekams. Saite HIERARHIJAS VĒRTĪBĀ (Chart of Konti. Pašpiegādes preces)”;

4. Dizains LĪDZĪGS- Šī funkcija ļauj mums salīdzināt virkni ar virknes modeli.

Sintakse: PATĪK "<ТекстШаблона>"

Rindu raksta opcijas:

% — virkne, kas satur jebkuru skaitu patvaļīgu rakstzīmju.

Viens patvaļīgs raksturs.

[...] — jebkura atsevišķa rakstzīme vai rakstzīmju secība, kas norādīta kvadrātiekavās. Uzskaitījums var norādīt diapazonus, piemēram, a–z, kas nozīmē diapazonā iekļautu patvaļīgu rakstzīmi, tostarp diapazona beigas.

[^...] — jebkura atsevišķa rakstzīme vai rakstzīmju secība, kas norādīta kvadrātiekavās, izņemot tās, kas norādītas aiz nolieguma zīmes.

Lietošanas piemērs:

Query.Text = //atrodiet visu nomenklatūru, kas satur sakni TABUR un sākas //vai nu ar mazo vai lielo burtu t "SELECT | Nomenclature. Link | FROM | Directory. Nomenclature AS Nomenclature | WHERE | Products. Name LIKE "" [Tt ]abur%""" ;

5. Dizains ATĻAUTS- šis operators ļauj no datu bāzes atlasīt tikai tos ierakstus, kuriem zvanītājam ir lasīšanas atļauja. Šīs tiesības ir konfigurētas ieraksta līmenī (RLS).

Sintakse: ATĻAUTS ir rakstīts pēc atslēgvārds IZVĒLIES

Lietošanas piemērs:

Request.Text = "ATLASĪT ATĻAUTO | Darījuma partneri. Saite | NO | Katalogs. Darījuma partneri KĀ darījuma partneri";

6. Dizains DAŽĀDI- ļauj atlasīt ierakstus, kuros nav ierakstu dublikātu.

Sintakse: DAŽĀDI ir rakstīts aiz atslēgvārda SELECT

Lietošanas piemērs:

Request.Text = //atlasa ierakstus, uz kuriem lasītājam ir tiesības "IZVĒLĒTIES DAŽĀDU | Counterparties.Name |FROM | Directory. Counterparties AS Counterparties" ;

Tāpat DAŽĀDU konstrukciju var izmantot ar ATĻAUTO operatoru un citiem operatoriem.

Lietošanas piemērs:

Request.Text = //atlasa dažādus ierakstus, uz kuriem lasītājam ir tiesības "ATLASĪT ATĻAUTOS DAŽĀDU | Counterpartities.Name |FROM | Directory. Counterparties AS Counterpartities";

7. Dizains PIRMAIS- no vaicājuma rezultāta izvēlas parametrā norādīto ierakstu skaitu.

Sintakse: FIRST<число>

Lietošanas piemērs:

Request.Text = //atlasiet pirmos 4 CCD numurus no direktorija "SELECT FIRST 4 | CCD Numbers. Link | FROM | Directory. CCD Numbers AS CCD Numbers";

8. Dizains PĀRMAIŅĀM- ļauj bloķēt galdu, darbojas tikai transakcijās (attiecas tikai uz automātiskajām slēdzenēm).

Sintakse: LAI MAINĪTIES<НаименованиеТаблицы>

Lietošanas piemērs:

Query.Text = "SELECT | Bezmaksas atlikumi, atlikumi. Nomenklatūra, | Bezmaksas atlikumi. Noliktava, | Bezmaksas atlikumi. Noliktavā Atlikušie | NO | Uzkrājumu reģistrs. Bezmaksas atlikumi. Atlikumi KĀ bezmaksas atlikumi Atlikumi | MAINĪJUMU reģistrs | Brīvās atliekas.

9. Dizains PASŪTĪT PĒC- sakārto datus pēc noteikta lauka. Ja lauks ir saite, tad, uzstādot karogu AUTO PASŪTĪJUMS Kārtošana notiks pēc saites attēlojuma, ja karodziņš ir izslēgts, tad saites tiek kārtotas pēc saites adreses vecumposma atmiņā.

Sintakse: PASŪTĪT PĒC<НаименованиеПоля>AUTO PASŪTĪJUMS

Lietošanas piemērs:

Query.Text = "SELECT | Free Remainings Remainings. Nomenclature AS Nomenclature, | Free Remainings Remaining. Warehouse AS Noliktava, | Bezmaksas Atlikums. Noliktavā Atlikušie | No | Reģistrēt Uzkrājumi. Bezmaksas Atlikumi. Atlikušie AS Free Remaining Remainings BY | |. Nomenklatūra |. AUTO PASŪTĪJUMU LASĪŠANA";

10. Dizains GROUP BY- izmanto, lai grupētu vaicājuma virknes pēc noteiktiem laukiem. Ciparu lauki ir jāizmanto ar jebkuru apkopošanas funkciju.

Sintakse: GROUP BY<НаименованиеПоля1>, .... , <НаименованиеПоляN>

Lietošanas piemērs:

Query.Text = "SELECT | ProductsInWarehouses.Nomenclature AS Nomenclature, | ProductsInWarehouses.Warehouse, | SUM(GoodsInWarehouses.Stock) AS KRĀJUMI | NO | ReģistrētiesUzkrājumi.ProduktiNoliktavās AS |ProduktiNoliktavās |Noliktavā .Noliktava";

11. Dizains HAVING- ļauj datu atlases nosacījumam lietot apkopošanas funkciju, līdzīgi kā WHERE konstrukcijai.

Sintakse: ŅEMOT<агрегатная функция с условием>

Lietošanas piemērs:

Query.Text = //atlasa grupētus ierakstus, kur InStock lauks ir lielāks par 3 "SELECT | ItemsInStocks.Nomenclature AS Nomenclature, | ItemsInWarehouses.Warehouse, | SUM(ItemsInStocks.InStock) AS INSTOCK |FROM | RegisterItemstockumlationsa. GROUP BY |. ProduktiNoliktavās.Noliktavās |. PIEEJAMĀS |.

12. Būvniecība INDEX BY- izmanto vaicājuma lauka indeksēšanai. Vaicājuma ar indeksēšanu pabeigšana prasa ilgāku laiku, taču paātrina meklēšanu indeksētos laukos. Var izmantot tikai virtuālajās tabulās.

Sintakse: INDEX BY<Поле1, ... , ПолеN>

Lietošanas piemērs:

Request.Text = "SELECT | Ts.NameOS, | Ts.FolderNumber, | Ts.CodeOS, | Ts.Term, | Ts.Type | PLACE DataTs | FROM | &Ts AS Ts | | INDEX BY | Ts.NameOS, | Ts .CodeOS";

13. Dizains KUR- ļauj uzlikt nosacījumu visiem atlases laukiem. Rezultātā tiks iekļauti tikai tie ieraksti, kas atbilst nosacījumam.

Sintakse: KUR<Условие1 ОператорЛогСоединения УсловиеN>

Lietošanas piemērs:

Query.Text = //ir atlasīti visi ieraksti ar CompensationRemaining<>0 un //AmountFor CalcCompRemaining > 100 "SELECT | CompensationRPORemains.Counterparty, |CompensationRPORemains.Child, | CompensationRPORemains.CompensationRemains, | CompensationRPORemains.AmountForCalcCompRemains.AmountForCalcCompRemains.AccumulsRPRemains | AtlīdzībaRPORatlikums |KUR |AtlīdzībaRPORatlikums.Atlikušais kompensācija<>0 | Un CompensationRPORemains.AmountForCalcCompRemaining> 100" ;

14. Dizaina REZULTĀTI... VISPĀRĪGI- izmanto kopsummas aprēķināšanai, dizainā ir norādīti lauki, pēc kuriem tiks aprēķinātas kopsummas un agregētās funkcijas attiecas uz kopsavilkuma laukiem. Izmantojot kopsummas katram laukam pēc konstrukcijas KOPĀ, dati tiek grupēti. Pēc izvēles ir GENERAL konstrukcija, kas nodrošina arī papildu grupēšanu. Tālāk redzēsit pieprasījuma rezultāta piemēru.

Sintakse: REZULTĀTI<АгрегатнаяФункция1, ... , АгрегатнаяФункцияN>BY<ОБЩИЕ> <Поле1, ... , ПолеN>

Lietošanas piemērs:

Request.Text = "SELECT | Aprēķini. Darījuma partnera līgums. Līguma veids AS Līguma veids, | Aprēķini. Darījuma partnera līgums AS līgums, | Aprēķini. Darījuma partneris, | Aprēķini. Savstarpējo norēķinu bilances summa AS bilance | NO | Uzkrājumu reģistrs. Savstarpēja Norēķini AR Darījuma partneriem |. KOPĀ |. VISPĀRĪGI, |Līguma veids";

Attēlā ir norādīti grupējumi, kas tika izveidoti pieprasījuma izpildes laikā, augšējais attiecas uz sadaļu VISPĀRĪGI, bet otrais uz lauku Darījuma partnera līgumaLīguma veids.

Tātad sāksim. Vaicājums ir īpašs objekts 1C 8.2, ko izmanto, lai ģenerētu un izpildītu vaicājumus datu bāzes tabulām sistēmā. Lai izpildītu vaicājumu, ir jāsastāda vaicājuma teksts, kurā ir aprakstīts, kuras tabulas tiks izmantotas kā vaicājuma datu avoti, kuri lauki ir jāatlasa, kādi kārtojumi un grupējumi jāpiemēro utt. Vairāk par vaicājumiem varat lasīt grāmatā "1C 8.2 izstrādātāja rokasgrāmata". 1C 8.2 vaicājumu valoda ir ļoti līdzīga sintaksei citām SQL valodas datu bāzes vaicājumus, taču pastāv atšķirības. Starp galvenajām iebūvētās vaicājumu valodas priekšrocībām ir vērts atzīmēt lauku atsauču atcelšanu, virtuālo tabulu klātbūtni, ērtu darbu ar summām un neierakstītus laukus vaicājumos. Trūkumi ir tādi, ka nevar izmantot vaicājumu kā izvades lauku, nevar izmantot saglabātās procedūras un nevar pārvērst virkni par skaitli.

1. Lai palielinātu pieprasījuma lasāmību un samazinātu pieprasījuma parametru skaitu, varat izmantot burtu, lai piekļūtu iepriekš definētiem konfigurācijas datiem pieprasījumā. VĒRTĪBA (VĒRTĪBAS ATSTĀDĪJUMS). Kā vērtību attēlojums, uzskaitījumu vērtības, iepriekš noteikti direktoriju dati, aprēķinu veidu plāni, raksturlielumu veidu plāni, kontu diagrammas, tukšas saites, maršruta punktu vērtības, sistēmas pārsūtīšanas vērtības ( piemēram, Uzkrāšanas kustības veids, Konta veids) var izmantot.

KUR Pilsēta = VĒRTĪBA (Directory.Cities.Maskava)

WHERE Pilsēta = VĒRTĪBA (Directory.Cities.EmptyLink)

WHEREProductType = VĒRTĪBA(Uzskaitījums.Produkta veidi.Pakalpojums)

WHEREMovementType = VALUE(MovementTypeAccumulation.Incoming)

KUR ir maršruta punkts =

VĒRTĪBA(Biznesa process.Līgums.RoutePoint.Līgums)

Izteiksme iekavās vienmēr sākas ar vienskaitļa vārdu (Directory, Enumeration utt.), kas atbilst iepriekš definētās vērtības veidam.

2. Automātiskā pasūtīšana vaicājumā var ievērojami palēnināt procesu. Ja šķirošana nav nepieciešama, labāk to neizmantot vispār. Daudzos gadījumos efektīvāk ir rakstīt šķirošanu, izmantojot atslēgvārdu PASŪTĪT PĒC.

3. Jums ir jāpārliecinās, ka, izmantojot aizstājvārdus, neparādās neskaidrs lauks. Pretējā gadījumā sistēma nesapratīs, kuram objektam ir jāpiekļūst.

Pieprasījuma piemērs ar neskaidru lauku:

IZVĒLIES

Atlikušās preces.Atlikušais daudzums

Directory.Nomenclature AS Nomenklatūra

KREISAIS SAVIENOJUMS Reģistrēt Atlikušās preces AS Atlikušās preces

Software Remaining ProductsRemainings.Nomenclature = Nomenclature.Link

Jālabo tabulas aizstājvārds, piemēram, šādi: “Directory.Nomenclature AS Nomenclature1” un “Nomenclature.Link” ir jālabo atbilstoši “Nomenclature1.Link”.

4. Dažkārt ir lietderīgi iegūt atsauces lauku attēlojumu, izmantojot atslēgvārdu IZPILDE kopā ar saiti, lai nebūtu atkārtotas piekļuves datu bāzei. Tas var būt noderīgi, parādot vaicājuma rezultātu tabulā.

IZVĒLIES

PĀRSTĀVNIECĪBA (dokuments. darījuma puse) kā saņēmējs,

PREZENTĀCIJA(Dokuments.Bāze)

Dokuments.Invoice AS dokuments

5.Izmantojiet pieprasījumā EXPRESS (lauka AS tips)ļauj noņemt nevajadzīgās tabulas no savienojuma ar sarežģīta datu tipa lauku. Tādējādi paātrinot pieprasījuma izpildi.

Piemērs (reģistrators ir lauks ar saliktu tipu Atlikušo preču uzkrāšanas reģistra fiziskajai tabulai, pieprasījumā tiek atlasīts Datums un Dokumentu skaits Preču saņemšana, savukārt, piekļūstot dokumenta informācijai Datums un numurs caur Reģistratūra, nav daudzkārtēja reģistra tabulas savienojuma ar dokumentu tabulām, kas ir Pārējo preču reģistra reģistratori):

IZVĒLIES DAŽĀDU
EXPRESS(Atlikušās preces. Reģistrācijas AS dokuments. Preču saņemšana).Numurs KĀ KVIŅAS NUMURS,

EXPRESS (atlikušās preces. Reģistrēt kā dokumentu. Preču saņemšana). Datums KĀ SAŅEMŠANAS DATUMS

NO
Atlikušo preču reģistrs AS Atlikušās preces
KUR
(EXPRESS (atlikušās preces. Reģistra kā dokuments. Preču saņemšana) NAV NULL)

6. Ja 1C konfigurācijā ir lietotāji, kuriem ir ierobežotas tiesības uz noteiktiem konfigurācijas objektiem, šādu objektu pieprasījumā ir jāizmanto atslēgvārds ATĻAUTA lai pieprasījums tiktu izpildīts bez kļūdām (Atlasiet Atļauts...)

7. Apvienojot tabulas, kurās ir ligzdotas tabulas (piemēram, dokuments ar tabulas daļa) var būt noderīgs atslēgvārds IZTUKOJAMS kad, piemēram, kādam no dokumentiem nav tabulas daļas.

VISU APVIENOT

NO Dokuments.Rēķins

8. Strādājot ar tabulu savienojumiem, kuros ir viena rinda, var būt nepieciešams tabulu rindas sapludināt (abās tabulās nav lauka, ar kuru tās varētu savienot). To var panākt, izmantojot konstrukciju " PILNA SAVIENOJUMA tabula Ar TRUE" Ja tabulās ir vairāk nekā viena rinda, rezultāts būs rindu skaits, kas vienāds ar abu tabulu rindu skaita reizinājumu. Ja vienā tabulā ir O rindas, tad iegūtajā tabulā rindu skaits būs vienāds ar rindu skaitu otrajā tabulā. Tāpat, lai savienotu šādas tabulas, var izmantot tabulu Dekarta reizinājumu, kurā iegūtajā tabulā parādīsies visas abu tabulu rindu kombinācijas. Jāatceras, ka, ja vienā no tabulām ir 0 rindas, tad Dekarta reizinājums būs 0, tātad pilnīgs savienojums būs labāks. Kopumā pilnīga savienojuma vietā PATIESĪGI Varat izmantot jebkuru citu savienojuma veidu, taču šajā gadījumā ir arī iespējams, ka iegūtajā tabulā būs 0 rindu, pat ja vienā no tabulām rindu skaits nav nulle. Pilna savienojuma gadījumā šāda situācija radīsies tikai vienā gadījumā, ja rindu skaits abās tabulās ir 0. Ja zināt, ka tabulā ir tieši vismaz viena rinda, tad var izmantot KREISAIS SAVIENOJUMS ar citu galdu ar nosacījumu PATIESĪGI.

Piemērs (atzīst, izdomāts, pilnam pievienošanās veidam):

IZVĒLIES

K. Darījuma partneris

Uzskaitījums Dzimums AS Dzimums

PILNS SAVIENOJUMS (Atlasiet pirmo 1 D. Darījuma partneris NO dokumenta. Preču pārdošana KĀ D Sakārtot pēc D. Laika momenta) KĀ

IESLĒGTS (TRUE)

9. Lai iegūtu unikālus ierakstus noteiktam laukam, pareizāk ir izmantot atslēgvārdu, nevis grupēt DAŽĀDI pieprasījumā, jo šī konstrukcija ir daudz skaidrāka un atslēgvārds GROUP BY ir plašāks pielietojums un bieži tiek izmantots, ja papildus nepieciešams aprēķināt summētās funkcijas pa grupējumiem. Dažos gadījumos ir nepieciešams izvadīt ierobežotu skaitu rindu. Lai to izdarītu, pieprasījuma aprakstā jānorāda atslēgvārds PIRMAIS un pēc tā - nepieciešamais rindu skaits.

Piemērs priekš PIRMAIS:

Izvēlieties First 5

Katalogs.Nomenklatūra.Nosaukums,

Directory.Nomenclature.PurchasingPrice

Kārtot pēc

Directory.Nomenclature.PurchasePrice dilstošā secībā

Piemērs priekš DAŽĀDI:

Atlasiet Dažādi

Dokuments.Patērējamās preces.Darījuma partneris

10. Apkopošanas funkcijas vaicājumā var izmantot bez atslēgvārda GRUPA. Šajā gadījumā visi rezultāti tiks sagrupēti vienā rindā.

Izvēlieties

Summa(Rēķins.Summa) Kā Summa

Dokuments.Rēķins.Sastāvs kā rēķins

11. Vaicājumos atlases laukos varat brīvi piekļūt atlases lauku detaļām. Šo funkciju sauc par atlases lauka atsauču atcelšanu. Ja datu avots ir ligzdota tabula (dokumenta tabulas daļa), tad atlases laukos var piekļūt arī galvenās tabulas laukiem (piemēram, caur Saite lauku piekļūt galvenās tabulas laukam Konts)

IZVĒLIES


Preču un pakalpojumu saņemšana Preču daudzums AS Daudzums,
Preču un pakalpojumu saņemšanaPreces.Saite.Darījuma puse
NO

KUR
Preču un pakalpojumu saņemšanaGoods.Link = &Saite

Ja pieprasījumā ir grupējumi, lauku atsauču izmantošanai ir viena īpatnība. Jebkuros vaicājumos ar grupējumiem vaicājumu lauku sarakstos varat brīvi piekļūt grupēšanas lauku detaļām.

IZVĒLIES

Preču un pakalpojumu preču nomenklatūra.

Preču un pakalpojumu saņemšana Preču nomenklatūra.

SUM (Preču un pakalpojumu preču saņemšana. Daudzums) AS Daudzums,

Preču un pakalpojumu saņemšana KĀ Preču un pakalpojumu saņemšana

GROUP BY

Preču un pakalpojumu preču nomenklatūra.

1C palīdzībā teikts, ka, ja ir grupēšana, vaicājuma atlases laukos var piedalīties tikai atlases lauku grupēšanas lauki un apkopošanas funkcijas. Ir viens izņēmuma gadījums, kad apkopotās funkcijas tiek lietotas ligzdotas tabulas laukiem. Šajā gadījumā atlases lauku sarakstā ir iespējams piekļūt augstākā līmeņa tabulas laukiem, negrupējot rezultātus pēc šiem laukiem.

IZVĒLIES

Preču un pakalpojumu saņemšana (SUM (daudzums), nomenklatūra).

Preču un pakalpojumu saņemšana

Preču un pakalpojumu saņemšanas dokuments KĀ Preču un pakalpojumu saņemšana

GROUP BY

Preču un pakalpojumu saņemšana (nomenklatūra).

12. Dažkārt tā vietā, lai norādītu kādu grupējuma lauku, ir lietderīgi vaicājuma atlases laukos iekļaut šādu parametru:

IZVĒLIES
DocProducts.Nomenklatūra,
&Darījuma partneris,
&Periods,
SUM(DocProducts.Quantity * DocProducts.K) AS Daudzums,
SUM(DocProducts.Amount) AS Summa
NO
Dokuments.Uzņemšana.Produkti AS DocProdukti
KUR
DocProducts.Link = &Saite

GROUP BY
DocProdukti.Nomenklatūra

Un pēc tam iestatiet parametru pieprasījuma pamattekstā:

Request.SetParameter("&Account", SelectAccount);

Query.SetParameter("&Periods", datums);

13. Universālajos vaicājumos parametrus var izmantot vaicājuma datu avotu aprakstā, nosacījumos KUR, tabulu un virtuālo tabulu parametru savienošanas nosacījumos. Pastāv divas vispārīgu vaicājumu izveides metodes:

A) izmantojot virkņu savienošanas mehānismu, mainīgo pievienošana pieprasījuma tekstam;

OrderingType = ?(DAŽI MAINĪGIE,"","DESC");

Query.Text = "Atlasīt... Sakārtot PĒC 1. lauka " + OrderType + "...";

Query.Text = "Atlasīt 1. lauku...";

Ja SOME VARIABLE = 1 Tad

Request.Text = Request.Text + ",Field2 ...";

endIf;

B) izmantojiet parametrus dažādās pieprasījuma daļās (piemēram, pieprasījuma datu avotu sadaļā), un pēc tam iebūvēto valodas metodi - STREPLACE(). Veidojot vispārīgus vaicājumus, ir lietderīgi piekļūt objektu īpašībām METADATI(), ar kuru var noteikt tabulas nosaukumu kādai saitei (piemēram, dokumentam tas būs apmēram šādi - Saite . METADATI().NAME), kas nodots caur parametru kādai universālai procedūrai.

Izvēlieties

DocTch.Nomenclature,

&Daži DocTC AS DocTC

Un pēc tam iestatiet parametru pieprasījuma pamattekstā

Request.Text = StrReplace(Request.Text, "&SomeDocTCH", "Document."+Link.Metadata().Nosaukums+.Produkti");

Parametrus var izmantot vaicājuma nosacījumos, lai iespējotu neobligātu nosacījumu &Parametrs VAI NAV kaut kāds īpašums:

Request.SetParameter(“&Parameter”, “Darījuma partneris.Nosaukums=””Ivanovs”””);

Izmantojot burtu PATIESA Pieprasījumā varat noņemt noteiktus filtrus

Request.SetParameter("&Parameter", True);

14. Ļoti noderīga vaicājumu noformētājā ir tabulas konteksta izvēlnes komanda - " Pārdēvēt tabulu...", ar kuru jūs varat izdomāt datu avotam kādu vispārīgu nosaukumu. Lai izveidotu vaicājumus viena veida tabulām, līdzīgas struktūras, var būt noderīgi otrajai tabulai kopēt pirmās tabulas vaicājuma tekstu, dodieties uz vaicājumu dizainera logs un konteksta izvēlne tabulas atlasiet vienumu - Nomainiet galdu... un atlasiet otro tabulu.

15. Strādājot ar ligzdotu vaicājumu izveidi vaicājumu noformētāja virtuālo tabulu nosacījumu vai parametru sadaļās, tiek izmantota atstarpes izcelšanas tehnika iekavās, pēc tam konteksta izvēlnē parādās vienums “Vaicājumu noformētājs” un rediģējot ligzdotu vaicājumu, nosacījumā tiek izcelts viss vaicājums iekavās.

Ligzdota vaicājuma piemērs:

Produkts B (atlasiet produktu...)

16. Veidojot ACS atskaites vaicājumos, lai līdzsvarotu reģistrus, ir ērtāk un pareizāk izmantot izteiksmi kā Period parametru. Pievienošanas datums( beigu periods(periods, DAY), SECOND, 1), jo virtuālie atlikumi tiek iegūti perioda sākumā, neskaitot pēdējo sekundi. +1 sekundes paņēmienu nevar izmantot ar dokumentiem: saskaņā ar jauno dokumentu grāmatošanas metodi reģistra atlikumiem jābūt saņemtiem par Robežas objekta norādīto Periodu ar dokumenta datēšanas brīdi, ieskaitot (nevis datumu). dokuments +1 sekunde!), un pēc vecās grāmatošanas metodes - dokumenta brīdī (nevis dokumenta datumā!). Analizējot apgrozījumu vai datus par periodu, ir ērti pievienot parametru ar veidu Standarta periods(šajā gadījumā nav nepieciešams norādīt intervāla pēdējo datumu dienas beigās). Standarta laukā “Perioda sākums” laukā “Izteiksme” ir jāievada "&Periods. Sākuma datums" Un standarta laukam “Perioda beigas” laukā “Izteiksme” ierakstiet “ &Periods.Beigu datums". Tik daudz noderīga informācija vaicājuma valodu var atrast nevis sintakses palīgā, bet gan 1C 8.2 konfiguratora pilnā palīdzībā (poga F1)

17.Vaicājuma funkcija IsNull(ērtāk ir rakstīt angļu valodas versiju IsNull) parasti izmanto, lai atbrīvotos no Null vērtībām skaitliskajos vaicājuma laukos. Dažos gadījumos, piemēram, divu tabulu pilnīga savienošana, funkcija IsNull (Parameter1, Parameter2) var veiksmīgi aizstāt dizainu IZVĒLE, KAD... TAD..CITI....BEIGAS, kad jebkuram laukam NULL vērtības var būt gan pirmajā, gan otrajā tabulā (šī konstrukcija ļauj laukam iegūt vērtību, kas nav Null). Bet mums tas ir jāatceras, atšķirībā no nosacījuma operatora IZVĒLE funkciju IsNull pārvērš otrā argumenta veidu uz pirmā argumenta veidu, kas jāņem vērā, ja argumentu veidi atšķiras!

IsNull(Reg.Remaining,0)

IsNull(Doc.Product,Doc1.Item)

18. Pie nosacītās konstrukcijas IZVĒLE Ir alternatīva sintakse vienkāršam gadījumam, kad tiek pārbaudīta vienlīdzība ar noteiktu vērtību, taču tā ir nedokumentēta:

Izvēles izteiksme, kad 1, tad “augsta”, kad 2, tad “vidēja”, citādi “zema” beigas

19. NULL vērtības pārbaudes operators Jā Null(Mēs varam ieteikt izmantot angļu valodas versiju Ir Null). Šī konstrukcija parādījās tāpēc, ka jebkura darbība, kas salīdzina divas vērtības, no kurām vismaz viena ir Null, vienmēr ir nepatiesa. Rakstiet Kur Vārds = Null nepareizi. Interesanta ir arī noliegšanas forma šī operatora Nav Null- nepareizi, bet pareizi Jā Nav Null vai forma Nav (1. lauks ir nulle)- tā ir būtiska atšķirība no visiem operatoriem, kas tiek izmantoti kopā ar operatoru He.

20. Dažkārt noder operatora forma IN lai pārbaudītu atbilstību kādai no uzskaitītajām vērtībām.

...Kur atrodas Produkts.Nosaukums B ("Sadzīves tehnika", "Datori")

Uzziņu grāmatām var būt noderīga operatora forma IN hierarhijas dalības pārbaudes.

...Kur ir nomenklatūra HIERARHIJĀ (&Grupa)

Operators IN bieži izmanto, lai pārbaudītu, vai vērtība ir iekļauta apakšvaicājuma rezultātā.

Apakšvaicājumā varat piekļūt ārējiem vaicājuma laukiem stāvoklī.

// Atlasiet esošo produktu nosaukumus

// rēķinos

IZVĒLIES

Produkti.Nosaukums

Katalogs. Nomenklatūra KĀ Produkti

(IZVĒLIES

InvoiceComposition.Nomenklatūra

Document.Invoice.Composition AS InvoiceComposition

InvoiceContent.Nomenclature = Produkti.Saite)

Darbība IN var izmantot ar masīviem, vērtību sarakstiem, vērtību tabulām, ligzdotiem vaicājumiem. Šajā gadījumā ir iespējams samazināt apstākļus

Apakšvaicājuma sintakse

(izteiksme1, izteiksme2,...,izteiksmeN) In (Atlasiet izteiksmi1, izteiksme2,...,izteiksmeN...)

Sintakse vērtību tabulai

(izteiksme1, izteiksme2,...,izteiksmeN) In (&TK), kur TK vērtību tabulā tiek izmantotas pirmās N kolonnas

20. Internetā ir joks par to, kā vaicājumu izstrādātājam vienmēr klājas PA kreisi tabulu savienošana (un to maiņa), neatkarīgi no tā, kā mēs to norādām PAREIZI:

1C: uzņēmums mīl “pa kreisi”.

21. Sarežģīti vaicājumiērti atkļūdot vaicājumu konsolē. Internetā tādu ir daudz. Pēc vaicājuma atkļūdošanas varat to nokopēt, un vaicājuma noformētājā ir brīnišķīga poga “ Pieprasīt", kur to var ielīmēt tādā pašā formā un saglabāt (iepriekš to bija iespējams nokopēt tikai konfiguratorā un formatēt pieprasījumu, izmantojot rindiņas pārtraukuma rakstzīmi). Logā, kas tiek atvērts, noklikšķinot uz pogas “Vaicājums”, varat rediģēt vaicājumu un apskatīt izpildes rezultātu, kas ir diezgan ērti.

22.Veidojot ACS atskaites, jāatceras, ka, ja nepieciešams nodrošināt filtrēšanu pēc noteikta lauka, nav nepieciešams parametrs pievienot pieprasījuma tekstam. Vaicājumu veidotājā ir cilne " Datu sastāvs", kur nosacījumiem varat pievienot parametrus. Turklāt ACS pārskata līmenī ir nosacījumu cilne, kurā varat pievienot patvaļīgus nosacījumus un saglabāt tos ātrie iestatījumi. Šajā gadījumā nosacījumi būs universāli (vienlīdzība, nevienlīdzība, piederība, iekļaušana sarakstā utt.).

23. Strādājot ar dokumentiem, iespējams, būs jāpievieno kārtošana pēc virtuālās tabulas lauka LAIKA MIRKLIS, bet nepaveicās - ligzdotajos vaicājumos kārtošana pēc šī lauka nedarbojas pareizi. Dejošana ar tamburīniem palīdz: šķirošana pēc virtuālā lauka LAIKA MIRKLIS tiek aizstāts ar diviem šķirošanas veidiem: pēc datuma un pēc saites. Varat arī atrisināt problēmu, izmantojot pagaidu tabulu, pārvietojot ligzdoto vaicājumu uz atsevišķu vaicājumu. Daudzos laidienos šī funkcija vai kļūda nav novērsta.

Nepareizas darbības pieprasījuma piemērs, kas saņem pēdējo nosūtīto dokumentu par norādīto darījuma partneru (vai drīzāk, tabulas daļa dokuments):

IZVĒLIES

Palīgmateriāli. Līnijas numurs,

ConsumableProducts.Produkts,

Patērējamās preces. Daudzums,

Patērējamo preču cena,

ConsumableItems.Amount

Dokuments.Palīgmateriāls AS D

Iespējamie risinājumi:

A) Aizstāt ar PASŪTĪT PĒC ieslēgts

PASŪTĪT PĒC D.Datums DESC.

B) Jūs varat pārvietot ligzdoto vaicājumu uz pagaidu tabulu:

Dokuments.Palīgmateriāls AS D

Un D.Darījuma partneris = &Darījuma partneris

////////////////////////////////////////////////////////////////////////////////

IZVĒLIES

Palīgmateriāli. Līnijas numurs,

ConsumableProducts.Produkts,

Patērējamās preces. Daudzums,

Patērējamo preču cena,

ConsumableItems.Amount

Dokuments.Palīgmateriāli.Preces AS PalīgmateriāliPreces

C) Varat atsaukties uz dokumenta galveno tabulu un tikai pēc tam uz tabulas daļu

IZVĒLĒTIES TOP 1

LineNumber,

Produkts,

Daudzums,

cena,

Summa

Dokuments.Palīgmateriāli AS Palīgmateriāli

Izdevumi.Darījuma partneris = &Darījuma partneris

Un Palīgmateriāli. Veikta

PASŪTĪT PĒC

Patērējams.Laika brīdis SAMAZINĀJUMS

24. Piekļūstot dokumenta (direktorija) galvenajai tabulai, var piekļūt arī pakārtotās tabulas (tabulas daļas) datiem. Šo iespēju sauc tabulas lauku atsauču atcelšana. Uzdevuma piemērs ir uzdevums tabulas sadaļā meklēt dokumentus, kas satur konkrētu produktu.

Šī vaicājuma priekšrocība salīdzinājumā ar vaicājumu ligzdotajā tabulā Receipt.Goods ir tāda, ka, ja dokumentos ir dublikāti, vaicājuma rezultāts atgriezīs tikai unikālus dokumentus, neizmantojot atslēgvārdu. DAŽĀDI.

Salīdzināt:

Tas, iespējams, ir viss. Ir skaidrs, ka vaicājumu valodā joprojām ir daudz jautājumu, kurus es neesmu apskatījis. Lai uzrakstītu šo rakstu, es izmantoju informāciju, ko saņēmu pēc aizpildīšanas pamatkurss 1C 8.2 spec8.ru, kā arī no grāmatas “1C 8.2 Developer’s Guide” un interneta.

Tagad apskatīsim pārējo.

Funkcijas darbam ar virknēm 1C vaicājumos

Ir maz funkciju un operatoru darbam ar virkņu datiem 1C vaicājumos.

Pirmkārt, vaicājumos var pievienot virknes. Lai to izdarītu, izmantojiet operatoru “+”:

Pieprasīt. Teksts = "ATLASĪT
" "Rinda: " " + Source.Name
;

Otrkārt, jūs varat izvēlēties daļu no līnijas. Lai to izdarītu, izmantojiet funkciju SUBSTRUKCIJA. Funkcija ir līdzīga iebūvētajai 1C valodai. Tam ir trīs parametri:

  1. Avota virkne.
  2. Rakstzīmes numurs, ar kuru jāsākas atlasītajai rindai.
  3. Rakstzīmju skaits.

Pieprasīt. Teksts= "IZVĒLIES
SUBSTRING("
"Rinda:" ", 4, 3) Rezultātā";

// Rezultāts: labi Funkcija

ISNULL

NULL ir īpašs datu veids platformā 1C: Enterprise. Tā ir arī vienīgā iespējamā šāda veida vērtība. NULL vaicājumos var parādīties vairākos gadījumos: savienojot vaicājuma avotus, ja nevienā no tabulām netika atrasta atbilstoša vērtība; piekļūstot neesoša objekta detaļām; ja vaicājuma lauku sarakstā tika norādīts NULL (piemēram, apvienojot atlases rezultātus no vairākām tabulām) utt. Tā kā NULL nav ne nulle, ne tukša virkne, ne pat vērtība nenoteikts, bieži vien ir lietderīgi to aizstāt ar kādu noderīgāku datu tipu. Šim nolūkam funkcija ir paredzēta.

ISNULL.

  1. Tam ir divi parametri:
  2. Vērtība tiek pārbaudīta.

Pieprasīt. Teksts= "IZVĒLIES
Vērtība, ar ko aizstāt pirmo parametru, ja izrādās, ka tā ir NULL.
; ISNULL(avots.atlikušais, 0) AS atlikums"
// Ja pieprasījuma rezultāts ir lauka atlikums = NULL,

// tad tas tiks aizstāts ar 0, un ar to var veikt matemātiskas darbības IZPILDE Funkcijas Un

IEVADSSAITES IZPILDEŠīs funkcijas ir paredzētas dažādu vērtību virkņu attēlojuma iegūšanai. Tas ir, tie pārvērš atsauces, skaitļus, Būla vērtības utt. vienkāršā tekstā. Atšķirība starp tām ir funkcija Un pārvērš visus datu tipus tekstā (virknē) un funkciju

Pieprasīt. Teksts= "IZVĒLIES
- tikai saites un atgriež atlikušās vērtības tādas, kādas tās ir, nevis konvertētas.
REPREZENTĀCIJA (TRUE) KĀ Būla,
ATZĪMĒJUMS (4) KĀ numurs,
REPREZENTĀCIJA (Source.Link) AS saite,
;
REPREZENTĀCIJA(DATETIME(2016,10,07)) KĀ Datums"
// Būla = "Jā", Skaitlis = "4", Saite = "Dokuments Kases ieņēmumu orderis Nr.... no..."

Pieprasīt. Teksts= "IZVĒLIES
// Datums = "07.10.2016 0:00:00"
REPREZENTĀCIJAS ATSAUCES (TRUE) KĀ Būla,
ATTIECĪBAS ATSAUCE(4) KĀ SKAITS
PRESENTINGLINK(Source.Link) AS saite,
;
REPREZENTĀCIJAS ATSAUCES(DATETIME(2016,10,07)) KĀ Datums"
// Būla = TRUE, Number = 4, Link = "Dokumentēt Kases ieņēmumu orderi Nr.... no..."

// tad tas tiks aizstāts ar 0, un ar to var veikt matemātiskas darbības // Datums=07.10.2016 0:00:00 Funkcijas VEIDS

// Rezultāts: labi // Datums=07.10.2016 0:00:00 TIPA VĒRTĪBAS

Pieprasīt. Teksts= "IZVĒLIES
atgriež platformas datu tipu 1C: Enterprise.
TYPE (numurs)
TYPE (virkne),
;

// Rezultāts: labi VEIDS VEIDS (dokuments. Izdevumu skaidras naudas pārvedums)"

Pieprasīt. Teksts= "IZVĒLIES
atgriež tam nodotās vērtības veidu.
VĒRTĪBU VEIDS (5) AS Skaitlis,
TYPE (" "Līnija"
") AS virkne,
TIPS (Source.Link) AS Atsauce
;
//Number=Number, String=String, Directory = DirectoryLink.Source

Šīs funkcijas ir ērti lietojamas, piemēram, ja nepieciešams noskaidrot, vai pieprasījumā saņemtais lauks ir kāda veida vērtība. Piemēram, darījuma partneru kontaktinformāciju iegūsim no ContactInformation informācijas reģistra (ne tikai darījuma partneru, bet arī organizāciju kontakti, privātpersonām utt.):

Pieprasīt. Teksts= "IZVĒLIES

NO

KUR
VĒRTĪBU VEIDS(Kontaktinformācija.Objekts) = VEIDS(Katalogs.Darījuma partneri)"
;

// Rezultāts: labi NOZĪME

// Rezultāts: labi Nozīmeļauj izmantot 1C konfigurācijas objektus tieši pieprasījumā, neizmantojot .

Iepriekšējam piemēram pievienosim vēl vienu nosacījumu. Jums jāiegūst tikai darījumu partneru tālruņu numuri.

Pieprasīt. Teksts= "IZVĒLIES
Kontaktinformācija.Ievads
NO
Informācijas reģistrs Kontaktinformācija KĀ Kontaktinformācija
KUR
VĒRTĪBU VEIDS(Kontaktinformācija.Objekts) = VEIDS(Katalogs.Darījuma partneri)
UN ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Jāņem vērā, ka šo funkciju var izmantot tikai ar iepriekš definētām vērtībām, t.i. ar vērtībām, kurām var piekļūt tieši no konfiguratora. Tas ir, funkcija NOZĪME nevar izmantot ar lietotāju izveidotiem direktoriju elementiem, bet var darboties ar uzskaitījumiem, ar iepriekš definētiem direktorija elementiem, ar vērtībām EmptyLink.

Operators SAITE

Operators SAITE ir paredzēts, lai pārbaudītu ar pieprasījumu atgrieztās vērtības, lai noskaidrotu, vai tās pieder noteiktam atsauces veidam. To pašu uzdevumu var veikt, izmantojot funkcijas // Datums=07.10.2016 0:00:00 Funkcijas VEIDS(kuriem ir plašāka darbības joma un kas tika apspriesti iepriekš).

Piemēram, uzdevumu izvēlēties darījuma partneru kontaktinformāciju var atrisināt šādi:

Pieprasīt. Teksts= "IZVĒLIES
Kontaktinformācija.Ievads
NO
Informācijas reģistrs Kontaktinformācija KĀ Kontaktinformācija
KUR
ContactInformation.Object LINK Directory.Counterparties"
;

Operators EXPRESS

Operators EXPRESS izmanto 1C vaicājumos divos gadījumos:

  • kad jāmaina primitīvā tipa īpašības;
  • kad jums ir jāpārvērš lauks ar saliktu datu tipu par lauku ar vienu tipu.

Primitīvie datu veidi ietver: numurs, virkne, datums, Būla vērtība. Dažiem no šiem datu veidiem ir papildu īpašības. Tips Numurs ir garums un precizitāte, veids Līnija - garums vai neierobežots.

Operators EXPRESSļauj mainīt nevis datu tipu, bet gan papildu raksturlielumus. Piemēram, viņš var pārvērst neierobežota garuma virkni par virkni ar ierobežotu garumu. Tas var būt noderīgi, ja nepieciešams grupēt vaicājuma rezultātus pēc šāda lauka. Jūs nevarat grupēt pēc laukiem ar neierobežotu garumu, tāpēc mēs to pārvēršam par virkni, kuras garums ir 200 rakstzīmes.

Pieprasīt. Teksts= "IZVĒLIES
DAUDZUMS (ATŠĶIRĪGA Preču un pakalpojumu saņemšana. Saite) AS Saite
NO
Preču un pakalpojumu saņemšanas dokuments KĀ Preču un pakalpojumu saņemšana
GROUP BY
EXPRESS(Preču un pakalpojumu saņemšana. Komentēt KĀ RINDA (200)"
;

Dažos gadījumos vaicājumus laukiem ar saliktu datu tipu platforma 1C var neapstrādāt optimāli. Tas rada ilgāku vaicājuma laiku, tāpēc var būt noderīgi iepriekš pārveidot salikto tipu par vienu veidu.

Pieprasīt. Teksts= "IZVĒLIES
EXPRESS (Preču kustība, apgrozījums. Pasūtījums kā dokuments. Klienta pasūtījums). Datums AS Pasūtījuma datums,
Preču apriteApgrozījums. Nomenklatūra
NO
ReģistrētiesUzrājumi.Preču kustība.Apgrozījums AS Preču kustībaApgrozījums
KUR
Preču kustībaApgrozījums.Pasūtījums LINK Dokuments.Klienta pasūtījums"
;

Operatori IZVĒLE Funkcijas IR NULL

Operators IZVĒLE līdzīgi operatoram JA iebūvētajā 1C valodā, taču tam ir nedaudz samazināta funkcionalitāte.

Teiksim, vēlamies saņemt kontaktinformāciju no ContactInformation informācijas reģistra un vienlaikus atsevišķā pieprasījuma laukā norādīt, vai tā pieder darījuma partnerim vai fiziskai personai.

Pieprasīt. Teksts= "IZVĒLIES
Kontaktinformācija. Ievads,
IZVĒLE
KAD VĒRTĪBAS VEIDS(Kontaktinformācija.Objekts) = VEIDS(Katalogs.Darījuma partneri)
TAD "
Darījuma partneris "
CITA IZVĒLE
KAD VĒRTĪBAS VEIDS(Kontaktinformācija.Objekts) = TIPS(Katalogs.Privātpersonas)
TAD "
Individuāls"
Cits "Kāds cits" "
BEIGAS
BEIGAS KĀ ĪPAŠNIEKS
NO
Informācijas reģistrs Kontaktinformācija AS Kontaktinformācija"
;

Kā redzams no piemēra, dizainā IZVĒLE aiz vārda vienmēr ir nosacījums KAD; vērtība tiek lietota, ja nosacījums ir patiess aiz vārda TAD un vērtība, kas tiek lietota, ja nosacījums nav izpildīts, aiz vārda CITĀDI. Visi trīs dizaina elementi IZVĒLE ir obligātas. Izlaist elementu CITĀDI, tāpat kā izmantojot operatoru JA iebūvētajā 1C valodā tas nav iespējams. Arī no operatora IZVĒLE dizainam nav analoga ELSEIF, bet jūs varat ieguldīt vienu IZVĒLE citā, kā tas tika darīts mūsu piemērā.

Operators IR NULL izmanto dizainā IZVĒLE lai salīdzinātu vaicājuma lauku ar tipu NULL.

Pieprasīt. Teksts= "IZVĒLIES
IZVĒLE
KAD VĒRTĪBA IR NULL, TAD 0
CITA Nozīme
BEIGAS"
;

Turklāt operators IR NULL var izmantot vaicājuma nosacījumos, piemēram, teikumā KUR.

Nesaderīgi veidi "EXPRESS"- šis ziņojums tiek parādīts, kad 1C 8.2 vai 8.3 programmētājs mēģina salīdzināt divus dažādus veidus.

Funkcija Express() ļauj iestatīt 1C pieprasījuma lauka vērtību noteiktu veidu. Tas var būt nepieciešams divos gadījumos:

1. Iegūstiet vajadzīgo skaitļu ietilpību vai nepieciešamo virknes vērtības rakstzīmju skaitu. Rakstzīmju skaits neierobežota tipa laukos ir jāierobežo noteiktu funkciju dēļ.

Saņemiet 267 video nodarbības 1C bez maksas:

Piemēram:

EXPRESS(Nomenklatūra.Komentārs AS STRING(300))
EXPRESS(Nomenklatūra.Cena KĀ NUMURS(15, 2)) KĀ Summa

2. Saliktā tipa lauku pārveidojiet par viena tipa lauku. Tas var būt vajadzīgs nolūkos. Ja drukātā laukā ir cita veida vērtība, sistēma atgriezīs NULL, tāpēc vienmēr ir nepieciešams papildus iestatīt nosacījumu sadaļā “WHERE”, ierobežojot to ar operatoru LINK.

Piemēram:

IZVĒLIES

EXPRESS (Pārdošana. Reģistra AS dokuments. Ieviešana)

NO

KUR Pārdošana. Reģistratūra SAITE Dokuments. Ieviešana

Kā izvairīties no kļūdām

Ja sintakse tiek izmantota nepareizi, var rasties tādas kļūdas kā "Nesaderīgi veidi EXPRESS...".

Piemēram, konstrukcija “EXPRESS(“123″ AS NUMBER(5, 2)) AS SUM” tiek uzskatīta par kļūdainu, jo pieprasījumu nevar pārveidot no viena veida uz citu, izmantojot standarta metodes.

Ja jūs sākat apgūt 1C programmēšanu, mēs iesakām mūsu bezmaksas kurss(neaizmirsti