1s skd hesablanmış sahələrin ifadəsi. Verilənlərin kompozisiya sisteminin ifadə dilinin funksiyaları. Sütun sırasının dəyişdirilməsi

8.2.14-ün qarşıdan gələn buraxılışı ilə əlaqədar olaraq, məlumat kompozisiya sisteminin bəzi yeni xüsusiyyətlərini təsvir etməyə çalışacağam.

Redaktə etməyi asanlaşdırmaq üçün verilənlərin tərkibi sxemini, tercihen xarici hesabatda açın.

Biz sorğu məlumat dəstini əlavə edirik və ya əl ilə və ya sorğu qurucusundan istifadə edərək ən sadə sorğunu yazırıq:

1. ACS-də sorğu qurun.

2. ACS-də hesablanmış sahələri qurun

3. Parametrlər sekmesinde məlumatların düzülməsini konfiqurasiya edirik

4. Biz 1C Enterprise 8.2.14 proqramını işə salırıq. Hesabatı açırıq. Biz formalaşdırırıq, alırıq.

Yeni funksiyaların təsviri:

1. Cari tarix()

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

2. HESABLAMA İFADƏSİ()

Sintaksis:

Hesablama ifadəsi(,)

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ın seçimində siz ifadədən istifadə edə bilməzsiniz İfadəni hesablayın ("Cəmi(Cəmi Dövriyyə)", "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 olunur), təfərrüatlı məlumatların hesablanması və məcmu funksiyaların hesablanması üçün heç bir qeyd olmadığı hesab edilir.

Funksiya ifadəsi yaradan zaman düzən qurucusu Hesablama ifadəsi, əgər sıralama ifadəsi qruplaşdırmada istifadə edilə bilməyən sahələri ehtiva edirsə, funksiyanı əvəz edir Hesablama ifadəsi haqqında SIFIR.

Seçimlər

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

Növ: Xətt. Kontekstində ifadənin qiymətləndiriləcəyi qruplaşmanın adını ehtiva edir. Qruplaşma adı kimi boş sətir istifadə edilərsə, hesablama cari qruplaşdırma kontekstində həyata keçiriləcək. Qruplaşma adı kimi GrandTotal sətri istifadə edilərsə, hesablama ümumi cəm kontekstində həyata keçiriləcək. Əks halda, hesablama həmin adla əsas 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")

IN bu misal nəticə sahə üzrə məbləğin nisbəti olacaq Satış.MəbləğDövriyyə girişlə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 qiymətləndiriləcək.

· İyerarxiya— ifadə, əgər varsa, əsas iyerarxik giriş üçün və əsas iyerarxik giriş yoxdursa, bütün qruplaşma üçün qiymətləndiriləcək.

· qruplaşdırma— ifadə qruplaşmanın cari qrup qeydi üçün qiymətləndiriləcək.

· GroupingNotResource— resurslar üzrə qrup qeydi üçün funksiya hesablanarkən ifadə ilkin qruplaşdırmanın birinci qrup qeydi üçün hesablanacaq.

Funksiyanı hesablayarkən Hesablama ifadəsi() məna ilə GroupingNotResource 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 düzülüşü tərtibçisi, məlumat kompozisiyasının düzülüşü yaradan zaman, qruplaşdırmanın həyata keçirildiyi resurs sahəsini göstərərkən, funksiyadan istifadə edərək hesablanan tərtibata ifadə yerləşdirir. Hesablama ifadəsi() , parametrin təyin edilməsi GroupingNotResource. Resurs üzrə qruplaşdırılmış digər resurslar üçün müntəzəm resurs ifadələri yerləşdirilir.

Növ: Xətt. İfadənin məcmu funksiyalarının hesablanacağı fraqmentin hansı qeyddən başlayacağını və məcmu funksiyalardan kənar sahələrin qiymətlərinin hansı qeyddən alınacağını müəyyən edir. Dəyər aşağıdakılardan biri ola bilər:

· Birinci (Birinci)

· Son (Son)

· Əvvəlki (Əvvəlki)

· Sonrakı (Sonrakı)

· Cari (Cari)

· LimitingValue(Sərhəd dəyəri) LimitingValue

Növ: Xətt. İfadənin məcmu funksiyalarının hesablanacağı fraqmentin hansı qeyddə davam etdiriləcəyini göstərir. Dəyər aşağıdakılardan biri ola bilər:

· Birinci (Birinci). İlk qruplaşma qeydini əldə etməlisiniz. 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 başlanğıcından üçü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 olunur.

· Son (Son). Ən son qruplaşdırma girişini ə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) - qruplaşdırmanın sonundan üçüncü qeydi əldə edin.

