skd ifadəsini hesablayın. Məlumat Tərkibi Sxeminin Faydalı Nümunələri

Bir qrupda əvvəlki qeydin sahələrini necə əldə edə biləcəyiniz nümunəsi və daha çox. Əvvəlki qiymətlə cari qiymət arasındakı fərqi hesablamaq üçün əlverişlidir.

Həllin mahiyyəti ACS ifadə dili funksiyasından istifadə etməkdir İfadə hesablayın() zəng etdiyim əlavə hesablanmış sahədə Delta. Funksiya aşağıdakı parametrlərə malikdir:

Seçimlər:

  • İfadə. Növ Xətt;
  • Qruplaşdırma. Növ Xətt;
  • Hesablama növü. Növ Xətt;
  • Başlamaq
  • Son. Seçimlərdən birini ehtiva edən sətir;
  • Çeşidləmə. xətt;
  • İyerarxik Çeşidləmə;
  • Sifarişin Eyni Dəyərlərinin Emalı

Bizi 4 və 5 parametrləri maraqlandırır ( BaşlamaqSon). İfadə belə görünəcək:

isNULL((İFADƏYİ HESABLAYIN("Qiymət", "Əvvəlki", "Əvvəlki") - Qiymət), 0)

Burada sahənin əvvəlki qiymətini hesablayırıq Qiymət və ondan cari sahə dəyərini çıxarın Qiymət. Təbii ki, ilk qeyd üçün əvvəlki dəyər hesablanmayacaq və cari sahənin dəyəri ilə çıxılmanın nəticəsi Null olacaq, ona görə də hər şeyi “təmiz” saxlamaq üçün Null-u sıfır rəqəminə çevirmək üçün isNULL funksiyasından istifadə edirik.

Cədvəl sənəd xanasına dəyərlər cədvəlini yerləşdirin

Bəzən sənədin cədvəl hissəsini və ya cədvəl hissəsinin sətirlərini əks etdirən məlumatı cədvəl sənədinin bir xanasına yerləşdirmək lazımdır, məsələn:

Bunu etmək üçün funksiyadan istifadə etməlisiniz: İfadəni QrupDəyər Cədvəli ilə hesablayın() , parametrləri var:

  • İfadə- hesablanacaq ifadə. String yazın. Bir sətir vergüllə ayrılmış çoxlu ifadələrdən ibarət ola bilər. Hər bir ifadədən sonra əlavə olaraq AS açar sözü və dəyər cədvəli sütununun adı ola bilər. Məsələn: "Qarşı tərəf, satış həcmi kimi məbləğ (dövriyyə məbləği)."
  • FieldExpressions Groups- qruplaşdırma sahələrinin ifadələri, vergüllə ayrılır. Məsələn, "Qarşı tərəf, tərəf";
  • Qeydlərin seçilməsi- təfərrüat qeydlərinə tətbiq edilən ifadə. Məsələn, "Bayrağı Sil = Yanlış";
  • Qrupların seçilməsi- qrup qeydlərinə tətbiq edilən seçim. Məsələn: "Məbləğ(MəbləğTurnover) > &Parameter1".

Bunu etmək üçün, nəticədə ortaya çıxan cədvəli göstərəcəyimiz hesablanmış bir sahə yaradırıq, sonra bu sahəni ifadə ilə resurslara yerləşdiririk. İfadəni QrupDəyər Cədvəli ilə Hesablayın("Nomenklatura, Kəmiyyət")

Sütunları nömrələyin

Girişə nəzarət sistemində sütunları necə nömrələyə biləcəyinizə dair bir nümunə.

Həllin mahiyyəti:

  1. Müəyyən bir tabeçilik daxilində sorğu nəticəsinin sətirlərini nömrələdiyimiz sorğu yaradırıq
  2. Nəticəni çarpaz nişanda göstəririk

ƏHƏMİYYƏTLİ!

Sorğudakı sətirlər nömrələndikdən sonra onlar VT-də yerləşdirilməli və sonra bu VT-dən seçilməlidir, əks halda girişə nəzarət sistemi hər şeyi öz qaydasında edəcək və səhv sahələr qruplaşmaya daxil ediləcək.

