Xüsusi məlumat mənbəyi ilə işləyən Report Builder və Query Builder. Xüsusi məlumat mənbəyi ilə işləyən Report Builder və Query Builder İndi maraqlı materiallar üçün

1. Hesabat qurucusu nədir?

Hesabat qurucusu müəyyən edilmiş sorğu mətni və parametrləri əsasında nəticə əldə etməyə və onu elektron cədvəl sənədində və ya diaqramda göstərməyə imkan verən obyektdir.

Report Builder parametrlərinə aşağıdakılar daxildir:

  • qruplaşmalar (məsələn: “Nomenklatura”, “Qarşı tərəf”...),
  • göstəricilər (məsələn: “Kəmiyyət”, “Məbləğ”...),
  • əlavə sahələr (məsələn: “İtem.Service”, “Account.Code”...),
  • filtr (məsələn: konkret maddə üzrə, qarşı tərəflər qrupu üzrə...) və
  • çeşidləmə (məsələn: “Nomenklatura.Kod”, “Qarşı tərəf.Adı”...)

Qurucu parametrlərində vizuallaşdırma alətləri var ki, bu da proqramçıya istifadəçini minimum səylə quraşdırmaq üçün interfeys təqdim etməyə imkan verir.

Çıxışdan əvvəl siz görünüş tərtibatından istifadə edərək hesabat qurucusu tərtibatını tərtib edə bilərsiniz.

Hesabat qurucusu sorğu nəticəsinin çıxışı bir komanda ilə yerinə yetirilir.

2. Hesabat qurucusundan harada istifadə edə bilərəm?

Hesabat qurucusundan istifadə edərək siz hesabatların böyük hissəsini tərtib edə bilərsiniz (məsələn: “İnventar qalıqları”, “Dövr üzrə satışlar”...). Eyni zamanda, onların inkişafı və proqram kodu üçün vaxt əhəmiyyətli dərəcədə azalacaq, dizayn və funksionallıq keyfiyyəti yüksələcəkdir.

Bundan əlavə, hesabat qurucusu nəticənin çıxışına ehtiyac olmadığı hallarda istifadə edilə bilər, lakin istifadəçi sorğu elementlərini, məsələn, qruplaşdırmaları və ya filtri fərdiləşdirməli olur (məsələn: elementi xml faylına yükləmək və ya emal etmək) sənədlərin verilmiş filtrə uyğun yerləşdirilməsi).

Hesabat qurucusu 1C: Enterprise serverində mövcud olmadığı və xarici əlaqə modulunda istifadə edilmədiyi üçün bu hallarda istifadə etmək lazımdır. sorğu qurucusu, hesabat qurucusuna bənzəyir, lakin vizual xassələri və metodları yoxdur (“Layout”, “OutputReportTitle”, “Output()”, “DesignLayout()”...).

3. Konseptlər haqqında bir az

7.7 versiyası ilə müqayisədə 8.0 versiyası konsepsiyalarda cüzi dəyişikliyə məruz qalıb, ona görə də bu barədə bir az dayanmağa dəyər.

Konsepsiya

Təsvir

Sıra ölçüləri Çıxışın cərgə üzrə aparılacağı qruplaşmaların siyahısı (məsələn: “Element”, “Hesab”...)
Sütun ölçüləri Sütunlar üzrə çıxışın aparılacağı qruplaşmaların siyahısı (məsələn: “Anbar”, “Ay”...).
Seçim Müxtəlif filtrlər dəsti (məsələn: qarşı tərəflər qrupu, müəyyən bir təşkilat tərəfindən...).
Sifariş verin Çeşidləmə sahələri dəsti (məsələn: “Məhsul kodu”, “Satış sənədi. Məsuliyyətli”...).
Sahə Sorğu seçim sahələrindən biri (məsələn: “Element”, “Hesab. Kodu”, “Kəmiyyət”, “Məbləğ”...).
Seçilmiş sahələr Seçilmiş sahələrin siyahısına göstəricilər (məsələn: “Kəmiyyət”, “Məbləğ”...) və əlavə sahələr (qruplaşdırma təfərrüatları) daxildir (məsələn: “Nomenklatura.Qrup”, “Hesab.Kodu”...).
Mövcud sahələr Qruplaşdırma, filtr, çeşidləmə və seçilmiş sahələrə əlavə etmək üçün mövcud sahələrin siyahısı. O, bir qayda olaraq, sorğu seçim sahələrinin siyahısı ilə doldurulur, lakin proqramlı şəkildə redaktə edilə bilər (mövcud sahələri əlavə edə, dəyişdirə və silə bilərsiniz).

Qrup, filtr, çeşidləmə və seçilmiş sahələrin mövcud sahələrlə birbaşa əlaqəli olmadığını başa düşmək vacibdir;

Əsas fərq, mövcud sahənin "DataPath" xüsusiyyətinə malik olmamasıdır (məsələn: "Nomenklatura.Kod", "Kəmiyyət"), çünki bu, sadəcə tapmağa çalışılacaq sahənin bir növ təsviridir. qruplaşmalar, filtrlər, çeşidlər və ya seçilmiş sahələr siyahısına əlavə edilən sorğu nümunə sahələri arasında uyğunluq.

Eyni zamanda, yuxarıdakı siyahıların hər hansı birinə mövcud sahələrdən birini proqramlı şəkildə əlavə etmək mümkün deyil, çünki bir tərəfdən mövcud sahədə “AddToSelection()” və ya “AddToSelectedFields()” metodları yoxdur. ”, və digər tərəfdən, yuxarıdakı siyahılardan hər hansı birinə yeni element əlavə edərkən, həmişə sahə adı ilə üst-üstə düşməyən “DataPath” xassəsini göstərməlisiniz (məsələn: “Nomenklatura.Valideyn” sahələri və “Nomenklatura.Valideyn.Valideyn” eyni ada malikdir “Valideyn”).

4. Hesabat qurucusu üçün tipik istifadə halı

Ümumiyyətlə, hesabat qurucusu ilə işləyərkən hərəkətlərin ardıcıllığı aşağıdakı kimidir:

  1. "Hesabat Qurucusu" adlı yeni obyekt yaradın;
  2. Sorğunun mətnini “Mətn” xassəsinə təyin edin;
  3. Hesabat qurucusunun parametrləri sorğu mətnində göstərilməyibsə, o zaman “FillSettings()” metodunu yerinə yetirin;
  4. İstifadəçiyə hesabat qurucusu parametrlərini dəyişmək imkanı vermək;
  5. Lazım gələrsə, hesabat qurucusu tərəfindən tərtibatın avtomatik yaradılmasından imtina edə və "Layout" xüsusiyyətinə sabit bir tərtibat təyin edə bilərsiniz;
  6. Lazım gələrsə, siz “Dizayn Layout” xassəsini standartlardan birinə və ya öz layoutunuza təyin edə bilərsiniz və əgər hesabat qurucusunun avtomatik yaradılan tərtibatı sabit biri ilə əvəz olunubsa, o zaman “DesignLayout()” funksiyasını yerinə yetirin. üsul;
  7. “Run()” metodunu çağırın;
  8. “Output()” metodunu çağırın.
Qurucu = Yeni "ReportBuilder"; Builder.Text = "İCAZƏ VERİLİR SEÇİN | Şirkət CashRemains.StructuralUnit, | MƏBLƏR(ŞirkətCashRemains.AmountRemaining) KİMİ | |FROM | RegisterAccumulations.CompanyCash.Remains(, (StructuralUnit.*)) |Tructural BUnit. , |. StructuralUnit"; Builder.FillSettings(); //Burada istifadəçiyə //hesabat qurucusunun parametrlərini dəyişmək imkanı verə bilərsiniz Builder.Layout = GetLayout("CustomLayout");
Builder.AppearanceLayout = GetAppearanceLayout(StandardAppearance.Classic);
Builder.DesignLayout();
Builder.Run();
Builder.Output();

5. Hesabat qurucusunun bəzi xassələrinin təsviri

Əmlak

Təsvir

Mətn Hesabat qurucusu sorğusunun mətnini ehtiva edir. Hesabat qurucusunun sorğu mətnində “(…)” parametr elementləri yoxdursa, sorğu mətni əsasında parametrləri avtomatik doldurmaq üçün “FillSettings()” metodundan istifadə edə bilərsiniz.
Başlıq Mətni Hesabatın başlığında göstəriləcək mətn (məsələn: “01/01/2004-cü il tarixinə inventar qalıqları”, “Yanvar 2004-cü il üçün satışlar”...).
Çıxış Hesabatı Başlığı
Çıxış Cədvəli Başlığı
Ümumi Nəticələr
ÇıxışFooter Cədvəlləri
Çıxış HesabatıFootment
Bu xüsusiyyətlər müvafiq olaraq hesabat başlığının, cədvəl başlığının, ümumi yekunların, cədvəl altbilgisinin və hesabat altbilgisinin göstərilib-göstərilmədiyini müəyyən edir.
ÇıxışDetailedRecords Mülk, təfərrüatlı qeydlərin çıxarılmasını məcbur etmək və ya çıxarılmasını qadağan etmək üçün məsuliyyət daşıyır.
AutoDetailedRecords Əgər “AutoDetailed Records” xüsusiyyəti True olaraq təyin edilibsə, onda hər bir təfərrüatlı qeyd yalnız qrup qeydindən fərqli olduqda göstəriləcək.
AvailableFields Qruplaşmalara, filtrlərə, seçilmiş sahələrə və çeşidləmələrə əlavə etmək üçün mövcud sahələrin siyahısını ehtiva edir.
ÖlçülərStrings
Ölçülər Sütunlar
Sıralar və sütunlar üzrə qruplaşmaların siyahısını ehtiva edir.
Seçim Hesabat qurucusu üçün müəyyən edilmiş filtrlərin siyahısını ehtiva edir.
Seçilmiş Sahələr seçilmiş göstəricilərin siyahısını və qruplaşdırma təfərrüatlarını ehtiva edir.
Sifariş verin çeşidləmə sahələrinin siyahısını ehtiva edir.
Seçimlər Qurucu parametrlərinin siyahısını ehtiva edir ("&" simvolundan istifadə edərək qurucu sorğusunun mətnində elan olunur).
Nəticə Hesabat qurucusu sorğusunun (QueryResult tipli obyekt) icrasının nəticəsini ehtiva edir.

6. Hesabat Qurucusundan istifadə edərək Transkriptlərin işlənməsi

“Deşifrənin Doldurulması” xüsusiyyəti çıxış zamanı transkriptin doldurulması üçün üç seçimdən birini ehtiva edir:

Seçim 1: doldurmayın (transkriptdən istifadə etməyin).

2-ci seçim: qruplaşdırma dəyərləri (bir hüceyrənin şifrəsini açarkən, orada göstərilən qruplaşdırma dəyəri açılacaq).

3-cü seçim: deşifrə (şifrləmə bütün qrupların dəyərlərini ehtiva edən bir quruluşla doldurulacaq). Bu halda, köçürülmüş strukturu təhlil etməli və müəyyən hərəkətləri yerinə yetirməli olduğunuz "Şifrənin açılması prosesi" elektron cədvəl sənəd hadisəsini emal etməlisiniz.

Əhəmiyyətli bir məqam ondan ibarətdir ki, üçüncü variantda yaradılan elektron cədvəl sənədinə çıxış mümkün deyil, o vaxtdan elektron cədvəl sənəd sahəsinin yerləşdiyi forma modulunda hadisənin işlənməsi baş verən transkripti emal etmək mümkün deyil. .

Transkriptin doldurulması üçün üçüncü seçimdən istifadə edilərsə, o zaman istifadəçi tərəfindən yerinə yetirilən transkript nəzərə alınmaqla hesabatı icra etmək və göstərmək üçün nəzərdə tutulmuş “SetupTranscript()” metodundan istifadə edə bilərsiniz.

Hesabat qurucusu eyni və ya yeni ola bilər. Transkripti konfiqurasiya etdikdə, bütün fərdi hesabat qurucusu filtrləri silinəcək və orijinal sorğu qurucusundan quraşdırılmış bütün filtrlər, həmçinin transkriptdən qruplaşdırma dəyərlərinə əsaslanan filtrlər əlavə olunacaq.