Əgər son rekord 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). Əvvəlki qruplaşdırma girişini əldə etməlisiniz. Mötərizədə olan sözdən sonra, nəticəsi cari qruplaşdırma qeydindən geriyə sürüşmə kimi istifadə ediləcək bir ifadə təyin edə bilərsiniz. Məsələn, Previous(2) - əvvəlki qeyddən əvvəlkini alın.

Əvvəlki qeyd qruplaşmadan kənardadırsa (məsələn, ikinci qruplaşma qeydi Əvvəlki(3) tələb edir, onda birinci qruplaşdırma qeydi əldə edilir.

Qruplaşma cəmi üçün əvvəlki rekord əldə edilərkən ilk rekordun əldə edildiyi hesab edilir.

· Sonrakı (Sonrakı). Növbəti qruplaşdırma girişini əldə etməlisiniz. Mötərizədə olan sözdən sonra, nəticəsi cari qruplaşdırma qeydindən irəli sürüşmə kimi istifadə ediləcək bir ifadə təyin edə bilərsiniz. Məsələn, Next(2) - növbəti qeyddən sonrakını əldə edin.

Ə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 Next() alırsa, onda heç bir qeyd olmadığı hesab olunur.

Qruplaşma cəmi üçün növbəti qeyd alındıqda qeydin olmadığı hesab edilir.

· Cari (Cari). Cari girişi əldə etməlisiniz.

Qruplaşdırma cəmi üçün əldə edildikdə, ilk qeyd alınır.

· LimitingValue(Sərhəd dəyəri). Müəyyən edilmiş dəyərə görə qeyd almaq lazımdır. Sözdən sonra LimitingValue mötərizədə fraqmentə başlamaq istədiyiniz dəyəri olan ifadəni, birinci sıralama sahəsini göstərməlisiniz.

Qeyd, 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 olacaq. Məsələn, əgər siz Dövr sahəsini sifariş sahəsi kimi istifadə edirsinizsə və onun 01/01/2010 , 02/01/2010 , 03/01/2010 dəyərlərinə malikdirsə və əldə etmək istəyirsinizsə LimitDəyər(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ər verilmişdir. Göstərilməyibsə, o zaman sifariş ifadənin qiymətləndirildiyi qruplaşma ilə eyni şəkildə həyata keçirilir. Hər ifadədən sonra siz müəyyən edə bilərsiniz açar söz Asc(artan sıra üçün), Azalan(azalan sıra üçün) və Avtomatik tənzimləmə(istinad edilən obyekti sifariş etmək istədiyiniz sahələr üzrə istinad sahələrini sifariş etmək üçün). Söz Avtomatik tənzimləmə sözü ilə olduğu kimi istifadə edilə bilər Asc, və sözü ilə 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 birdən çox qeyd varsa, əvvəlki və ya növbəti qeydi müəyyən etmək üçün qayda 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ə (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.

§ hesablanmış fraqment 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ə("Məbləğ(Məbləğ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("Kurs", "Əvvəlki")

Siyahı yeni funksiyaları:

ComputeExpressionGroupedArray(,) -

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 massivi qaytarır.

ComputeExpressionGroupedValueTable(,) -

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, null istinaddan başqa, Undefined-dən başqa. Boolean dəyərləri NULL-ə qarşı sınaqdan keçirilir. Sətirlər boşluq olmayan simvollar üçün yoxlanılır.

Format(, ) - Keçilmiş dəyərin formatlanmış sətirini əldə edin. Format sətri 1C: Enterprise sisteminin format sətirinə uyğun qurulur.

Alt sətir(, , ) - Bu funksiya sətirdən alt sətir seçmək üçün nəzərdə tutulmuşdur.

Sim Uzunluğu() - funksiya sətrin uzunluğunu təyin etmək üçün nəzərdə tutulmuşdur. Parametr sətir tipli ifadədir

Xətt() - Əgər massiv parametr kimi ötürülürsə, o zaman funksiya ";" simvolları ilə ayrılmış massivin bütün 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 və hər sətrin xana təsvirləri ";" simvolları və sətirlərlə ayrılır. yeni sətir simvolu ilə ayrılır. Əgər hər hansı elementin boş sətir təsviri varsa, o zaman onun təmsili əvəzinə sətir göstərilir.

Məlumatların tərkibi sxemindən (SKD) düzgün istifadə sizə imkan verir:

  • hesabatın hazırlanması üçün tələb olunan vaxtı əhəmiyyətli dərəcədə azaltmaq;
  • yaratmaq ehtiyacını aradan qaldırır idarə olunan forma işləyici;
  • istifadəçi tərəfindən əlavə fərdiləşdirmə imkanı ilə gözəl nəticə əldə edin.

Lakin bütün tərtibatçılar sxemin imkanlarından maksimum istifadə etmirlər, çünki onun bütün parametrləri aydın və intuitiv deyil. Xüsusilə, bir çox insanlar ACS-də 1C-də hesablanmış sahələrin olduğunu bilirlər, lakin onların istifadə sahəsini və onlarla işləmə üsullarını tam başa düşmürlər.

Hesablanmış sahə nədir

Əksər hallarda layout sxemindəki məlumat mənbəyi sorğudur. Prinsipcə, sorğunun özündə müxtəlif düsturlar, konstruksiyalar və ifadələr artıq istifadə oluna bilər. Oyanır qanuni sual Niyə bizə dublikat funksionallıq lazımdır?

Fakt budur ki, ACS sorğunun nəticəsini göstərməkdən başqa bir şeydir və bu, sxem yaratmaq üçün formadan aydın görünür (şəkil 1).

Hesablanmış sahələr yaradılan məlumat dəsti ilə müəyyən hərəkətləri yerinə yetirməyə imkan verir:

  • Müəyyən bir xanada bir neçə sətri birləşdirərək sorğu ilə alınan məlumatların massivini göstərin;
  • Ümumi modulun ixrac funksiyalarına daxil olmaq;
  • Link dilində mövcud olan müxtəlif ifadələri yerinə yetirin və İfadə Qiymətləndirilməsi xüsusi funksiyalarından istifadə edin.

Gəlin bu siyahını nəzərdən keçirək.

Bir xanada dəyərlər massivi

Qarşı tərəf üçün ayrı bir kamerada bütün qəbz sənədlərini almaq lazım olduqda bir vəziyyəti simulyasiya edək:


beləliklə, sxemimizdə əlavə hesablama sahəsi yaratdıq;


Yuxarıdakı nümunədən göründüyü kimi, hesablanmış sahələrin əlavə edilməsi və işlənməsi ilə bağlı heç bir çətinlik yoxdur. Biz iki funksiyadan istifadə etdik: Array() və ConnectStrings().

Sonuncu haqqında bir neçə kəlmə. Massivin, dəyərlərin və ya dəyərin identifikatoruna işarə edən ilk parametrə əlavə olaraq, orada daha ikisini təyin etmək olar:

  1. Elementlər Ayırıcı - hansı simvolun massivin bir elementini və ya dəyərlər cədvəlinin bir cərgəsini digərindən ayıracağını göstərir (bizim vəziyyətimizdə bu parametri buraxdıq və sətir sonu standart olaraq təyin edildi);
  2. Sütun Ayırıcı – dəyərlər cədvəlinin sütunlarını ayırmaq üçün istifadə olunan simvol (standart olaraq nöqtəli vergül istifadə olunur).

Ümumi Modulun İxrac Funksiyalarının Çağırılması

Ümumi modulun funksiyaları hesablanmış sahəni doldurmaq üçün məlumat mənbəyi kimi xidmət edə bilər.

Bir neçə vacib məqam:

  • Funksiya ixrac edilə bilən olmalıdır;
  • Əgər funksiya “Qlobal” bayraq dəsti ilə ümumi modulda yerləşirsə, o, birbaşa adı ilə çağırılır, əks halda funksiya “Ümumi modulun adı” sxeminə uyğun olaraq çağırılmalıdır. "Çağırılacaq funksiyanın adı".

İstifadə nümunəsi olaraq, qəbz sənədləri üçün eyni sorğunu götürəcəyik və ayrı bir sütunda göstərəcəyik. Sorğunun özünü təsvir etməyəcəyik, birbaşa hesablanmış sahələrə keçəcəyik:


Beləliklə, biz görürük ki, demək olar ki, hər hansı bir məlumat emalçısı ACS-dən işə salına bilər ki, bu da sxemdən istifadə imkanlarını xeyli genişləndirir.

Dil ifadələrini əlaqələndirin

Çox vaxt bir tərtibatçının işində, ACS sahəsində bölmənin nəticəsini göstərmək lazım olduqda bir vəziyyət yaranır:

  1. Əşyanın orta qiymətini hesablayın;
  2. Hər növ maraq;
  3. Orta qazancın hesablanması və s.

Problemlərin qarşısını almaq üçün bu hallarda hesablanmış sahəyə 0-a bölmə üçün çek daxil etmək məsləhətdir.

Bu, "Seçim Zaman .... Sonra ... Əks halda ... Son" konstruksiyasından istifadə etməklə edilə bilər.

Sonda kifayət qədər haqqında bir neçə söz yeni xüsusiyyətİfadə hesablayın(). Onun köməyi ilə, xüsusən də cari və əvvəlki xətt arasındakı xərclərdəki sapmaları, məcmu balansı və s.

Tutaq ki, "İfadə" sahəsində CalculateExpression("DocumentAmount", "PreviousAmount") dəyərini göstərərək sorğumuzun əvvəlki sətirindən DocumentAmount əldə edə bilərsiniz.

At bu üsul, mənə göründüyü kimi, bir mənfi var, amma işləyir, amma mənfi böyükdür. Nümunəyə baxaq: konfiqurasiyada “Mallar” cədvəl bölməsi olan “Malların qəbzi” sənədi var, hesabatda hər bir sənəd üzrə qəbul edilmiş malların sənədlərini və adlarını göstərmək lazımdır.

Gəlin hesabat yaradaq, məlumatların əsas kompozisiya sxemini əlavə edək, ACS-yə “sorğu” tipli verilənlər toplusunu əlavə edək və sadə sorğu təşkil edək (bax Şəkil 1).

Şəkil 1. Verilənlər toplusunun sorğusu
"Hesablanmış sahələr" sekmesinde TabularPart adlı hesablanmış sahə əlavə edin və İfadə sütununda boş sətir göstərin (Şəkil 2-ə baxın).
Hesablanmış sahəmiz resurs kimi istifadə olunacaq, buna görə də "Resurslar" sekmesinde qruplaşdırma ifadəsini təyin etdik: ConnectStrings(Array(Məhsullar.Nomenklatura),""). Biz həmçinin bildiririk ki, bu mənbə Link sahəsindən istifadə etməklə hesablanmalıdır (Şəkil 3-ə baxın).
Hesabatın nəticəsi:
Minus haqqında - bu qruplaşdırmanın istifadəsidir, bizim vəziyyətimizdə qruplaşdırma Link atributu ilə həyata keçirilir, əks halda işləməyəcəkdir. Qruplaşdırmanın mövcudluğu məlumat çıxışının qurulmasına bəzi məhdudiyyətlər qoyur (bax Şəkil 4).

2) Paylaşılan moduldan öz funksiyanıza zəng etmək.

Sadə və vizual bir yol, yeganə çətinlik uyğun ümumi modul tapmaq və ya öz funksiyanızı yazmaq üçün yenisini yaratmaqdır :). Funksiya sənədin cədvəl hissəsinin sətirlərini alacaq və "Malların qəbulu" sənədinə keçid vasitəsilə qəbul edilmiş mallar haqqında məlumatı əks etdirən bir sıra təşkil edəcəkdir. Gəlin icraya keçək.

Gəlin hesabat yaradaq, məlumatların əsas kompozisiya sxemini əlavə edək, ACS-yə “sorğu” tipli verilənlər toplusunu əlavə edək və sadə sorğu təşkil edək (bax Şəkil 6).


Şəkil 6. Verilənlər toplusunun sorğusu
Ümumi modul _DemoWorking with Reports yaradaq və GetList of GoodsForReport() ixrac funksiyasını yazaq. Aşağıdakı funksiya koduna baxın.
"Hesablanmış sahələr" sekmesinde TabularPart adlı hesablanmış sahə əlavə edin və İfadə sütununda ümumi moduldan funksiya çağırışını təyin edin (Şəkil 2-ə baxın):
_DemoHesabatlarla İş.Hesabat üçün Elementlərin Siyahısını əldə edin (Link)

"Parametrlər" sekmesine keçək və məlumat çıxışı üçün bir parametr yaradaq - bu ətraflı qeyd olacaq (Şəkil 8-ə baxın).
Hesabatın nəticəsi:

Hesabat nümunəsini yükləyin

Bu metoddan istifadə edərkən nələri bilməlisiniz:
1) Məlumat tərkibi mühərriki ifadəsi qlobal ümumi konfiqurasiya modullarının funksiya çağırışlarını ehtiva edə bilər. Misal üçün:
Qısaldılmış Ad (Link, Tarix, Nömrə)
2) Hesabat proqramlı şəkildə yaradıldıqda, ümumi modulların funksiyalarından istifadəyə yalnız məlumat kompozisiya prosessorunun müvafiq parametri (4-cü parametr) göstərildikdə icazə verilir:
CompositionProcessor = NewDataCompositionProcessor;
LayoutProcessor.Initialize(LayoutLayout, DecodeData, True);
3) Ümumi modul funksiyaları xüsusi sahə ifadələrində istifadə edilə bilməz.
4) Ümumi modulun funksiyasını göstərən hesabatın yaradılması zamanı istisna yaranarsa, modulun icra kontekstini yoxlayın (Şəkil 9-a baxın).