Nəticəni əldə etmək üçün ifadə ilə hesablanmış sahə yaratmaq lazımdır "İşçi" + Format(NPP,"CHTs=3; CHVN=") və hesablanmış sahə Tam Adı, orada sadəcə İşçini yerləşdirə bilərsiniz, sonra sahəni yerləşdiririk Tam adı ifadəsi olan mənbəyə Maksimum (tam ad) və ya sadəcə Tam adı- fərqi yoxdur

Rəng vurğulama ilə alternativ qruplar

Mist-də və ya eyni 1Cskd.ru-da bir yerdə müxtəlif rəngli qruplar yaradan xətləri necə vurğulamaq barədə sual var idi.

Buna hesablanmış bir sahə yaratmaqla nail olunur:

Hesablaİfadə("Kəmiyyət (Müxtəlif Nomenklatura)","Birinci", "Əvvəlki","Birgə") % 2

Nomenklatura sahəsinin müxtəlif "qruplaşmalarının" sayını hesablayırıq; Qruplaşmalar eyni Sifariş Dəyərlərinin İşlənməsi = "Birlikdə" parametrinin dəyərini təyin etməklə hesablana bilər.

İkiyə bölmənin qalan hissəsi qrupun cüt olub-olmadığını aydınlaşdıracaq; müvafiq olaraq, şərtlə şərti dizayn elementi yaradırıq. Sahə = 1

Xüsusiyyətlərinə görə qalır. Mötərizədə kəmiyyətlə bir sətirdə xarakteristikalar

Eyni 1CSkd.ru saytında müəllifin hesabat hazırlamaqda kömək istədiyi bir mövzu var idi, burada sütunlardan birində onların miqdarı ilə xüsusiyyətlərin siyahısı (ayaqqabı ölçüləri) lazımdır. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

Bu eyni funksiyadan istifadə etməklə əldə edilir ExpressionWithGroupArray() ilə hesablayın

Bu nümunədə funksiya belə görünür:

CalculateExpressionWithGroupArray("Nomenklaturanın Xarakteristikası.Ad +
""("" + Format(Qalan Miqdar,""CHG=0"") + "")""",
,
"ValueFilled(Nomenklatura Xarakteristikası)")

Üçüncü parametr seçimdir, boş "" sətirini təqdim etməməyə imkan verir - müvafiq olaraq, xüsusiyyətləri olmayan qalıqları görməyəcəksiniz.

Satır = Nömrə açarı ilə iki cədvələ qoşulun

Və ya nömrə növü dəyərini SKD-də sətirə çevirmək üçün seçim

Forumlarda vaxtaşırı “Sorğuda nömrəni sətirə necə çevirmək olar” kimi bir mövzu görürəm. Əgər siz girişə nəzarət sistemi haqqında hesabat yazırsınızsa və buna bənzər bir transformasiya etməlisinizsə, o zaman sorğuda heç bir hiylə yazmağa ehtiyac yoxdur.

Ədədi sətirə çevirmək üçün sadəcə ACS məlumat kompozisiya sisteminin ifadə dili funksiyasından istifadə edin Xətt() və ya Format()

Sətri nömrəyə çevirmək üçün funksiyadan istifadə edə bilərsiniz Hesablayın()

Nömrəyə görə sırala

Mənim nümunəmdə mən sadəcə işçi kataloqunu kadr nömrəsinə (kod) görə çeşidləyəcəyəm.

Nəticə belə görünəcək:

Bu, hesablanmış sahə yaratmaq və ACS ifadə dili funksiyasından istifadə etməklə əldə edilir Hesablayın()

  1. Hesablanmış sahə yaradın TabNumberNömrəsi, ifadəsi ilə: Hesablayın(İşçi kodu)
  2. Bu sahəyə görə çeşidləyin

mahiyyətcə bu, SKD ifadə dili funksiyasından istifadə edərək sətri nömrəyə çevirməkdir Hesablayın()

Mən sizə “ACS-də video dərsliklər”ə baxmağı məsləhət görürəm (Google-da asanlıqla axtarılır)

İnkişaf etdirərkən mən çevrilmiş istifadə edirəm.

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.

Biz sorğu tipli verilənlər toplusunu əlavə edirik və ya əl ilə, ya da 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. Cari tarix()

Sistem tarixini qaytarır. Layout layout tərtib edilərkən, layoutda mövcud olan bütün ifadələrdə CurrentDate() funksiyası cari tarixin dəyəri ilə əvəz olunur.

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övr)", "Cəmi") > 1000. Ancaq belə bir ifadə iyerarxik seçimdə istifadə edilə bilər.

Əgər son qeyd başlanğıc qeydindən əvvəldirsə, o zaman hesab edilir ki, təfərrüatlı məlumatların hesablanması və məcmu funksiyaların hesablanması üçün heç bir qeyd yoxdur.

Ü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 SIFIR.

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 qrup adı kimi istifadə olunarsa, hesablama ümumi cəmi kontekstində həyata keçiriləcək. Əks halda, hesablama eyni adlı ana qruplaşma kontekstində həyata keçiriləcək.

Misal üçü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ı, qruplaşdırmanın tərtibata aparıldığı resurs sahəsini çıxararkən məlumat kompozisiyasının tərtibatını yaradan zaman, tərtibata funksiyadan istifadə edərək hesablanan ifadəni yerləşdirir. İfadə hesablayın() , parametri göstərir QruplaşdırmaQeyriResurs. Digər resurslar üçün adi resurs ifadələri resurs qruplaşdırılması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 sonuncu qeyd qruplaşmadan kənardadırsa, o zaman 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ərinə malikdirsə 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. Cari 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əna
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şlamaqSon), 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şlamaqSon), 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şlamaqSon 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ş() - Əgər dəyər bu növün standart dəyərindən fərqlidirsə, NULL-dan başqa, boş istinaddan başqa, Müəyyən edilməmişdən başqadırsa, True qaytarır. 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 ehtiva edən sətri qaytarır, hər bir sətirin xana təsvirləri ";" simvolları 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.

  • 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 biz ACS mexanizminin ideyası və arxitekturasının və onun imkanlarının qısa təsvirini verməyə çalışacağıq.


    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 1C: Müəssisədə dinamik siyahıda, zəngin funksionallıqla (düz və iyerarxik siyahıların göstərilməsi, cərgələrin şərti dizaynı, qruplaşmalar və s.) siyahı məlumatlarını göstərmək üçün bir vasitə kimi istifadə olunur. ).

    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. İcra edilmiş sorğuların nəticələrini elektron cədvəl sənədinə və ya diaqramına köçürən kod yazılmışdır. 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 - minimal vizual parametrlər var, 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 formalaşdırılması

    İ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əqdim olunan virtual cədvəllər mürəkkəb sorğular yaratmağa ehtiyac olmadan əksər tətbiq tapşırıqları üçün demək olar ki, hazır məlumatları əldə etməyə imkan verir. 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 (bir arayış kitabının 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ə 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çıdan 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.

    Misal üçü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çimi 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. Verilənlərin 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;
    • çoxsaylı məlumat dəstlərinin 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 tərtibatçısının 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ı ehtiva edən aralıq məlumat kompozisiyasının tərtibatı formalaşır. 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ərdi ki, son istifadəçi çox vaxt alət imkanlarının bolluğundan qorxur. Ü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 siravi. Parametrlər "Parametrlər" düyməsi vasitəsilə mümkün olacaq.
    • Mövcud deyil. 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.

    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.

    Biz sorğu tipli verilənlər toplusunu əlavə edirik və ya əl ilə, ya da 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. Cari tarix()

    Sistem tarixini qaytarır. Layout layout tərtib edilərkən, layoutda mövcud olan bütün ifadələrdə CurrentDate() funksiyası cari tarixin dəyəri ilə əvəz olunur.

    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 qrupunun seçimində siz CalculateExpression("Sum(SumTurnover)", "TotalTotal") > 1000 ifadəsindən istifadə edə bilməzsiniz. Lakin belə ifadə iyerarxik seçimdə istifadə oluna bilər.

    Əgər son qeyd başlanğıc qeydindən əvvəldirsə, o zaman hesab edilir ki, təfərrüatlı məlumatların hesablanması və məcmu funksiyaların hesablanması üçün heç bir qeyd yoxdur.

    Ü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.

    CalculateExpression funksiyası üçün ifadə yaradan zaman tərtibat tərtibçisi, əgər sifariş ifadəsində qruplaşdırmada istifadə oluna bilməyən sahələr varsa, CalculateExpression funksiyasını NULL ilə əvəz edir.

    Seçimlər

    <Выражение>

    Növ: simli. Qiymətləndiriləcək ifadə.

    <Группировка>

    Növ: simli. İ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.

    Misal üçün:

    Məbləğ(Satış.Məbləği)/Hesabla(“Cəm(Satış.Məbləği)”, “Cəmi”)

    Bu misalda nəticə Sales.SumTurnover sahəsi üzrə məbləğin qruplaşdırma qeydinin bütün tərtibatda eyni sahənin məbləğinə nisbəti olacaq;

    <ОбластьВычисления>

    Növ: simli. Parametr aşağıdakı dəyərləri qəbul edə bilər:

    • GeneralTotal - ifadə bütün qruplaşdırma qeydləri üçün hesablanacaq.
    • İyerarxiya - İfadə 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 qruplaşdırma qruplaşdırma qeydi üçün qiymətləndiriləcək.
    • Qeyri-Resurs Qruplaşdırma - resurs üzrə qrup qeydi üçün funksiya hesablanarkən ifadə orijinal qruplaşmanın ilk qrup qeydi üçün qiymətləndiriləcək.

    Funksiyanı hesablayarkən İfadə hesablayın() Resurs qruplaşmaları olmayan qrup qeydləri üçün Qeyri-Resurs Qruplaşdırma dəyəri ilə funksiya parametr dəyəri Qruplaşdırma dəyərinə bərabər olduqda hesablanacağı kimi hesablanır.

    Məlumat kompozisiyasının tərtibatçısı, qruplaşdırmanın tərtibata aparıldığı resurs sahəsini çıxararkən məlumat kompozisiyasının tərtibatını yaradan zaman, tərtibata funksiyadan istifadə edərək hesablanan ifadəni yerləşdirir. İfadə hesablayın(), Qeyri-Resurs Qruplaşdırma parametrini göstərən. Digər resurslar üçün adi resurs ifadələri resurs qruplaşdırılmasına yerləşdirilir.

    <Начало>

    Növ: simli. 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:

    <Конец>

    Növ: simli. 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 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, Son (3) – qrupun sonundan üçüncü qeydin alınması.

    Əgər sonuncu qeyd qruplaşmadan kənardadırsa, o zaman 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 əldə etmək.

    Ə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ı. 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 növbətini ə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 qeyd varsa və üçüncü qeyd üçün Next() alınırsa, onda heç bir qeyd olmadığı hesab edilir.

    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.

    • Sərhəd Dəyəri. Müəyyən edilmiş dəyərlə qeyd əldə etmək ehtiyacı. Mötərizədə LimitingValues ​​sözündən sonra fraqmentə başlamaq istədiyiniz dəyəri olan ifadəni, ilk sıralama 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 LimitingValue(DateTime(2010)) almaq istəyirsinizsə , 1, 15)), sonra 02/01 tarixli qeyd alınacaq.2010.

    <Сортировка>

    Növ: simli. 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 bir ifadədən sonra Artan (artan qaydada sıralamaq üçün), Azalan (azalan ardıcıllıqla sifariş etmək üçün) və Avtomatik sifariş (istinad edilən obyekti sifariş etmək istədiyiniz sahələr üzrə istinad sahələrini sıralamaq üçün) açar sözlərini təyin edə bilərsiniz. Avtomatik Sifariş sözü həm Artan, həm də Azalan sözü ilə istifadə edilə bilər.

    <ИерархическаяСортировка>

    Növ: simli. Sort seçimi ilə eynidir. İerarxik qeydləri təşkil etmək üçün istifadə olunur. Göstərilməyibsə, tərtibat tərtibçisi Sort parametrində göstərilən sıralamaya uyğun olaraq sifariş yaradır.

    <ОбработкаОдинаковыхЗначенийПорядка>

    Növ: simli. 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 bildirir. Cari dəyər.
    • Birlikdə əvvəlki və sonrakı qeydlərin sifariş ifadələrinin dəyərlərinə əsasən müəyyən edilməsi deməkdir.

    Məsələn, ortaya çıxan ardıcıllıq tarixə görə sıralanırsa:

    Tarix Tam adı Məna
    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

    Parametrin dəyəri ayrıdırsa, onda:

    § 3-cü girişə əvvəlki giriş 2-ci giriş olacaq.

    § hesablama fraqmenti Cari, Cari (müvafiq olaraq Başlanğıc və Son parametrləri) kimi müəyyən edilirsə, 2-ci qeyd üçün bu fraqment bir qeyddən 2 ibarət olacaq. Hesablama İfadəsi (“Cəm (Dəyər)”, Cari, Cari) ifadəsi 20-yə bərabər olsun.

    Parametr dəyəri Birlikdə olarsa, onda:

    § 3-cü girişə əvvəlki giriş 1-ci giriş olacaq.

    § hesablama fraqmenti Cari, Cari (müvafiq olaraq Başlanğıc və Son parametrləri) kimi müəyyən edilirsə, 2-ci qeyd üçün bu fraqment 2 və 3-cü qeydlərdən ibarət olacaq. İfadə Hesablama(“Cəm (Dəyər)”, Cari, Cari) 50-yə bərabər olacaq.

    Birlikdə bərabər parametr dəyərini təyin edərkən, Başlanğıc və Son parametrlərində Birinci, Son, Əvvəlki, Sonrakı mövqeləri üçün ofset təyin edə bilməzsiniz.

    İfadə hesablayın("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:

    İfadəni hesabla("Dəyiş", "Ə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ş(<Выражение>) – Əgər dəyər bu növün standart dəyərindən fərqlidirsə, NULL-dan başqa, boş istinaddan başqa, Müəyyən edilməmişdən başqadırsa, True qaytarır. Boolean dəyərləri NULL üçün yoxlanılır. Sətirlər boşluq olmayan simvolların olmaması üçün yoxlanılır

    Format(<Выражение>, <Форматная строка>) – Keçirilmiş 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ə tutulub.

    Xətt Uzunluğu(<Выражение>) – Funksiya sətrin uzunluğunu təyin etmək üçün nəzərdə tutulub. Parametr - sətir ifadəsi

    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 ehtiva edən sətri qaytarır, hər bir cərgənin xana təsvirləri simvollarla ayrılır "; ", və sətirlər xətt feed simvoludur. Əgər hər hansı elementin boş sətir təsviri varsa, o zaman onun təmsili əvəzinə sətir göstərilir<Пустое значение>.

    Salam, əziz oxucu! Layout sisteminin əsasları ilə bağlı başqa bir dərsimiz var. Siz SKD ifadə dilinin funksiyaları ilə tanış oldunuz, layout sisteminin xüsusiyyətlərini gördünüz, həmçinin layout sahələrinin əsas parametrlərini başa düşdünüz. İndi yeni materiala baxacağıq. Get!

    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 "Dekor" 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 olan 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:

    Məbləğ - Qiymət* Kəmiyyət

    Başqa birinə baxın və siz də bu funksiyalardan istifadə edərək yükləyə bilərsiniz.

    Əsasən, hesablanmış sahələr layout sahələri ilə eyni parametrlərə malikdir. Burada çatışmayan yeganə şey Hiyerarşi Qrupu sütunudur. Hesablanmış sahələri yazarkən siz digər hesablanmış sahələrə istinad edə bilməzsiniz.

    Hesabat forması yaratmadan girişə nəzarət sistemində qurulmuş hesabata parametrləri və seçimləri necə ötürmək olar?

    &OnClient // Parametrlərin ACS hesabatına ötürülməsi Prosedur Əmr Emalı(Əmr Parametri, Əmr İcra Parametrləri) Seçim = Yeni Struktur("Nomenklatura", Əmr Parametri) ; FixedSettings = GetFixedSettings() ; FormParameters = Yeni Struktur( "Forma Açılış, Seçim, Seçim Açarı, Sabit Parametrlər", Həqiqət, Seçim, "Satış Hesabatı Seçimi", FixedSettings); OpenForm( "Report.SalesReport.Form", FormParameters); EndProcedure &OnServer Funksiyası GetFixedSettings()SalesReport = Hesabatlar. Satış hesabatı. Yarat (); SKD = ​​Satış Hesabatı. DataCompositionSchema; Parametrlər = SKD. Standart parametrlər; Dövrün başlanğıcı = Parametrlər. Məlumat Parametrləri. FindParameterValue( NewDataCompositionParameter("BeginPeriod" ) ); Dövrün başlanğıcı. Dəyər = StartMonth(CurrentDate()); Dövrün başlanğıcı. İstifadə = Doğrudur; Dövrün başlanğıcı = Parametrlər. Məlumat Parametrləri. FindParameterValue( NewDataCompositionParameter("EndPeriod") ); Dövrün Sonu. Dəyər = EndMonth(CurrentDate()); Dövrün Sonu. İstifadə = Doğrudur; Qayıdış Parametrləri; EndFunction // GetFixedSettings()

    ACS hesabatında sütun başlıqlarını necə mərkəzləşdirmək olar?

    "Məlumat dəstləri" sekmesinde "Dizayn" sahəsində iki parametr təyin etməlisiniz:

    Üfüqi mövqe: Mərkəz Şaquli mövqe: Mərkəz

    Aşağıdakı "Parametrlər" sekmesinde başqa bir nişanı tapa bilərsiniz: "Şərti görünüş". Orada hər qruplaşma, parametr və s. dizaynı istədiyiniz kimi qura bilərsiniz.

    Deyəsən sənə hər şeyi dedim! Yadınızdadırsa, sualınız varsa, sual vermək imkanınız var. cavab verməyə çalışacağam. Gələcəkdə bu mövzuda daha çox məqalə yazmağı planlaşdırıram, buna görə də əldən qaçırmamaq üçün veb saytımızdakı yeniləmələrə abunə olmağı unutmayın! Həm də bu dərsdən materialı möhkəmləndirmək üçün mütləq test hazırlayacağam.

    Məqalənin sonunda sizə Anatoli Sotnikovdan pulsuz olanı tövsiyə etmək istəyirəm. Bu, təcrübəli bir proqramçının kursudur. O, ayrıca girişə nəzarət sistemində hesabatların necə qurulacağını sizə göstərəcək. Sadəcə diqqətlə dinləmək və yadda saxlamaq lazımdır! Aşağıdakı suallara cavab alacaqsınız:
    • Sadə bir siyahı hesabatını necə yaratmaq olar?
    • "Sahələr" tabındakı Sahə, Yol və Başlıq sütunları nə üçündür?
    • Layout sahələri üçün məhdudiyyətlər hansılardır?
    • Rolları necə düzgün konfiqurasiya etmək olar?
    • Layout sahələri üçün hansı rollar var?
    • Sorğuda məlumat tərkibi tabını harada tapa bilərəm?
    • Girişə nəzarət sistemində parametrləri necə konfiqurasiya etmək olar?
    • Daha da maraqlı olur...
    Yəqin ki, lazımi məlumatları axtarmaq üçün özünüz İnternetdə gəzməyə çalışmamalısınız? Üstəlik, hər şey istifadəyə hazırdır. Sadəcə başlayın! Pulsuz video dərslərdə olanlarla bağlı bütün təfərrüatlar