7. Hesabatın hazırlanması

“Layout” xassəsi nəticəni elektron cədvəl sənədinə çıxararkən istifadə olunan tərtibatı ehtiva edir. Müəyyən edilməmişsə, düzüm avtomatik olaraq yaradılır.

"ReportHeader Layout", "TableHeaderLayout", "DetailedRecordsLayout", "TotalTotalsLayout", "TableFooterLayout" və "ReportFooterLayout" xassələri hesabat qurucusu düzənindəki sahənin adını və ya hesabat başlığını göstərərkən istifadə edilən fərdi tərtibatları ehtiva edir, cədvəlin başlığı, təfərrüatlı qeydlər, ümumi yekunlar, cədvəl altbilgisi və hesabat altbilgisi elektron cədvəl sənədinə çevrilir. Əgər əhatə dairəsi adları Report Builder tərtibatındakı adlara uyğun gəlirsə, onda xassələri doldurmağa ehtiyac yoxdur.

Görünüş Düzeni xassəsi hesabat qurucusunun tərtibatını tərtib etmək üçün istifadə olunan tərtibatı ehtiva edir. Görünüş düzümündəki xanaların görünüşü hesabat qurucusu düzənindəki xanalara tətbiq olunacaq.

Standart dizayn seçimlərindən birini əldə etmək üçün “GetDesignLayout()” qlobal kontekst metodundan istifadə edə bilərsiniz.

Hesabat qurucusunun “Layout” xassəsinə sabit tərtibat təyin edilibsə, onu tərtib etmək üçün “DesignLayout()” metodunu icra etməlisiniz.

“Ölçülərin sətirlərdə yerləşdirilməsi” xassəsi qruplaşmaları sətirlər üzrə göstərmək üçün üç variantdan birini müəyyən edir.
1-ci seçim: birlikdə (bir sütunda).
Misal:

2-ci seçim: ayrıca (müxtəlif sütunlarda).
Misal:


Misal:

“Ölçülərin Sütunlarda Yerləşdirilməsi” xüsusiyyəti qruplaşmaları sütunlar üzrə göstərmək üçün üç variantdan birini müəyyən edir.
1-ci seçim: birlikdə (bir sətirdə).
Misal:

2-ci seçim: ayrıca (müxtəlif sətirlərdə).
Misal:

3-cü seçim: ayrıca və yalnız sonda.
Misal:

“Cəmiləri sətirlərdə yerləşdirin” xassəsi cəmiləri sətirlərdə göstərmək üçün dörd yoldan birini müəyyən edir.
1-ci seçim: başlıqda (yalnız yuxarıda sonrakı qruplar və ətraflı qeydlər).

2-ci seçim: başlıq və altbilgidə (sonrakı qruplaşmaların və ətraflı girişlərin yuxarısında və altında).

3-cü seçim: zirzəmidə (sonrakı qruplaşmaların və ətraflı qeydlərin altında, yuxarıda yalnız qruplaşdırmanın təsviri göstərilir).

4-cü seçim: yalnız zirzəmidə (yalnız sonrakı qruplaşmalardan və ətraflı qeydlərdən aşağıda).

Əmlak " Cəmilərin Sütunlarda Yerləşdirilməsi” cəmiləri sütunlarda göstərmək üçün dörd yoldan birini müəyyənləşdirir.

1-ci seçim: başlıqda (yalnız sonrakı qruplaşmaların və ətraflı girişlərin solunda).

2-ci seçim: başlıq və altbilgidə (sonrakı qruplaşmaların və ətraflı girişlərin solunda və sağında).

3-cü seçim: zirzəmidə (sonrakı qruplaşmaların və ətraflı qeydlərin sağında, onların solunda yalnız qruplaşmanın təsviri göstərilir).

4-cü seçim: yalnız zirzəmidə (yalnız sonrakı qruplaşmaların və ətraflı qeydlərin sağında).

Əmlak " Satırlarda Ölçülərin Detallarının Yerləşdirilməsi” qruplaşdırma təfərrüatlarını sıra üzrə göstərmək üçün üç seçimdən birini müəyyən edir.

1-ci seçim: birlikdə (bir əlavə sütunda).
Misal:

2-ci seçim: ölçmələrlə birlikdə (qruplaşma ilə sütunlarda).
Misal:

3-cü seçim: ayrıca (müxtəlif əlavə sütunlarda).
Misal:

Əmlak " Ölçmələrin Təfərrüatlarının Sütunlarda Yerləşdirilməsi” sütunlar üzrə qruplaşdırma təfərrüatlarını göstərmək üçün üç seçimdən birini müəyyən edir.

1-ci seçim: birlikdə (bir əlavə sətirdə).
Misal:

2-ci seçim: ölçülərlə birlikdə (qruplaşma ilə sətirlərdə).
Misal:

3-cü seçim: ayrıca (müxtəlif əlavə sətirlərdə).
Misal:

8. Report Builder Output

“Run()” metodu hesabat qurucusu sorğusunu yerinə yetirir və “Nəticə” xassəsini doldurur.
“GetQuery()” metodundan istifadə edərək, “Run()” metodu çağırıldıqda yerinə yetirilən hesabat qurucusu sorğusunu əldə edə bilərsiniz.

“Çıxış()” metodu nəticəni elektron cədvəl sənədində və ya diaqramda göstərir. Çıxış etmək istədiyiniz obyekti göstərməsəniz, yeni elektron cədvəl sənədi yaradılacaq.

Yeni elektron cədvəl sənədinə çıxış nümunəsi:
Builder.Output();

Mövcud elektron cədvəl sənədinə çıxış nümunəsi:
Builder.Output(FormElements.ResultTable);

Diaqrama çıxış nümunəsi:
Builder.Output(FormElements.ResultDiagram, "Kəmiyyət");

Hesabat qurucusunun nəticəsini pivot cədvəlində və ya pivot diaqramda göstərmək istəyirsinizsə, o zaman “Çıxış()” metodundan istifadə etməyinizə ehtiyac yoxdur, ancaq pivot cədvəlinin və ya pivot diaqramın “Məlumat mənbəyi” xassəsini doldurun. . Mənbə hesabat qurucusunun və ya hesabat qurucusunun özünün nəticəsi ola bilər. Hesabat qurucusunun nəticəsi sorğunun yenidən icrasını tələb etmir, lakin hesabat qurucusu qruplaşmaların tərkibini dəyişməyə imkan verir.

9. Qurucu parametrlərinin saxlanması və bərpası

“GetSettings()” metodu hansıları təyin etmək imkanı ilə hesabat qurucusunun cari parametrlərini əldə etməyə imkan verir (məsələn: yalnız filtr, filtr və çeşidləmə...).

“SetSettings()” metodu sizə hesabat qurucusu parametrlərini hansı parametrləri təyin etmək imkanı ilə yükləməyə imkan verir (məsələn: yalnız filtr, filtr və çeşidləmə...).

10. Qurucu qruplaşmaları və sahələri haqqında hesabat verin

Hesabat qurucusunun ölçüsü sətirlər və ya sütunlar üzrə qruplaşdırmadır.

Qrupun əsas təfərrüatları bunlardır

  • "Ad" (ətraflı identifikator) (məsələn: "Məhsul", "Qarşı tərəf"...),
  • “Nümayəndəlik” (çıxış zamanı təqdimat) (məsələn: “Satış sənədi”, “Ölçü vahidi”...),
  • “PathtoData” (sorğu seçim sahəsinə gedən yol) (məsələn: “Nomenklatura”, “DocumentSales.Organization”...)

və əgər qruplaşma kataloqa uyğun qurulubsa, o zaman

  • “Ölçü Növü” (sahə dəyərlərinə görə filtr seçimlərindən biri: iyerarxiya (elementlər və qruplar), yalnız iyerarxiya (yalnız qruplar) və ya elementlər (yalnız elementlər)).

Bundan əlavə, cədvəl sənədinə çıxış zamanı istifadə olunacaq qrupa planlar təyin etməyə imkan verən bir neçə xüsusiyyət var.

  • “Layout” hesabat qurucusu tərtibatındakı sahənin adıdır və ya çıxışın qruplaşdırılmasında istifadə edilən ayrıca tərtibatdır.
  • “İyerarxiya Düzəlişi” hesabat qurucusu düzənindəki sahənin və ya qruplaşdırma iyerarxiyasını nümayiş etdirərkən istifadə edilən ayrıca tərtibatın adıdır.
  • “Footer Layout” qurucu düzənindəki sahənin adıdır və ya qrup altbilgisini nümayiş etdirərkən istifadə edilən ayrıca tərtibatdır.
  • “HierarchyFooterLayout” qurucu düzənindəki sahənin adıdır və ya qruplaşdırma iyerarxiyasının altbilgisini göstərərkən istifadə edilən ayrıca tərtibatdır.
  • "Səviyyə Zirzəmi Planları" - müxtəlif qruplaşdırma səviyyələri üçün zirzəmi planlarının bir sıra.
  • "Səviyyə Planları" - müxtəlif səviyyəli qruplaşmalar üçün düzənlər silsiləsi.

Hesabat qurucusu sahəsi seçilmiş sahələrdən biridir. Əsas sahə təfərrüatları bunlardır

  • “Ad” (sahə identifikatoru) (məsələn: “Kəmiyyət”, “Nomenklatura kodu”, “Dövr”...),
  • “Təmsil” (çıxış zamanı təmsil) (məsələn: “Kəmiyyət”, “Kod”, “Dövr”...) və
  • “PathKData” (sorğu seçim sahəsinə gedən yol) (məsələn: “Kəmiyyət”, “Nomenklatura. Kod”, “Dövr”...).

Qruplar və ya sahələr siyahısı ilə bir sıra hərəkətləri yerinə yetirə bilərsiniz.

  • “Insert()” - göstərilən mövqeyə qruplaşdırma/sahə əlavə edin.
  • “Əlavə ()” - siyahının sonuna qruplaşdırma/sahə əlavə edin.
  • “İndeks ()” - siyahıda qruplaşdırma/sahə indeksini əldə edin.
  • “Quantity()” - siyahıdakı qruplaşmaların/sahələrin sayını əldə edin.
  • “Tap()” - siyahıda adla qruplaşdırma/sahə tapın.
  • “Clear()” - qruplaşmaların/sahələrin siyahısını təmizləyir.
  • “Get()” - indeks üzrə qruplaşdırma/sahə əldə edin.
  • “Shift ()” - qruplaşdırmanı/sahəni müəyyən edilmiş mövqe sayına görə dəyişdirin.
  • “Sil ()” - qruplaşdırmanı/sahəni siyahıdan çıxarın.

11. Qurucu dili

Hesabat qurucusunun öz dili var. Bu, “(…)” konstruksiyaları ilə tamamlanan müntəzəm sorğu dilidir. Bu konstruksiyalardan istifadə edərək siz “FillSettings()” metodundan imtina edə və sorğunun mətnində hesabat qurucusunu konfiqurasiya edə bilərsiniz.
Bu yolla siz “SEÇİN”, “HARADA”, “SİFARİŞƏ GÖRƏ”, “SUMMARY BY” elementlərini fərdiləşdirə və bir neçə başqa maraqlı şey edə bilərsiniz. Bu halda, qurucu sorğusunun əsas hissəsi standart parametrlər olacaq, konstruksiyalar (...) isə mövcud parametrləri təsvir edəcək.

Seçim sahəsi nöqtə vasitəsilə nəyisə əldə etməyə imkan verirsə, o zaman sahədən sonra “.*” işarəsini göstərə bilərsiniz, onda istifadəçi sahə təfərrüatlarını seçə biləcək. Məsələn, “Nomenklatura.*” “Nomenklatura.Kod” üzrə çeşidləməyə və ya “Nomenklatura.Xidmət” üzrə seçim etməyə imkan verir. Lakin “Kəmiyyət.*” mənası yoxdur, çünki “Kəmiyyət” sahəsində təfərrüatlar yoxdur, yəni “Kəmiyyət”i göstərmək kifayətdir.