İstifadə olunan funksiyaların təsviri

ConcatenateStrings(Dəyər, Element Ayırıcı, Sütun Ayırıcıları)- sətirləri bir sətirdə birləşdirmək üçün nəzərdə tutulmuşdur.
  • Dəyər - bir sətirdə birləşdiriləcək ifadələr. Əgər massivdirsə, o zaman massivin elementləri sətirdə birləşdiriləcək. Əgər Dəyər Cədvəlidirsə, onda cədvəlin bütün sütunları və sətirləri bir cərgədə birləşdiriləcək;
  • ElementSeparator - Massiv elementləri və qiymət cədvəli sətirləri arasında ayırıcı kimi istifadə ediləcək mətni ehtiva edən sətir. Defolt yeni sətir simvoludur;
  • Sütun ayırıcıları - Dəyər cədvəlində sütunlar arasında ayırıcı kimi istifadə ediləcək mətni ehtiva edən sətir. Defolt ";".
Massiv([Müxtəlif] İfadə)- Parametr kimi dəyərlər cədvəlindən istifadə edə bilərsiniz. Bu halda, funksiyanın nəticəsi parametr kimi ötürülən dəyərlər cədvəlinin birinci sütununun dəyərlərini ehtiva edən massiv olacaqdır. Əgər ifadədə Array funksiyası varsa, o zaman ifadə məcmu ifadə hesab olunur. Variant açar sözü göstərilibsə, nəticədə yaranan massiv dublikat dəyərlərdən ibarət olmayacaq.

