Məlumat kompozisiya sisteminin ifadə dili sistemin müxtəlif hissələrində istifadə olunan ifadələri yazmaq üçün nəzərdə tutulmuşdur.
İfadələr aşağıdakı alt sistemlərdə istifadə olunur:
İfadə hərflərdən ibarət ola bilər. Aşağıdakı hərf növləri mümkündür:
Sətir hərfi “” simvolları ilə yazılır, məsələn:
“String hərfi”
Əgər sətir hərfi daxilində “” simvolundan istifadə etmək lazımdırsa, iki belə simvoldan istifadə etməlisiniz.
Məsələn:
"Hərfi """""""
Nömrə boşluq olmadan, onluq formatda yazılır. Kəsr hissəsi "." işarəsi ilə ayrılır. Məsələn:
10.5 200
Tarix hərfi DATETIME açar hərfi ilə yazılır. Bundan sonra açar söz, mötərizədə vergüllə ayrılaraq il, ay, gün, saat, dəqiqə, saniyə qeyd olunur. Vaxt spesifikasiyası tələb olunmur.
Məsələn:
DATETIME(1975, 1, 06) – 6 yanvar 1975 DATETIME (2006, 12, 2, 23, 56, 57) – 2 dekabr 2006, 23 saat 56 dəqiqə 57 saniyə, 23 saat 56 dəqiqə 57 saniyə
Məntiqi dəyərlər True (True), False (False) hərflərindən istifadə etməklə yazıla bilər.
Digər növ literalları (sistem sadalamaları, əvvəlcədən təyin edilmiş məlumatlar) müəyyən etmək üçün Value açar sözündən istifadə olunur, ardınca mötərizə içərisində hərfin adı verilir.
Dəyər(Hesab Növü. Aktiv)
Bu əməliyyat ədədin işarəsini əks işarəyə dəyişmək üçün nəzərdə tutulub. Məsələn:
Satış. Miqdar
Bu əməliyyat nömrə üzərində heç bir hərəkəti yerinə yetirmir. Məsələn:
Satış. Miqdar
Bu əməliyyat iki ədədin fərqini hesablamaq üçün nəzərdə tutulub. Məsələn:
QalıqlarVə Dövrlər.İlkin Qalan – QalıqlarVə Dövrlər.Son QalıqlarQalıqlarVə Dövrlər.İlkin Qalan - 100 400 – 357
Bu əməliyyat iki ədədin cəmini hesablamaq üçün nəzərdə tutulmuşdur. Məsələn:
QalanlarVə Dövr.İlkin Qalan + QalanVə Dövr.Dövriyyə QalıqlarıVə Dövriyyə.İlkin Qalan + 100 400 + 357
Bu əməliyyat iki ədədin hasilini hesablamaq üçün nəzərdə tutulmuşdur. Məsələn:
Nomenklatura.Qiymət * 1.2 2 * 3.14
Bu əməliyyat bir operandın digərinə bölünməsinin nəticəsini əldə etmək üçün nəzərdə tutulmuşdur. Məsələn:
Nomenklatura.Qiymət / 1.2 2 / 3.14
Bu əməliyyat bir operand digərinə bölündükdə qalanı əldə etmək üçün nəzərdə tutulmuşdur. Məsələn:
Nomenklatura Qiymət % 1.2 2 % 3.14
Bu əməliyyat iki sətir birləşdirmək üçün nəzərdə tutulmuşdur. Məsələn:
Nomenklatura.Maddə + “: ”+ Nomenklatura.Ad
Bu əməliyyat sətirin ötürülən nümunəyə uyğun olub olmadığını yoxlayır.
LIKE operatorunun dəyəri əgər dəyərdirsə TRUE-dur<Выражения>nümunəni təmin edir, əks halda FALSE.
Aşağıdakı personajlar<Строке_шаблона>sətirdəki başqa bir simvoldan fərqli bir məna daşıyır:
Hər hansı digər simvol özü deməkdir və heç bir əlavə yük daşımır. Sadalanan simvollardan birinin özü kimi yazılması lazımdırsa, ondan əvvəl olmalıdır<Спецсимвол>, SPECIAL CHARACTER açar sözündən (ESCAPE) sonra müəyyən edilir.
Məsələn, şablon
“%ABV[abvg]\_abv%” XÜSUSİ XARAKTER “\”
simvollar ardıcıllığından ibarət alt sətir deməkdir: A hərfi; B hərfləri; B hərfləri; bir rəqəm; a, b, c və ya d hərflərindən biri; alt xətt çəkmək; a hərfləri; hərflər b; məktublar v. Üstəlik, bu ardıcıllığı sətirdəki ixtiyari mövqedən başlayaraq yerləşdirmək olar.
Bu əməliyyat bərabərlik üçün iki operandın müqayisəsi üçün nəzərdə tutulub. Məsələn:
Satış.Qarşı tərəf = Satış.Nomenklatura Əsas Təchizatçı
Bu əməliyyat bərabərsizlik üçün iki operandın müqayisəsi üçün nəzərdə tutulmuşdur. Məsələn:
Satış. Qarşı tərəf<>Satış.Nomenklatura Əsas Təchizatçı
Bu əməliyyat birinci operandın ikincidən kiçik olduğunu yoxlamaq üçün nəzərdə tutulub. Məsələn:
SatışCari.Məbləğ< ПродажиПрошлые.Сумма
Bu əməliyyat birinci operandın ikincidən böyük olduğunu yoxlamaq üçün nəzərdə tutulub. Məsələn:
SatışCari Məbləğ > SatışKeçmiş.Məbləğ
Bu əməliyyat birinci operandın ikincidən kiçik və ya ona bərabər olduğunu yoxlamaq üçün nəzərdə tutulub. Məsələn:
SatışCari.Məbləğ<= ПродажиПрошлые.Сумма
Bu əməliyyat birinci operandın ikincidən böyük və ya ona bərabər olduğunu yoxlamaq üçün nəzərdə tutulub. Məsələn:
SalesCurrent.Amount >= SalesPast.Amount
Bu əməliyyat ötürülən dəyərlər siyahısında dəyərin olub-olmadığını yoxlayır. Əgər dəyər tapılarsa, əməliyyatın nəticəsi True, əks halda isə False olacaqdır. Məsələn:
B elementi (&Məhsul1, &Məhsul2)
Əməliyyat müəyyən edilmiş məlumat dəstində dəyərin mövcudluğunu yoxlayır. Doğrulama verilənlər bazasında bir sahə olmalıdır. Məsələn:
Qarşı tərəfə satış
Əgər dəyər NULL olarsa, bu əməliyyat True qaytarır. Məsələn:
Satış.Qarşı tərəf NULLDUR
Əgər dəyər NULL deyilsə, bu əməliyyat True qaytarır. Məsələn:
Qarşı tərəf NULL DEYİL
Məntiqi əməliyyatlar Boolean tipli ifadələri operand kimi qəbul edir.
DEYİL əməliyyatı əgər onun operandı Yanlışdırsa True qaytarır, əgər operand True olarsa False. Məsələn:
Sənəd DEYİL. Yükgöndərən = Sənəd. Yükgöndərən
AND əməliyyatı hər iki operand Doğrudursa True, operandlardan biri False olduqda isə False qaytarır. Məsələn:
Sənəd.Yük alan = Sənəd.Yükgöndərən və Sənəd.Yük alan = &Qarşı tərəf
OR əməliyyatı onun operandlarından biri True olduqda True, hər iki operand yalan olduqda isə False qaytarır. Məsələn:
Sənəd.Yük alan = Sənəd.Yükgöndərən VEYA Sənəd.Yük alan = &Qarşı tərəf
Ümumi funksiyalar verilənlər toplusunda bəzi hərəkətləri yerinə yetirir.
Sum aqreqat funksiyası bütün təfərrüat qeydləri üçün arqument kimi ona ötürülən ifadələrin dəyərlərinin cəmini hesablayır. Məsələn:
Məbləğ(Satış.MəbləğDövriyyə)
Count funksiyası NULL-dan başqa dəyərlərin sayını hesablayır. Məsələn:
Miqdar (Satış. Qarşı tərəf)
Bu funksiya fərqli dəyərlərin sayını hesablayır. Məsələn:
Miqdar(Müxtəlif Satış.Qarşı tərəf)
Funksiya maksimum dəyəri alır. Məsələn:
Maksimum (Qalan. Miqdar)
Funksiya minimum dəyəri alır. Məsələn:
Minimum (Qalan. Miqdar)
Funksiya NULL olmayan dəyərlərin ortasını alır. Məsələn:
Orta(Qalan.Kəmiyyət)
Seçmə əməliyyatı müəyyən şərtlər yerinə yetirildikdə bir neçə dəyərdən birini seçmək üçün nəzərdə tutulub. Məsələn:
Məbləğ > 1000 olduqda, sonra məbləğ, əks halda 0 Sonu seçin
Müqayisə olunan dəyərlərin növləri bir-birindən fərqlidirsə, dəyərlər arasındakı əlaqələr növlərin üstünlüyünə əsasən müəyyən edilir:
Müxtəlif istinad növləri arasındakı əlaqələr müəyyən bir növə uyğun gələn cədvəllərin istinad nömrələri əsasında müəyyən edilir.
Məlumat növləri eynidirsə, dəyərlər aşağıdakı qaydalara uyğun olaraq müqayisə edilir:
Operandlardan birinin NULL olduğu istənilən əməliyyat NULL nəticə verəcəkdir.
İstisnalar var:
Əməliyyatlar aşağıdakı prioritetlərə malikdir (birinci sətir ən aşağı prioritetə malikdir):
Hesabla funksiyası müəyyən qruplaşdırma kontekstində ifadəni hesablamaq üçün nəzərdə tutulmuşdur. Funksiya aşağıdakı parametrlərə malikdir:
IN bu misalda nəticə qruplaşdırma qeydinin “Satış.Cəmi Dövriyyə” sahəsi üzrə məbləğin bütün tərtibatda eyni sahənin məbləğinə nisbəti olacaqdır.
Funksiya cari qeyd səviyyəsini əldə etmək üçün nəzərdə tutulub.
Səviyyə()
Növbəti sıra nömrəsini əldə edin.
NumberByOrder()
Cari qruplaşmada növbəti sıra nömrəsini qaytarır.
NumberByOrderInGroup()
Keçilmiş dəyərin formatlanmış sətrini əldə edin.
Format sətri uyğun olaraq qurulur format sətri 1C: Müəssisə.
Parametrlər:
Format(İnvoices.Sənəd məbləği, "NPV=2")
Parametrlər:
StartPeriod(TarixSaat(2002, 10, 12, 10, 15, 34), "Ay")
Nəticə:
01.10.2002 0:00:00
Funksiya müəyyən bir tarixdən müəyyən bir tarix çıxarmaq üçün nəzərdə tutulmuşdur.
Parametrlər:
EndPeriod(TarixSaat(2002, 10, 12, 10, 15, 34), "Həftə")
Nəticə:
13.10.2002 23:59:59
Funksiya tarixə müəyyən bir dəyər əlavə etmək üçün nəzərdə tutulmuşdur.
Parametrlər:
AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Ay", 1)
Nəticə:
12.11.2002 10:15:34
Funksiya iki tarix arasındakı fərqi əldə etmək üçün nəzərdə tutulmuşdur.
Parametrlər:
TARİX FƏRQİ(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "GÜN")
Nəticə:
Bu funksiya sətirdən alt sətir çıxarmaq üçün nəzərdə tutulmuşdur.
Parametrlər:
SUBSTRING(Hesablar.Ünvan, 1, 4)
Funksiya sətrin uzunluğunu müəyyən etmək üçün nəzərdə tutulmuşdur.
Parametr:
Xətt(Qarşı tərəflər.Ünvan)
Bu funksiya Tarix növü dəyərindən ili çıxarmaq üçün nəzərdə tutulmuşdur.
Parametr:
İL(Xərc.Tarix)
Bu funksiya Tarix növü dəyərindən rüb rəqəmini çıxarmaq üçün nəzərdə tutulmuşdur. Dörddəbir sayı adətən 1-dən 4-ə qədər dəyişir.
Parametr
Bu funksiya Tarix növü dəyərindən ay nömrəsini çıxarmaq üçün nəzərdə tutulmuşdur. Ayın sayı adətən 1 ilə 12 arasında dəyişir.
Bu funksiya Tarix növü dəyərindən ilin gününü əldə etmək üçün nəzərdə tutulmuşdur. İlin günü adətən 1 ilə 365 (366) arasında dəyişir.
Bu funksiya Tarix növü dəyərindən ayın gününü əldə etmək üçün nəzərdə tutulmuşdur. Ayın günü adətən 1 ilə 31 arasında dəyişir.
Bu funksiya Tarix növü dəyərindən ilin həftə nömrəsini əldə etmək üçün nəzərdə tutulmuşdur. İlin həftələri 1-dən başlayaraq nömrələnir.
Bu funksiya Tarix növü dəyərindən həftənin gününü əldə etmək üçün nəzərdə tutulmuşdur. Həftənin normal günü 1 (bazar ertəsi) ilə 7 (bazar) arasında dəyişir.
Bu funksiya Tarix növü dəyərindən günün saatını əldə etmək üçün nəzərdə tutulmuşdur. Günün saatı 0-dan 23-ə qədərdir.
Bu funksiya Tarix tipli dəyərdən saatın dəqiqəsini əldə etmək üçün nəzərdə tutulmuşdur. Saatın dəqiqəsi 0 ilə 59 arasında dəyişir.
Bu funksiya Tarix tipli dəyərdən dəqiqənin saniyəsini əldə etmək üçün nəzərdə tutulmuşdur. Dəqiqənin saniyəsi 0 ilə 59 arasında dəyişir.
Bu funksiya mürəkkəb növü ehtiva edə bilən ifadədən növü çıxarmaq üçün nəzərdə tutulmuşdur. İfadə tələb olunan tipdən başqa bir növü ehtiva edərsə, NULL qaytarılacaq.
Parametrlər:
Ekspres(Data.Props1, "Nömrə(10,3)")
Birinci parametrin dəyəri NULL olarsa, bu funksiya ikinci parametrin dəyərini qaytarır.
Əks halda, birinci parametrin dəyəri qaytarılacaq.
BəliNULL(Məbləğ(Satış.Məbləğ), 0)
Məlumat kompozisiyasının mühərrik ifadəsi qlobal ümumi konfiqurasiya modullarının funksiyalarına zəngləri ehtiva edə bilər. Belə funksiyaları çağırmaq üçün əlavə sintaksis tələb olunmur.
Bu nümunədə "QısaldılmışAd" funksiyası ümumi konfiqurasiya modulundan çağırılacaq.
Nəzərə alın ki, ümumi modul funksiyalarının istifadəsinə yalnız müvafiq məlumat kompozisiya prosessorunun parametri göstərildiyi halda icazə verilir.
Əlavə olaraq, ümumi modulların funksiyaları xüsusi sahə ifadələrində istifadə edilə bilməz.
8.2.14-ün qarşıdan gələn buraxılışı işığında mən məlumat kompozisiya sisteminin bəzi yeni funksiyalarını təsvir etməyə çalışacağam.
Redaktəni asanlaşdırmaq üçün verilənlərin tərtibatı diaqramını, tercihen xarici hesabatda açın.
Sorğu tipli verilənlər toplusunu əlavə edirik və ya əl ilə və ya sorğu tərtibatçısından istifadə edərək sadə bir sorğu yazırıq:
1. Girişə nəzarət sistemində sorğu qurun.
2. Girişə nəzarət sistemində hesablanmış sahələri qurun
3. Parametrlər nişanında məlumat düzümünü konfiqurasiya edin
4. 1C Enterprise proqramını işə salın 8.2.14. Hesabatı açın. Biz formalaşdırırıq, alırıq.
Yeni funksiyaların təsviri:
1. CurrentDate()
Sistem tarixini qaytarır. Düzəliş tərtibatını tərtib edərkən, tərtibatda mövcud olan bütün ifadələr CurrentDate() funksiyasını cari tarixin dəyəri ilə əvəz edir.
2. COMPUTEEXPRESSION()
Sintaksis:
İfadə hesablayın(,)
Təsvir:
Funksiya bəzi qruplaşdırma kontekstində ifadəni qiymətləndirmək üçün nəzərdə tutulmuşdur.
Funksiya qruplaşmaların seçilməsini nəzərə alır, lakin iyerarxik seçimləri nəzərə almır.
Funksiya həmin qruplaşmanın qrup seçimində qruplaşmaya tətbiq edilə bilməz. Məsələn, Nomenklatura qruplaşmasını seçərkən ifadədən istifadə edə bilməzsiniz Hesablayın İfadə("Cəmi(Cəm Dövriyyəsi), "Cəmi") > 1000. Ancaq belə bir ifadə iyerarxik seçimdə istifadə edilə bilər.
Əgər bitmə qeydi başlanğıc qeyddən əvvəldirsə, o zaman təfərrüatlı məlumatların hesablanması və hesablanması üçün qeydlər hesab olunur. məcmu funksiyalar itkin.
Ümumi cəm üçün interval ifadələrini hesablayarkən (Qruplaşdırma parametri GrandTotal olaraq təyin edilir) təfərrüatlı məlumatların hesablanması və məcmu funksiyaların hesablanması üçün heç bir qeydin olmadığı güman edilir.
Funksiya ifadəsi yaradan zaman düzən bağlayıcı İfadə hesablayın, əgər sıralama ifadəsində qruplaşdırmada istifadə olunmayan sahələr varsa, funksiyanı əvəz edir İfadə hesablayın haqqında NULL.
Seçimlər
Növ: Xətt. Qiymətləndiriləcək ifadə.
Növ: Xətt. İfadənin qiymətləndiriləcəyi kontekstdə qruplaşmanın adını ehtiva edir. Qruplaşdırma adı kimi boş sətir istifadə edilərsə, hesablama cari qruplaşmanın kontekstində həyata keçiriləcək. GeneralTotal sətri qruplaşdırma adı kimi istifadə olunarsa, hesablama ümumi ümumi kontekstdə həyata keçiriləcək. Əks halda, hesablama eyni adlı ana qruplaşma kontekstində həyata keçiriləcək.
Məsələn:
Məbləğ(Satış.Məbləği)/Hesabla("Cəmi(Satış.Məbləği)", "Cəmi")
Bu nümunədə nəticə sahə üzrə cəmin nisbəti olacaq Satış.Məbləğ Dövriyyə qeydlərin bütün tərtibatda eyni sahənin cəminə qruplaşdırılması;
Növ: Xətt. Parametr aşağıdakı dəyərləri qəbul edə bilər:
· Ümumi cəmi— ifadə bütün qruplaşdırma qeydləri üçün hesablanacaq.
· İyerarxiya— ifadə varsa, əsas iyerarxik qeyd üçün və əsas iyerarxik qeyd yoxdursa, bütün qruplaşma üçün qiymətləndiriləcək.
· Qruplaşdırma— ifadə cari qrup qruplaşdırma qeydi üçün qiymətləndiriləcək.
· QruplaşdırmaQeyriResurs— resurslar üzrə qrup qeydi üçün funksiya hesablanarkən, ifadə orijinal qruplaşmanın birinci qrup qeydi üçün hesablanacaq.
Funksiyanı hesablayarkən İfadə hesablayın() məna ilə QruplaşdırmaQeyriResurs Resurslara görə qruplaşdırılmayan qrup qeydləri üçün funksiya parametr dəyəri dəyərə bərabər olduqda hesablanacağı kimi hesablanır. Qruplaşdırma.
Məlumat kompozisiyasının tərtibatçısı, tərtibata qruplaşdırmanın həyata keçirildiyi resurs sahəsini çıxararkən məlumat kompozisiyasının tərtibatını yaradan zaman, funksiyadan istifadə edərək hesablanan tərtibata ifadə yerləşdirir. İfadə hesablayın() , parametri göstərir QruplaşdırmaQeyriResurs. Digər resurslar üçün adi resurs ifadələri resurs qruplaşmasına yerləşdirilir.
Növ: Xətt. Fraqmentin hansı qeyddən başlamalı olduğunu, hansı məcmu ifadə funksiyalarının hesablanacağını və məcmu funksiyalardan kənar sahə qiymətlərinin hansı qeyddən alınacağını göstərir. Dəyər aşağıdakılardan biri ola bilər:
· Birinci
· Son (Son)
· Əvvəlki
· Sonrakı (Sonrakı)
· Cari
· LimitingValue(Sərhəd dəyəri) LimitingValue
Növ: Xətt. Fraqmentin hansı qeydə davam etdirilməli olduğunu, hansında ifadənin məcmu funksiyalarının hesablanmalı olduğunu göstərir. Dəyər aşağıdakılardan biri ola bilər:
· Birinci. İlk qruplaşma qeydini əldə etmək lazımdır. Mötərizədə olan sözdən sonra bir ifadə təyin edə bilərsiniz, nəticəsi qruplaşmanın əvvəlindən ofset kimi istifadə olunacaq. Nəticədə alınan dəyər sıfırdan böyük tam ədəd olmalıdır. Məsələn, First(3) - qruplaşdırmanın əvvəlindən üçüncü qeydin alınması.
Əgər birinci qeyd qruplaşmadan kənardadırsa, o zaman qeydlərin olmadığı hesab edilir. Məsələn, 3 qeyd varsa və siz First(4) almaq istəyirsinizsə, onda heç bir qeyd olmadığı hesab edilir.
· Son (Son). Son qruplaşma qeydini əldə etməlisiniz. Mötərizədə olan sözdən sonra, nəticəsi qruplaşmanın sonundan ofset kimi istifadə ediləcək bir ifadə təyin edə bilərsiniz. Nəticədə alınan dəyər sıfırdan böyük tam ədəd olmalıdır. Məsələn, Last(3) - qrupun sonundan üçüncü qeydin alınması.
Əgər son giriş qruplaşmadan kənara çıxır, qeydlərin olmadığı hesab edilir. Məsələn, 3 qeyd varsa və siz Last(4) almaq istəyirsinizsə, onda heç bir qeyd olmadığı hesab edilir.
· Əvvəlki. Əvvəlki qruplaşdırma qeydini əldə etməlisiniz. Mötərizədə olan sözdən sonra, nəticəsi cari qruplaşdırma qeydindən geriyə ofset kimi istifadə ediləcək bir ifadə təyin edə bilərsiniz. Məsələn, Əvvəlki(2) - əvvəlki qeyddən əvvəlkini almaq.
Əvvəlki qeyd qruplaşdırmadan kənara çıxarsa (məsələn, ikinci qruplaşdırma qeydi üçün Əvvəlki(3) almaq lazımdır), onda birinci qruplaşdırma qeydi alınır.
Qruplaşdırma cəmi üçün əvvəlki qeydi əldə edərkən, ilk qeydin əldə edildiyi hesab olunur.
· Sonrakı (Sonrakı). Növbəti qruplaşdırma qeydini əldə etməlisiniz. Mötərizədə olan sözdən sonra, nəticəsi cari qruplaşdırma girişindən irəli ofset kimi istifadə olunacaq ifadəni təyin edə bilərsiniz. Məsələn, Next(2) - növbəti qeyddən sonrakı əldə etmək.
Əgər növbəti rekord qruplaşmadan kənara çıxarsa, o zaman qeydlərin olmadığı hesab edilir. Məsələn, 3 giriş varsa və üçüncü giriş Next() alırsa, onda heç bir giriş olmadığı hesab olunur.
Qruplaşma cəmi üçün növbəti qeyd alındıqda qeydin olmadığı hesab edilir.
· Cari. Cari rekordu əldə etməlisiniz.
Qruplaşdırma cəmi üçün axtarış zamanı ilk qeyd əldə edilir.
· LimitingValue(Sərhəd dəyəri). Müəyyən edilmiş dəyərlə qeyd əldə etmək ehtiyacı. Sözdən sonra LimitingValue mötərizədə fraqmentə başlamaq istədiyiniz dəyəri olan ifadəni, birinci sifariş sahəsini göstərməlisiniz.
Sifariş sahəsinin dəyəri göstərilən dəyərdən böyük və ya ona bərabər olan ilk qeyd qeyd kimi qaytarılacaq. Məsələn, Dövr sahəsi sifariş sahəsi kimi istifadə olunursa və onun 01/01/2010, 02/01/2010, 03/01/2010 dəyərləri varsa və siz almaq istəyirsinizsə LimitingValue(TarixSaat(2010, 1, 15)), sonra 02/01/2010 tarixli qeyd alınacaq.
Növ: Xətt. Sıralama qaydalarını təsvir edən vergüllə ayrılmış ifadələri sadalayır. Göstərilməyibsə, o zaman sıralama ifadənin qiymətləndirildiyi qruplaşma ilə eyni şəkildə həyata keçirilir. Hər ifadədən sonra bir açar söz təyin edə bilərsiniz Yaş(artan qaydada sifariş etmək üçün), Azalan(azalan qaydada sifariş etmək üçün) və Avtomatik sifariş(istinad edilən obyekti sifariş etmək istədiyiniz sahələr üzrə istinad sahələrini sifariş etmək üçün). Söz Avtomatik sifariş sözü ilə olduğu kimi istifadə edilə bilər Yaş, sözü ilə belə Azalan.
Növ: Xətt. Parametrlə eynidir Çeşidləmə. İerarxik qeydləri təşkil etmək üçün istifadə olunur. Göstərilməyibsə, layout qurucusu parametrdə göstərilən sifarişə uyğun olaraq sifariş yaradır Çeşidləmə.
Növ: Xətt. Eyni sifariş dəyərinə malik bir neçə qeyd olduğu halda əvvəlki və ya növbəti qeydin müəyyən edilməsi qaydasını müəyyən edir:
· Ayrı-ayrılıqdaəvvəlki və sonrakı qeydləri müəyyən etmək üçün sifarişli qeydlərin ardıcıllığından istifadə edildiyini göstərir. Defolt dəyər.
· Birlikdəəvvəlki və sonrakı qeydlərin sifariş ifadələrinin dəyərlərinə əsasən müəyyən edildiyini göstərir.
Məsələn, ortaya çıxan ardıcıllıq tarixə görə sıralanırsa:
№ | Tarix | Tam adı | Mənası |
1 | 01 yanvar 2001-ci il |
İvanov M. |
10 |
2 | 02 yanvar 2001-ci il | Petrov S. | 20 |
3 | 03 yanvar 2001-ci il | Sidorov R. | 30 |
4 | 04 yanvar 2001-ci il | Petrov S. | 40 |
Ayrı-ayrılıqda, Bu:
§ 3-cü girişə əvvəlki giriş 2-ci giriş olacaq.
Cari, Cari(müvafiq olaraq, parametrlər Başlayın Və Son), onda 2-ci qeyd üçün bu fraqment bir qeyd 2-dən ibarət olacaq. İfadə 20-yə bərabər olacaq.
Parametr dəyəri olarsa Birlikdə, Bu:
§ 3-cü girişə əvvəlki giriş 1-ci giriş olacaq.
§ hesablama fraqmenti kimi müəyyən edilirsə Cari, Cari(müvafiq olaraq, parametrlər Başlayın Və Son), onda 2-ci qeyd üçün bu fraqment 2 və 3-cü qeydlərdən ibarət olacaq. İfadə Hesablayın İfadə("Cəm(Dəyər)", Cari, Cari) 50-yə bərabər olacaq.
Parametr dəyərini təyin edərkən Birlikdə, parametrlərdə Başlayın Və Son mövqelər üçün ofset təyin edə bilməzsiniz Birinci, Son, Əvvəlki, Sonrakı.
Hesablayın İfadə("Cəmi(Cəmi Dövriyyə)", "Birinci", "Cari")
Əvvəlki sətirdə qruplaşdırma dəyərini əldə etmək istəyirsinizsə, aşağıdakı ifadədən istifadə edə bilərsiniz:
CalculateExpression("Rate", "Əvvəlki")
Siyahı yeni funksiyaları:ExpressionWithGroupArray ilə hesablayın(,) -
Funksiya hər bir elementi göstərilən sahə üzrə qruplaşdırmaq üçün ifadənin qiymətləndirilməsinin nəticəsini ehtiva edən massivi qaytarır.
İfadəni QrupDəyər Cədvəli ilə hesablayın(,) -
Funksiya hər bir sətirdə göstərilən sahə üzrə qruplaşma üçün ifadələrin qiymətləndirilməsinin nəticəsini ehtiva edən dəyərlər cədvəlini qaytarır.
Dəyər Doldurulmuş() - Dəyər dəyərdən fərqli olarsa True qaytarır bu tipdən default, NULL-dan başqa, boş istinaddan başqa, Müəyyən edilməmişdən başqa. Boolean dəyərləri NULL dəyərlər üçün yoxlanılır. Sətirlər boşluq olmayan simvolların olmaması üçün yoxlanılır
Format(, ) - Keçilmiş dəyərin formatlanmış sətrini qəbul edin. Format sətri 1C: Enterprise sisteminin format sətirinə uyğun qurulur.
Alt sətir(, , ) - Bu funksiya sətirdən alt sətir çıxarmaq üçün nəzərdə tutulmuşdur.
Xətt Uzunluğu() - funksiya sətrin uzunluğunu təyin etmək üçün nəzərdə tutulmuşdur. Parametr sətir ifadəsidir
Xətt() - Əgər massiv parametr kimi ötürülürsə, funksiya ";" simvolları ilə ayrılmış bütün massiv elementlərinin sətir təsvirlərini ehtiva edən sətri qaytarır. Dəyərlər cədvəli parametr kimi ötürülürsə, funksiya dəyərlər cədvəlinin bütün sətirlərinin sətir təsvirlərini özündə əks etdirən sətri qaytarır, hər bir cərgənin xana təsvirləri ";" simvolu ilə, sətirlər isə yeni sətirlə ayrılır xarakter. Elementin sətir təsviri boşdursa, onun təmsili əvəzinə sətir göstərilir.
Bu qısa qeyddə mən məlumat kompozisiya sistemindən istifadə edərək hesabatda qruplaşdırmanın müxtəlif səviyyələrində dəyərləri necə ümumiləşdirə biləcəyinizi göstərmək istəyirəm.
Şəkildə göstərildiyi kimi, yalnız "Eşya Qrupları" qruplaşdırma səviyyəsində "Sifariş" resursu hesablanır, müəyyən şərtlərə əsasən cari element qrupu üçün nə qədər sifariş edilməli olduğunu göstərir:
Müvafiq olaraq, indi yuxarıda göstərilən qruplaşmalar üzrə ("Anbarlar", "Anbar növləri") və ümumi cəmini hesablamaq lazımdır.
Bunu etmək üçün funksiyadan istifadə edin ExpressionWithGroupArray ilə hesablayın:
İFADƏNİ QROUPARRAY İLƏ QİYMƏTLƏNDİRİN (QROUPARRAY İLƏ EVALİFADƏSİ)
Sintaksis:
EvaluateExpressionWithGroupArray(,)
Təsvir:
Funksiya hər bir elementi göstərilən sahə üzrə qruplaşdırma üçün ifadənin qiymətləndirilməsinin nəticəsini ehtiva edən massiv qaytarır.
Layout qurucusu, tərtibat yaradan zaman, funksiya parametrlərini məlumat düzümü layout sahələrinin şərtlərinə çevirir. Məsələn, Hesab sahəsi DataSet.Account-a çevriləcək.
İfadəsi yalnız CalculateArrayWithGroupArray() funksiyasını ehtiva edən fərdi sahənin çıxışı üçün ifadələr yaradan zaman tərtibat qurucusu çıxış məlumatının sıralanması üçün çıxış ifadəsini yaradır. Məsələn, ifadəsi olan fərdi sahə üçün:
CalculateExpressionWithGroupArray("Məbləğ(MəbləğDövriyyə)", "Qarşı tərəf")
Layout qurucusu çıxış üçün aşağıdakı ifadəni yaradacaq:
Qoşulma Satırları(Məssilə(Sifariş(QruplaşdırmaDəyərCədvəli İlə İfadə Hesabı("Görünüş(Cəmi(MəlumatSet.MəlumatTurnover))),Məlumat(DataSet.SumTurnover)",","DataSet.Account"),"2")))
Parametrlər:
Növ: simli. Qiymətləndiriləcək ifadə. String, məsələn, Amount(AmountTurnover).
Növ: simli. Sahə ifadələrinin qruplaşdırılması – vergüllə ayrılmış qruplaşma sahələrinin ifadələri. Məsələn, Podratçı, Tərəf.
Növ: simli. Təfərrüat qeydlərinə tətbiq edilən seçimi təsvir edən ifadə. İfadə məcmu funksiyaların istifadəsini dəstəkləmir. Məsələn, DeletionFlag = False.
Növ: simli. Qrup qeydlərinə tətbiq edilən seçimi təsvir edən ifadə. Məsələn, Amount(AmountTurnover) > &Parameter1.
Misal:
Maksimum(CalculateExpressionWithGroupArray("Məbləğ(MəbləğDövriyyə)", "Qarşı tərəf"));
Funksiya sintaksisinin ətraflı təsviri ilə http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582 ünvanında tanış olmaq olar.
İndi hesablama üçün "Sifariş" sahəsini müxtəlif dəyərlərlə "Hesablayın ..." ilə təkrarlayırıq, aşağıdakı ifadələrdən istifadə edərək, qeyd edin ki, hər bir yuxarı səviyyədə qruplaşmaların altındakı səviyyələrin dəyərlərindən istifadə olunur. .
Nəticədə aşağıdakı tikintini əldə edirik:
Salam, əziz oxucu! Layout sisteminin əsasları ilə bağlı başqa bir dərsimiz var. Siz dilin funksiyaları ilə tanış oldunuz SKD ifadələri, layout sisteminin xüsusiyyətlərini gördü, həmçinin layout sahələrinin əsas parametrlərini başa düşdü. İndi baxacağıq yeni material. gedək!
Sütun "Dəyər növü" Layout sahəsi üçün məlumat növünü təyin etməyə imkan verir. Məsələn, "Nomenklatura" sahəsinin hansı növ olduğunu artıq bilirsinizsə, niyə növü göstərməlisiniz? Layout sahəsi kompozit tiplidirsə, bu lazımdır. Müəyyən bir növü seçə bilərsiniz, sonra bu sahə ilə seçərkən bu növün dəyərləri seçiləcək.
Sütun "Mövcud dəyərlər" seçim üçün mövcud olan dəyərləri təyin etməyə və istifadəçinin seçimini müəyyən məhdudiyyətlərlə məhdudlaşdırmağa imkan verir.
Sütun "Dizayn" planlardan istifadə etmədən layout sahəsinin dizaynını təyin etməyə imkan verir. Siz şrift rəngini, çərçivə rəngini, mətn istiqamətini və s.
Sütun "Redaktə Seçimləri" Layout sahəsini necə redaktə edəcəyinizi təyin etməyə imkan verir. Məsələn, seçimdəki siyahıdan elementlərin sürətli seçimini təyin edə bilərsiniz. Varsayılan olaraq, düzən sahəsi metadata obyektindən bütün redaktə seçimlərini miras alır.
Məlumat tərkibinin "Hesablanmış Sahələr" sekmesinde siz öz hesablanmış sahələrinizi yarada bilərsiniz.
Sorğu səviyyəsində yarada bildiyiniz zaman hesablanmış sahələrə nə üçün ehtiyacınız var? Sorğu vasitəsilə bütün sahələri təsvir etmək mümkün deyil. Müxtəlif məlumat dəstlərindən, məsələn, sorğu və obyektdən mürəkkəb sahə yaratmaq lazımdırsa, hesablanmış sahələr olmadan edə bilməzsiniz. Məlumat mənbəyi sorğudursa və avtomatik doldurma aktivdirsə, siz məlumat tərkibi sahəsi əlavə edə bilməzsiniz, lakin hesablanmış sahələrdən istifadə edərək istədiyiniz qədər sahə əlavə edə bilərsiniz.
Hesablanmış sahənin "İfadə" sütununda, onların yoluna daxil olaraq məlumat tərkibi sahələrindən istifadə edən ixtiyari bir ifadə yazmalısınız ("Məlumat dəstləri" sekmesinde "Yol" sütunu). Ya riyazi çevrilmə funksiyalarından istifadə edə, ya da ümumi modulların funksiyalarına daxil ola bilərsiniz. Məsələn, “Məlumat yolu” sütununa hesablanmış sahənin adını “Sapma”, “İfadə” sahəsinə isə aşağıdakıları yazaq.
Biznes proqram təminatının ən vacib sahələrindən biri hesabatdır. Biznesin taleyi (və məcazi mənada deyil!) mövcud hesabatı biznesin (və qanunvericiliyin) dəyişən ehtiyaclarına uyğunlaşdırmaq və ya vergi idarəsi üçün hesabat olsun, yenisini yaratmağın nə qədər asan olmasından asılı ola bilər. yaxud mallara tələbatın mövsümdən və digər amillərdən asılılığının diaqramı. Sistemdən lazımi məlumatların çıxarılmasını asanlaşdıran, onu başa düşülən formada təqdim edən, son istifadəçiyə məlumatları yeni işıqda görmək üçün standart hesabatı yenidən konfiqurasiya etməyə imkan verən güclü və çevik hesabat sistemi - bu, hər bir iş sistemi üçün səy göstərməlidir.
1C: Enterprise platformasında hesabatların yaradılması üçün “Məlumatların Tərkibi Sistemi” (qısaldılmış DCS) adlı mexanizm cavabdehdir. Bu yazıda verməyə çalışacağıq qısa təsviri ACS mexanizminin ideyaları və arxitekturası və onun imkanları.
ACS hesabatların deklarativ təsvirinə əsaslanan mexanizmdir. Girişə nəzarət sistemi hesabatların yaradılması və mürəkkəb strukturlu məlumatların nümayişi üçün nəzərdə tutulmuşdur. Yeri gəlmişkən, hesabatların hazırlanması ilə yanaşı, ACS mexanizmi də 1C: Enterprise-də dinamik siyahıda, siyahı məlumatlarını göstərmək üçün istifadə olunur. zəngin funksionallıq(düz və iyerarxik siyahıların göstərilməsi, sıraların şərti tərtibatı, qruplaşmalar və s.).
Girişə nəzarət sisteminin əsasını təşkil edən ideyalardan biri həm tərtibatçı, həm də son istifadəçi üçün əlçatan olan hesabatların çevikliyi və fərdiləşdirilməsi idi. İdeal olaraq, mən son istifadəçiyə tərtibatçı ilə eyni hesabat dizayn alətlərinə giriş vermək istərdim. Hər kəs üçün mövcud olan vahid alətlər dəsti yaratmaq məntiqli olardı. Yaxşı, alətlər son istifadəçinin iştirakını tələb etdiyindən, bu o deməkdir ki, onlarda proqramlaşdırmadan istifadə minimuma endirilməlidir (yaxşısı onu tamamilə aradan qaldırmaq olar), vizual parametrlərdən maksimum istifadə edilməlidir.
SQL sorğuları üçün standart bölmələrin analoqlarını görmək asandır - SELECT, FROM, GROUP BY, ORDER BY.
Eyni zamanda, sorğu dili maliyyə və iqtisadi problemlərin xüsusiyyətlərini əks etdirməyə və tətbiq həlləri hazırlamaq səylərini maksimum dərəcədə azaltmağa yönəlmiş əhəmiyyətli sayda genişləndirmələri ehtiva edir:
Girişə nəzarət sistemləri üçün xüsusi sorğu dili genişlənmələri də mövcuddur. Genişləndirmə, əyri mötərizələrə daxil edilmiş və birbaşa sorğu orqanına yerləşdirilən xüsusi sintaktik təlimatlardan istifadə etməklə həyata keçirilir. Genişləndirmələrdən istifadə edərək tərtibatçı hesabatı fərdiləşdirərkən son istifadəçinin hansı əməliyyatları yerinə yetirə biləcəyini müəyyənləşdirir.
Məsələn:
Misal:
Məsələn, verilənlər toplusu kimi verilənlərin tərkibi sxeminə sorğu əlavə edə və qrafik olaraq ixtiyari mürəkkəblikdə sorğu yaratmağa imkan verən sorğu konstruktorunu çağıra bilərsiniz:
Sorğu dizaynerinin işə salınmasının nəticəsi sorğu mətni olacaq (1C: Enterprise sorğu dilində). Lazım gələrsə, bu mətn əl ilə tənzimlənə bilər:
Verilənlərin yerləşdirilməsi sxemində bir neçə verilənlər toplusu ola bilər, verilənlər dəstləri tərtibatda istənilən şəkildə əlaqələndirilə bilər, hesablanmış sahələr əlavə edilə bilər, hesabat parametrləri təyin edilə bilər və s. 1C: Enterprise-də sorğu mexanizminin maraqlı bir xüsusiyyətini qeyd etmək lazımdır. Sorğular son nəticədə proqramın birbaşa işlədiyi DBMS-ə xas SQL dialektinə tərcümə olunur. Ümumiyyətlə, biz DBMS serverlərinin imkanlarından maksimum istifadə etməyə çalışırıq (biz yalnız 1C: Enterprise platforması - MS SQL, Oracle, IBM DB2 tərəfindən dəstəklənən bütün DBMS-lərdə eyni vaxtda mövcud olan imkanlardan istifadə etməyimizlə məhdudlaşırıq. , PostgreSQL). Beləliklə, hesablanmış sahələrdə sorğu səviyyəsində biz yalnız SQL-ə tərcümə olunan funksiyalardan istifadə edə bilərik.
Ancaq məlumatların tərkibi sxemi səviyyəsində biz artıq xüsusi sahələr əlavə edə və daxili 1C inkişaf dilində (bizim tərəfindən yazılmışlar da daxil olmaqla) funksiyalardan istifadə edə bilərik ki, bu da hesabatların imkanlarını xeyli genişləndirir. Texniki olaraq belə görünür - SQL-ə tərcümə oluna bilən hər şey SQL-ə tərcümə olunur, sorğu DBMS səviyyəsində yerinə yetirilir, sorğunun nəticələri 1C proqram serverinin yaddaşına yerləşdirilir və SKD hər qeyd üçün dəyərləri hesablayır. düsturları 1C dilində yazılmış hesablanmış sahələrin.
Fərdi Sahələrin əlavə edilməsi
Hesabata ixtiyari sayda cədvəl və diaqram əlavə edə bilərsiniz:
Hesabat dizayneri
İcra müddəti hesabatı
SKD-dən istifadə etməklə istifadəçi hesabata mürəkkəb seçimlər (sorğuya lazımi yerlərdə əlavə olunacaq), şərti dizayn (göstərilən sahələrin qiymətlərindən asılı olaraq fərqli formatda - şrift, rəng və s. ilə) əlavə edə bilər. ) və daha çox.
Hesabatın qurulması və yaradılması prosesi qısa şəkildə aşağıdakı kimi təsvir edilə bilər:
ACS mexanizmindən istifadə edərək hesabatın yaradılması prosesi
Biz serverdən müştəri tətbiqinə ötürülən hesabat məlumatlarının miqdarını minimuma endirməyə çalışırıq. Elektron cədvəl sənədində məlumatları göstərərkən, elektron cədvəl sənədini açarkən, serverdən yalnız istifadəçinin sənədin əvvəlində gördüyü sətirləri köçürürük. İstifadəçi sənədin sətirləri üzrə hərəkət etdikcə çatışmayan məlumatlar serverdən müştəriyə endirilir.
Dizayn vaxtında ekran rejiminin qurulması
Parametri işləmə zamanı Tez Giriş rejimində göstərin (Yarat düyməsinin altında)