“SEÇ” konstruksiyasında göstərilən sahələr istifadəçi üçün mövcud olan sahələrin siyahısını məhdudlaşdırır.
“HARADA” konstruksiyasında göstərilən sahələr filtrdə istifadə oluna bilən sahələrin siyahısını məhdudlaşdırır.
“SİFARİŞ BY” konstruksiyasında göstərilən sahələr çeşidləmə üçün sahələrin siyahısını məhdudlaşdırır.
“PO NƏTİCƏLƏRİ” konstruksiyasında göstərilən sahələr cəmlərin qruplaşdırılması üçün sahələrin siyahısını məhdudlaşdırır.

İndi maraqlı şeylərə.

Birincisi, sorğunun əsas mətnində mənbə parametrlərində konstruksiyalardan da (...) istifadə edə bilərsiniz. Məsələn, əgər əvəzinə
|FROM
| Yığımları Qeydiyyatdan Keçin.Şirkətin Qalan Məhsulları.Qalanlar(&Bitmə Tarixi)
göstərmək
|FROM
| Yığım Reyestri.Şirkətin Malları Qalır.Qalır((&Bitmə Tarixi))
onda bu halda “Son Date” sahəsinə filtr təyin etmək mümkün olacaq.

Eyni zamanda, birinci halda hesabat qurucusu parametrini "Son tarix" təyin etmək lazımdır, ikinci halda bu tələb olunmur, əlavə olaraq, "Bitiş tarixi" sahəsində seçim təyin edilməyibsə, o zaman “Şirkətin Qalan Məhsulları” cədvəlinin bu parametri ümumiyyətlə nəzərə alınmayacaq.

İkincisi, sorğu mətnindəki mənbələri “(…)” konstruksiyasına yerləşdirməklə isteğe bağlı olaraq qeyd etmək olar. Məsələn, belə bir sorğu mətni tərtib etsəniz

|SEÇ


| Çoxlu MallarŞirkət Qaldı.Məqsədər Qalan
|(SEÇ
| Şirkətin Qalan Məhsulları AS Nomenklaturası,
| Şirkətin Qalan Məhsulları Qalan Miqdar AS Miqdarı,
| Çoxlu MallarŞirkət Qaldı.Məqsədə Qalan Miqdarlara görə)
|FROM
| Yığımları Qeydiyyatdan Keçin.Şirkətin Qalan Məhsulları.Qalanlar AS Şirkətin Qalan MəhsullarıQalanlar
| (SOL BAĞLANTI Yığımları Qeydiyyatdan keçirin. Şirkət Malları Çoxları. Qalanlar AS Şirkət Malları Çoxları Qalıqlar.
| Şirkətin Proqram Qalan Məhsulları.Nomenklatura = Şirkətin Qalan Məhsulları.Nomenklatura)
|NƏTİCƏLƏR CƏMİ(Kəmiyyət), SUM(QuantityByBatch) BY
| ÜMUMİDİR,
| Nomenklatura

sonra partiya registrinə görə sol birləşmə yalnız seçilmiş sahələrin siyahısında “QuantityByBatch” sahəsi mövcud olduqda yerinə yetiriləcək.

üçüncü, mənbə parametrlərində təyin edə bilərsiniz ki, əgər filtrlər göstərilibsə, mümkünsə, onları “HARADA” elementindən istifadə edərək sorğunun nəticəsinə deyil, mənbənin özünə tətbiq edin. Beləliklə, əvəzinə
| Yığımları Qeydiyyatdan Keçin.ŞirkətMəhsulQaldı.Qalıqlar()

yazmağın mənası var

| Yığım Reyestri.Şirkətin Malları Qalır.Qaldır(, (Nomenklatura.*, Şirkət Anbarı.*, Sifariş.*, Pərakəndə Qiymət, Nomenklatura Xarakteristikası.*))

Yaxşı, dördüncü, ən dadlı, məncə. Mənbədə "Tezlik" parametri göstərilibsə (dövriyyəni əldə etməyə imkan verən cədvəllər üçün), o, həmçinin "(...)" kimi təyin edilə bilər və qurucu sorğu mətni ilə kiçik manipulyasiya nəticəsində , dövrlər üzrə qruplaşmalardan istifadə edə bilərik.

Misal: |SEÇİN İCAZƏ VERİLİR | Məhsul LotlarıŞirkətDövriyyəsi.Nomenklatura, | SUM(MəhsullarŞirkətTurnover.CostIncoming) AS CostIncoming, | SUM(ŞirkətMəhsul LotsTurnover. CostConsumption) AS Xərcİstehlak | |FROM | Qeydiyyatdan keçin.Yığım.Şirkət Malların Dövriyyəsi(, (&Tezlik), | (Nomenklatura.*)) AS Şirkət Malların Dövriyyəsi | |GROUP BY | Çoxlu MallarŞirkətDövriyyəsi.Nomenklatura | |NƏTİCƏLƏR MƏBLƏĞİ(Xərc Gələn), MƏBLƏR(Xərc Xərcləri) BY | ÜMUMİ, | Nomenklatura | |(SEÇ | Şirkət Dövriyyəsinin Çoxlu Məhsulları. Nomenklatura.*, | Qeydiyyatçı.*, | Dövrün başlanğıcı (Dövr, Gün) AS DövrGün, | Dövrün başlanğıcı (Dövr, Həftə) AS DövrHəftə, | Başlanması Dövr (Dövr, Onillik) AS Dövr, |. Dövrün Başı (Dövr, Ay) AS Dövrün Başı(Dövr, Rüb) , |. SUM(Şirkət Məhsullarının Dövriyyəsi. Xərc Xərcləri) NECƏ XƏRCLƏR) | | |. (HARADA | Şirkət Dövriyyəsinin Çoxlu Malları. Nomenklatura. *, | Qeydiyyatçı. *, | SUM (Şirkətin Dövriyyəsinin Çoxlu Malları. Gələn Xərclər) AS Gələn Xərc, | SUM (Şirkətin Dövriyyəsi Çoxlu Mallar). Xərc Xərcləri) AS Xərc Xərcləri) | |(NƏTİCƏLƏR | Nomenklatura.*, | Qeydiyyatçı.*, | Dövrün başlanğıcı(Dövr, Gün) AS DövrGün, | Dövrün başlanğıcı(Dövr, Həftə) AS DövrHəftə, | Dövrün əvvəli(Dövr, Onillik) AS Dövr, |. Dövrün Başı(Dövr, Ay) | , İl) AS Dövrİl)

Bir xəbərdarlıq var: dövrlərə görə qruplaşdırmanın işləməsi üçün "Tezlik" parametrinə görə filtr əlavə etməlisiniz. Bunu əl ilə etməmək üçün, rahatlıq üçün, hesabat qurucusunu işə salmadan əvvəl onu proqramlı şəkildə əlavə edə və sizi çaşdırmamaq üçün icra etdikdən sonra silə bilərsiniz, çünki sağlam düşüncə nöqteyi-nəzərindən belə bir şeyi başa düşmək mümkün deyil. bir filtr. Belə bir şey edilib

Əgər Report Builder.AvailableFields.Find("Tezlik")<>Müəyyən edilməmiş Sonra Dövrilik = Müəyyən edilməmişdir; Əgər Report Builder.DimensionsRows.Find("PeriodYear")<>Müəyyən edilməmiş YA Report Builder.DimensionsColumns.Find("Dövrİl")<>Müəyyən edilməmiş Sonra Dövri = 9; endIf; Əgər Report Builder.DimensionsRows.Find("Yarım İllik Dövr")<>Müəyyən edilməmiş YA Report Builder.DimensionsColumns.Find("Yarım İllik Dövr")<>Müəyyən edilməmiş Sonra Dövri = 8; endIf; Əgər Report Builder.DimensionsRows.Find("Period Quarter")<>Müəyyən edilməmiş YA Report Builder.DimensionsColumns.Find("Dövr Rüb")<>Müəyyən edilməmiş Sonra Dövri = 7; endIf; Əgər ReportBuilder.DimensionsRows.Find("PeriodMonth")<>Müəyyən edilməmiş YA Report Builder.DimensionsColumns.Find("DövrAy")<>Müəyyən edilməmiş Sonra Dövri = 6; endIf; Əgər Report Builder.Row Dimensions.Find("PeriodDecade")<>Müəyyən edilməmiş YA Report Builder.DimensionsColumns.Find("PeriodDecade")<>Müəyyən edilməmiş Sonra Dövri = 5; endIf; Əgər ReportBuilder.DimensionsRows.Find("PeriodWeek")<>Müəyyən edilməmiş YA Report Builder.DimensionsColumns.Find("Dövr Həftəsi")<>Müəyyən edilməmiş Sonra Dövri = 4; endIf; Builder.DimensionsRows.Find ("PeriodDay") hesabat verərsə<>Müəyyən edilməmiş YA Report Builder.DimensionsColumns.Find("PeriodDay")<>Müəyyən edilməmiş Sonra Dövri = 3; endIf; Əgər ReportBuilder.DimensionsRows.Find("Recorder")<>Müəyyən edilməmiş OR ReportBuilder.DimensionsColumns.Find("Recorder")<>Müəyyən edilməmiş YA Report Builder.SelectedFields.Find("Qeydiyyatçı")<>Müəyyən edilməmiş Sonra Dövri = 2; endIf; Tezlik varsa<>Müəyyən edilməmiş Sonra Seçmə Sahəsi Dövrilik = Hesabat Qurucusu.Selection.Add("Dövrilik"); SelectionFieldByPeriodicity.Value = Periodicity; SelectionFieldByPeriodicity.Use = Doğrudur; endIf; endIf; Builder.Run(); Əgər Seçim Sahəsi Dövrilik<>Undefined After Report Builder.Selection.Delete(Report Builder.Selection.Index(SelectionFieldByPeriodicity)); endIf;

12. Qurucuyu fərdiləşdirin

İstifadəçiyə qruplaşdırma siyahısını, filtri, seçilmiş sahələri və ya çeşidləməni dəyişmək imkanı vermək üçün “İnşaatçı” hesabat atributunu yaratmaq və hesabat formasında cədvəl sahəsini yerləşdirmək və “Builder.DimensionsRows”, “ qeyd etmək kifayətdir. Məlumat mənbəyi kimi Builder.DimensionsColumns , "Builder.Selection", "Builder.SelectedFields" və ya "Builder.Order".

Bundan əlavə, siz həmçinin məlumat mənbəyi kimi “Builder.AvailableFields” təyin edə və beləliklə, birincisi, mövcud sahələrin siyahısına baxa, ikincisi, kontekst menyusundan istifadə edərək, qruplara, seçimə, seçilmiş sahələrə və ya filtrlərə sahələr əlavə edə bilərsiniz.

1C 8-də sorğu dili tanınmış "strukturlaşdırılmış proqramlaşdırma dilinin" sadələşdirilmiş analoqudur (daha tez-tez SQL adlanır). Lakin 1C-də yalnız məlumatları oxumaq üçün istifadə olunur, məlumatları dəyişdirmək üçün bir obyekt məlumat modeli istifadə olunur;

Digər maraqlı fərq rus sintaksisidir. Baxmayaraq ki, əslində ingilis dilli konstruksiyalardan istifadə edə bilərsiniz.

Müraciət nümunəsi:

SEÇİN
Banklar.Adı,
Banks.CorrAccount
FROM
Directory.Banks NECƏ Banklar

Bu sorğu bizə verilənlər bazasında mövcud olan bütün bankların adı və müxbir hesabı haqqında məlumatları görmək imkanı verəcək.

Sorğu dili məlumat əldə etməyin ən sadə və effektiv üsuludur. Yuxarıdakı nümunədən göründüyü kimi, sorğu dilində metadata adlarından istifadə etməlisiniz (bu, konfiqurasiyanı təşkil edən sistem obyektlərinin siyahısı, yəni kataloqlar, sənədlər, registrlər və s.).

Sorğu dili konstruksiyalarının təsviri

Sorğu strukturu

Məlumat əldə etmək üçün “SELECT” və “FROM” konstruksiyalarından istifadə etmək kifayətdir. Ən sadə sorğu belə görünür:

Directories.Nomenklaturadan * SEÇİN

Burada “*” cədvəlin bütün sahələrinin seçilməsi, Directories.Nomenklatura – verilənlər bazasında cədvəlin adı deməkdir.

Daha mürəkkəb və ümumi bir nümunəyə baxaq:

SEÇİN
<ИмяПоля1>NECƏ<ПредставлениеПоля1>,
cəmi(<ИмяПоля2>) NECƏ<ПредставлениеПоля2>
FROM
<ИмяТаблицы1>NECƏ<ПредставлениеТаблицы1>
<ТипСоединения>MÜRACİƏT<ИмяТаблицы2>NECƏ<ПредставлениеТаблицы2>
BY<УсловиеСоединениеТаблиц>

HARADA
<УсловиеОтбораДанных>

GROUP BY
<ИмяПоля1>

SORT BY
<ИмяПоля1>

NƏTİCƏLƏR
<ИмяПоля2>
BY
<ИмяПоля1>

Bu sorğuda biz “CədvəlAdı1” və “CədvəlAdı” cədvəllərindən “SahəAdı1” və “SahəAdı1” sahələrinin məlumatlarını seçir, “NEÇƏ” operatorundan istifadə edərək sahələrə sinonimlər təyin edir və “CədvəlBağlantıŞərti” müəyyən şərtindən istifadə edərək onları birləşdiririk. ”.

Alınan məlumatlardan yalnız "HARƏDƏ" "Məlumat Seçmə Şərti" şərtinə cavab verən məlumatları seçirik “Sahənin Adı1” və son sahə “Sahənin Adı2”.

Son addım ORDER BY konstruksiyasından istifadə edərək sorğunun çeşidlənməsidir.

Ümumi dizaynlar

1C 8.2 sorğu dilinin ümumi strukturlarına nəzər salaq.

İLKn

Bu operatordan istifadə edərək ilk qeydlərin n sayını əldə edə bilərsiniz. Qeydlərin sırası sorğudakı sıra ilə müəyyən edilir.

İLK 100 SEÇİN
Banklar.Adı,
Banklar BIC kodu
FROM
Directory.Banks NECƏ Banklar
SORT BY
Banklar.Adı

Sorğu “Banklar” kataloqunun əlifba sırası ilə sıralanmış ilk 100 qeydini alacaq.

İCAZƏ VERİLİR

Bu dizayn mexanizmlə işləmək üçün aktualdır. Mexanizmin mahiyyəti bütövlükdə cədvəli deyil, verilənlər bazası cədvəlindəki xüsusi qeydlər üçün istifadəçilərin oxumasını (və digər hərəkətləri) məhdudlaşdırmaqdır.

İstifadəçi onun üçün əlçatmaz olan qeydləri oxumaq üçün sorğudan istifadə etməyə çalışarsa, səhv mesajı alacaq. Bunun qarşısını almaq üçün "İZİN VERİLƏN" konstruksiyadan istifadə etməlisiniz, yəni sorğu yalnız ona icazə verilən qeydləri oxuyacaq.

SEÇİN İCAZƏ VERİLİR
Əlavə məlumatların anbarı
FROM
Əlavə məlumatların kataloqu

MÜXTƏLİF

“FƏRQLİ”dən istifadə dublikat sətirlərin 1C sorğusunun nəticəsinə daxil olmasının qarşısını alacaq. Dublikasiya bütün sorğu sahələrinin uyğun olması deməkdir.

İLK 100 SEÇİN
Banklar.Adı,
Banklar BIC kodu
FROM
Directory.Banks NECƏ Banklar

Boş Cədvəl

Bu tikinti sorğuları birləşdirmək üçün çox nadir hallarda istifadə olunur. Qoşularkən, cədvəllərdən birində boş iç-içə cədvəl göstərməlisiniz. Bunun üçün "Boş Cədvəl" operatoru tam uyğundur.

1C 8 yardımından nümunə:

Linki SEÇİN.Nömrə, BOŞ CƏDVƏL.(No., Maddə, Kəmiyyət) Tərkibi KİMİ
Sənəddən.Xərc Fakturasından
HƏR ŞEYİ QARŞI VERİN
Linki SEÇİN.Nömrə, Məzmun.(LineNumber, Məhsul, Miqdar)
Sənəddən.Fatura Sənədindən.Qaimə.Tərkibi.*

ISNULL

Çoxlu səhvlərdən qaçmağa imkan verən çox faydalı xüsusiyyət. YesNULL() NULL dəyərini istədiyinizlə əvəz etməyə imkan verir. Birləşdirilmiş cədvəllərdə dəyərin mövcudluğunu yoxlamaq üçün çox tez-tez istifadə olunur, məsələn:

SEÇİN
Nomenklatura Ref.
IsNULL(Qalan Qalan Miqdar,0) Kəmiyyət Qalan
FROM


Başqa yollarla istifadə edilə bilər. Məsələn, əgər hər bir sıra üçün dəyərin hansı cədvəldə olduğu məlum deyilsə:

ISNULL(Qaimə-faktura Qəbul.Tarix, Faktura Verilmə.Tarix)

HOW bizə cədvələ və ya sahəyə ad (sinonim) təyin etməyə imkan verən operatordur. Yuxarıda istifadə nümunəsini gördük.

Bu konstruksiyalar çox oxşardır - onlar istədiyiniz dəyərin simli təsvirini əldə etməyə imkan verir. Yeganə fərq ondadır ki, REPRESENTATION hər hansı bir dəyəri sətir tipinə çevirir, REPRESENTATIONREF isə yalnız istinad dəyərlərini çevirir. REFERANS NÜMAYƏNDƏSİNİN optimallaşdırma üçün məlumat kompozisiya sistemi sorğularında istifadə edilməsi tövsiyə olunur, əlbəttə ki, seçimlərdə istinad məlumat sahəsinin istifadə edilməsi planlaşdırılmırsa.

SEÇİN
View(Link), //string, məsələn “Avans hesabat №123 10/10/2015
View(DeletionMark) AS DeleteMarkText, //string, “Bəli” və ya “Xeyr”
ViewReferences(DeletionMark) AS DeleteMarkBoolean //boolean, Doğru və ya Yanlış
FROM
Document.Avance Report

EXPRESS

Express, sahə dəyərlərini istədiyiniz məlumat növünə çevirməyə imkan verir. Siz dəyəri ya primitiv tipə, ya da istinad növünə çevirə bilərsiniz.

İstinad növü üçün Ekspres mürəkkəb tipli sahələrdə tələb olunan məlumat növlərini məhdudlaşdırmaq üçün istifadə olunur, tez-tez sistem performansını optimallaşdırmaq üçün istifadə olunur. Misal:

EXPRESS (Xərclərin Cədvəli. Subconto1 AS Directory. Xərclərin Vergi Uçotu üzrə Fəaliyyət Növü).

İbtidai növlər üçün bu funksiya çox vaxt qeyri-məhdud uzunluqlu sahələrdə simvolların sayını məhdudlaşdırmaq üçün istifadə olunur (belə sahələr ilə müqayisə edilə bilməz). Səhvdən qaçmaq üçün " Müqayisə əməliyyatında etibarsız parametrlər. Sahələri müqayisə etmək mümkün deyil
qeyri-məhdud uzunluq və uyğun olmayan növlərin sahələri
", belə sahələri aşağıdakı kimi ifadə etməlisiniz:

EXPRESS(Şərh AS Xətt(150))

FƏRQLİ TARİX

1C-də 267 video dərsi pulsuz əldə edin:

1C sorğusunda IS NULL-dən istifadə nümunəsi:

SEÇİN
Ref
SOL BAĞLANTI Yığımları Qeydiyyatdan keçirin.Anbarlarda olan məhsullar.Qalan Məhsul KİMİ
Proqram NomenklaturasıRef.Link = Satılan MallarKomitələriQaldı.Nomenklatura
Qalan Malların Kəmiyyəti NULL DEYİL

Sorğudakı məlumat növü TYPE() və VALUETYPE() funksiyalarından istifadə etməklə və ya məntiqi REFERENCE operatorundan istifadə etməklə müəyyən edilə bilər. İki funksiya oxşardır.

Əvvəlcədən təyin edilmiş dəyərlər

1C sorğu dilində sorğularda keçmiş parametrlərdən istifadə etməklə yanaşı, əvvəlcədən təyin edilmiş dəyərlərdən və ya istifadə edə bilərsiniz. Məsələn, köçürmələr, əvvəlcədən təyin edilmiş kataloqlar, hesablar planları və s.

İstifadə nümunəsi:

HARA Nomenklatura.Nomenklaturanın Növü = Dəyər(Kataloq.Nomenklatura Növləri.Məhsul)

HARADA Qarşı tərəflər.Əlaqə məlumatının növü = Dəyər(Saya.Əlaqə məlumatının növləri.Telefon)

HARADA Hesab Qalıqları.Mühasibat Hesabı = Dəyər(Hesablar Planı.Profit.ProfitsLoss)

Əlaqələr

4 növ əlaqə var: SOL, SAĞ, TAM, DAXİLİ.

SOL və SAĞ ƏLAQƏ

Müəyyən bir şərt əsasında iki cədvəli əlaqələndirmək üçün birləşmələr istifadə olunur. Xüsusiyyət zaman SOL QOŞULUN ilk göstərilən cədvəli bütövlükdə götürüb ikinci cədvəli şərti olaraq bağlayırıq. İkinci cədvəlin şərtlə bağlana bilməyən sahələri dəyərlə doldurulur SIFIR.

Misal üçün:

O, Qarşı tərəflərin bütün cədvəlini qaytaracaq və yalnız “Qarşı tərəflər.Adı = Banklar.Adı” şərtinin yerinə yetirildiyi yerlərdə “Bank” sahəsini dolduracaq. Şərt yerinə yetirilməzsə, Bank sahəsi olaraq təyin ediləcək SIFIR.

1C dilində SAĞ QOŞULUN tamamilə oxşar SOL əlaqə, bir fərq istisna olmaqla - in QOŞULMA HÜQUQU"Əsas" cədvəl birinci deyil, ikincidir.

TAM ƏLAQƏ

TAM ƏLAQƏ soldan və sağdan fərqlənir ki, o, iki cədvəldən bütün qeydləri göstərir və yalnız şərti ilə birləşdirə bildiklərini birləşdirir.

Misal üçün:

FROM

TAM ƏLAQƏ
Directory.Banks NECƏ Banklar

BY

Sorğu dili yalnız qeydlərə qoşulma şərti yerinə yetirildiyi təqdirdə hər iki cədvəli tamamilə qaytaracaq. Sol/sağ birləşmədən fərqli olaraq, NULL-un iki sahədə görünməsi mümkündür.

DAXİLİ QOŞULUN

DAXİLİ QOŞULUN tamdan onunla fərqlənir ki, o, yalnız verilmiş şərtə uyğun olaraq qoşula bilən qeydləri göstərir.

Misal üçün:

FROM
Müştərilər AS

DAXİLİ QOŞULUN
Directory.Banks NECƏ Banklar

BY
Clients.Name = Banks.Name

Bu sorğu yalnız bankın və qarşı tərəfin eyni ada malik olduğu sətirləri qaytaracaq.

Assosiasiyalar

JOIN və JOIN ALL konstruksiyaları iki nəticəni birləşdirir. Bunlar. iki yerinə yetirilməsinin nəticəsi bir ümumi birinə "birləşəcək".

Yəni sistem adi sistemlərlə eyni işləyir, yalnız müvəqqəti masa üçün.

INDEX BY-dən necə istifadə etmək olar

Bununla belə, bir məqamı nəzərə almaq lazımdır. Müvəqqəti cədvəldə indeks yaratmaq da başa çatdırmaq üçün vaxt tələb edir. Buna görə də, “ ” konstruksiyası yalnız müvəqqəti cədvəldə 1-2-dən çox qeyd olacağına əmin olduqda istifadə etmək məsləhətdir. Əks təqdirdə, təsir əksinə ola bilər - indekslənmiş sahələrin performansı indeksin qurulması üçün lazım olan vaxtı kompensasiya etmir.