GetProductListForReport(DocumentReference)- funksiya daxil olan malların siyahısı ilə sətir yaradır.
// Seçimlər:
// DocumentLink - DocumentLink.Malların qəbzi - "Malların qəbzi" sənədi.
// Dəyəri qaytarın:
// String - malların siyahısı olan sətir.
GetProductListForReport(DocumentReference) İxrac funksiyası

ItemList = "";

DocumentReference.Products Loop-dan Hər Sətir üçün
Malların Siyahısı = Malların Siyahısı + String PM.Nomenklatura;
ItemList = ItemList + Symbols.PS;
EndCycle;

Malların qaytarılması siyahısı;

EndFunction // GetItemListToReport()

Tələbə kimi daxil olun

Məktəb məzmununa daxil olmaq üçün tələbə kimi daxil olun

Başlayanlar üçün 1C 8.3 məlumat kompozisiya sistemi: nəticələrin hesablanması (resurslar)

Bu dərsin məqsədi olacaq:

  • Məhsulların siyahısını (Qida kataloqu), onların kalorili məzmununu və dadını göstərən hesabat yazın.
  • Məhsulları rəngə görə qruplaşdırın.
  • Ümumiləşdirmə xüsusiyyəti (resurslar) və hesablanmış sahələrlə tanış olun.

