Məlumatların yerləşdirilməsi diaqramı (1C SKD). 1C məlumat kompozisiya sisteminin məlumat tərkibinin hesablanmış sahələrinin ifadə dilinin funksiyaları

18.08.2023

Məlumat Tərkibi Sistemi İfadə Dili

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:

  • verilənlərin yerləşdirilməsi diaqramı - hesablanmış sahələri, ümumi sahələri, əlaqə ifadələrini və s. təsvir etmək üçün;
  • data layout parametrləri - xüsusi sahə ifadələrini təsvir etmək üçün;
  • data layout layout - verilənlər dəstlərini birləşdirmək üçün ifadələri təsvir etmək, layout parametrlərini təsvir etmək və s.

Hərfi

İfadə hərflərdən ibarət ola bilər. Aşağıdakı hərf növləri mümkündür:

  • xətt;
  • Nömrə;
  • Tarix;
  • Boolean.

Xətt

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ə

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

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ə

Boolean

Məntiqi dəyərlər True (True), False (False) hərflərindən istifadə etməklə yazıla bilər.

Mənası

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)

Rəqəmlər üzərində əməliyyatlar

Birlik -

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

Birlik +

Bu əməliyyat nömrə üzərində heç bir hərəkəti yerinə yetirmir. Məsələn:

Satış. Miqdar

İkili -

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

İkili +

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

Bölmə

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

Bölmənin qalığı

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

Sətir əməliyyatları

Birləşdirmə (İkili +)

Bu əməliyyat iki sətir birləşdirmək üçün nəzərdə tutulmuşdur. Məsələn:

Nomenklatura.Maddə + “: ”+ Nomenklatura.Ad

kimi

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:

  • % - faiz: sıfır və ya daha çox ixtiyari simvoldan ibarət ardıcıllıq;
  • _ - alt xətt: bir ixtiyari simvol;
  • […] - kvadrat mötərizədə bir və ya bir neçə simvol: bir simvol, kvadrat mötərizədə sadalananlardan hər hansı biri. Sadalama diapazondan ibarət ola bilər, məsələn, a-z, yəni aralığın ucları da daxil olmaqla, aralığa daxil edilmiş ixtiyari simvol;
  • [^...] - kvadrat mötərizədə bir və ya bir neçə simvoldan sonra inkar işarəsi: inkar ikonasından sonra sadalananlardan başqa istənilən simvol;

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.

Müqayisə əməliyyatları

Bərabərdir

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çı

Bərabər deyil

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çı

Daha az

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əğ< ПродажиПрошлые.Сумма

Daha çox

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əğ

Daha az və ya bərabərdir

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əğ<= ПродажиПрошлые.Сумма

-dən böyük və ya bərabərdir

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

Əməliyyat B

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əlumat dəstində dəyərin mövcudluğunun yoxlanılması əməliyyatı

Ə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ış

NULL üçün dəyərin yoxlanılması əməliyyatı

Əgər dəyər NULL olarsa, bu əməliyyat True qaytarır. Məsələn:

Satış.Qarşı tərəf NULLDUR

NULL bərabərsizliyi üçün dəyərin yoxlanılması əməliyyatı

Ə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

Məntiqi əməliyyatlar Boolean tipli ifadələri operand kimi qəbul edir.

Əməliyyat DEYİL

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

Əməliyyat I

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

YA əməliyyat

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

Ümumi funksiyalar verilənlər toplusunda bəzi hərəkətləri yerinə yetirir.

məbləğ

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ə)

Kəmiyyət

Count funksiyası NULL-dan başqa dəyərlərin sayını hesablayır. Məsələn:

Miqdar (Satış. Qarşı tərəf)

Fərqli sayı

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)

Maksimum

Funksiya maksimum dəyəri alır. Məsələn:

Maksimum (Qalan. Miqdar)

Minimum

Funksiya minimum dəyəri alır. Məsələn:

Minimum (Qalan. Miqdar)

Orta

Funksiya NULL olmayan dəyərlərin ortasını alır. Məsələn:

Orta(Qalan.Kəmiyyət)

Digər əməliyyatlar

SELECT əməliyyatı

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