SEÇİN
Valyuta məzənnələri Ən son kəsişmə Valyuta AS Valyuta.
Valyuta məzənnələri Ən son kəsişmə.
PUT Valyuta Məzənnələri
FROM
Məlumat Qeydiyyatı.Valyuta Məzənnələri.Son Dilim(&Dövr,) AS Valyuta MəzənnələriSon Dilim
İNDEKSİ BY
Valyuta
;
SEÇİN
QiymətlərNomenklatura.Nomenklatura,
QiymətlərNomenklaturalar.Qiymət,
QiymətlərNomenklaturalar.Valyuta,
Valyuta məzənnələri. Məzənnə
FROM
Məlumat Qeydiyyatı.Nomenklatura Qiymətlər.Son Dilim(&Dövr,
Nomenklatura B (&Nomenklatura) VƏ QiymətNövü = &QiymətNövü) QiymətNomenklaturası AS
Valyuta Məzənnələrini Valyuta Məzənnələri KİMİ SAL QOŞULUN
Proqram qiymətləriNomenklaturalar.Valyuta = Valyuta məzənnələri.Valyuta

Qruplaşdırma

1C sorğu dili sorğu nəticələrini qruplaşdırarkən xüsusi məcmu funksiyalardan istifadə etməyə imkan verir. Qruplaşdırma dublikatları "aradan qaldırmaq" üçün ümumi funksiyalar olmadan da istifadə edilə bilər.

Aşağıdakı funksiyalar mövcuddur:

Məbləğ, Kəmiyyət, Fərqli sayı, Maksimum, Minimum, Orta.

Nümunə №1:

SEÇİN
Malların və xidmətlərin satışı, malların nomenklaturası.
SUM(Sales of GoodsServicesGoods.Quantity) AS Miqdarı,
SUM(Malların SatışıXidmətlərMalların.Məbləği) Məbləğ AS
FROM

GROUP BY
Malların və xidmətlərin satışı Malların nomenklaturası

Sorğu malların olduğu bütün sətirləri qəbul edir və onları miqdar və məbləğlər üzrə ümumiləşdirir.

Nümunə № 2

SEÇİN
Banks.Code,
Dublikatların Sayı KİMİ KƏMİYYƏT(MÜXTƏLİF Banklar.Link).
FROM
Directory.Banks NECƏ Banklar
GROUP BY
Banks.Code

Bu nümunə “Banklar” kataloqunda BIC-lərin siyahısını göstərəcək və onların hər biri üçün neçə dublikat olduğunu göstərəcək.

Nəticələr

Nəticələr iyerarxik quruluşa malik sistemdən məlumat əldə etmək üsuludur. Ümumi funksiyalar qruplaşmalar üçün olduğu kimi xülasə sahələri üçün də istifadə edilə bilər.

Nəticələrin praktikada istifadəsinin ən məşhur yollarından biri malların partiya hesabından silinməsidir.

SEÇİN




FROM
Malların və Xidmətlərin Satılması Malların SATIŞI
SORT BY

NƏTİCƏLƏR
SUM(Kəmiyyət),
SUM(Cam)
BY
Nomenklatura

Sorğunun nəticəsi aşağıdakı iyerarxik olacaq:

Ümumi nəticələr

Əgər bütün “cəmlər” üçün yekunları əldə etmək lazımdırsa, “GENERAL” operatorundan istifadə edin.

SEÇİN
Malların və xidmətlərin satışı Malların Nomenklaturası.
Malların və Xidmətlərin Satışı Link AS Sənədi,
Malların və xidmətlərin satışı Malların miqdarı AS Miqdarı,
Malların və xidmətlərin satışı Malların məbləği
FROM
Malların və Xidmətlərin Satılması Malların SATIŞI
SORT BY
Malların və xidmətlərin satış tarixi
NƏTİCƏLƏR
SUM(Kəmiyyət),
SUM(Cam)
BY
ÜMUMİDİR,
Nomenklatura

Sorğunun icrası nəticəsində aşağıdakı nəticəni əldə edirik:

Hansı qruplaşmanın 1 səviyyəsi bütün zəruri sahələrin cəmlənməsidir.

Aranjıman

ORDER BY operatoru sorğunun nəticəsini çeşidləmək üçün istifadə olunur.

İbtidai növlər üçün çeşidləmə (sətir, nömrə, mantiq) adi qaydalara əməl edir. İstinad tipli sahələr üçün çeşidləmə kod və ya istinad təmsili ilə deyil, keçidin daxili təmsili (unikal identifikator) ilə baş verir.

SEÇİN

FROM
Kataloq.Nomenklatura AS Nomenklatura
SORT BY
ad

Sorğuda nomenklatura kataloqunda əlifba sırası ilə sıralanmış adların siyahısı göstərilir.

Avtomatik sifariş

Çeşidləməsiz sorğunun nəticəsi xaotik şəkildə təqdim edilmiş sətirlər dəstidir. 1C platformasının tərtibatçıları eyni sorğuları yerinə yetirərkən sətirlərin eyni ardıcıllıqla çıxacağına zəmanət vermirlər.

Cədvəl qeydlərini sabit ardıcıllıqla göstərmək lazımdırsa, Avtomatik Sifariş konstruksiyasından istifadə etməlisiniz.

SEÇİN
Nomenklatura.Ad AS Adı
FROM
Kataloq.Nomenklatura AS Nomenklatura
AVTO SİFARİŞ

Virtual masalar

1C-də virtual cədvəllər digər oxşar sintaksislərdə olmayan 1C sorğu dilinin unikal xüsusiyyətidir. Virtual cədvəl registrlərdən profil məlumatlarını əldə etməyin sürətli bir yoludur.

Hər bir registr növünün özünəməxsus virtual cədvəllər dəsti var, bunlar registr parametrlərindən asılı olaraq fərqlənə bilər.

  • birincinin kəsilməsi;
  • sonuncunun kəsilməsi.
  • qalıqlar;
  • inqilablar;
  • qalıqlar və dövriyyə.
  • subcontodan hərəkətlər;
  • inqilablar;
  • sürət Dt Kt;
  • qalıqlar;
  • qalıqlar və dövriyyə
  • subconto.
  • əsas;
  • qrafik məlumatları;
  • faktiki etibarlılıq müddəti.

Həll tərtibçisi üçün məlumatlar bir (virtual) cədvəldən götürülür, lakin əslində 1C platforması onları bir çox cədvəldən götürərək onları lazımi formaya çevirir.

SEÇİN
Anbarlarda olan məhsullar və dövriyyə.
Anbarlarda Qalan MəhsullarVə Dövriyyə. Miqdar İlkin Qalan,
MəhsullarAnbarlardaQalıqlarVə Dövr.KəmiyyətDövriyyə,
MallarAnbarlardaQalıqlarVə Dövriyyə.KəmiyyətDaxil olan,
Anbarda olan məhsullar, qalıqlar və dövriyyə. Kəmiyyətİstehlak,
MəhsullarAnbarlardaQalıqlarVə Dövriyyə.Kəmiyyət Son Qalan
FROM
Yığımları Qeydiyyatdan keçirin.Anbarlarda olan mallar.QalıqlarVə DövriyyəAnbarlardaMallar kimiAnbarlardaQalıqlarVə Dövriyyə

Bu sorğu böyük miqdarda məlumatı tez bir zamanda əldə etməyə imkan verir.

Virtual Cədvəl Seçimləri

Virtual cədvəllərlə işləməyin çox vacib cəhəti parametrlərdən istifadədir. Virtual masa parametrləri seçim və konfiqurasiya üçün ixtisaslaşdırılmış parametrlərdir.

Belə cədvəllər üçün “HARADA” konstruksiyasında seçimdən istifadə etmək düzgün hesab edilmir. Sorğunun suboptimal olmasına əlavə olaraq, yanlış məlumat almaq mümkündür.

Bu parametrlərdən istifadə nümunəsi:

Anbarlardakı malların reyestri (& Dövrün əvvəli, & Dövrün sonu, ayın hərəkətləri və sərhədləri, Nomenklatura = & Tələb olunan Nomenklatura).

Virtual cədvəllər üçün alqoritm

Məsələn, “Qalıqlar” tipli ən çox istifadə olunan virtual cədvəldə iki fiziki cədvəldən – balanslar və hərəkətlərdən məlumatlar saxlanılır.

Virtual cədvəldən istifadə edərkən sistem aşağıdakı manipulyasiyaları yerinə yetirir:

  1. Cəmi cədvəldə tarix və ölçmələr baxımından ən yaxın hesablanmış dəyəri alırıq.
  2. Hərəkət cədvəlindəki məbləği ümumilər cədvəlindəki məbləğə "əlavə edirik".


Belə sadə hərəkətlər bütövlükdə sistemin işini əhəmiyyətli dərəcədə yaxşılaşdıra bilər.

Query Builder istifadə edərək

Sorğu Qurucusu– verilənlər bazası sorğularının işlənməsini xeyli asanlaşdıran 1C Enterprise sistemində quraşdırılmış alət.

Sorğu qurucusu kifayət qədər sadə, intuitiv interfeysə malikdir. Buna baxmayaraq, sorğu konstruktorunun istifadəsinə daha ətraflı baxaq.

Sorğunun mətn konstruktoru proqram kodunun istədiyiniz yerində kontekst menyusundan (siçanın sağ düyməsi) işə salınır.

1C sorğu konstruktorunun təsviri

Dizaynerin hər bir nişanını daha ətraflı nəzərdən keçirək. İstisna başqa müzakirə mövzusu olan Builder tabıdır.

Cədvəllər və Sahələr nişanı

Bu nişan məlumat mənbəyini və hesabatda göstərilməli olan sahələri müəyyən edir. Əslində burada SELECT.. FROM konstruksiyaları təsvir edilmişdir.

Mənbə fiziki verilənlər bazası cədvəli, virtual registr cədvəli, müvəqqəti cədvəllər, iç-içə sorğular və s. ola bilər.

Virtual cədvəllərin kontekst menyusunda virtual cədvəl parametrlərini təyin edə bilərsiniz:

Əlaqələr nişanı

Nişan bir neçə cədvəlin əlaqələrini təsvir etmək üçün istifadə olunur və CONNECTION sözü ilə konstruksiyalar yaradır.

Qruplaşdırma nişanı

Bu tabda sistem cədvəlin nəticəsinin tələb olunan sahələrini qruplaşdırmağa və ümumiləşdirməyə imkan verir. GROUP BY, SUM, MINIMUM, AVERAGE, MAXIMUM, QUICITY, SAYI FƏRQLİ konstruksiyaların istifadəsini təsvir edir.

Şərtlər nişanı

WHERE tikintisindən sonra sorğu mətnində gələn hər şeyə, yəni alınan məlumatlara qoyulan bütün şərtlərə cavabdehdir.

Qabaqcıl tab

Tab əlavə olaraqçox vacib olan bütün növ parametrlərlə doludur. Xüsusiyyətlərin hər birinə nəzər salaq.

Qruplaşdırma Qeydlərin seçilməsi:

  • Əvvəlcə N– sorğuya yalnız N qeydi qaytaran parametr (İLK operator)
  • Dublikat yoxdur– alınan qeydlərin unikallığını təmin edir (FƏRQLİ operator)
  • İcazə verilir- yalnız sistemin nəzərə alaraq seçməyə icazə verdiyi qeydləri seçməyə imkan verir (İZİN VERİLİR tikinti)

Qruplaşdırma Sorğu növü sorğunun hansı növ olacağını müəyyənləşdirir: məlumatların alınması, müvəqqəti cədvəlin yaradılması və ya müvəqqəti cədvəlin məhv edilməsi.

Aşağıda bayraq var Sonrakı dəyişiklik üçün alınan məlumatları kilidləyin. Bu, məlumatların oxunduğu andan dəyişdirilməsinə qədər təhlükəsizliyini təmin edən məlumatların kilidlənməsini təyin etmək imkanı verir (yalnız Avtomatik kilidləmə rejimi üçün uyğundur, DƏYİŞMƏ ÜÇÜN dizayn).