Yeni hesabatın yaradılması

Əvvəlki dərslərdə olduğu kimi, verilənlər bazasını açın " Deli"konfiquratorda və menyu vasitəsilə yeni hesabat yaradın" Fayl"->"Yeni...":

Sənəd növü - xarici hesabat:

Hesabat parametrləri formasında adı yazın " Dərs 3"və düyməni basın" Açıq Məlumat Tərkibi Diaqramı":

Standart sxem adını buraxın və " Hazır":

Konstruktor vasitəsilə sorğu əlavə etmək

nişanında " Məlumat dəsti"klikləyin yaşıl plus işarələyin və seçin " Dataset əlavə et - Sorğu":

Sorğunun mətnini əl ilə yazmaq əvəzinə yenidən işə salın sorğu konstruktoru:

nişanında " masalar"masanı sürükləyin" Qida" birinci sütundan ikinci sütuna:

Cədvəldən seçin Qida" sorğu edəcəyimiz sahələr. Bunu etmək üçün sahələri sürükləyin " ad", "Dadmaq", "Rəng"Və" kalori"ikinci sütundan üçüncü sütuna:

Belə çıxdı:

Düyməyə bas " tamam" - sorğu mətni avtomatik olaraq yaradıldı:

Hesabat təqdimatı parametrlərinin formalaşdırılması