İki dəyəri müqayisə etmək qaydaları

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:

  • NULL (ən aşağı);
  • Boolean;
  • Nömrə;
  • Tarix;
  • xətt;
  • İstinad növləri

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:

  • Boolean növü üçün TRUE dəyəri FALSE dəyərindən böyükdür;
  • Nömrə növü rəqəmlər üçün adi müqayisə qaydalarına malikdir;
  • Tarix növü üçün əvvəlki tarixlər sonrakı tarixlərdən kiçikdir;
  • String növü üçün - verilənlər bazasının müəyyən edilmiş milli xüsusiyyətlərinə uyğun olaraq sətirlərin müqayisəsi;
  • istinad növləri onların dəyərlərinə görə müqayisə edilir (rekord nömrə və s.).

NULL dəyəri ilə işləmək

Operandlardan birinin NULL olduğu istənilən əməliyyat NULL nəticə verəcəkdir.

İstisnalar var:

  • AND əməliyyatı yalnız operandlardan heç biri Yanlış olmadıqda NULL qaytaracaq;
  • OR əməliyyatı yalnız operandlarından heç biri True olmadığı halda NULL qaytaracaq.

Əməliyyat prioritetləri

Əməliyyatlar aşağıdakı prioritetlərə malikdir (birinci sətir ən aşağı prioritetə ​​malikdir):

  • B, NULL IS, NULL DEYİL;
  • =, <>, <=, <, >=, >;
  • Binary +, Binary – ;
  • *, /, %;
  • Unary +, Unary -.

Məlumat Tərkibi Sistemi İfadə Dili Funksiyaları

Hesablayın

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:

  • İfadə. String yazın. Hesablanmış ifadə ehtiva edir;
  • Qruplaşdırma. String yazın. İ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. Qrup adı kimi GrandTotal sətri istifadə edilərsə, hesablama ümumi cəm kontekstində 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) / Hesablayın("Cəmi(Satış.Cəmi Dövr)", "Cəmi")

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.

Səviyyə

Funksiya cari qeyd səviyyəsini əldə etmək üçün nəzərdə tutulub.

Səviyyə()

NumberInOrder

Növbəti sıra nömrəsini əldə edin.

NumberByOrder()

NumberInOrderInGrouping

Cari qruplaşmada növbəti sıra nömrəsini qaytarır.

NumberByOrderInGroup()

Format

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:

  • Məna;
  • Format sətri.

Format(İnvoices.Sənəd məbləği, "NPV=2")

Dövrün başlanğıcı

Parametrlər:

    • dəqiqə;
    • gün;
    • həftə;
    • ay;
    • Quarter;
    • onillik;
    • Yarım il.

StartPeriod(TarixSaat(2002, 10, 12, 10, 15, 34), "Ay")

Nəticə:

01.10.2002 0:00:00

Dövrün Sonu

Funksiya müəyyən bir tarixdən müəyyən bir tarix çıxarmaq üçün nəzərdə tutulmuşdur.

Parametrlər:

  • Tarix. Tarixi yazın. Müəyyən edilmiş tarix;
  • Dövr növü. String yazın. Aşağıdakı dəyərlərdən birini ehtiva edir:
    • dəqiqə;
    • gün;
    • həftə;
    • ay;
    • Quarter;
    • onillik;
    • Yarım il.

EndPeriod(TarixSaat(2002, 10, 12, 10, 15, 34), "Həftə")

Nəticə:

13.10.2002 23:59:59

AddToDate

Funksiya tarixə müəyyən bir dəyər əlavə etmək üçün nəzərdə tutulmuşdur.

Parametrlər:

  • Böyütmə növü. String yazın. Aşağıdakı dəyərlərdən birini ehtiva edir:
    • dəqiqə;
    • gün;
    • həftə;
    • ay;
    • Quarter;
    • onillik;
    • Yarım il.
  • Məbləğ – tarixi nə qədər artırmaq lazımdır. Nömrəni yazın. Kəsr hissəsi nəzərə alınmır.

AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Ay", 1)

Nəticə:

12.11.2002 10:15:34

Tarix Fərqi

Funksiya iki tarix arasındakı fərqi əldə etmək üçün nəzərdə tutulmuşdur.

Parametrlər:

  • İfadə. Tarixi yazın. Orijinal tarix;
  • İfadə. Tarixi yazın. Çıxarılan tarix;
  • Fərq növü. String yazın. Aşağıdakı dəyərlərdən birini ehtiva edir:
    • İkinci;
    • dəqiqə;
    • gün;
    • ay;
    • Quarter;