Qoşulmalar/ləqəblər nişanı

Sorğu tərtibatçısının bu nişanında siz müxtəlif cədvəllərə və ləqəblərə qoşulma qabiliyyətini təyin edə bilərsiniz (NECƏ konstruksiya). Cədvəllər sol tərəfdə göstərilmişdir. Bayraqları masanın qarşısına qoysanız, UNITE konstruksiyası istifadə ediləcək, əks halda - BÜTÜN BİRLƏŞİN (iki üsul arasındakı fərqlər). Sağ tərəfdə müxtəlif cədvəllərdəki sahələrin uyğunluğu göstərilir, əgər uyğunluq göstərilməyibsə, sorğu NULL dəyərini qaytaracaq;

Sifariş nişanı

Bu, dəyərlərin sıralanma qaydasını müəyyən edir (SİPARİŞ BY) - azalan (DESC) və ya artan (ASC).

Maraqlı bir bayraq da var - Avtomatik sifariş(sorğuda - AVTO SİFARİŞ). Varsayılan olaraq, 1C sistemi məlumatları "xaotik" qaydada göstərir. Bu bayrağı təyin etsəniz, sistem məlumatları daxili məlumatlara görə çeşidləyəcək.

Sorğu toplu nişanı

Sorğu dizayneri nişanında siz yenilərini yarada və həmçinin naviqasiya kimi istifadə edə bilərsiniz. Sorğu mətnində paketlər “;” (vergül) işarəsi ilə ayrılır.

Sorğu dizaynerində "Sorğu" düyməsi

Sorğu tərtibatçısının aşağı sol küncündə İstənilən vaxt sorğu mətninə baxa biləcəyiniz Sorğu düyməsi var:

Bu pəncərədə siz sorğuya düzəlişlər edib onu icra edə bilərsiniz.


Sorğu Konsolundan istifadə

Sorğu Konsolu mürəkkəb sorğuları aradan qaldırmaq və məlumatı tez əldə etmək üçün sadə və rahat üsuldur. Bu yazıda Query Console-dan necə istifadə olunacağını təsvir etməyə və Query Console-u yükləmək üçün keçid təqdim etməyə çalışacağam.

Bu alətə daha yaxından nəzər salaq.

1C sorğu konsolunu yükləyin

Əvvəla, sorğu konsolu ilə işə başlamaq üçün onu haradansa yükləmək lazımdır. Müalicələr adətən iki növə bölünür - idarə olunan formalar və şərti olanlar (və ya bəzən 8.1 və 8.2/8.3 adlanır).

Bu iki görünüşü bir emalda birləşdirməyə çalışdım - istədiyiniz forma istədiyiniz iş rejimində açılır (idarə olunan rejimdə konsol yalnız qalın rejimdə işləyir).

1C sorğu konsolunun təsviri

Əsas emal panelinin təsviri ilə sorğu konsoluna baxmağa başlayaq:

Sorğu konsolunun başlığında son sorğunun icra müddətini millisaniyəlik dəqiqliklə görə bilərsiniz, bu, müxtəlif dizaynları performans baxımından müqayisə etməyə imkan verir.

Komanda panelindəki ilk qrup düymələr cari sorğuların xarici faylda saxlanmasına cavabdehdir. Bu çox rahatdır, siz həmişə mürəkkəb sorğu yazmağa qayıda bilərsiniz. Və ya, məsələn, müəyyən dizaynların tipik nümunələrinin siyahısını saxlayın.

Solda, "Sorğu" sahəsində siz yeni sorğular yarada və onları ağac strukturunda saxlaya bilərsiniz. İkinci qrup düymələr sorğular siyahısının idarə edilməsinə cavabdehdir. Onun köməyi ilə siz sorğu yarada, köçürə, silə, köçürə bilərsiniz.

  • İcra etməkxahiş- sadə icra və nəticələr
  • Paketi icra edin– sorğular toplusunda bütün ara sorğulara baxmaq imkanı verir
  • Müvəqqəti cədvəllərə baxış– müvəqqəti sorğuların cədvəldə qaytardığı nəticələri görməyə imkan verir

Sorğu parametrləri:

Sorğu üçün cari parametrləri təyin etməyə imkan verir.

Sorğu parametrləri pəncərəsində aşağıdakılar maraqlıdır:

  • Düymə Müraciətdən alın geliştiricinin rahatlığı üçün sorğuda bütün parametrləri avtomatik tapır.
  • Bayraq Bütün sorğular üçün ümumi parametrlər– quraşdırıldıqda, sorğuların ümumi siyahısında sorğudan sorğuya keçərkən onun işlənməsi parametrləri təmizləmir.

Dəyərlərin siyahısı ilə parametr təyin edinÇox sadədir, sadəcə parametr dəyərini seçərkən aydın dəyər düyməsini (çarpaz) vurun, sistem sizə məlumat növünü seçməyi təklif edəcək, burada "Dəyər Siyahısı"nı seçməlisiniz:

Həmçinin yuxarı paneldə sorğu konsolunun parametrlərini çağırmaq üçün düymə var:

Burada siz sorğuların avtomatik saxlanması və sorğunun icrası parametrləri üçün parametrləri təyin edə bilərsiniz.

Sorğu mətni konsol sorğu sahəsinə daxil edilir. Bu, sadəcə sorğu testini yazmaqla və ya xüsusi alətə - sorğu tərtibatçısına zəng etməklə edilə bilər.

1C 8 sorğu dizayneri giriş sahəsinə kliklədiyiniz zaman kontekst menyusundan (siçanın sağ düyməsi) çağırılır:

Bu menyu həmçinin sorğuya sətir kəsimlərinin (“|”) təmizlənməsi və ya əlavə edilməsi və ya sorğu kodunu bu rahat formada qəbul etmək kimi faydalı funksiyalara malikdir:

Sorğu = Yeni Sorğu;
İstək. Mətn = ”
|SEÇ
| Valyutalar.Link
|FROM
| Directory.Currencies AS Valyutalar”;
RequestResult = Request.Execute();

Sorğu konsolunun aşağı sahəsi sorğunun nəticəsi sahəsini göstərir, buna görə də bu emal yaradılıb:



Həmçinin, sorğu konsolu, siyahıya əlavə olaraq, məlumatları ağac şəklində göstərə bilər - cəmi olan sorğular üçün.

Sorğunun optimallaşdırılması

1C müəssisəsinin məhsuldarlığının artırılmasında ən vacib məqamlardan biri 8.3 optimallaşdırmaistək. Bu nöqtə də nə zaman çox əhəmiyyətlidir sertifikatlaşdırmadan keçmək. Aşağıda qeyri-optimal sorğu performansının tipik səbəbləri və optimallaşdırma üsulları haqqında danışacağıq.

WHERE konstruksiyasından istifadə edərək virtual cədvəldə seçimlər

Yalnız VT parametrləri vasitəsilə virtual cədvəl detallarına filtrlər tətbiq etmək lazımdır. Heç bir halda virtual cədvəldə seçim üçün WHERE konstruksiyasından istifadə etməməlisiniz, bu, optimallaşdırma baxımından ciddi səhvdir; WHERE istifadə edərək seçim vəziyyətində, əslində, sistem BÜTÜN qeydləri qəbul edəcək və yalnız bundan sonra lazım olanları seçəcəkdir.

SAĞ:

SEÇİN

FROM
Təşkilatların İştirakçıları ilə Qarşılıqlı Hesablaşmaların Reyestri (.
,
Təşkilat = &Təşkilat
Və Fərdi = &Fərdi) NECƏ Təşkilatların İştirakçıları ilə Qarşılıqlı Hesablaşmalar Balanslar

YANLIŞ:

SEÇİN
Təşkilatların İştirakçıları ilə Qarşılıqlı Hesablaşmalar Balans
FROM
Təşkilatların İştirakçıları ilə Qarşılıqlı Hesablaşmaların Reyestri (,) Təşkilatların İştirakçıları ilə Qarşılıqlı Hesablaşmalar
HARADA
Təşkilatların İştirakçıları ilə Qarşılıqlı Hesablaşmalar Təşkilat = & Təşkilat
VƏ Təşkilatların İştirakçıları ilə Qarşılıqlı Hesablaşmalar Fərdi = &Fərdi

Nöqtədən istifadə edərək mürəkkəb tipli sahənin dəyərinin alınması

Nöqtə vasitəsilə sorğuda mürəkkəb tipli məlumatları qəbul edərkən, sistem kompleks tip sahəsində mümkün olan qədər cədvəlləri sol birləşmə ilə əlaqələndirir.

Məsələn, registr qeyd sahəsinə - registratora daxil olmaq optimallaşdırma üçün çox arzuolunmazdır. Qeydiyyatçı mürəkkəb məlumat növünə malikdir, bunlar arasında reyestrə məlumat yaza bilən bütün mümkün sənəd növləri var.

YANLIŞ:

SEÇİN
Record Set.Recorder.Tarix,
RecordSet.Quantity
FROM
Accumulations.ProductsOrganizations SetRecords kimi qeydiyyatdan keçin

Yəni, əslində belə bir sorğu bir cədvələ deyil, 22 verilənlər bazası cədvəlinə daxil olacaq (bu registrdə 21 qeydiyyatçı növü var).

SAĞ:

SEÇİN
SEÇİM
ZAMAN ProductsOrg.Registrator LINK Document.Məhsul və Xidmətlərin Satışı
SONRA İFADƏ EDİN(ProductsOrg.Registrator AS Document.Sale of GoodsServices).Tarix
ZAMAN GoodsOrg.Registrator LINK Sənədi.Malların QəbuluXidmətlər
SONRA İFADƏ EDİN(Sənəd KİMİ GoodsOrg.Registrator.Receip of GoodsServices).Tarix
TARİX KİMİ BİTİR,
ProductsOrg.Quantity
FROM
Qeydiyyat Yığımları.MallarTəşkilatları MallarTəşkilat AS

Və ya ikinci seçim, belə məlumatları detallara əlavə etmək, məsələn, bizim vəziyyətimizdə bir tarix əlavə etməkdir.

SAĞ:

SEÇİN
MəhsullarTəşkilatlar.Tarix,
MəhsullarTəşkilatlar.Kəmiyyət
FROM
Təşkilatların mallarının reyestri

Qoşulma vəziyyətində olan alt sorğular

Optimallaşdırma üçün, qoşulma şəraitində alt sorğulardan istifadə etmək qəbuledilməzdir, bu, sorğunu əhəmiyyətli dərəcədə yavaşlatır; Belə hallarda VT-dən istifadə etmək məsləhətdir. Qoşulmaq üçün əvvəllər onları əlaqə sahələri ilə indeksləşdirərək yalnız metadata və VT obyektlərindən istifadə etməlisiniz.

YANLIŞ:

SEÇİN …

SOL QOŞULUŞ (
RegisterInformation.Limits-DƏN SEÇİN
HARADA…
QRUPLA...
) BY …

SAĞ:

SEÇİN …
PUT Limitləri
Məlumat Registrindən. Limitlər
HARADA…
QRUPLA...
İNDEKSİ BY...;

SEÇİN …
Sənəddən Malların və Xidmətlərin Satışı
SOL QOŞULMA Limitləri
BY …;

Virtual Cədvəllərlə Yazıların Birləşdirilməsi

Virtual masanı başqalarına bağlayarkən sistemin optimal işləmədiyi vəziyyətlər var. Bu halda, sorğunun performansını optimallaşdırmaq üçün müvəqqəti cədvəl sorğusunda birləşdirilən sahələri indeksləşdirməyi unutmadan virtual cədvəli müvəqqəti cədvəldə yerləşdirməyə cəhd edə bilərsiniz. Bunun səbəbi VT-lərin çox vaxt bir neçə fiziki DBMS cədvəlində olmasıdır, nəticədə onları seçmək üçün alt sorğu tərtib edilir və problem əvvəlki nöqtəyə bənzəyir.

İndekslənməmiş sahələrə əsaslanan seçimlərdən istifadə