Əlfəcinlərə keçin Parametrlər" və üzərinə klikləyin sehrli çubuq, zəng etmək parametrlər konstruktoru:

Hesabatın növünü seçin Siyahı..." və "düyməsinə basın" Daha":

Siyahıda görünəcək sahələri sol sütundan sağa sürükləyin və " düyməsinə basın. Daha":

Sol sütundan sağ sahəyə sürükləyin " Rəng"- ona görə olacaq qruplaşdırma hesabatdakı sətirlər. " düyməsini basın tamam":

Və burada konstruktorun nəticəsidir. Hesabatımızın iyerarxiyası:

  • bütövlükdə hesabat
  • qruplaşdırma "Rəng"
  • təfərrüatlı qeydlər - qida adları olan sətirlər

Hesabatı saxla (düymə disket) Və bağlamadan konfiqurator, biz onu dərhal istifadəçi rejimində açacağıq. Belə çıxdı:

Sütun sırasının dəyişdirilməsi

Amma gəlin sıranı dəyişdirin sütunlar (yuxarı və aşağı oxlar) aşağıdakı şəkildəki kimi görünsün:

Hesabatı yadda saxlayın və istifadəçi rejimində yenidən açın:

Əla, bu daha yaxşıdır.

Kalori məzmununa görə yekunlaşdırma (cəm).

Qidaların ümumi kalorili məzmununu qruplar üzrə göstərmək yaxşı olardı. Bütün məhsulların kalori miqdarının cəmini görmək üçün, məsələn, ağ və ya sarı. Və ya verilənlər bazasındakı bütün qidaların ümumi kalorili məzmununu öyrənin.