TARİX FƏRQİ(DATETIME(2002, 10, 12, 10, 15, 34), DATETIME(2002, 10, 14, 9, 18, 06), "GÜN")

Nəticə:

Alt sətir

Bu funksiya sətirdən alt sətir çıxarmaq üçün nəzərdə tutulmuşdur.

Parametrlər:

  • Xətt. String yazın. Alt sətirin çıxarıldığı sətir;
  • Vəzifə. Nömrəni yazın. Sətirdən çıxarılacaq alt sətirin başladığı simvolun mövqeyi;
  • Uzunluq. Nömrəni yazın. Ayrılmış alt sətirin uzunluğu.

SUBSTRING(Hesablar.Ünvan, 1, 4)

Xətt Uzunluğu

Funksiya sətrin uzunluğunu müəyyən etmək üçün nəzərdə tutulmuşdur.

Parametr:

  • Xətt. String yazın. Uzunluğu müəyyən edilmiş sətir.

Xətt(Qarşı tərəflər.Ünvan)

il

Bu funksiya Tarix növü dəyərindən ili çıxarmaq üçün nəzərdə tutulmuşdur.

Parametr:

  • Tarix. Tarixi yazın. İlin təyin olunduğu tarix.

İL(Xərc.Tarix)

Kvartal

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

  • Tarix. Tarixi yazın. Rübün təyin olunduğu tarix
Rüb(Xərc.Tarix)

ay

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.

  • Tarix. Tarixi yazın. Ayın təyin olunduğu tarix.
AY(Xərc.Tarix)

İlin günü

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.

  • Tarix. Tarixi yazın. İlin gününün təyin olunduğu tarix.
GÜN İL(Xərc Hesabı.Tarix)

gün

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.

  • Tarix. Tarixi yazın. Ayın gününün təyin olunduğu tarix.
GÜN(Xərc.Tarix)

Həftə

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.

  • Tarix. Tarixi yazın. Həftə nömrələrinin təyin olunduğu tarix.
HƏFTƏ(Xərc.Tarix)

Həftənin günü

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.

  • Tarix. Tarixi yazın. Həftənin gününün təyin olunduğu tarix.
HƏFTƏNİN GÜNÜ(Xərc.Tarix)

Saat

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.

  • Tarix. Tarixi yazın. Günün saatının təyin olunduğu tarix.
SAAT(Xərc.Tarix)

Dəqiqə

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.

  • Tarix. Tarixi yazın. Saatın dəqiqəsinin təyin olunduğu tarix.
DƏQİQƏ(Xərc.Tarix)

İkinci

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.

  • Tarix. Tarixi yazın. Dəqiqənin saniyələrinin təyin olunduğu tarix.
İKİNCİ(Xərc.Tarix)

Ekspres

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:

  • Çevirmək üçün ifadə;
  • Tip göstəricisi. String yazın. Bir növ sətir ehtiva edir. Məsələn, "Nömrə", "String" və s. İbtidai növlərdən başqa verilmiş xətt cədvəlin adını ehtiva edə bilər. Bu halda, göstərilən cədvələ istinad ifadə etməyə cəhd ediləcək.

Ekspres(Data.Props1, "Nömrə(10,3)")

IsNull

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)

Ümumi modulların funksiyaları

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ınSon), 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ınSon), 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ınSon 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:


Bu dəyər yalnız üçün hesablana bilər bu səviyyə qruplar, çünki yuxarıda və ya aşağıda hesablamaq üçün heç bir dəyər yoxdur. Məsələn, təfərrüatlı qeydlər səviyyəsində qrupdakı maksimum kəmiyyət haqqında heç bir məlumat yoxdur, çünki bu məlumatlar yalnız bütövlükdə qrup üçün etibarlıdır, onun ayrı-ayrı komponentləri üçün deyil.

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!

ACS sahələri üçün əlavə parametrlər.

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.