Sorğu yazarkən ən çox yayılmış səhvlərdən biri indeksləşdirilməmiş sahələr üzrə şərtlərdən istifadə etməkdir, bu, ziddiyyət təşkil edir. sorğu optimallaşdırma qaydaları.Əgər sorğuya indeksləşdirilə bilməyən sahələr üzrə seçim daxildirsə, DBMS sorğunu optimal şəkildə yerinə yetirə bilməz. Əgər müvəqqəti cədvəl götürsəniz, əlaqə sahələrini də indeksləşdirməlisiniz.

Hər bir şərt üçün uyğun bir indeks olmalıdır. Uyğun indeks aşağıdakı tələblərə cavab verən indeksdir:

  1. İndeks şərtdə sadalanan bütün sahələri ehtiva edir.
  2. Bu sahələr indeksin ən başındadır.
  3. Bu seçimlər ardıcıldır, yəni sorğu vəziyyətində iştirak etməyən dəyərlər onların arasına “bağlanmır”.

DBMS düzgün indeksləri seçməzsə, bütün cədvəl skan ediləcək - bu, performansa çox mənfi təsir göstərəcək və bütün qeydlər dəstinin uzun müddət bloklanmasına səbəb ola bilər.

Şərtlərdə Məntiqi OR-dan istifadə

Hamısı budur, bu məqalə hər bir 1C mütəxəssisinin bilməli olduğu sorğuların optimallaşdırılmasının əsas aspektlərini əhatə etdi.

Sorğunun inkişafı və optimallaşdırılması üzrə çox faydalı pulsuz video kursu, Mən şiddətlə tövsiyə edirəm yeni başlayanlar və daha çoxu üçün!

1C platformasının səkkizinci versiyası kifayət qədər yeni konfiqurasiya obyektləri təklif edir ki, onların hər biri proqramların işlənib hazırlanması prosesini sadələşdirməyə və performansı optimallaşdırmağa imkan verən öz metod və xüsusiyyətlərinə malikdir. Onlardan biri hesabat tərtibatçısıdır.

1C-də hesabat qurucusu nədir, hansı funksiyaları yerinə yetirir və proqramlaşdırmada hansı tətbiqi tapdığı barədə danışmaq istərdim.

1C-də hesabat qurucusu - bu nədir?

Bu, elektron cədvəl sənədində və ya diaqramda məlumatları göstərməyə imkan verən konfiqurasiya obyektidir. Məlumat mənbəyi ola bilər:

  1. Müraciətin nəticəsi;
  2. Elektron cədvəl sənədinin xana sahəsi;
  3. Sənədin və ya məlumat kitabının cədvəl hissəsi;
  4. Reyestr qeydləri toplusu.

Bundan əlavə, 1C-də hesabat qurucusu sorğunun mətninin göndərilə biləcəyi, nəticəsinə baxmaq lazım olan "Mətn" atributuna malikdir.

Şəkil 1 ixtiyari dəyərlər cədvəlini göstərmək üçün “Hesabat Qurucusu”ndan istifadə etməyə imkan verən kod bölməsini göstərir.

Beləliklə, inşaatçı üçün açıq istifadə vəziyyəti hesabatların tərtib edilməsidir. Qurucu üçün daha az aşkar istifadə onun istifadəçi üçün sorğunun müxtəlif elementlərini (qruplaşmalar, seçimlər və s.) fərdiləşdirmək üçün istifadəsidir.

Yeri gəlmişkən, Şəkil 1-də göstərilən kodun icrasının nəticəsini Şəkil 2-də görmək olar.

Şəkil 2

İnşaatçı quraşdırma

Hesabat qurucusu müəyyən mənada məlumat kompozisiya sisteminə bənzəyir və girişə nəzarət sisteminin bu və ya digər səbəbdən əlçatmaz olduğu və ya onun düzgün işləməməsi ehtimalı olduğu hallarda istifadə edilə bilər.

ACS qurucusu kimi, ona daxildir:

  • Qruplaşmalar (məlumat göstərərkən iyerarxiya səviyyələri);
  • Göstəricilər (nəticəni əldə etmək üçün lazım olan dəyərlər);
  • Əlavə hesablanmış sahələr (element detalları, qiymətlərlə hərəkətlərin nəticələri);
  • Filtrlər (seçimlər);
  • Çeşidləmə.

İnşaatçının dizayn layout parametrləri müxtəlif səviyyələr və detalların dəqiqliyi təklif edir.

Qurucudan istifadə alqoritmi

Təbii ki, vəziyyətdən asılı olaraq, hesabat qurucusundan istifadə üçün proqram kodu əhəmiyyətli dərəcədə dəyişə bilər. Əsas istifadə alqoritmi dəyişmir:

  1. ReportBuilder tipli yeni obyektin yaradılmasını elan edirik;
  2. Bu mərhələdə siz seçim mətnini yaratmaq üçün Query Builder-dən istifadə edə bilərsiniz və ya DataSourceDescription obyektindən istifadə edərək mövcud seçimdən istifadə edə bilərsiniz;
  3. Hesabat qurucusu parametrləri qurucu obyekt metodu FillSettings();
  4. Siz qurucusunun Layout obyekt xassəsini təyin etməklə avtomatik generasiya metodundan istifadə etməklə yaradılmış standart dizayn sxemindən istifadə etməkdən imtina edə bilərsiniz;
  5. Əgər DataSourceDescription istifadə edilmirsə, bu mərhələdə sorğunu yerinə yetirmək lazımdır, Execute() metodundan istifadə edin;
  6. Son addım Çıxış () metodunu işə salmaqdır, nəticə elektron cədvəl sənədində və ya müvafiq forma elementində edilə bilər.

Qurucuda şifrənin açılmasından istifadə

Şəkil 1-də üçüncü sətir qurucusunun icra nəticəsinin hüceyrələrinin dekodlaşdırılmasını əhatə edir.

Bunun üçün biz Şifrə Çözmə Doldurma xüsusiyyətindən istifadə etdik. Bu xüsusiyyətin növü ReportBuilderDecryptionFillType-dir, o, üç dəyərdən birini qəbul edə bilər:

  1. GroupingValues ​​– xana aktivləşdirildikdə, onda göstərilən qruplaşdırmanın dəyəri istifadə olunacaq;
  2. Doldurmayın – standart dəyər, yəni transkript yekun nəticə üçün istifadə edilməyəcək;
  3. Transkript - transkript strukturu orijinal nümunənin bütün qruplarının dəyərləri ilə doldurulacaq.

Bundan əlavə, istifadəçi ConfigureDecryption() metodundan istifadə edərək şifrənin açılmasını müstəqil təyin etmək imkanına malikdir. Bu metodu işlədən kod bölməsi Şəkil 3-də göstərilmişdir

Şəkil 3

Hesabatda seçimləri aktivləşdirmək üçün qurucudan istifadə nümunəsi

Bir az praktik hissə. Bəzən elə bir vəziyyət yaranır ki, bəzi seçimlərlə hesabat yaratmaq lazımdır. Bu problemi ACS istifadə edərək həll edə bilərsiniz və ya qurucudan istifadə edə bilərsiniz:

  1. Xarici hesabat yaratmaqla və ona ixtiyari adla atribut əlavə etməklə və ReportBuilder yazmaqla başlayaq (şək. 4);

Şəkil 4

  1. Hesabat formasını yaradırıq və onun üzərinə TabularField interfeys obyektini yerləşdiririk, onu Selection kimi yazır və yaradılmış atributun Selection xassəsi ilə əlaqələndiririk Şəkil 5.

Şəkil 5

  1. Biz formamızın müvafiq hadisəsi ilə əlaqəli OnOpen() prosedurunu yaradırıq;

Şəkil 6

  1. Orada yazılmış kodda mütləq hesabat qurucusu üçün sorğu olmalıdır, kodun nümunəsi Şəkil 6-da göstərilmişdir, qurucu mətnini yaratmaq üçün sorğu konstruktorundan istifadə edə bilərsiniz, konstruktorda, işin şərtlərindən istifadə edə bilərsiniz. qurucu və onun əlavə parametrləri Şəkil 7-də müvafiq nişanda göstərilmişdir;

Şəkil 7

  1. Sorğu mətnində əyri () mötərizədə göstərilən seçim şərtləri yalnız müvafiq seçim aktivləşdirildikdə və istifadəçi tərəfindən istifadə edildikdə yerinə yetiriləcək;

  2. Qurucusunun nəticəsini əks etdirən prosedur 8-də təqdim olunur və Yarat düyməsini sıxmaqla əlaqələndirilir;

Şəkil 8

  1. Hesabatımızı saxlayırıq.

Yaratdığımız hesabatın görünüşü və onun nəticəsi Şəkil 9-da göstərilmişdir

Şəkil 9

Əlbəttə, bir məqalə çərçivəsində yeni obyektin bütün imkanlarını nümayiş etdirmək kifayət qədər çətindir, lakin bizə elə gəlir ki, bu barədə təsəvvür əldə etmək və əldə edilmiş bilikləri nəzərə alaraq ondan istifadə etməyə başlamaq olar.

1C proqramlaşdırması sadəcə proqram yazmaqdan daha çox şeydən ibarətdir. 1C istifadəçi hərəkətlərinin və işlədiyi məlumatların külçəsidir.

Məlumatlar verilənlər bazasında saxlanılır. 1C sorğuları verilənlər bazasından məlumatları istifadəçiyə formada göstərmək və ya emal etmək üçün əldə etmək üsuludur.

Hesabatın əsas hissəsi 1C sorğusudur. Hesabat vəziyyətində ACS hesabatın ən böyük hissəsidir.

Otur. ah. Sakitləş. İndi sizə xəbər verəcəyəm.

1C-də proqramlaşdırmaq üçün 1C proqramlaşdırma dilini bilmək kifayət deyil. Siz həmçinin 1C sorğu dilini bilməlisiniz.

1C sorğu dili, verilənlər bazasından hansı məlumatları əldə etməli olduğumuzu müəyyən etməyə imkan verən tamamilə ayrı bir dildir.

O da iki dillidir - yəni rus və ya ingilis dilində yaza bilərsən. Bu, SQL sorğu dilinə çox bənzəyir və onu bilənlər rahatlaşa bilər.

1C Sorğularından necə istifadə olunur

İstifadəçi 1C-ni Müəssisə rejimində işə saldıqda, işləyən müştəridə bir qram məlumat yoxdur. Buna görə, bir kataloq açmaq lazım olduqda, 1C verilənlər bazasından məlumatları tələb edir, yəni 1C sorğusu verir.

1C sorğuları bunlardır:

  • Avtomatik sorğular 1c
    Sistem tərəfindən avtomatik olaraq yaradılır. Sənəd siyahısı forması yaratdınız. Sütun əlavə edildi. Bu o deməkdir ki, siz bu formanı Müəssisə rejimində açdığınız zaman sorğu olacaq və bu sütun üçün məlumatlar tələb olunacaq.
  • Yarı avtomatik sorğular 1C
    1C dilində bir çox üsullar (funksiyalar) var, daxil olduqda verilənlər bazasına sorğu verilir. Məsələn.GetObject()
  • Manual 1C sorğuları (proqramçı tərəfindən xüsusi olaraq sorğu kimi yazılmışdır)
    1C sorğusunu özünüz kodda yazıb icra edə bilərsiniz.

1C sorğularının yaradılması və icrası

1C sorğusu 1C sorğu dilində sorğunun faktiki mətnidir.
Mətn qələmlə yazıla bilər. Yəni götür və yaz (bu dili bilirsənsə).

1C əl ilə kod yazmadan çox və ya demək olar ki, hər şeyin edilə biləcəyi vizual proqramlaşdırma konsepsiyasını təbliğ etdiyindən, sorğu dilini bilmədən sorğunun mətnini çəkməyə imkan verən xüsusi Query Constructor obyekti mövcuddur. Bununla belə, möcüzələr baş vermir - bunun üçün konstruktorla necə işləməyi bilməlisiniz.

1C sorğusunun mətni hazır olduqdan sonra onu yerinə yetirmək lazımdır. Bunun üçün 1C kodunda Request() obyekti var. Budur bir nümunə:

Sorğu = Yeni Sorğu();
Query.Text = "SEÇ
| Nomenklatura.Link
|FROM
| Kataloq.Nomenklatura AS Nomenklatura
|HARADA
| Nomenklatura.Xidmət";
Select = Query.Run().Select();

Hesabat(Seçim.Link);
EndCycle;

Nümunədə gördüyünüz kimi, 1C sorğusunu yerinə yetirdikdən sonra nəticə bizə gəlir və biz onu emal etməliyik. Nəticə cədvəlin bir və ya bir neçə sırasıdır (xüsusi formada).

Nəticə adi cədvələ yüklənə bilər:
Get = Query.Run().Unload(); //Nəticə – qiymətlər cədvəli

Və ya sadəcə sətir-sətir dolayın.
Select = Query.Run().Select();
While Select.Next() döngəsi
//Sorğu nəticələri ilə bir şey edin
EndCycle;

1C sorğuları ilə işləmək

1C sorğularının əsas prinsipləri

1C sorğusunun qurulmasının əsas prinsipləri -
Cədvəl Adı HARADA Şərtlərdən Sahələrin Siyahısını SEÇİN

Belə bir 1C sorğusunun qurulmasına bir nümunə:

SEÇİN
//seçmək üçün sahələrin siyahısı
Link,
ad,
Kod
FROM
//verilənləri seçdiyimiz cədvəlin adı
//cədvəllərin siyahısı konfiqurator pəncərəsindəki obyektlərin siyahısıdır
Kataloq.Nomenklatura
HARADA
//seçimi göstərin
Məhsul Tipi = &Xidmət //xarici dəyər üzrə seçim
Və ya Xidmət // Boolean tipli “Xidmət” atributu, dəyərinə görə seçim Doğrudur
SORT BY
//Çeşidləmə
ad

1c cədvəllərinin siyahısı

Cədvəl adlarını konfiqurator pəncərəsində görə bilərsiniz. Siz sadəcə olaraq “Directories” əvəzinə “Kataloq” yazmalısınız, məsələn, “Kataloq.Nomenklatura” və ya “Sənəd.Malların və xidmətlərin satışı” və ya “Yığım.Satış reyestri”.

Son nömrələri əldə etməyə imkan verən registrlər üçün əlavə cədvəllər (virtual) mövcuddur.

Məlumat Registri.RegistrAdı.Son Dilim(&Tarix) – 1C məlumat reyestrindən sorğu, əgər dövri olarsa, müəyyən bir tarix üçün

Yığım Reyestri.Registr Adı.Balanslar(&Tarix) – Müəyyən bir tarix üçün qalıqlar reyestrindən 1C sorğusu

Yığım Reyestri.Registr Adı.Dövriyyə (&Başlama tarixi, &Bitmə tarixi) – başlanğıc tarixindən bitmə tarixinə qədər dövr üçün dövriyyə reyestrindən 1C sorğusu.

Əlavə prinsiplər

Bəzi məlumatların siyahısını tələb etdikdə, əsas prinsiplər işləyir. Amma biz də nömrələr tələb edə bilərik və sorğu onları bizim üçün hesablaya bilər (məsələn, onları əlavə edin).

SEÇİN
//Quantity(FieldName) – kəmiyyəti hesablayır
//Field AS OtherName – sahənin adını dəyişir
Kəmiyyət (Link) AS Göndərilən Sənədlərin Kəmiyyəti
FROM

HARADA
keçirilmişdir

Bu 1C sorğusu bizə sənədlərin ümumi sayını qaytaracaq. Bununla belə, hər bir sənədin Təşkilat sahəsi var. Tutaq ki, biz 1C sorğusundan istifadə edərək hər bir təşkilat üçün sənədlərin sayını hesablamaq istəyirik.

SEÇİN
//sadəcə sənəd sahəsi
Təşkilat,
//kəmiyyəti hesablayın
Quantity(Link) AS QuantityBy Organizations
FROM
Malların və xidmətlərin satışı
HARADA
keçirilmişdir
GROUP BY

Təşkilat

Bu 1C sorğusu bizə hər bir təşkilat üçün sənədlərin sayını qaytaracaq (“təşkilat tərəfindən” də deyilir).

1C sorğusundan istifadə edərək bu sənədlərin məbləğini əlavə olaraq hesablayaq:

SEÇİN
//sadəcə sənəd sahəsi
Təşkilat,
//kəmiyyəti hesablayın

// məbləği hesablayın

FROM
Malların və xidmətlərin satışı
HARADA
keçirilmişdir
GROUP BY
//sahələrin siyahısında count() funksiyası və eyni zamanda bir və ya bir neçə sahə varsa istifadə edilməlidir - o zaman bu sahələr üzrə qruplaşdırmaq lazımdır
Təşkilat

Bu 1C sorğusu da sənədlərin məbləğini bizə qaytaracaq.

SEÇİN
//sadəcə sənəd sahəsi
Təşkilat,
//kəmiyyəti hesablayın
Quantity(Link) AS QuantityBy Organizations,
// məbləği hesablayın
Məbləğ(DocumentAmount) AS Məbləğ
FROM
Malların və xidmətlərin satışı
HARADA
keçirilmişdir
GROUP BY
//sahələrin siyahısında count() funksiyası və eyni zamanda bir və ya bir neçə sahə varsa istifadə edilməlidir - o zaman bu sahələr üzrə qruplaşdırmaq lazımdır
Təşkilat
PROQRAM NƏTİCƏLƏRİ Ümumi

1C sorğu dili geniş və mürəkkəbdir və biz onun bütün imkanlarını bir dərsdə nəzərdən keçirməyəcəyik - növbəti dərslərimizi oxuyun.

1C sorğu dilinin əlavə xüsusiyyətləri haqqında qısaca:

  • Çoxlu cədvəllərdən məlumatların birləşdirilməsi
  • İç-içə sorğular
  • Toplu sorğu
  • Öz virtual masalarınızı yaratmaq
  • Qiymət cədvəlindən sorğu
  • Dəyərləri əldə etmək və dəyərləri manipulyasiya etmək üçün daxili funksiyalardan istifadə.

1C Query Builder

Sorğu mətnini əl ilə yazmamaq üçün 1C sorğu dizayneri var. Sadəcə modulun istənilən yerinə sağ klikləyin və 1C Query Designer seçin.

1C sorğu dizaynerində solda istədiyiniz cədvəli seçin və onu sağa sürükləyin.

1C sorğu dizaynerində cədvəldən tələb olunan sahələri seçin və sağa sürükləyin. Yalnız bir sahə seçmək deyil, ona bir növ toplama funksiyası tətbiq etmək istəyirsinizsə, sürüklədikdən sonra siçan ilə sahəyə iki dəfə vurun. Qruplaşdırma sekmesinde siz qruplaşdırma üçün tələb olunan sahələri seçməlisiniz (sürükləyin).

1C sorğu tərtibatçısındakı Şərtlər sekmesinde, eyni şəkildə lazımi seçimləri seçə bilərsiniz (seçim edəcəyiniz sahələri sürükləməklə). Düzgün şəraiti seçdiyinizə əmin olun.

Sifariş nişanında çeşidləmə göstərilir. Nəticələr sekmesinde - nəticələrin yekunlaşdırılması.

1C sorğu dizaynerindən istifadə edərək hər hansı mövcud sorğunu öyrənə bilərsiniz. Bunu etmək üçün mövcud sorğunun mətninə sağ vurun və həmçinin 1C sorğu dizaynerini seçin - və sorğu 1C sorğu dizaynerində açılacaq.

Hesabatları hazırlayarkən, bəzən sorğu dili ilə məlumatların əldə edilə bilməyəcəyi hesabatı göstərməlisiniz. Bu vəziyyət, məsələn, verilənlərin hesablanması üçün hansısa mürəkkəb alqoritmdən istifadə edildikdə və ya hesabatın çıxarılması üçün məlumatlar informasiya bazasından deyil, məsələn, xarici fayldan əldə edildikdə yarana bilər. Hesabat Qurucusu ixtiyari məlumat mənbəyindən hesabatı göstərmək imkanı verir.
Aşağıdakılar hesabat çıxışı üçün məlumat mənbəyi kimi istifadə edilə bilər:

  • Dəyər Cədvəli,
  • Sorğu Nəticəsi,
  • Cədvəl Sənəd Hüceyrələrinin Sahəsi,
  • cədvəl hissəsi,
  • Yığım Qeydiyyatı Qeydləri Dəsti,
  • Məlumat RegisterRecordSet,
  • Mühasibat Uçotu Qeydlər dəsti,
  • Hesablama Qeydiyyatı Qeydlər dəsti.
Hesabat qurucusunun ixtiyari məlumat mənbəyi üçün hesabatı göstərməsi üçün qurucunun Məlumat Mənbəsi xüsusiyyətində məlumat mənbəyinin təsvirini təyin etmək kifayətdir. Hesabat qurucu xüsusiyyəti DataSource DataSourceDescription tipli dəyəri ehtiva edə bilər. DataSourceDescription obyekti məlumat mənbəyinin özünü ehtiva edir və həmçinin məlumat mənbəyinin sütunlarının təsvirini ehtiva edir. Hər bir məlumat mənbəyi sütun təsviri daxildir:
  • Ad - məlumat mənbəyində sütunun adını ehtiva edir,
  • DataPath - sütunların bir-birindən asılılığının təsvirini ehtiva edir. Məlumat yolu başqa sahənin məlumat yolundan nöqtə vasitəsilə əldə edilən sütun digər sütunun atributu hesab olunur. Əgər sahədə nöqtə ilə ayrılmış Nümayəndəlik sözü varsa, onda bu sahə təsvirin alındığı yoldan verilənlərə qədər olan sütunun təsviri hesab olunur. Nümunələr. Əgər “Nomenklatura” sütununda “Nomenklatura” məlumatlarına, “Kod” sütununda isə “Nomenklatura.Kod” məlumatlarına gedən yol varsa, bu sütun “Nomenklatura” sütununun atributu hesab ediləcək. "Nomenklatura. Nümayəndəlik" məlumatlarına yolu olan sütun "Nomenklatura" sütunu üçün təqdimat hesab ediləcək,
  • Sahə - bu sütunun hesabat sahəsi kimi istifadə edilə biləcəyinə işarədir,
  • Sifariş - müəyyən bir sütun üçün sifarişin mümkün olduğuna işarədir,
  • Seçim, müəyyən bir sütuna seçim qoymağın mümkün olduğuna işarədir,
  • Ölçü - bu sütunun hesabat qruplaşması kimi istifadə edilə biləcəyinə işarədir,
  • Cəmi - cəminin hesablanması üçün ifadəni ehtiva edən sətir. Hesabat qurucusu üçün bu sətrin ifadəsi sorğu dilində istifadə olunan cəminin hesablanması ifadəsinə uyğundur,
Məlumat mənbəyini DataSourceDescription obyektinə təyin etdiyiniz zaman sütun təsvirləri avtomatik olaraq yaradılır və doldurulur.

DataSourceDescription obyektinin konstruktoru var, onun parametri kimi təsviri yaradılan məlumat mənbəyi ötürülə bilər, DataSource xüsusiyyəti isə ötürülən məlumat mənbəyi ilə, sütun təsvirləri isə sütunlar haqqında məlumatla doldurulacaq. məlumat mənbəyi.

Hesabat qurucusu üçün məlumat mənbəyinin qurulması nümunəsi:

ReportBuilder.DataSource = NewDataSourceDescription(ValueTableNəticə);

Hesabat qurucusu ilə sonrakı iş sorğu rejimində hesabat qurucusu ilə işləməkdən heç bir fərqi yoxdur: hesabat qurucusu iyerarxik yekunların göstərilməsi istisna olmaqla, özünün tam funksionallığını təmin edir. Bundan əlavə, fərdi məlumat mənbəyi ilə işləyərkən, məlumat bazasından məlumat əldə etmək üçün istifadə olunacaq hesabat tərtibatçısından sorğu əldə edə bilməzsiniz.

Sorğu qurucusunun fərdi məlumat mənbəyi ilə işi hesabat qurucusunun fərdi mənbəyi ilə işlə eynidir.



Əlaqədar nəşrlər