Bunun üçün resurs hesablama mexanizmi var.

Taba keçin " Resurslar"və sahəni sürükləyin" kalori"(biz onu ümumiləşdirəcəyik) sol sütundan sağa.

Eyni zamanda, ifadə sahəsində, açılan siyahıdan seçin " Məbləğ (kalori)", çünki cəmi cəmi daxil olan bütün elementlərin cəmi olacaq:

Hesabatın saxlanması və yaradılması:

Qrupların hər biri və bütövlükdə hesabat üçün nəticələrimiz var.

Kalori məzmunu ilə yekunlaşdırmaq (ortalama).

İndi onu elə edək ki, başqa bir sütun görünsün orta qruplar üzrə və ümumilikdə hesabat üçün məhsulların kalori miqdarı.

Artıq mövcud olan "Kaloriya məzmunu" sütununa toxunmaq mümkün deyil - ümumi məbləğ artıq orada göstərilir, buna görə də başqa sahə əlavə edək, "Kaloriya" sahəsinin dəqiq surəti olacaq.

Belə bir "virtual" sahə yaratmaq üçün mexanizmdən istifadə edirik hesablanmış sahələr.

Əlfəcinlərə keçin Hesablanmış sahələr" və basın yaşıl artı işarəsi:

bir sütunda " Məlumat Yolu"yeni sahənin adını yazın ( birlikdə, boşluqlar olmadan). Qoy adlansın Orta Kalori", və " sütununda İfadə" biz artıq mövcud sahənin adını yazırıq, bunun əsasında yeni sahə hesablanacaq. Biz orada yazırıq " kalori". Sütun " başlıq" avtomatik doldurulacaq.

Biz yeni sahə əlavə etdik (" Orta Kalori"), lakin hesabatda öz-özünə görünməyəcək - ya yenidən zəng etməlisiniz parametrlər konstruktoru("sehrli çubuq") və ya bu sahəni əlavə edin əl ilə.

hərəkət edək ikinci yol. Bunu etmək üçün nişana keçin " Parametrlər", seçin" Hesabat" (hər şeydən sonra, biz hesabata bütövlükdə sahə əlavə etmək istəyirik), aşağıdakı nişanı seçin " Seçilmiş sahələr"və sahəni sürükləyin" Orta Kalori" sol sütundan sağa:

Belə çıxdı:

Hesabatın saxlanması və yaradılması:

Sahə meydana çıxdı və biz onun dəyərlərinin "Kaloriya" sahəsinin dəyərləri olduğunu görürük. Əla!

Bunun üçün biz yenidən bizə artıq tanış olan mexanizmdən istifadə edirik. resurslar(ümumiləşdirmə). Əlfəcinlərə keçin Resurslar"və sahəni sürükləyin" Orta Kalori" sol sütundan sağa:

Eyni zamanda, sütunda İfadə"seç" Orta (Orta Kalori)":

Hesabatın saxlanması və yaradılması:

Görürük ki, qruplar üzrə, yəni hər bir rəng üçün və bütövlükdə hesabat üzrə orta qiymət kifayət qədər düzgün hesablanıb. Amma indiki əlavə girişlər hesabatdan silmək istədiyiniz fərdi məhsullar üçün (qruplar üçün deyil).

Bilirsiniz niyə onlar meydana çıxdı (mənalar qruplarda deyil)? Çünki biz sahəni əlavə etdikdə " Orta Kalori" hesabat parametrlərində, ikinci addımda seçdik bütün hesabat və bu yeni sahə elementi vurdu " Ətraflı qeydlər".

Gəlin xətanı düzəldək. Bunu etmək üçün nişana qayıdın " Parametrlər", seçin" Detal qeydləri"əvvəl yuxarı (addım 2) və sonra" Detal qeydləri"aşağıdan (addım 3), əlfəcinlərə keçin" Seçildi sahələr"və onun sağ sütununda elementə baxın" Avtomatik".

Element " Avtomatik" - bu bir sahə deyil. Bunlar daha yüksək parametrlərə əsasən avtomatik olaraq buraya daxil olan bir neçə sahədir.