Hesablanmış sahələ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.

  • 1C-Bitrix
  • 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.).

    Bir az tarix

    1C: Enterprise 8 platformasının ilk versiyasında, 8.0 versiyasında hesabatlar belə hazırlanmışdır:
    1. Bir və ya bir neçə sorğu 1C sorğu dilində yazılmışdır (SQL-ə bənzər dil, bu barədə ətraflı aşağıda).
    2. Tamamlanmış sorğuların nəticələrini köçürən kod yazılmışdır elektron cədvəl sənədi və ya diaqramda. Kod sorğuda edilə bilməyən işləri də görə bilərdi - məsələn, daxili 1C dilindən istifadə edərək dəyərləri hesablayır.
    Yanaşma sadədir, lakin ən əlverişli deyil - vizual parametrlərən azı hər şey “əldən-ələ” proqramlaşdırılmalıdır. Və tamamilə yeni “1C: Enterprise 8” platformasının o dövrdəki kozır kartlarından biri tətbiq həllində əl ilə yazılmalı olan kodun miqdarının, xüsusən də vizual dizayn vasitəsilə minimuma endirilməsi idi. Hesabat mexanizmində də eyni yolu izləmək məntiqli olardı. Bu, yeni mexanizmin - Məlumat Tərkibi Sisteminin hazırlanması ilə həyata keçirilib.

    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.

    Problemin ifadəsi

    İnkişaf qrupunun qarşısında duran vəzifə alqoritmik (yəni kod yazmaqla) deyil, hesabatların yaradılmasına deklarativ yanaşma əsasında hesabat sistemi yaratmaq idi. Və inanırıq ki, problem uğurla həll olunub. Təcrübəmizə əsasən, tələb olunan hesabatların təxminən 80%-i bir kod sətri olmadan (hesablanmış sahələr üçün düsturların yazılması istisna olmaqla), əsasən vizual parametrlər vasitəsilə ACS-dən istifadə etməklə həyata keçirilə bilər.
    SDS-nin ilk versiyasının hazırlanması təxminən 5 adam il çəkdi.

    İki dil

    Hesabatların yaradılmasında iki dil iştirak edir. Bunlardan biri məlumatları əldə etmək üçün istifadə edilən sorğu dilidir. İkincisi, istifadəçi sahələrinin ifadələrini təsvir etmək üçün sistemin müxtəlif hissələrində, məsələn, məlumat tərkibi parametrlərində istifadə olunan ifadələrin yazılması üçün nəzərdə tutulmuş məlumat kompozisiyasının ifadə dilidir.

    Sorğu dili

    Sorğu dili SQL-ə əsaslanır və SQL-də məlumatlı olanlar üçün öyrənmək asandır. Müraciət nümunəsi:

    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:

    • Nöqtədən istifadə edərək sahələrə daxil olmaq. Cədvəlin sahələri istinad tiplidirsə (onlar başqa cədvəlin obyektlərinə keçidləri saxlayır), tərtibatçı onlara sorğunun mətnində “.” vasitəsilə istinad edə bilər və sistem yuva səviyyələrinin sayını məhdudlaşdırmır. belə keçidlərdən (məsələn, Müştəri Sifarişi. Müqavilə. Təşkilat. Telefon).
    • Nəticələrin çoxölçülü və çoxsəviyyəli formalaşması. Cəmlər və yarımcəmlər qruplaşma və iyerarxiya nəzərə alınmaqla formalaşdırılır, ümumiləşdirilməklə səviyyələri istənilən ardıcıllıqla keçmək olar, cəmlərin zaman ölçülərinə görə düzgün qurulması təmin edilir.
    • Virtual masalar üçün dəstək. Sistem tərəfindən təmin edilən virtual cədvəllər tərtib etməyə ehtiyac olmadan əksər tətbiq tapşırıqları üçün demək olar ki, hazır məlumatları əldə etməyə imkan verir. mürəkkəb sorğular. Beləliklə, virtual cədvəl müəyyən vaxtda dövrlər üzrə məhsul qalıqları haqqında məlumat verə bilər. Eyni zamanda, virtual cədvəllər saxlanılan məlumatlardan maksimum istifadə edir, məsələn, əvvəllər hesablanmış cəmi və s.
    • Müvəqqəti masalar. Sorğu dili sorğularda müvəqqəti cədvəllərdən istifadə etməyə imkan verir. Onların köməyi ilə siz sorğu performansını yaxşılaşdıra, bəzi hallarda bloklamaların sayını azalda və sorğu mətninin oxunmasını asanlaşdıra bilərsiniz.
    • Toplu sorğular. Müvəqqəti cədvəllərlə işi daha rahat etmək üçün sorğu dili toplu sorğularla işləməyi dəstəkləyir - beləliklə, müvəqqəti cədvəlin yaradılması və onun istifadəsi bir sorğuda yerləşdirilir. Toplu sorğu nöqtəli vergül (";") ilə ayrılmış sorğular ardıcıllığıdır. Dəstədəki sorğular bir-birinin ardınca yerinə yetirilir. İstifadə olunan metoddan asılı olaraq toplu sorğunun icrasının nəticəsi ya topludakı sonuncu sorğunun qaytardığı nəticə, ya da topludakı sorğuların izlədiyi ardıcıllıqla topludakı bütün sorğuların nəticələri massivi olacaqdır. .
    • İstinad sahələrinin təsvirlərinin axtarışı. Hər bir obyekt cədvəli (kataloq və ya sənədin saxlandığı) virtual sahəyə malikdir - "Görünüş". Bu sahə obyektin mətn təsvirini ehtiva edir və hesabatı yaradanın işini asanlaşdırır. Beləliklə, bir sənəd üçün bu sahədə bütün əsas məlumatları ehtiva edir - sənəd növünün adı, nömrəsi və tarixi (məsələn, "Satış 000000003 07.06.2017 17:49:14"), tərtibatçını qənaət edir. hesablanmış sahənin yazılması.
    • və s.
    Sorğu mexanizmi, adından sorğu yerinə yetirilən istifadəçinin aid olduğu rolları (yəni istifadəçi yalnız görmək hüququ olan məlumatları görəcək) və funksional seçimləri (yəni, uyğun olaraq) nəzərə alaraq sorğunu avtomatik olaraq dəyişdirir. proqram həlli funksionallığında konfiqurasiya edilənlərlə).

    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:

    • SEÇİN. Bu cümlə istifadəçinin çıxış üçün seçə biləcəyi sahələri təsvir edir. Bu açar sözdən sonra əsas sorğu seçim siyahısındakı konfiqurasiya üçün əlçatan olacaq sahələrin ləqəbləri vergüllə ayrılaraq siyahıya alınır. Nümunə: (Seçmə Elementi, Anbar)
    • HARADA. İstifadəçinin seçim tətbiq edə biləcəyi sahələr təsvir edilmişdir. Bu təklif cədvəl sahələrindən istifadə edir. Seçim siyahısı sahəsində ləqəblərin istifadəsinə icazə verilmir. Birliyin hər bir hissəsi öz WHERE elementini ehtiva edə bilər. Nümunələr: (HARADA Element.*, Anbar), (HARADA Sənəd.Tarix >= &BaşlamaTarixi, Sənəd.Tarix<= &ДатаКонца}
    • və s.
    Genişlənmələrdən istifadə nümunəsi:

    Məlumat Tərkibi İfadə Dili

    Məlumat Kompozisiyasının İfadə Dili istifadə olunan ifadələri yazmaq, xüsusən də xüsusi sahə ifadələrini təsvir etmək üçün nəzərdə tutulmuşdur. SKD ya öz ifadələrinizdən, ya da onların seçilməsi şərtləri ilə (SQL-də CASE-in analoqu) seçimlər dəstindən istifadə edərək hesabatda xüsusi sahələri müəyyən etməyə imkan verir. Fərdi sahələr hesablanmış sahələrə bənzəyir. Onlar həm konfiquratorda, həm də 1C: Müəssisə rejimində quraşdırıla bilər, lakin ümumi modulların funksiyaları xüsusi sahə ifadələrində istifadə edilə bilməz. Buna görə də, fərdi sahələr tərtibatçı üçün deyil, istifadəçi üçün nəzərdə tutulub.

    Misal:

    Girişə nəzarət sistemi haqqında hesabatın yaradılması prosesi

    Hesabat yaratarkən məlumatların hesabatda necə göstəriləcəyini müəyyən edən tərtibat yaratmalıyıq. Siz verilənlərin düzülüşü diaqramına əsaslanaraq tərtibat yarada bilərsiniz. Məlumatların yerləşdirilməsi diaqramı hesabata təqdim olunan məlumatların mahiyyətini təsvir edir (məlumatları haradan əldə etmək və onun tərtibinə necə nəzarət etmək olar). Məlumatların tərkibi sxemi bütün növ hesabatların yaradıla biləcəyi əsasdır. Məlumat kompozisiya sxemi aşağıdakıları ehtiva edə bilər:
    • məlumat kompozisiya sistemi üçün təlimatlarla mətn tələb etmək;
    • çoxlu verilənlər toplusunun təsviri;
    • mövcud sahələrin ətraflı təsviri;
    • çoxsaylı məlumat dəstləri arasında əlaqələrin təsviri;
    • məlumatların alınması parametrlərinin təsviri;
    • sahə planlarının və qruplaşmalarının təsviri;
    • və s.

    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:

    • Tərtibatçı dizayn vaxtında bir dizaynerin köməyi ilə (və ya koddan istifadə edərək işləmə müddətində) məlumatların yerləşdirilməsi sxemini müəyyənləşdirir:
      • Sorğunun/sorğuların mətni
      • Hesablanmış sahələrin təsviri
      • Müraciətlər arasındakı əlaqə (əgər onlardan bir neçəsi varsa)
      • Hesabat Seçimləri
      • Defolt Parametrlər
      • və s.
    • Yuxarıdakı parametrlər tərtibatda saxlanılır
    • İstifadəçi hesabatı açır
      • Əlavə parametrlər edə bilər (məsələn, parametr dəyərlərini dəyişdirir)
      • "Yarat" düyməsini klikləyin
    • İstifadəçi parametrləri tərtibatçı tərəfindən müəyyən edilmiş məlumat tərkibi sxeminə tətbiq edilir.
    • Məlumatların haradan alınacağına dair təlimatları özündə əks etdirən aralıq məlumat planı tərtib edilir. Xüsusilə, tərtibatda göstərilən sorğular tənzimlənir. Beləliklə, hesabatda istifadə olunmayan sahələr sorğudan çıxarılır (bu, alınan məlumatların həcmini minimuma endirmək üçün edilir). Hesablanmış sahə düsturlarında iştirak edən bütün sahələr sorğuya əlavə edilir.
    • Məlumat kompozisiya prosessoru işə düşür. Layout prosessoru sorğuları yerinə yetirir, məlumat dəstlərini əlaqələndirir, hesablanmış sahələr və resurslar üçün dəyərləri hesablayır və qruplaşdırmanı həyata keçirir. Bir sözlə, DBMS səviyyəsində aparılmayan bütün hesablamaları edir.
    • Verilənlərin çıxış prosessoru icra sorğusunu işə salır və alınan məlumatları elektron cədvəl sənədində, diaqramda və s.


    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.

    Fərdi Parametrlər

    Bütün ACS alətləri həm tərtibatçı, həm də son istifadəçi üçün əlçatandır. Lakin təcrübə göstərir ki, son istifadəçi çox vaxt alət imkanlarının bolluğu ilə qorxudulur. Üstəlik, əksər hallarda, son istifadəçi parametrlərin bütün gücünə ehtiyac duymur - onun bir və ya iki hesabat parametrlərini (məsələn, dövr və qarşı tərəf) qurmaq üçün sürətli çıxış əldə etməsi kifayətdir. Platformanın müəyyən bir versiyasından başlayaraq, hesabat tərtibatçısının istifadəçi üçün hansı hesabat parametrlərinin mövcud olduğunu qeyd etmək imkanı var. Bu, "İstifadəçi parametrlərinə daxil et" qutusundan istifadə etməklə edilir. Həmçinin, hesabat parametrlərində indi üç dəyərdən birini qəbul edən “Ekran rejimi” bayrağı var:
    • Sürətli giriş. Parametr birbaşa hesabat pəncərəsinin yuxarı hissəsində göstəriləcək.
    • Adi. Parametrlər "Parametrlər" düyməsi vasitəsilə mümkün olacaq.
    • Əlçatmaz. Parametr son istifadəçi üçün əlçatan olmayacaq.


    Dizayn vaxtında ekran rejiminin qurulması


    Parametri işləmə zamanı Tez Giriş rejimində göstərin (Yarat düyməsinin altında)

    İnkişaf planları

    Girişə nəzarət sistemlərinin inkişafında prioritet istiqamətlərimizdən biri istifadəçi parametrlərinin sadələşdirilməsidir. Təcrübəmiz göstərir ki, bəzi son istifadəçilər üçün istifadəçi parametrləri ilə işləmək hələ də böyük işdir. Biz bunu nəzərə alırıq və bu istiqamətdə işləyirik. Müvafiq olaraq, tərtibatçılar üçün girişə nəzarət sistemləri ilə işləmək də asanlaşacaq, çünki Biz, əvvəlki kimi, həm tərtibatçı, həm də son istifadəçi üçün hesabatların qurulması üçün vahid alət təqdim etmək istəyirik.