Bu sahələrin nə olduğunu görmək üçün elementə klikləyin " Avtomatik" sağ düyməsini basın və seçin " Genişləndirin":

Element " Avtomatik" aşağıdakı sahələrə genişləndi:

Budur bizim sahəmiz Orta Kalori"Bura paraqrafdan gəldi" Hesabat"Oraya sürüklədiyimiz zaman. Sadəcə qalxaq onun çıxışını silmək üçün bu sahənin yanında işarələyin.

Gününüz xeyir, blogumuzun əziz oxucuları! Bu gün mən real bir misaldan istifadə edərək, necə demək istəyirəm
Array (Array) və ConnectStrings (JoinStrings) SKD funksiyalarından istifadə edin. haqqında bir məqalədə

ilə necə işləmək haqqında bir az qeyd
əlfəcin üzərində
, kimi də izah edilmişdir
Resurslar sekmesini istifadə edərək. Bu gün biz bir daha bunlara diqqət yetirəcəyik
mövzumuza uyğun olaraq əlfəcinlər.

İki istifadə edərək 1C hesabatı nümunəsinin görünüşü ACS funksiyaları massivConnectStrings sonrakı:

Array (Array) və ConnectStrings (JoinStrings) ACS funksiyalarının tətbiqi üçün problemin ifadəsi

Tapşırıq: Bir məhsulun bütün satış nömrələrini bir xanaya daxil etmək lazımdır.

Belə bir şey: nomenklatura | kəmiyyət | 001, 002 və s. |

Biz "TMZ-nin həyata keçirilməsi" toplama reyestrinə sorğudan istifadə edəcəyik.

SEÇİN
TMZ-nin həyata keçirilməsi. Qeydiyyatçı. Nömrə,
TMZ-nin həyata keçirilməsi. nomenklatura,
TMZ-nin həyata keçirilməsi. Qeydiyyatçı,
TMZ-nin həyata keçirilməsi. Kəmiyyət Dövriyyəsi
FROM
Yığım Qeydiyyatdan Keçin. TMZ-nin həyata keçirilməsi. Dövriyyələr
(, , Qeydiyyatçı, ) TMZ NECƏ TƏTBİQ ETMƏLİ

"TMZ-nin həyata keçirilməsi" yığılma reyestri həm Mühasibat Uçotu, həm də Ticarət Müəssisəsinin İdarəetmə (UTP) konfiqurasiyasında mövcuddur. "Nomenklatura" kataloq elementində USP konfiqurasiyasında necə olduğunu öyrənin. Buna görə də, yüklədikdən sonra onun performansını yoxlamaq üçün bu hesabatı hər iki konfiqurasiyada işlədə bilərsiniz.

SKD Array və ConnectStrings funksiyalarından istifadə etməklə tapşırığın yerinə yetirilməsi


Yaratmaq üçün eyni addımlar, lakin bəzi əlavələrlə istifadə edilmişdir
.

JoinStrings (JoinStrings) funksiyasının təsviri

JoinStrings (JoinStrings)

Sətirləri bir sətirdə birləşdirmək üçün istifadə olunur.

Sintaksis:

ConcatenateStrings(Dəyər, Element Ayırıcı, Sütun Ayırıcıları)

Seçimlər:

  1. Məna- bir sətirdə birləşdiriləcək ifadələr.
    Əgər massivdirsə, o zaman massivin elementləri sətirdə birləşdiriləcək.
    Əgər Dəyər Cədvəlidirsə, onda cədvəlin bütün sütunları və sətirləri bir cərgədə birləşdiriləcək;
  2. Element ayırıcı kimi istifadə olunacaq mətni ehtiva edən sətirdir
    massiv elementləri və dəyər cədvəli sətirləri arasında ayırıcı. Defolt yeni sətir simvoludur;
  3. Sütun ayırıcıları- ayırıcı kimi istifadə ediləcək mətni ehtiva edən sətir
    dəyərlər cədvəlinin sütunları arasında. Defolt ";".