Rastgele bir veri kaynağıyla Rapor Oluşturucu ve Sorgu Oluşturucu'nun çalışması. Rapor oluşturucunun ve sorgu oluşturucunun rastgele bir veri kaynağıyla çalışması Sorgu oluşturucu 1c 8.2 seçimi

1C platformunun sekizinci sürümü, her biri uygulama geliştirme sürecini basitleştiren ve performansı optimize eden kendi yöntemlerine ve özelliklerine sahip birçok yeni yapılandırma nesnesi sunar. Bunlardan biri Rapor Oluşturucu.

1c rapor oluşturucunun ne olduğu, hangi işlevleri yerine getirdiği ve programlamada hangi uygulamayı bulduğu hakkında ve bu yazıda konuşmak istiyorum.

1C rapor oluşturucu - nedir bu?

Bir elektronik tablo belgesine veya grafiğe veri çıkışı yapmanızı sağlayan bir yapılandırma nesnesidir. Veri kaynağı şunlar olabilir:

  1. Sorgu yürütmenin sonucu;
  2. Bir elektronik tablo belgesinin hücre alanı;
  3. Bir belgenin veya referans kitabının tablolu bölümü;
  4. Bir dizi kayıt girişi.

Ek olarak, 1C'deki rapor oluşturucu, sorgu metninin gönderilebileceği ve sonucunun görüntülenmesi gereken "Metin" özelliğine sahiptir.

Şekil 1, "Rapor Oluşturucu" kullanarak rastgele bir değerler tablosu görüntülemenize izin veren bir kod parçasını gösterir.

Bu nedenle, inşaatçı için bariz kullanım durumu raporları tasarlamaktır. Oluşturucuyu kullanmanın bu kadar açık bir yönü, kullanıcı tarafından çeşitli sorgu öğelerini (gruplamalar, seçimler, vb.) özelleştirmek için kullanılmasıdır.

Bu arada, Şekil 1'de gösterilen kodun yürütülmesinin sonucu Şekil 2'de görülebilir.

İncir. 2

Oluşturucu kurulumu

Rapor oluşturucu, bir bakıma bir veri düzenleme sistemine benzer ve ACS'nin şu veya bu nedenle kullanılamadığı veya yanlış çalışma olasılığının bulunduğu durumlarda kullanılabilir.

ACS gibi, oluşturucu şunları içerir:

  • Gruplamalar (bilgi görüntülerken hiyerarşi seviyeleri);
  • Göstergeler (toplamını almak istediğiniz değerler);
  • Ek hesaplanan alanlar (öğelerin nitelikleri, değerlerle eylemlerin sonuçları);
  • Filtreler (seçimler);
  • Sıralama.

Oluşturucu görünüm düzeni ayarları, farklı ayrıntı düzeylerini ve kesinliğini varsayar.

Oluşturucuyu kullanmak için algoritma

Doğal olarak, duruma bağlı olarak, programın rapor oluşturucuyu kullanma kodu önemli ölçüde değişebilir. Temel kullanım algoritması değişmez:

  1. ReportBuild türünde yeni bir nesnenin yaratıldığını bildiririz;
  2. Bu aşamada, seçim metnini oluşturmak için QueryBuilder'ı kullanabilir veya DataSource Description nesnesini kullanarak mevcut bir seçimi kullanabilirsiniz;
  3. Rapor oluşturucu ayarları, oluşturucu nesne yöntemi FillSettings ();
  4. Oluşturucuda Layout nesnesinin özelliğini tanımlayarak otomatik oluşturma yöntemiyle oluşturulan standart tasarım düzenini kullanmayı reddedebilirsiniz;
  5. DataSourceDescription kullanılmıyorsa, bu aşamada isteği yürütmek gerekir, Execute () yöntemini kullanın;
  6. Son adım, Çıktı () yöntemini çalıştırmaktır, çıktı bir elektronik tablo belgesinde veya ilgili form öğesinde yapılabilir.

Oluşturucuda şifre çözmeyi kullanma

Şekil 1'deki üçüncü satır, oluşturucu yürütmesinin sonucunda hücrelerin kodunun çözülmesini içerir.

Bunu yapmak için FillDecoding özelliğini kullandık. Bu özelliğin türü ReporterDecodingFillType'tır, üç değerden birini alabilir:

  1. Gruplama Değerleri - bir hücreyi etkinleştirirken, içinde belirtilen gruplamanın değeri kullanılacaktır;
  2. Doldurma - varsayılan değer, yani nihai sonuç için şifre çözme kullanılmayacaktır;
  3. Şifre çözme - şifre çözme yapısı, orijinal örneğin tüm gruplamalarının değerleri ile doldurulacaktır.

Ayrıca kullanıcı, ConfigureDecryption() yöntemini kullanarak şifre çözmeyi kendi başına ayarlayabilir. Bu yöntemi çalıştıran kod parçası Şekil 3'te gösterilmiştir.

Şek. 3

Seçimleri bir rapora dahil etmek için oluşturucuyu kullanma örneği

Biraz pratik kısım. Bazen bazı seçimlerle rapor oluşturmanın gerekli olduğu bir durum vardır. Bu sorunu ACS'yi kullanarak çözebilir veya oluşturucuyu kullanabilirsiniz:

  1. Yaratarak başlayalım dış rapor ve buna isteğe bağlı bir adla bir öznitelik ekleyerek ve Rapor Oluşturucu yazarak (Şekil 4);

4

  1. Bir rapor formu oluşturun ve üzerine TabularField interface nesnesini yerleştirin, Selection olarak yazın ve oluşturulan özniteliğin Selection özelliğine bağlayın Şekil 5

Şekil 5

  1. Formumuzun ilgili olayıyla ilişkili bir OnOpen () prosedürü oluşturuyoruz;

Şekil 6

  1. İçinde yazılan kodun mutlaka rapor oluşturucu için bir sorgu içermesi gerekir, kodun bir örneği Şekil 6'da gösterilmiştir, bir oluşturucu metni oluşturmak için sorgu yapıcısını kullanabilirsiniz, yapıcıda oluşturucu koşulları ve ek ayarları ilgili sekmede belirtilmiştir Şekil 7;

7

  1. Sorgu metninin küme () parantezlerinde belirtilen seçim koşulları, yalnızca ilgili seçim kullanıcı tarafından etkinleştirilir ve kullanılırsa yürütülür;

  2. Oluşturucunun sonucunu görüntüleyen prosedür Şekil 8'de gösterilmektedir ve Generate düğmesine basılmasıyla ilişkilidir;

Şekil 8

  1. Raporumuzu kaydediyoruz.

Oluşturduğumuz raporun görünümü ve sonucu Şekil 9'da gösterilmektedir.

Şekil 9

Tabii ki, yeni bir nesnenin tüm yeteneklerini bir makale içinde göstermek oldukça zordur, ancak bize bir fikir edinmenin ve edinilen bilgileri dikkate alarak kullanmaya başlamanın mümkün olduğu görülüyor.

1. Rapor Oluşturucu nedir?

Rapor oluşturucu, belirtilen sorgu metnine ve ayarlara dayalı sonucu almanıza ve bunu bir elektronik tablo belgesinde veya grafikte görüntülemenize olanak tanıyan bir nesnedir.

Rapor Oluşturucu ayarları şunları içerir:

  • gruplamalar (örnek: “Terminal”, “Karşı taraf” ...),
  • göstergeler (örnek: “Miktar”, “Miktar” ...),
  • ek alanlar (örnek: “Nomenclature.Service”, “Karşı taraf.code” ...),
  • filtre (örnek: belirli bir kalem için, bir grup karşı taraf için ...) ve
  • sıralama (örnek: “Nomenclature.Code”, “Karşı taraf.Name” ...)

Oluşturucu ayarları, programcının kullanıcıya kurulumları için minimum çabayla bir arayüz sağlamasına olanak tanıyan görselleştirme araçlarına sahiptir.

Çıktı almadan önce, yerleşim düzenini kullanarak rapor oluşturucu düzenine stil verebilirsiniz.

Rapor oluşturucu sorgusunun yürütme sonucunun çıktısı tek bir komutla gerçekleştirilir.

2. Rapor Oluşturucu'yu nerede kullanabilirsiniz?

Rapor oluşturucunun yardımıyla raporların büyük bir kısmını tasarlayabilirsiniz (örnek: “Stok bakiyeleri”, “Dönem satışları”...). Aynı zamanda, geliştirme ve program kodu için geçen süre önemli ölçüde azalacak ve tasarım ve işlevsellik kalitesi artacaktır.

Ek olarak, rapor oluşturucu, sonucun çıktısının gerekli olmadığı, ancak kullanıcının sorgu öğelerini, örneğin gruplamaları veya bir filtreyi özelleştirmesi gerektiği durumlarda kullanılabilir (örneğin: bir öğeyi bir xml dosyasından boşaltmak veya belirtilen bir filtre tarafından gönderilen belgeleri işleme).

Rapor oluşturucu 1C: Enterprise sunucusunda bulunmadığından ve harici bağlantı modülünde kullanılmadığından, bu durumlarda kullanmak gerekir. Sorgu oluşturucu rapor oluşturucuya benzer, ancak görsel özelliklere ve yöntemlere sahip olmayan ("Layout", "OutputReportHeader", "Output ()", "CheckoutLayout ()" ...).

3. Kavramlar hakkında biraz

Sürüm 7.7 ile karşılaştırıldığında, sürüm 8.0 konseptlerde küçük bir değişiklik geçirdi, bu yüzden üzerinde biraz durmakta fayda var.

konsept

Tanım

Hat ölçümleri Çıktının satırlar halinde gerçekleştirileceği gruplamaların listesi (örnek: “Adlandırma”, “Karşı taraf” ...)
Sütun ölçümleri Çıktının sütunlara göre gerçekleştirileceği gruplamaların listesi (örnek: “Depo”, “Ay” ...).
seçim Bir dizi farklı filtre (örnek: bir grup müteahhit tarafından, belirli bir kuruluş tarafından ...).
Emir Bir dizi sıralama alanı (örnek: "Nomenclature.Code", "DocumentSales.Responsible" ...).
Tarla Sorgu seçim alanlarından biri (örnek: “Terminal”, “Karşı taraf.kodu”, “Miktar”, “Tutar”...).
Seçili alanlar Seçilen alanların listesi göstergeleri (örnek: “Miktar”, “Miktar” ...) ve ek alanları (gruplandırma ayrıntıları) (örnek: “Nomenklatür.Grup”, “Karşı taraf.kodu” ...) içerir.
Kullanılabilir alanlar Gruplama, filtreleme, sıralama ve seçili alanlara ekleme için kullanılabilen alanların listesi. Kural olarak, bir sorgu seçim alanları listesi ile doldurulur, ancak programlı olarak düzenlenebilir (mevcut alanları ekleyebilir, değiştirebilir ve silebilirsiniz).

Gruplama, filtreleme, sıralama ve seçilen alanların doğrudan mevcut alanlarla ilgili olmadığını, farklı nesneler olduğunu anlamak önemlidir.

Temel fark, kullanılabilir alanın "Veri Yolu" özelliğine sahip olmamasıdır (örneğin: "Nomenclature.Code", "Miktar"), çünkü bu yalnızca bir denemenin yapılacağı alanın bir tür açıklamasıdır. Sorgu seçim alanları arasında anında eşleşme bulmak için yapılan gruplama, filtreleme, sıralama veya seçili alanlar listesine eklenir.

Aynı zamanda, bir yandan mevcut alanın “AddWelected ()” veya “AddInSelectedFields ()” gibi yöntemleri olmadığı için yukarıdaki listelerden herhangi birine programlı olarak mevcut alanlardan birini eklemek mümkün değildir. , ancak diğer yandan, yukarıdaki listelerden herhangi birine yeni bir öğe eklerken, alan adıyla her zaman eşleşmeyen “Veri yolu” özelliğini belirtmeniz gerekir (örneğin: “Nomenclature.Parent” ve “Nomenclature.Parent.Parent” alanları aynı “Üst” ada sahiptir).

4. Rapor oluşturucunun tipik kullanım durumu

Genel olarak, rapor oluşturucu ile çalışırken yapılacak işlemlerin sırası aşağıdaki gibidir:

  1. Yeni bir “Rapor Oluşturucu” nesnesi oluşturun;
  2. İsteğin metnini “Metin” özelliğine atayın;
  3. Rapor oluşturucu ayarları sorgu metninde belirtilmemişse, “FillSettings ()” yöntemini uygulayın;
  4. Kullanıcıya rapor oluşturucunun ayarlarını değiştirme olanağı sağlayın;
  5. Gerekirse, rapor oluşturucu tarafından düzeni otomatik olarak oluşturmayı reddedebilir ve Düzen özelliğine sabit bir düzen atayabilirsiniz;
  6. Gerekirse, "Layout" özelliğine standartlardan birini veya kendi düzeninizi atayabilirsiniz ve rapor oluşturucunun otomatik oluşturulan düzeni sabit bir düzen ile değiştirildiyse, "Checkout Layout ()" yöntemini uygulayın;
  7. "Çalıştır ()" yöntemini çağırın;
  8. "Çıktı ()" yöntemini çağırın.
Oluşturucu = Yeni "Rapor Oluşturucu"; toplamı olarak Tutar (DenezhnyeSredstvaKompaniiOstatki.SummaOstatok) | | DenezhnyeSredstvaKompaniiOstatki.StrukturnayaEdinitsa, | Postroitel.Tekst = "çözünürlüğü seçin | RegistrNakopleniya.DenezhnyeSredstvaKompanii.Ostatki ((StrukturnayaEdinitsa *).) | | DAN | gruplandırılmış tarafından | DenezhnyeSredstvaKompaniiOstatki.StrukturnayaEdinitsa | | TOPLAM SONUÇLAR (Miktar) TARAFINDAN | GENEL, | Yapısal Birim "; Builder.FillSettings (); // Burada kullanıcıya rapor oluşturucunun ayarlarını değiştirme // fırsatını verebilirsiniz Builder.Layout = GetLayout ("CustomLayout");
Builder.Layout.Layout = GetLayoutLayout (StandardLayout.Classic);
Builder.CheckLayout ();
Oluşturucu.Çalıştır ();
Oluşturucu.Görüntüleme ();

5. Rapor oluşturucunun bazı özelliklerinin açıklaması

Mülk

Tanım

Metin Rapor oluşturucunun sorgu metnini içerir. Rapor oluşturucunun sorgu metni “(…)” ayar öğelerini içermiyorsa, sorgu metnine dayalı olarak ayarları otomatik olarak doldurmak için FillSettings () yöntemini kullanabilirsiniz.
Metin Başlığı Rapor başlığında görüntülenecek metin (örnek: “01.01.2004 İtibariyle Stok Bakiyeleri”, “Ocak 2004 Satışları”...).
ÇıktıRapor Başlığı
EkranŞapka Tablosu
Genel Sonuçları Göster
DisplayBodrumTablolar
AltbilgiRaporunu Görüntüle
Bu özellikler, sırasıyla rapor başlığının, tablo üstbilgisinin, genel toplamların, tablo altbilgisinin ve rapor altbilgisinin görüntülenip görüntülenmeyeceğini belirler.
Ayrıntılı Kayıtları Görüntüle Tesis, ayrıntılı kayıtların zorla görüntülenmesinden veya görüntülenmesinin yasaklanmasından sorumludur.
Otomatik Ayrıntılı Kayıtlar “AutoDetailedRecords” özelliği True olarak ayarlanmışsa, her ayrıntılı kayıt yalnızca gruptan farklıysa görüntülenecektir.
Mevcut Alanlar Gruplamalara ekleme, filtreleme, seçili alanlar ve sıralama için kullanılabilen alanların bir listesini içerir.
ÖlçümlerDizeler
Ölçüm Sütunları
Sırasıyla satıra ve sütuna göre gruplamaların bir listesini içerir.
seçim Rapor oluşturucu tarafından tanımlanan filtrelerin bir listesini içerir.
Seçilen Alanlar seçilen göstergelerin ve gruplandırma özelliklerinin bir listesini içerir.
Emir sıralama alanlarının bir listesini içerir.
parametreler Oluşturucu parametrelerinin bir listesini içerir ("&" sembolü kullanılarak oluşturucu sorgusunun metninde belirtilir).
Sonuç Rapor oluşturucunun bir sorgusunun yürütülmesinin sonucunu içerir (QueryResult türünde bir nesne).

6. Rapor Oluşturucu ile Transkriptlerin İşlenmesi

"FillDecryption" özelliği, çıktıdaki şifre çözmeyi doldurmak için üç seçenekten birini içerir:

1. seçenek: doldurmayın (şifre çözme kullanmayın).

2. seçenek: değerleri gruplandırma (bir hücrenin şifresini çözerken, içinde görüntülenen gruplama değeri açılır).

3. seçenek: şifre çözme (şifre çözme, tüm gruplamaların değerlerini içeren bir yapı ile doldurulacaktır). Bu durumda, iletilen yapıyı analiz etmenin ve belirli eylemleri gerçekleştirmenin gerekli olduğu elektronik tablo belgesi “Şifre çözmenin işlenmesi” olayını işlemek gerekir.

Önemli bir nokta, üçüncü seçenekte, oluşturulan elektronik tablo belgesine çıktı almanın imkansız olmasıdır, çünkü o zamandan beri, olayı elektronik tablo belgesi alanının bulunduğu formun modülünde işlenen şifre çözmeyi işlemek imkansızdır. yer almaktadır.

Şifre çözmeyi doldurmak için üçüncü seçeneği kullanırsanız, kullanıcı tarafından gerçekleştirilen şifre çözmeyi dikkate alarak bir raporu yürütmek ve görüntülemek için tasarlanmış "ConfigureDecryption ()" yöntemini kullanabilirsiniz.

Rapor oluşturucu aynı veya yeni olabilir. Şifre çözmeyi özelleştirdiğinizde, tüm özel rapor oluşturucu filtreleri kaldırılacak ve tümü yüklü filtreler orijinal sorgu oluşturucu artı şifre çözmeden gruplama değerlerine filtreler.

7. Raporlama

"Düzen" özelliği, sonucu bir elektronik tablo belgesine yazdırırken kullanılan düzeni içerir. Tanımsız ise, düzen otomatik olarak oluşturulur.

"ReportHeader Layout", "TableHeader Layout", "DetailRecords Layout", "GeneralTotals Layout", "TableFootboard Layout" ve "ReportFootboard Layout" özellikleri, sırasıyla rapor oluşturucu düzenindeki alanın adını veya çıktıda kullanılan bireysel düzenleri içerir. , bir tablonun, bir rapor başlığının, bir üstbilgi genel toplamlarının, tablo altbilgisinin ve bir elektronik tablo belgesine rapor altbilgisinin. Alan adları, rapor oluşturucu düzenindeki adlarla eşleşiyorsa, özellikleri doldurmanız gerekmez.

"Görünüm Düzeni" özelliği, rapor oluşturucu düzenine stil vermek için kullanılan düzeni içerir. Görünüm düzenindeki hücrelerin dekorasyonu, rapor oluşturucu düzeninin hücrelerine uygulanacaktır.

Standart tasarım seçeneklerinden birini elde etmek için “GetDesignLayout ()” global bağlam yöntemini kullanabilirsiniz.

Rapor oluşturucunun "Düzen" özelliğine sabit bir düzen atanmışsa, tasarımı için "Ödeme Düzeni ()" yöntemi gerekir.

"PlacementDimensionsInstrings" özelliği, gruplandırmaları satırlara göre görüntülemek için üç seçenekten birini tanımlar.
1. seçenek: birlikte (bir sütunda).
Örnek:

2. seçenek: ayrı ayrı (farklı sütunlarda).
Örnek:


Örnek:

"PlacementDimensionsInColumns" özelliği, gruplandırmaları sütunlara göre görüntülemek için üç seçenekten birini tanımlar.
1. seçenek: birlikte (tek satırda).
Örnek:

2. seçenek: ayrı ayrı (farklı satırlarda).
Örnek:

3. seçenek: ayrı ayrı ve yalnızca toplamda.
Örnek:

"PlacementTotalsInLows" özelliği, toplamları satırlar halinde görüntülemenin dört yolundan birini tanımlar.
1. seçenek: başlıkta (yalnızca sonraki gruplamaların ve ayrıntılı girişlerin üstünde).

2. seçenek: üstbilgi ve altbilgide (sonraki gruplamaların ve ayrıntı girişlerinin üstünde ve altında).

3. seçenek: bodrumda (sonraki gruplamaların ve ayrıntılı kayıtların altında, üstlerinde sadece gruplandırmanın açıklaması görüntülenir).

4. seçenek: sadece bodrumda (sadece sonraki gruplamaların ve ayrıntılı kayıtların altında).

Mülk " Sonuçların Sütunlara Yerleştirilmesi”Toplamları sütunlarda görüntülemenin dört yolundan birini tanımlar.

1. seçenek: başlıkta (yalnızca sonraki gruplamaların ve ayrıntılı girişlerin solunda).

2. seçenek: üst bilgi ve alt bilgide (sonraki gruplamaların ve ayrıntılı girişlerin solunda ve sağında).

3. seçenek: bodrumda (sonraki gruplamaların ve ayrıntılı kayıtların sağında, solunda sadece gruplandırmanın açıklaması görüntülenir).

4. seçenek: sadece bodrumda (sadece sonraki gruplamaların ve ayrıntılı kayıtların sağında).

Mülk " Boyut Niteliklerinin Satırlara Yerleştirilmesi”Gruplama niteliklerini satırlara göre görüntülemek için üç seçenekten birini tanımlar.

1. seçenek: birlikte (bir ek sütunda).
Örnek:

2. seçenek: ölçümlerle birlikte (gruplandırmalı sütunlarda).
Örnek:

3. seçenek: ayrı olarak (farklı ek sütunlarda).
Örnek:

Mülk " PlacingDimensionAttributesInColumns”Gruplama ayrıntılarını sütunlara göre görüntülemek için üç seçenekten birini tanımlar.

1. seçenek: birlikte (bir ek satırda).
Örnek:

2. seçenek: ölçümlerle birlikte (gruplandırmalı satırlarda).
Örnek:

3. seçenek: ayrı olarak (farklı ek satırlarda).
Örnek:

8. Rapor oluşturucunun çıktısı

“Run ()” yöntemi, rapor oluşturucunun sorgusunu yürütür ve “Result” özelliğini doldurur.
GetRequest() yöntemini kullanarak, Run() yöntemi çağrıldığında yürütülen bir rapor oluşturucu sorgusu alabilirsiniz.

"Çıktı ()" yöntemi, sonucu bir elektronik tablo belgesine veya grafiğe verir. Çıktısını almak istediğiniz nesneyi belirtmezseniz, yeni bir elektronik tablo belgesi oluşturulacaktır.

Yeni bir elektronik tablo belgesine çıktı örneği:
Oluşturucu.Görüntüleme ();

Mevcut bir elektronik tablo belgesine bir çıktı örneği:
Builder.Offer (FormElements.ResultTable);

Diyagrama çıktı örneği:
Builder.Output (FormElements.ResultDiagram, "Miktar");

Rapor oluşturucunun sonucunu bir pivot tabloda veya pivot grafikte görüntülemeniz gerekiyorsa, “Çıktı ()” yöntemini kullanmamalı, pivot tablo veya pivot grafiğin “Veri Kaynağı” özelliğini doldurmalısınız. Kaynak, rapor oluşturucu sonucu veya rapor oluşturucunun kendisi olabilir. Rapor oluşturucunun sonucu, sorgunun aşılmasını gerektirmez, ancak rapor oluşturucu, gruplamaların bileşimini değiştirmenize izin verir.

9. Oluşturucu ayarlarını kaydetme ve geri yükleme

“GetSettings ()” yöntemi, rapor oluşturucunun mevcut ayarlarını, hangilerini belirtme yeteneği ile almanıza olanak tanır (örnek: yalnızca filtre, filtre ve sıralama ...).

“SetSettings ()” yöntemi, rapor oluşturucunun ayarlarının hangilerini belirtme yeteneği ile yüklenmesine izin verir (örnek: sadece filtre, filtre ve sıralama ...).

10. Rapor oluşturucunun gruplandırmaları ve alanları

Rapor oluşturucu boyutu, satır veya sütuna göre gruplanıyor.

Gruplandırmanın ana detayları şunlardır:

  • “Ad” (değişken tanımlayıcı) ​​(örnek: “Adlandırma”, “Karşı taraf” ...),
  • "Sunum" (çıktıda sunum) (örnek: "Satış belgesi", "Ölçü birimi" ...),
  • "DataPath "(istek seçim alanına giden yol) (örnek:" Adlandırma "," DocumentSales.Organization "...)

ve gruplandırma referans kitabına göre oluşturulmuşsa, o zaman ayrıca

  • DimensionType (alan değerlerine göre filtreleme seçeneklerinden biri: hiyerarşi (üyeler ve gruplar), yalnızca hiyerarşi (yalnızca gruplar) veya üyeler (yalnızca üyeler).

Ek olarak, bir elektronik tablo belgesine çıktı alırken kullanılacak olan, gruplamaya düzenler atamanıza izin veren birkaç özellik vardır.

  • "Düzen", rapor oluşturucu düzenindeki bölgenin adı veya bir gruplama görüntülenirken kullanılan ayrı bir düzendir.
  • “Düzen Hiyerarşisi”, rapor Oluşturucu düzenindeki alanın adı veya gruplandırma hiyerarşisini görüntülerken kullanılan ayrı bir düzendir.
  • "FooterLayout", oluşturucu düzenindeki alanın adı veya gruplandırma altbilgisini görüntülerken kullanılacak ayrı bir düzendir.
  • "HierarchyFooterLayout", oluşturucu düzenindeki alanın adı veya gruplandırma hiyerarşisi altbilgisini görüntülerken kullanılan ayrı bir düzendir.
  • "Bodrum Katmanları" - farklı gruplandırma seviyeleri için bir dizi bodrum düzeni.
  • "Seviye Düzenleri" - farklı gruplama seviyeleri için bir dizi düzen.

Rapor oluşturucu alanı, seçilen alanlardan biridir. Alanın ana detayları şunlardır:

  • “Ad” (alan tanımlayıcı) ​​(örnek: “Miktar”, “Adlandırma Kodu”, “Dönem” ...),
  • "Sunum" (çıktıdaki sunum) (örnek: "Miktar", "Kod", "Dönem" ...) ve
  • "Veri yolu" (sorgu seçim alanına giden yol) (örnek: "Miktar", "Terminoloji. Kod", "Dönem" ...).

Bir gruplama veya alan listesiyle bir dizi eylem gerçekleştirebilirsiniz.

  • "Ekle ()" - belirtilen konuma bir gruplama / alan ekleyin.
  • “Ekle ()“ - listenin sonuna bir gruplama / alan ekleyin.
  • "İndeks ()" - listedeki gruplandırma / alanın indeksini alın.
  • "Sayı ()" - listedeki gruplamaların / alanların sayısını alın.
  • "Bul ()" - listede ada göre bir gruplama / alan bulun.
  • "Temizle ()" - gruplamalar / alanlar listesini temizleyin.
  • "Get ()" - dizine göre gruplandırma / alan alın.
  • "Taşı ()" - gruplamayı / alanı belirtilen konum sayısına göre hareket ettirin.
  • "Kaldır ()" - listeden bir gruplamayı / alanı kaldırın.

11. Oluşturucu dili

Rapor oluşturucunun kendi dili vardır. Bu, “(…)” yapılarıyla desteklenen yaygın bir sorgu dilidir. Bu yapıları kullanarak FillSettings () yöntemini terk edebilir ve sorgu gövdesindeki rapor oluşturucuyu özelleştirebilirsiniz.
Böylece, "SEÇ", "NEREDE", "SİPARİŞ TARAFINDAN", "SONUÇLARA GÖRE" öğelerini özelleştirebilir ve ayrıca başka ilginç şeyler yapabilirsiniz. Bu durumda, oluşturucu sorgusunun ana metni varsayılan ayarlar olurken, yapılar (…) mevcut ayarları açıklayacaktır.

Seçim alanı bir nokta üzerinden bir şey almanıza izin veriyorsa, “. *” belirtebilirsiniz. Alandan sonra, kullanıcı alanın ayrıntılarını seçebilecektir. Örneğin, “Adlandırma. *” “Nomenclature.Code”a göre sıralama yapmanıza veya “Nomenclature.Service”e göre filtrelemenize izin verir. Ancak “Miktar. *”, “Miktar” alanının hiçbir ayrıntısı olmadığı için bir anlam ifade etmez, bu da sadece “Miktar” belirtmenin yeterli olduğu anlamına gelir.

SELECT yapısında belirtilen alanlar, kullanıcının kullanabileceği alanların listesini sınırlar.
“WHERE” yapısında belirtilen alanlar, filtrede kullanılabilecek alanların listesini sınırlar.
“ORDER BY” yapısında belirtilen alanlar, sıralanacak alanların listesini sınırlar.
"TOPLAM TARAFINDAN" yapısında belirtilen alanlar, toplamları gruplandırmak için alan listesini sınırlar.

Ve şimdi ilginç şeyler için.

İlk önce, isteğin ana metninde, kaynakların parametrelerindeki yapıları (...) da kullanabilirsiniz. Örneğin, eğer yerine
|
| Birikim Kaydı.Şirketin Emtia Bakiyeleri.Kalanlar (& Bitiş Tarihi)
işaret etmek
|
| Birikim Kaydı.Şirketin Emtia Bakiyeleri.Kalan ((& Bitiş Tarihi))
bu durumda "EndDate" alanına göre bir filtre ayarlamak mümkün olacaktır.

Aynı zamanda, ilk durumda rapor oluşturucunun “Bitiş Tarihi” parametresini ayarlamak gerekir, ikinci durumda gerekli değildir, ayrıca “Bitiş Tarihi” alanı ile seçim belirtilmemişse, daha sonra “Birikim Kaydı” tablosunun bu parametresi sayılmaz.

ikinci olarak, sorgu metnindeki kaynaklar “(…)” yapısına yerleştirilerek isteğe bağlı olarak işaretlenebilir. Örneğin, bunun gibi bir istek metni oluşturursanız

| SEÇ


| LotÜrünlerŞirketlerBakiyeler.Miktar OLARAK MİKTAR GÖREVİ
| (SEÇ
| Şirketin Emtia Bakiyeleri Bakiyeler Nomenclature AS Nomenclature,
| Şirket Bakiyesi Emtia Dengesi.Miktar Bakiyesi AS Miktar,
| Çok Mallı ŞirketlerBakiyeler.MiktarBallow AS QuantityByBatch)
|
| Birikim Kaydı.Şirketin Emtia Bakiyeleri.Malzeme Bakiyeleri
| (LEFT JOIN AKÜMÜLASYON KAYIT.LOTS OF MALŞirket. Mal Grubu Olarak BakiyelerŞirketler
| Ürünlerin Bakiyelerine Göre Şirket Bakiyeleri.Nomenklatür = Birçok ÜrünŞirket Bakiyeleri.Terminal)
TOPLAMLAR TOPLA (Miktar), TOPLA (Miktar ByLots) TARAFINDAN
| GENEL,
| isimlendirme

daha sonra toplu kayıt tarafından sol birleştirme, yalnızca seçilen alanlar listesinde “QuantityByBatch” alanı mevcutsa gerçekleştirilecektir.

Üçüncüsü, kaynakların parametrelerinde, filtrelerin ayarlanması durumunda, mümkünse, “WHERE” öğesini kullanarak bir sorgu yürütmenin sonucuna değil, kaynağın kendisine uygulanması gerektiğini belirtebilirsiniz. Böylece, yerine
| Birikim Kaydı.Mal BakiyeleriŞirket.Kalanlar ()

yazmak mantıklı

| Birikim Kaydı.Şirketin Emtia Bakiyeleri.Kalanlar (, (Sınıflandırma. *, Şirket Depo. *, Sipariş. *, Perakende Fiyat, Adlandırma Özelliği. *))

İyi, dördüncü olarak, bence en lezzetlisi. Kaynakta “Frequency” parametresi belirtilmişse (dönüş elde etmeye izin veren tablolar için), “(…)” olarak da ayarlanabilir ve oluşturucu sorgusunun metni ile küçük bir manipülasyon sonucunda, yapabiliriz. dönemlere göre gruplamaları kullanın.

Örnek: İZİN VERİLEN SEÇ | PartyGoodsCompanyObotory.Nomenklatür, | AMOUNT (Lots of GoodsCompaniesTurnover.CostArrival) AS CostInvestment, | TUTAR (Birçok ÜrünŞirketTurnover.Maliyet Gideri) Maliyet Gideri OLARAK | |DAN | RegisterAccumulation.PartyCompany.Turnover (, (& Periyodiklik), | (Adlandırma. *)) AS Batch of CommodityCompany TARAFINDAN YÜKLE | Parti ÜrünleriŞirketlerObototy.Nomenklatür | TOPLAMLAR SUM (CostPrihod), SUM (CostExpenditure) AÇIK | GENEL, | terminoloji | | (SEÇ | Ürün GrubuŞirketTurnovers.Nomenclature. *, | Kayıt Memuru. *, | BeginningPeriod (Dönem, Gün) AS PeriodDay, | BeginningPeriod (Dönem, Hafta) AS PeriodWeek, | BeginningPeriod (Dönem, On yıl) AS PeriodDecade, | BeginningPeriod Ay ) AS Dönem Ay, | Dönem Başlangıcı (Dönem, Çeyrek) AS Dönem Çeyrek, | Dönem Başlangıcı (Dönem, Altı Yıl) AS DönemYarıyıl, | Dönem Başlangıcı (Dönem, Yıl) AS DönemYıl, | TOPLA (Birçok EmtiaŞirketlerGirdi Maliyeti MaliyetGider) AS MaliyetGider) | | (SİPARİŞ TARAFINDAN | Batch of GoodsCompanyObototy.Nomenclature. *, | Registrar. *, | CostPrihod, | CostExpenditure) | | (NEREDE | Birçok MalSirketiTurnooms.Nomenclature. *, | Kayıt Memuru. *, | TOPLA (Lots of GoodsCompanyCurnover.Maliyet Geleni) AS Maliyet Geliri, |SUM (Lots of GoodsCompanyCurnover.Maliyet Gideri) AS Maliyet Gideri) | | (TOPLAMLAR TARAFINDAN | Adlandırma. *, | Kayıt Memuru. *, | Dönem Başlangıcı (Dönem, Gün) DönemGün olarak, | Dönem Başlangıcı (Dönem, Hafta) DönemHafta olarak, | Dönem Başlangıcı (Dönem, Onyıl) AS DönemDecade, | Dönem Başlangıcı (Dönem, Ay ) AS Dönem Ay, | Başlangıç ​​Dönemi (Dönem, Çeyrek) AS Dönem Çeyrek, | Başlangıç ​​Dönemi (Dönem, Yarım Yıl) AS Dönem Yarım Yıl, | Başlangıç ​​Dönemi (Dönem, Yıl) AS Dönem Yılı)

Bir nüans var, dönemlere göre gruplandırmanın çalışması için “Sıklık” parametresine göre bir filtre eklemeniz gerekiyor. El ile yapmamak için, kolaylık sağlamak için, rapor oluşturucuyu çalıştırmadan önce programlı olarak ekleyebilir ve uygulamadan sonra sizi rahatsız etmeyecek şekilde silebilirsiniz, çünkü böyle bir filtreyi bakış açısından anlamak imkansızdır. sağduyu. Bu böyle bir şey yapılır

IfReportBuilder.AvailableFields.Find ("Sıklık")<>Tanımsız O zaman Periyodiklik = Tanımsız; IfReportBuilder.DimensionsStrings.Find ("PeriodYear")<>Tanımsız VEYA Rapor Oluşturucu.DimensionsColumns.Find ("PeriodYear")<>Tanımsız O halde Periyodiklik = 9; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodSemyear")<>Tanımsız VEYA Rapor Oluşturucu.DimensionsColumns.Find ("Yarım Yıl Dönemi")<>Tanımsız O halde Periyodiklik = 8; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodQuarter")<>Tanımsız VEYA Rapor Oluşturucu.DimensionsColumns.Find ("PeriodQuarter")<>Tanımsız O halde Periyodiklik = 7; EndIf; If ReportBuilder.DimensionsRows.Find ("PeriodMonth")<>Tanımsız VEYA Rapor Oluşturucu.DimensionsColumns.Find ("PeriodMonth")<>Tanımsız O halde Periyodiklik = 6; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodDecade")<>Tanımsız VEYA Rapor Oluşturucu.DimensionsColumns.Find ("PeriodDecade")<>Tanımsız O zaman Periyodiklik = 5; EndIf; IfReportBuilder.DimensionsStrings.Find ("PeriodWeek")<>Tanımsız VEYA Rapor Oluşturucu.DimensionsColumns.Find ("PeriodWeek")<>Tanımsız O halde Periyodiklik = 4; EndIf; IfReportBuilder.DimensionsRows.Find ("PeriodDay")<>Tanımsız VEYA Rapor Oluşturucu.DimensionsColumns.Find ("PeriodDay")<>Tanımsız O halde Periyodiklik = 3; EndIf; IfReportBuilder.DimensionsStrings.Find ("Kayıt Şirketi")<>Tanımsız VEYA Rapor Oluşturucu.DimensionsColumns.Find ("Logger")<>Tanımsız VEYA Rapor Oluşturucu.SelectedFields.Find ("Logger")<>Tanımsız O halde Periyodiklik = 2; EndIf; eğer frekans<>Tanımsız Sonra SelectionFieldByFrequency = ReportBuilder.Selection.Add ("Frekans"); SelectionFieldBy Periodicity.Value = Periyodiklik; SelectionFieldByFrequency.Usage = Doğru; EndIf; EndIf; Oluşturucu.Çalıştır (); Frekansa Göre Seçim Alanı ise<>Tanımsız ThenReportBuilder.Select.Remove (ReportBuilder.Selection.Index (SelectionFieldBy Periyodik)); EndIf;

12. Oluşturucuyu özelleştirme

Kullanıcıya gruplama, filtre, seçili alanlar veya sıralama listesini değiştirme imkanı vermek için raporun "Builder" niteliğini oluşturup rapor formuna bir tablo alanı yerleştirip veri olarak belirtmesi yeterlidir. kaynak "Builder.DimensionsRows", "Builder.DimensionsColumns" , "Builder.Choose", "Builder.ChosenFields" veya "Builder.Order".

Ek olarak, veri kaynağı olarak "Builder.AvailableFields" öğesini de belirtebilirsiniz ve böylece öncelikle kullanılabilir alanların listesini görebilir ve ikinci olarak bağlam menüsü gruplamalara, seçime, seçili alanlara veya filtreye alanlar ekleyin.

1C 8'deki sorgu dili, iyi bilinen "yapılandırılmış programlama dilinin" (genellikle SQL olarak adlandırılır) basitleştirilmiş bir analogudur. Ancak 1C'de sadece veri okumak için kullanılır, nesne veri modeli verileri değiştirmek için kullanılır.

Bir başka ilginç fark, Rus sözdizimidir. Aslında, İngilizce yapılarını kullanabilirsiniz.

Talep örneği:

SEÇ
Bankalar.
Banks.CorrHesabı
İTİBAREN
Rehber Bankalar AS Bankalar

Bu istek, veritabanında bulunan tüm bankaların isim ve muhabir hesabı bilgilerini görmemizi sağlayacaktır.

Sorgu dili en basit ve etkili yöntem bilgi edinme. Yukarıdaki örnekten de görebileceğiniz gibi, sorgu dilinde, metadata adlarıyla itiraz etmeniz gerekir (bu, yapılandırmayı oluşturan sistem nesnelerinin bir listesidir, yani dizinler, belgeler, kayıtlar vb.).

Sorgu Dili Yapılarının Açıklaması

Sorgu yapısı

Verileri almak için "SELECT" (seç) ve "FROM" (from) yapılarını kullanmak yeterlidir. En basit istek aşağıdaki gibi:

Dizinlerden * SEÇİN.

Burada "*", tablonun tüm alanlarının seçimi anlamına gelir ve References.Nomenclature, veritabanındaki tablonun adıdır.

Daha karmaşık ve genel bir örneğe bakalım:

SEÇ
<ИмяПоля1>NASIL<ПредставлениеПоля1>,
toplam(<ИмяПоля2>) NASIL<ПредставлениеПоля2>
İTİBAREN
<ИмяТаблицы1>NASIL<ПредставлениеТаблицы1>
<ТипСоединения>BİRLEŞTİRMEK<ИмяТаблицы2>NASIL<ПредставлениеТаблицы2>
ÜZERİNDE<УсловиеСоединениеТаблиц>

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

YÜKLE
<ИмяПоля1>

GÖRE SIRALA
<ИмяПоля1>

SONUÇLAR
<ИмяПоля2>
ÜZERİNDE
<ИмяПоля1>

İÇİNDE bu istek“TableName1” ve “TableName” tablolarından “FieldName1” ve “FieldName1” alanlarının verilerini seçiyor, “AS” operatörünü kullanarak alanlara eş anlamlılar atıyor, belirli bir “TableCondition” koşuluna göre birleştiriyoruz.

Gelen verilerden "WHERE" "DataFeedback Condition"dan sadece koşula uyan verileri seçiyoruz.Ardından sorguyu "FieldName1" alanına göre gruplandırıyoruz ve "FieldName2" topluyor. "FieldNameField1" alanı için toplamlar oluşturuyoruz. ve son alan "FieldName2".

Son adım, ORDER BY yapısını kullanarak isteği sıralamaktır.

Genel yapılar

1C 8.2 sorgu dilinin genel yapılarını ele alalım.

İLKn

Vasıtasıyla bu operatör ilk kayıtların sayısını alabilirsiniz. Girişlerin sırası, istekteki sıraya göre belirlenir.

İLK 100 SEÇ
Bankalar.
Bankalar Kod AS BIC
İTİBAREN
Rehber Bankalar AS Bankalar
GÖRE SIRALA
Bankalar.

Talep, "Bankalar" dizininin alfabetik olarak sıralanmış ilk 100 girişini alacaktır.

İZİN VERİLMİŞ

Bu tasarım, bir mekanizma ile çalışmak için uygundur. Mekanizmanın özü, bir bütün olarak tablo değil, veritabanı tablosundaki belirli kayıtlar için okuma (ve diğer eylemleri) kullanıcılarla sınırlandırmaktır.

Bir kullanıcı, kendisine erişilemeyen kayıtları bir istekle okumaya çalışırsa, bir hata mesajı alır. Bundan kaçınmak için "İZİN VERİLDİ" yapısını kullanmalısınız, yani istek sadece izin verilen kayıtları okuyacaktır.

İZİN VERİLEN SEÇ
Ek Bilgi Mağazası.Link
İTİBAREN
Referans.Ek Bilgi Saklama

ÇEŞİTLİ

"FARKLI" kullanmak, yinelenen dizeleri 1C sorgu sonucunu girmekten hariç tutmanıza olanak tanır. Çoğaltma, isteğin tüm alanlarının eşleştiği anlamına gelir.

İLK 100 SEÇ
Bankalar.
Bankalar Kod AS BIC
İTİBAREN
Rehber Bankalar AS Bankalar

BoşTablo

Bu yapı, sorguları birleştirmek için nadiren kullanılır. Katılırken, tablolardan birinde boş bir iç içe tablo belirtmek gerekebilir. "EmptyTable" operatörü bunun için uygundur.

Yardım 1C 8'den örnek:

Referans.Numara, BOŞ TABLO SEÇİN (Nom, Tov, Qty) Kompozisyon OLARAK
Belgeden. Gider
HEPSİNİ BİRLEŞTİR
SELECT Reference.Number, Composition (Satır Numarası, Öğe, Miktar)
FROM Document.Invoice Document.Invoice.Content.*

NULL

Birçok hatayı önleyen çok kullanışlı bir özellik. YesNULL (), NULL değerini istediğiniz değerle değiştirmenize olanak tanır. Ekli tablolarda bir değerin varlığına yönelik testlerde çok sık kullanılır, örneğin:

SEÇ
NomenklatürRef.Ref.
NULL (Ürün Bakiyesi.Miktar Bakiyesi, 0) AS Miktar Bakiyesi var
İTİBAREN


Başka bir şekilde kullanabilirsiniz. Örneğin, her satır için değerin hangi tabloda olduğu bilinmiyorsa:

IS NULL (FaturaFaturaTarihi, FaturaTarihi)

AS, bir tabloya veya alana bir isim (eş anlamlı) atamamıza izin veren bir operatördür. Yukarıda bir kullanım örneğini gördük.

Bu yapılar çok benzerdir - bir dize temsili elde etmenize izin verirler. istenen değer... Tek fark, REPRESENTATION'ın herhangi bir değeri bir dize tipine dönüştürmesi ve REFERENCE REPRESENTATION'ın yalnızca referans değerleri dönüştürmesidir. Referans veri alanının filtrelerde kullanılması planlanmadığı sürece, optimizasyon için veri kompozisyon sisteminin sorgularında REFERANS TEMSİLİNİN kullanılması tavsiye edilir.

SEÇ
Görünüm (Bağlantı), // satır, örneğin "10/10/2015 tarihli 123 numaralı ön rapor
Temsil (Silme İşareti) AS Silme İşareti Metni, // string, "Evet" veya "Hayır"
Referans Görünümü (Silme İşareti) AS Silme İşareti Boolean // Boolean, True veya False
İTİBAREN
Document.Advance Raporu

İFADE ETMEK

Express, alan değerlerini istediğiniz veri türüne dönüştürmenize olanak tanır. Bir değeri ilkel türe veya başvuru türüne dönüştürebilirsiniz.

Referans türü için ifade, genellikle sistem performansını optimize etmek için kullanılan karmaşık türdeki alanlarda istenen veri türlerini kısıtlamak için kullanılır. Örnek:

EXPRESS (Referans Olarak Maliyet.Alt Denetim1 Tablosu.Maliyet Makaleleri) .ActivityTypeForVergi Maliyet Muhasebesi

İlkel türler için, bu işlev genellikle sınırsız uzunluktaki alanlardaki karakter sayısını sınırlamak için kullanılır (bu tür alanlar karşılaştırılamaz). Hatayı önlemek için " Karşılaştırma işleminde geçersiz parametreler. Alanları karşılaştıramıyorum
sınırsız uzunluk ve uyumsuz türlerde alanlar
", Bu tür alanları aşağıdaki gibi ifade etmek gerekir:

EXPRESS (Yorum AS Satırı (150))

FARK

267 1C video eğitimlerini ücretsiz edinin:

1C isteğinde IS NULL kullanımına bir örnek:

İÇİNDEN SEÇMEK
Bahar
LEFT JOIN Birikim Kaydı.ÜrünlerDepolarda.Mal Olarak KalanlarSol
Yazılım NomenclatureRef.Ref = ImplementedCommentsComponentsRemains.Nomenclature
MALLARIN DENGESİ NEREDE.Miktar Bakiye BOŞ

Bir sorguda veri türünü şu şekilde tanımlayabilirsiniz: TÜR () ve TÜR () işlevlerini kullanarak veya mantıksal operatör BAĞLANTI. İki işlev benzerdir.

Önceden Tanımlanmış Değerler

1C sorgu dilindeki isteklerde iletilen parametreleri kullanmanın yanı sıra, önceden tanımlanmış değerleri veya kullanabilirsiniz. Örneğin, numaralandırmalar, önceden tanımlanmış dizinler, hesap planları vb. Bunun için "Value ()" yapısı kullanılır.

Kullanım örneği:

WHERE Nomenclature.NomenclatureType = Değer (Directory.NomenclatureTypes.Product)

NEREDE Karşı Taraflar.İletişim Bilgileri Tür = Değer (Numaralandırma.İletişim Bilgileri.Tip.Telefon)

NEREDE Hesap Bakiyeleri.Hesap = Değer (Hesap Planı. Kendi Kendini Destekleyen.KarZararı)

Bağlantılar

4 tip bağlantı vardır: AYRILDI, SAĞ, TAM, DAHİLİ.

SOL ve SAĞ BİRLEŞTİRME

Birleştirmeler, belirli bir koşula göre iki tabloyu birbirine bağlamak için kullanılır. Özellik SOL ORTAK bunda, belirtilen ilk tabloyu tam olarak alırız ve ikinci tabloyu koşula göre bağlarız. Koşulla bağlanamayan ikinci tablonun alanları değer ile doldurulur. BOŞ.

Örneğin:

Karşı Taraflar tablosunun tamamını döndürecek ve yalnızca "Karşı Taraflar.Adı = Bankalar.Adı" koşulunun karşılanacağı yerlerde "Banka" alanını dolduracaktır. Koşul sağlanmazsa, Banka alanı ayarlanır. BOŞ.

1C dilinde DOĞRU ORTAK kesinlikle aynı SOL bağlantı, bir fark dışında - DOĞRU BAĞLANTI“Ana” tablo ilk değil, ikinci tablodur.

TAM BAĞLANTI

TAM BAĞLANTI soldan ve sağdan farklıdır, çünkü iki tablodaki tüm kayıtları görüntüler, yalnızca koşula göre katılabilecekleri birleştirir.

Örneğin:

İTİBAREN

TAM BAĞLANTI
Rehber Bankalar AS Bankalar

ÜZERİNDE

Sorgu dili, yalnızca kayıtların birleştirilmesi koşulu yerine getirildiğinde her iki tabloyu da tam olarak döndürür. Sol / sağ birleştirmeden farklı olarak, NULL'ların iki alanda görünmesi mümkündür.

İÇ BAĞLANTI

İÇ BAĞLANTI yalnızca belirtilen koşulla bağlanabilecek kayıtları göstermesi bakımından tam olandan farklıdır.

Örneğin:

İTİBAREN
Dizin Müteahhitler AS Müşteriler

İÇ BAĞLANTI
Rehber Bankalar AS Bankalar

ÜZERİNDE
Müşteriler.Adı = Bankalar.Adı

Bu istek, yalnızca bankanın ve karşı tarafın aynı ada sahip olduğu satırları döndürür.

dernekler

COMBINE ve COMBINE ALL yapısı, iki sonucu bir araya getirir. Onlar. iki gerçekleştirmenin sonucu, ortak bir şekilde "birleştirilir".

Yani sistem her zamanki gibi çalışır, sadece geçici bir tablo için.

INDEX YAZILIMI nasıl kullanılır

Ancak unutulmaması gereken bir nokta var. Geçici bir tabloda bir dizin oluşturmanın tamamlanması da zaman alır. Bu nedenle, "" yapısının sadece geçici tabloda 1-2 kayıt olmayacağı kesin olarak biliniyorsa kullanılması tavsiye edilir. Aksi takdirde, etki tam tersi olabilir - dizinlenmiş alanların performansı dizin oluşturma süresini telafi etmez.

SEÇ
Döviz KurlarıSliceLast.Currency AS Para Birimi,
Döviz KurlarıDilimSon.Kurs
POST Döviz Kurları
İTİBAREN
Bilgi Kayıt Ol.Döviz Oranları.DilimSon (& Dönem,) AS Döviz KurlarıDilimSon
ENDEKS TARAFINDAN
Para birimi
;
SEÇ
Fiyat:% s
Fiyatlarİsimler .Fiyat,
FiyatlarAdlandırmalar Para Birimi,
Döviz Kurları.
İTİBAREN
Bilgi Kaydı.FiyatlarNomenclature.SliceSon (& Dönem,
İsimlendirme B (& İsimlendirme) VE FiyatTürü = & FiyatTipi AS Fiyatlar
SOL BİRLİK Döviz Kurları AS Döviz Kurları
BY RatesNomenclature.Currency = RatesCurrency.Currency

gruplama

1C sorgu dili, sorgu sonuçlarını gruplandırırken özel toplama işlevlerini kullanmanıza olanak tanır. Gruplama, kopyaları "ortadan kaldırmak" için toplama işlevleri olmadan da kullanılabilir.

Aşağıdaki işlevler mevcuttur:

Tutar, Sayı, Farklı Sayı, Maksimum, Minimum, Ortalama.

Örnek 1:

SEÇ
Mal, hizmet, mal, isimlendirme satışı,
MİKTAR (Mal, Hizmet, Mal Satışı.Miktar) OLARAK Miktar,
Tutar OLARAK TUTAR (Mal SatışıHizmetMal.Tutar)
İTİBAREN

YÜKLE
Malların GerçekleştirilmesiHizmetlerMallar.Nomenklatür

Talep, mallarla birlikte tüm satırları alır ve bunları kalem bağlamında miktar ve miktarlara göre özetler.

Örnek 2

SEÇ
Bankalar.Kod,
MİKTAR (FARKLI Bankalar.Link) MiktarÇift OLARAK
İTİBAREN
Rehber Bankalar AS Bankalar
YÜKLE
Banka Kodu

Bu örnek, "Bankalar" dizinindeki BIC'lerin bir listesini gösterecek ve her biri için kaç tane kopya bulunduğunu gösterecektir.

sonuçlar

Toplamlar, hiyerarşik bir sistemden veri almanın bir yoludur. Toplama işlevleri, gruplamalarda olduğu gibi özet alanları için de kullanılabilir.

Toplamları pratikte kullanmanın en popüler yollarından biri, malların toplu olarak silinmesidir.

SEÇ




İTİBAREN
Belge.MallarınHizmetlerin Gerçekleştirilmesi.MallarMalların SatışıHizmetlerMallar
GÖRE SIRALA

SONUÇLAR
TOPLA (Miktar),
TOPLAM (Tutar)
ÜZERİNDE
isimlendirme

Sorgunun sonucu aşağıdaki hiyerarşik olacaktır:

Genel Özet

Tüm "toplamlar" için toplam almak istiyorsanız, "GENEL" operatörünü kullanın.

SEÇ
Malların GerçekleşmesiHizmetlerMallar Nomenklatür AS Nomenklatür,
MalHizmet Malların Gerçekleştirilmesi.Link AS Belgesi,
Malların, hizmetlerin, malların gerçekleştirilmesi Miktar AS Miktar,
Mal SatışıHizmetMal.Tutar OLARAK Tutar
İTİBAREN
Belge.MallarınHizmetlerin Gerçekleştirilmesi.MallarMalların SatışıHizmetlerMallar
GÖRE SIRALA
GoodsServicesGoods.Link.Date'in Uygulanması
SONUÇLAR
TOPLA (Miktar),
TOPLAM (Tutar)
ÜZERİNDE
GENEL,
isimlendirme

Sorguyu çalıştırmanın bir sonucu olarak aşağıdaki sonucu alırız:

1. gruplama seviyesinin, gerekli tüm alanların toplanması olduğu.

sipariş

ORDER BY operatörü, sorgu sonucunu sıralamak için kullanılır.

İlkel türler (dize, sayı, boole) için sıralama olağan kuralları izler. Referans türlerinin alanları için sıralama, koda veya bağlantının temsiline göre değil, bağlantının dahili temsiline (benzersiz tanımlayıcı) göre yapılır.

SEÇ

İTİBAREN
Reference.Nomenclature AS Nomenclature
GÖRE SIRALA
İsim

Sorgu, isimlendirme referans kitabının adlarının alfabetik olarak sıralanmış bir listesini görüntüler.

Otomatik sipariş

Sıralamasız bir sorgunun sonucu, düzensiz olarak sunulan bir satır kümesidir. 1C platformunun geliştiricileri, aynı sorguları yürütürken dizelerin aynı sırayla çıktısını garanti etmez.

Tablo kayıtlarını tutarlı bir sırayla görüntülemeniz gerekiyorsa, "Autoorder" yapısını kullanmanız gerekir.

SEÇ
Adlandırma Adı AS Adı
İTİBAREN
Reference.Nomenclature AS Nomenclature
OTOMATİK SİPARİŞ

Sanal tablolar

1C'deki sanal tablolar, diğer benzer sözdizimlerinde bulunmayan 1C sorgu dilinin benzersiz bir özelliğidir. Sanal tablo - hızlı yol kayıtlardan profil bilgilerinin alınması.

Kayıt türlerinin her birinin, kayıt ayarlarına bağlı olarak değişebilen kendi sanal tabloları vardır.

  • ilk dilim;
  • ikincisinin bir kesimi.
  • kalanlar;
  • devrimler;
  • bakiyeler ve cirolar.
  • alt kontodan hareketler;
  • devrimler;
  • RPM Dt Kt;
  • kalanlar;
  • bakiyeler ve cirolar
  • alt konto.
  • temel;
  • grafik verileri;
  • gerçek geçerlilik süresi.

Bir çözüm geliştirici için veriler bir (sanal) tablodan alınır, ancak aslında 1C platformu birçok tablodan alarak onları istenen forma dönüştürür.

SEÇ
ÜrünlerDepolardaDengeler ve Cirolar.Nomenklatür,
ÜrünlerDepolardaDengelerVeCirrolar.MiktarBaşlangıç ​​Bakiyesi,
Mallar Depolarda Bakiyeler ve Cirolar.MiktarCiro,
Mallar Depolarda Bakiyeler ve Cirolar.MiktarGelen,
Mallar Depolarda Bakiyeler ve Cirolar.Miktar
ÜrünlerDepolardaDengelerVeCirolar.MiktarNihai Bakiye
İTİBAREN
Birikim Kaydı.Depolarda Mallar.Mal Olarak Bakiyeler ve CirolarDepolardaDengeler ve Cirolar

Böyle bir istek, hızlı bir şekilde almanızı sağlar çok sayıda veri.

Sanal tablo parametreleri

Çok önemli yön sanal tablolarla çalışma - parametreleri kullanma. Sanal tablo parametreleri - seçim ve ayarlama için özel parametreler.

Bu tür tablolar için, "WHERE" yapısında seçimi kullanmak yanlış kabul edilir. İsteğin optimal olmamasına ek olarak, yanlış veri alınması da mümkündür.

Bu tür parametreleri kullanmaya bir örnek:

Birikim Kaydı.Depolardaki Ürünler.Kalanlar ve Cirolar (& BaşlangıçDönemi, & BitişDönem, Ay, Hareketler Ve Dönem Sınırları, İsimlendirme = & İstenen İsimlendirme)

Sanal tabloların algoritması

Örneğin, "Kalıntılar" türünde en sık kullanılan sanal tablo, iki fiziksel tablodan - dengeler ve hareketler - verileri depolar.

Sanal bir tablo kullanırken, sistem aşağıdaki işlemleri gerçekleştirir:

  1. Toplamlar tablosunda tarih ve boyut olarak en yakın hesaplanan değeri alıyoruz.
  2. Toplamlar tablosundaki miktara hareket tablosundaki miktarı "ekleyin".


Bu tür basit eylemler, bir bütün olarak sistemin performansını önemli ölçüde artırabilir.

Sorgu Oluşturucuyu Kullanma

Sorgu oluşturucu- 1C kurumsal sistemine yerleşik, veritabanına sorguların geliştirilmesini büyük ölçüde kolaylaştıran bir araç.

Sorgu yapıcısı oldukça basit, sezgisel bir net arayüz... Ancak, sorgu yapıcısını kullanmaya daha yakından bakalım.

Sorgu metni oluşturucu, program kodunda doğru yerde bağlam menüsü (farenin sağ tuşu ile) tarafından başlatılır.

1C sorgu oluşturucusunun açıklaması

Her bir tasarım sekmesine daha yakından bakalım. Bunun istisnası, başka bir tartışmanın konusu olan Oluşturucu sekmesidir.

Sekme Tabloları ve Alanları

Bu sekme, raporda görüntülemek istediğiniz veri kaynağını ve alanları belirtir. Nitekim yapılar SEÇİMİ .. FROM.

Kaynak, fiziksel bir veritabanı tablosu, sanal kayıt tablosu, geçici tablolar, iç içe sorgular vb. olabilir.

Sanal tabloların bağlam menüsünde sanal tablonun parametrelerini ayarlayabilirsiniz:

Bağlantılar sekmesi

Sekme, birkaç tablonun bağlantılarını tanımlamak için kullanılır, CONNECTION kelimesiyle yapılar oluşturur.

Gruplandırma sekmesi

Bu sekmede sistem, tablo sonucunun gerekli alanlarını gruplamanıza ve özetlemenize izin verir. GROUP BY, SUM, MINIMUM, ORTALAMA, MAKSİMUM, MİKTAR, FARKLI SAYISI yapılarının kullanımını açıklar.

Koşullar sekmesi

NEREDE yapısından sonra istek metnine giren her şeyden, yani alınan verilere dayatılan tüm koşullardan sorumludur.

Gelişmiş sekme

Sekme bunlara ek olarakçok önemli olan her türlü parametre ile doludur. Her bir özelliği ele alalım.

gruplama Kayıtlar getiriliyor:

  • İlk N- sorguya yalnızca N kayıt döndüren bir parametre (FIRST operatörü)
  • tekrarlayan yok- alınan kayıtların benzersizliğini sağlar (operatör FARKLI)
  • İzin verilmiş- sadece sistemin dikkate alarak seçmenize izin verdiği kayıtları seçmenize izin verir (inşaata İZİN VERİLİR)

gruplama İstek Türü ne tür bir sorgu olacağını belirler: veri getirme, geçici bir tablo oluşturma veya geçici bir tabloyu yok etme.

Aşağıda bir bayrak var Alınan verileri daha sonra değiştirmek üzere engelle... Verilerin okunduğu andan değiştirilene kadar güvenliğini sağlayan bir veri kilidi ayarlama özelliğini etkinleştirmenize olanak tanır (yalnızca Otomatik mod kilitler, DEĞİŞİM İÇİN tasarım).

Birlikler / Takma Adlar Sekmesi

Sorgu tasarımcısının bu sekmesinde, farklı tabloları ve takma adları birleştirme yeteneğini ayarlayabilirsiniz (NASIL oluşturma). Tablolar solda belirtilmiştir. Bayrakları tablonun karşısına ayarlarsanız, UNION yapısı kullanılacaktır, aksi takdirde - UNION ALL (iki yöntem farklıdır). Sağ tarafta, aşağıdaki alanların yazışmaları farklı tablolar eşleşme belirtilmemişse, sorgu NULL döndürür.

Sipariş sekmesi

Burada değerlerin (ORDER BY) - azalan (DESCENT) veya artan (RETURN) sırasını belirlersiniz.

Ayrıca ilginç bir bayrak var - Otomatik sipariş(istekte - OTOMATİK SİPARİŞ). Varsayılan olarak, 1C sistemi verileri "kaotik" bir sırayla görüntüler. Bu onay kutusunu ayarlarsanız, sistem verileri dahili verilere göre sıralayacaktır.

Paketi Sorgula Sekmesi

Sorgu tasarımcısının sekmesinde yenilerini oluşturabilir ve bunu bir gezinme olarak da kullanabilirsiniz. İstek metninde paketler “;” (virgül nokta) ile ayrılır.

Sorgu Oluşturucu'daki Sorgu Düğmesi

Sorgu oluşturucunun sol alt köşesinde, sorgu metnini istediğiniz zaman görüntüleyebileceğiniz bir Sorgu düğmesi vardır:

Bu pencerede, istekte ayarlamalar yapabilir ve onu çalıştırabilirsiniz.


Sorgu Konsolunu Kullanma

Sorgu Konsolu, karmaşık sorgularda hata ayıklamanın ve bilgileri hızla almanın kolay ve kullanışlı bir yoludur. Bu yazımda Query Console'un nasıl kullanılacağını anlatmaya ve Query Console'u indirmek için link vermeye çalışacağım.

Bu araca daha yakından bakalım.

1C Sorgu Konsolunu İndirin

Her şeyden önce, Sorgu Konsolu'na başlamak için onu bir yerden indirmeniz gerekir. Süreçler genellikle iki türe ayrılır - yönetilen formlar ve normal olanlar (veya bazen 8.1 ve 8.2 / 8.3 olarak adlandırılırlar).

Bu iki türü tek bir işlemde birleştirmeye çalıştım - istenen çalışma modunda gerekli form açılır ( kontrollü mod konsol yalnızca kalın modda çalışır).

1C sorgu konsolunun açıklaması

Ana işleme panelinin bir açıklamasıyla sorgu konsoluna bakmaya başlayalım:

Sorgu konsolunun başlığında, son sorgunun yürütme süresini milisaniye hassasiyetle görebilirsiniz, bu da farklı yapıları performans açısından karşılaştırmanıza olanak tanır.

Komut çubuğundaki ilk düğme grubu, mevcut istekleri harici bir dosyaya kaydetmekten sorumludur. Bu çok kullanışlıdır, her zaman karmaşık bir sorgu yazmaya geri dönebilirsiniz. Veya örneğin, belirli yapıların tipik örneklerinin bir listesini tutun.

Sol tarafta bulunan Sorgu alanında yeni sorgular oluşturup bunları bir ağaç yapısında kaydedebilirsiniz. İkinci düğme grubu, yalnızca istek listesini yönetmekten sorumludur. Bununla, bir istek oluşturabilir, kopyalayabilir, silebilir, taşıyabilirsiniz.

  • Uygulamakrica etmek- basit yürütme ve sonuç alma
  • Paketi çalıştır- istek grubundaki tüm ara istekleri görüntülemenizi sağlar
  • Geçici tabloları görüntüleme- tablodaki geçici sorgular tarafından döndürülen sonuçları görmenizi sağlar

İstek parametreleri:

İstek için geçerli parametreleri ayarlamanıza izin verir.

Sorgu parametreleri penceresinde aşağıdakiler ilginçtir:

  • Buton istekten al geliştiricinin rahatlığı için istekteki tüm parametreleri otomatik olarak bulur.
  • bayrak Tüm istekler için tek tip parametreler- kurulduğunda, istekten isteğe geçerken işlenmesi parametreleri temizlemez genel liste istekler.

Parametreyi bir değerler listesi olarak ayarlaçok basittir, bir parametre değeri seçtiğinizde, değeri silmek için düğmeye basın (çapraz), sistem "Değerler listesi" seçmeniz gereken veri türünü seçmenizi önerecektir:

Ayrıca üst panel sorgu konsolunun ayarlarını çağırmak için çok fazla bir düğme var:

Burada otomatik kaydetme sorguları için seçenekleri ve sorguyu yürütme seçeneklerini belirleyebilirsiniz.

Sorgu metni, konsol sorgu alanına girilir. Bu, basit bir sorgu test takımıyla veya özel bir araç olan sorgu oluşturucuyu çağırarak yapılabilir.

Giriş alanına tıkladığınızda bağlam menüsünden (sağ fare düğmesi) 1C 8 sorgu oluşturucusu çağrılır:

Ayrıca bu menüde var faydalı fonksiyonlarİsteğe satır sonu karakterlerini (“|”) temizlemek veya eklemek veya istek kodunu bu kadar uygun bir biçimde almak gibi:

İstek = Yeni İstek;
İstek.Metin = "
| SEÇ
| Para Birimleri.Link
|
| Dizin Para Birimleri AS Para Birimleri ”;
QueryResult = Query.Run();

Sorgu konsolunun alt alanında, bu işlemenin oluşturulduğu sorgu sonuç alanı görüntülenir:



Ayrıca, sorgu konsolu, listeye ek olarak, toplamları içeren sorgular için verileri bir ağaç biçiminde görüntüleyebilir.

Sorguları optimize etme

Biri kritik noktalar 1C girişiminin üretkenliğini artırmada 8.3 optimizasyonistekler... Bu nokta da çok önemlidir geçen sertifika... Aşağıda, sorguların optimal olmayan çalışmasının tipik nedenleri ve optimizasyon yöntemleri hakkında konuşacağız.

WHERE yapısını kullanarak sanal tablodaki seçimler

Sadece BT parametreleri üzerinden sanal tablonun detaylarına filtre uygulamak gerekir. Hiçbir durumda sanal bir tabloda seçim için WHERE yapısını kullanmamalısınız, bu optimizasyon açısından büyük bir hatadır. WHERE kullanılarak seçim yapılması durumunda, aslında sistem TÜM kayıtları alacak ve ancak o zaman gerekli olanları seçecektir.

SAĞ:

SEÇ

İTİBAREN
Birikim Kaydı.Birikimli AnlaşmalarOrganizasyonlar.Kalanlar (
,
Organizasyon = & Organizasyon
Ve Birey = & Bireysel) NASIL Karşılıklı AnlaşmalarDeponentsOrganizasyonlar ile

DOĞRU DEĞİL:

SEÇ
Karşılıklı mutabakatlarDeponentlerleOrganizasyonlarBakiyeler.MiktarBakiye
İTİBAREN
Birikim Kaydı.Karşılıklı takaslarDependanslıKuruluşlar.Bakiyeler (,) AS Karşılıklı MutabakatlıKuruluşlarBakiyeler
NEREDE
YerleşimlerDeponentlerleOrganizasyonlarDengeler.Organizasyon = & Organizasyon
Ve Karşılıklı AnlaşmalarDeponentlerleOrganizasyonlarDengeler.Kişisel = & Bireysel

Bir nokta aracılığıyla karmaşık bir tür alanının değerini alma

Bir nokta aracılığıyla bir sorguda bileşik türde veri alırken, sistem, bileşik tür alanında mümkün olduğu kadar çok tabloyu bir sol birleştirme ile birleştirir.

Örneğin, optimizasyonun kayıt kaydı alanına - kayıt memuruna - başvurması son derece istenmeyen bir durumdur. Kayıt memuru, kayıt defterine veri yazabilen tüm olası belge türlerini içeren bileşik bir veri türüne sahiptir.

DOĞRU DEĞİL:

SEÇ
Kayıt Seti.Kaydedici.Tarih,
Kayıt Seti.Numara
İTİBAREN
Birikim Kaydı.ÜrünlerOrganizasyonlar AS SetRecords

Yani, aslında, böyle bir istek bir tabloya değil, 22 veritabanı tablosuna atıfta bulunacaktır (bu kayıtta 21 tür kayıt şirketi vardır).

SAĞ:

SEÇ
SEÇİM
NE ZAMAN ÜrünlerOrg.Kayıt Şirketi BAĞLANTISI Belge.Mal Hizmetlerin Gerçekleştirilmesi
THEN EXPRESS (MalOrg.Registrar AS Belgesi.MalHizmetlerin Gerçekleşmesi) .Tarih
NE ZAMAN ÜrünlerOrg.Kayıt Şirketi BAĞLANTISI Belge.Mal Hizmetlerin Varışı
THEN EXPRESS (MalOrg.Registrar AS Belgesi.Mal Hizmetlerin Varışı) .Tarih
SON TARİH,
ÜrünlerOrg.Miktar
İTİBAREN
Birikim Kaydı.ÜrünlerOrg

Veya ikinci seçenek, bu tür bilgileri aksesuarlara eklemektir, örneğin, bizim durumumuzda tarihi ekleyin.

SAĞ:

SEÇ
ÜrünlerOrganizasyonlar.Tarih,
ÜrünlerOrganizasyonlar.Numara
İTİBAREN
Birikim Kaydı.Kuruluş Malları OLARAK Organizasyon Malları

Bir birleştirme koşulunda alt sorgular

Optimizasyon için, birleştirme koşullarında alt sorguların kullanılması kabul edilemez, bu, sorguyu önemli ölçüde yavaşlatır. Bu gibi durumlarda VT kullanılması tavsiye edilir. Bağlanmak için, yalnızca meta verileri ve BT nesnelerini kullanmanız gerekir, bunları daha önce bağlantı alanları tarafından dizine eklediniz.

DOĞRU DEĞİL:

SEÇ …

SOL BAĞLANTI (
BİLGİ KAYITLARINDAN SEÇ.Sınırlar
NEREDE …
YÜKLE ...
) ÜZERİNDE …

SAĞ:

SEÇ …
POST Limitleri
FROM Bilgi Register.Limits
NEREDE …
YÜKLE ...
ENDEKS TARAFINDAN…;

SEÇ …
FROM Document.Ürünlerin GerçekleştirilmesiHizmetler
LEFT JOIN Limitleri
ÜZERİNDE …;

Kayıtları sanal tablolarla birleştirme

Başkalarıyla sanal bir tabloya katılırken sistemin optimum performans göstermediği durumlar vardır. Bu durumda, sorgu performansını optimize etmek için, geçici tablo sorgusunda birleştirilmiş alanları indekslemeyi hatırlayarak, sanal tabloyu geçici tabloya koymayı deneyebilirsiniz. Bunun nedeni, BT'lerin genellikle DBMS'nin birkaç fiziksel tablosunda yer almasıdır, sonuç olarak, bunları seçmek için bir alt sorgu derlenir ve sorunun önceki noktaya benzer olduğu ortaya çıkar.

Dizine eklenmemiş alanlarda filtreleri kullanma

Sorgu yazarken yapılan en yaygın hatalardan biri, dizine eklenmemiş alanlarda koşulları kullanmaktır. sorgu optimizasyon kuralları. DBMS, sorgu dizine eklenmemiş alanlarla çakışıyorsa, sorguyu en iyi şekilde gerçekleştiremez. Geçici bir tablo alınırsa, birleştirme alanlarının da indekslenmesi gerekir.

Her koşul için uygun bir indeks olmalıdır. Aşağıdaki gereksinimleri karşılayan bir dizin uygundur:

  1. Dizin, koşulda listelenen tüm alanları içerir.
  2. Bu alanlar dizinin en başındadır.
  3. Bu seçimler üst üste yani sorgu koşulunda yer almayan değerler aralarına "kama" yapılmaz.

DBMS doğru dizinleri bulamazsa, tüm tablo taranacaktır - bu, performans üzerinde çok olumsuz bir etkiye sahip olacak ve tüm kayıt kümesinin uzun süreli olarak engellenmesine yol açabilir.

Koşullarda mantıksal VEYA kullanma

Hepsi bu kadar, bu makale, her 1C uzmanının bilmesi gereken sorgu optimizasyonu yönlerinin temellerini kapsıyor.

Sorgu geliştirme ve optimizasyon üzerine çok faydalı bir ücretsiz video kursu, şiddetle tavsiye ederim yeni başlayanlar için ve sadece!

Raporları geliştirirken, bazen sorgu dili kullanılarak veri elde edilemeyen bir raporun görüntülenmesi gerekli hale gelir. Böyle bir durum, örneğin, verileri hesaplamak için belirli bir karmaşık algoritma kullanıldığında veya raporun çıktısı için veriler şuradan elde edilmediğinde ortaya çıkabilir. bilgi tabanı, ve örneğin, harici dosya... Rapor oluşturucu, rastgele bir veri kaynağından rapor çıktısı alma olanağı sağlar.
Bir raporun çıktısını almak için veri kaynağı olarak aşağıdakiler kullanılabilir:

  • Değerler Tablosu,
  • Talep Sonucu,
  • Elektronik Tablo Belge Hücrelerinin Kapsamı,
  • Tablo parçası,
  • Birikim KayıtKayıt Kümesi,
  • veri sayfasıKayıtSet,
  • Muhasebe KayıtKayıtSet,
  • Hesaplama RegisterRecordSet.
Rapor oluşturucunun rastgele bir veri kaynağı için bir rapor görüntülemesi için, veri kaynağı açıklamasını DataSource oluşturucu özelliğine ayarlamak yeterlidir. DataSource rapor oluşturucu özelliği, DataSource Açıklama türünün bir değerini içerebilir. DataSourceDescription nesnesi, veri kaynağının kendisini ve ayrıca veri kaynağı sütunlarının açıklamasını içerir. Her veri kaynağı sütun açıklaması şunları içerir:
  • Ad - veri kaynağındaki sütunun adını içerir,
  • PathData - sütunların birbirine bağımlılığının bir tanımını içerir. Veri yolu, başka bir alanın veri yolundan bir nokta üzerinden elde edilen bir sütun, başka bir sütunun özniteliği olarak kabul edilir. Alan, bir nokta ile ayrılmış Temsil kelimesini içeriyorsa, bu alan, yoldan temsilin elde edildiği verilere giden sütun için bir temsil olarak kabul edilir. Örnekler. "Nomenclature" sütununun "Nomenclature" verilerine giden bir yolu varsa ve "Code" sütununun "Nomenclature.Code" verilerine giden bir yolu varsa, bu sütun "Nomenclature" sütununun bir özelliği olarak kabul edilecektir. "Nomenclature. Representation" veri yolunun bulunduğu sütun, "Nomenclature" sütununun temsili olarak kabul edilecektir,
  • Alan - bu sütunun bir rapor alanı olarak kullanılabileceğine dair bir işaret,
  • Sipariş, belirli bir sütun için sipariş vermenin mümkün olduğunun bir işaretidir,
  • Seçim, belirli bir sütuna seçimi dayatmanın mümkün olduğunun bir işaretidir,
  • Boyut - bu sütunun bir raporun gruplaması olarak kullanılabileceğine dair bir işaret,
  • Toplam, toplamı hesaplamak için bir ifade içeren bir dizedir. Rapor oluşturucu için, bu dizenin ifadesi, sorgu dilinde kullanılan toplamı hesaplamak için kullanılan ifadeyle eşleşir,
DataSourceDescription nesnesine bir veri kaynağı ayarlarken, sütun açıklamaları otomatik olarak oluşturulur ve doldurulur.

DataSourceDescription nesnesi, kendisi için bir açıklama oluşturulacak bir veri kaynağının geçirilebileceği bir parametre olarak bir yapıcıya sahiptir, DataSource özelliği aktarılan veri kaynağı ile doldurulurken, sütun açıklamaları, sütunlar hakkında bilgi ile doldurulacaktır. veri kaynağı.

Rapor oluşturucu için bir veri kaynağı ayarlama örneği:

ReportBuilder.DataSource = NewDataSourceDescription (ValueTableResult);

Rapor oluşturucu ile daha fazla çalışma, sorgu modunda rapor oluşturucu ile çalışmaktan farklı değildir: rapor oluşturucu, hiyerarşik toplamların çıktısı dışında tam işlevselliğini sağlar. Ayrıca, rastgele bir veri kaynağıyla çalışırken, bir bilgi tabanından veri almak için kullanılacak rapor oluşturucudan bir sorgu alamazsınız.

Özel bir veri kaynağı Sorgu Oluşturucu ile çalışmak, özel bir rapor Oluşturucu ile çalışmakla aynıdır.

1C programlama sadece bir program yazmaktan ibaret değildir. 1C, birlikte çalıştığı kullanıcı eylemleri ve verilerinin bir külçesidir.

Veriler bir veritabanında saklanır. 1C istekleri, kullanıcıya formda göstermek veya işlemek için veri tabanından veri almanın bir yoludur.

Raporun temel kısmı 1C talebidir. ACS raporu durumunda, bu raporun çoğunluğudur.

Otur. Nefes al. Boşver. Şimdi size haberleri anlatacağım.

1C'de programlama yapmak için 1C programlama dilini bilmek yeterli değildir. Ayrıca 1C isteklerinin dilini de bilmeniz gerekir.

1C sorgu dili, veritabanından hangi verileri almamız gerektiğini belirtmemize izin veren tamamen ayrı bir dildir.

Aynı zamanda iki dillidir - yani, Rusça veya İngilizce yazabilirsiniz. Bu dile son derece benzer SQL sorguları ve bilenler rahatlayabilir.

1C İstekleri nasıl kullanılır?

Bir kullanıcı Kurumsal modda 1C'yi başlattığında, başlatılan istemcide tek bir gram veri yoktur. Bu nedenle bir dizin açmanız gerektiğinde 1C veritabanından veri ister yani 1C isteği yapar.

1C istekleri şunlardır:

  • Otomatik istekler 1C
    Sistem tarafından otomatik olarak üretilirler. Bir belge listesi formu oluşturdunuz. Bir sütun eklendi. Bu, bu formu Enterprise modunda açtığınızda bir istek olacağı ve bu sütun için verilerin isteneceği anlamına gelir.
  • Yarı otomatik 1C sorguları
    1C dilinde, veritabanına bir istek olduğunda erişirken birçok yöntem (fonksiyon) vardır. Örneğin GetObject()
  • Manuel 1C istekleri (programcı tarafından özellikle istek olarak yazılmıştır)
    Kodda kendiniz bir 1C isteği yazıp çalıştırabilirsiniz.

1C isteklerinin oluşturulması ve yürütülmesi

1C isteği, 1C sorgu dilinde isteğin asıl metnidir.
Metin kalemle yazılabilir. Yani alın ve yazın (eğer bu dili biliyorsanız).

1C, kalemlerle kod yazmadan hemen hemen her şeyin yapılabildiği görsel programlama kavramını desteklediğinden, sorgu dilini bilmeden bir sorgu metni çizmenize izin veren özel bir Query Constructor nesnesi vardır. Ancak mucizeler olmaz - bunun için yapıcı ile nasıl çalışacağınızı bilmeniz gerekir.

1C isteğinin metni hazır olduktan sonra yürütülmelidir. Bunun için 1C kodunda İstek () içinde bir nesne var. İşte bir örnek:

İstek = Yeni İstek ();
Request.Text = "SEÇ
| İsimlendirme.Ref.
|
| Reference.Nomenclature AS Nomenclature
| NEREDE
| Nomenclature.Service ";
Seçim = Query.Run ().Seçin ();

Rapor (Örnek.Bağlantı);
Döngü Sonu;

Örnekte görebileceğiniz gibi - 1C isteğini yürüttükten sonra sonuç bize geliyor ve onu işlememiz gerekiyor. Sonuç, tablonun bir veya birkaç satırıdır (özel bir biçimde).

Sonuç normal bir tabloya dökülebilir:
Getir = Query.Run().Boşalt(); // Sonuç bir değerler tablosudur

Ya da sadece çizgileri dolaşın.
Seçim = Query.Run ().Seçin ();
Örnekleme Sırasında.Sonraki () Döngüsü
// Sorgu sonuçlarıyla bir şeyler yap
Döngü Sonu;

1C istekleriyle çalışma

1C isteklerinin temel ilkeleri

1C sorgusu oluşturmanın temel ilkeleri şunlardır:
Koşullar NEREDE TABLO TABLOSUNDAN ListFields SEÇİN

Böyle bir 1C isteği oluşturmaya bir örnek:

SEÇ
// seçilecek alanların listesi
Bağlantı,
İsim,
kod
İTİBAREN
// verileri seçtiğimiz tablonun adı
// tablo listesi, yapılandırıcı penceresindeki nesnelerin listesidir
Dizin.Adlandırma
NEREDE
// seçimi belirt
Ürün Tipi = & Hizmet // harici değere göre seçim
Veya Service // Boolean türündeki "Service" değişkeni, True değerine göre seçim
GÖRE SIRALA
//Sıralama
İsim

Tabloların listesi 1C

Tablo adlarını yapılandırıcı penceresinde görebilirsiniz. "Dizinler" yerine sadece "Dizin" yazılması gerekir, örneğin "Dizin.Nomenclature" veya "Document.Ürün Hizmetlerinin Gerçekleştirilmesi" veya "Birikim Kaydı.Satış".

Kayıtlar için toplam rakamları almanızı sağlayan ek tablolar (sanal) vardır.

Bilgi Kaydı.KayıtAdı.Son Dilim (& Tarih) - Belirli bir tarih için periyodik ise bilgi kaydından 1C talebi

Birikim Kaydı Kayıt Adı Bakiyeler (& Tarih) - Belirli bir tarih için bakiye kaydından 1C talebi

Birikim Kaydı.KayıtAdı.Cirolar (& Başlangıç ​​Tarihi ve Bitiş Tarihi) - Başlangıç ​​tarihinden bitiş tarihine kadar olan dönem için ciro defterinden 1C talebi.

Ek ilkeler

Bazı verilerin bir listesini istediğimizde temel prensipler işe yarıyor. Ama aynı zamanda sayıları da talep edebiliriz ve talep bunları bizim için hesaplayabilir (örneğin ekleyin).

SEÇ
// Quantity (FieldName) - miktarı sayar
// Alan AS DiğerAdı - alanı yeniden adlandırır
Sayı (Link) AS Yayınlanan Belge Sayısı
İTİBAREN

NEREDE
Gerçekleştirillen

Bu 1C talebi bize toplam belge sayısını verecektir. Ancak, her belgenin bir Organizasyon alanı vardır. Diyelim ki 1C sorgusu kullanarak her kuruluş için belge sayısını hesaplamak istiyoruz.

SEÇ
// sadece bir belge alanı
organizasyon,
// miktarı say
Miktar (Referans) AS Kuruluşa göre miktar
İTİBAREN
Belge.Malların GerçekleştirilmesiHizmetler
NEREDE
Gerçekleştirillen
YÜKLE

organizasyon

Bu 1C talebi bize her kuruluş için belge sayısını döndürür ("kuruluşlar bağlamında" da derler).

1C talebini kullanarak bu belgelerin toplamını ek olarak hesaplayacağız:

SEÇ
// sadece bir belge alanı
organizasyon,
// miktarı say

// miktarı hesapla

İTİBAREN
Belge.Malların GerçekleştirilmesiHizmetler
NEREDE
Gerçekleştirillen
YÜKLE
// alan listesi aynı anda bir sayma işlevi () ve bir veya daha fazla alan içeriyorsa kullanılmalıdır - o zaman bu alanlara göre gruplandırmanız gerekir
organizasyon

Bu 1C talebi, bize belge miktarını da iade edecektir.

SEÇ
// sadece bir belge alanı
organizasyon,
// miktarı say
Miktar (Link) AS Kuruluşa Göre Miktar,
// miktarı hesapla
Tutar (Belge Tutarı) OLARAK Tutar
İTİBAREN
Belge.Malların GerçekleştirilmesiHizmetler
NEREDE
Gerçekleştirillen
YÜKLE
// alan listesi aynı anda bir sayma işlevi () ve bir veya daha fazla alan içeriyorsa kullanılmalıdır - o zaman bu alanlara göre gruplandırmanız gerekir
organizasyon
SONUÇLAR GENEL İÇİN

1C sorgulama dili kapsamlı ve karmaşıktır ve tüm yeteneklerini bir derste ele almayacağız - sonraki derslerimizi okuyun.

kısaca hakkında Ek özellikler 1C sorgu dili:

  • Birden çok tablodan verileri birleştirme
  • İç içe sorgular
  • Toplu istek
  • Kendi sanal tablolarınızı oluşturma
  • Değer tablosundan sorgulama
  • Değer almak ve değerleri değiştirmek için yerleşik işlevleri kullanma.

1C Sorgu Oluşturucu

İstek metnini elle yazmamak için - 1C sorgu tasarımcısı var. Modülde herhangi bir yere sağ tıklayın ve 1C Query Builder'ı seçin.

1C sorgu tasarımcısında soldaki istediğiniz tabloyu seçin ve sağa sürükleyin.

Tablodan 1C sorgu tasarımcısında gerekli alanları seçin ve sağa sürükleyin. Sadece bir alan seçmek değil, aynı zamanda bir toplama işlevi uygulamak istiyorsanız, sürükledikten sonra alana fare ile çift tıklayın. Bundan sonra, Gruplama sekmesinde, gruplamak için gerekli alanları seçmeniz (sürükle ve bırakın) gerekecektir.

1C sorgu yapıcısında Koşullar sekmesinde aynı şekilde (seçimi yapacağınız alanları sürükleyerek) gerekli filtreleri seçebilirsiniz. Doğru koşulu seçmeyi unutmayın.

Sıralama sekmesinde sıralama belirtilir. Toplamlar sekmesinde - toplamları toplama.

1C sorgu tasarımcısının yardımıyla mevcut herhangi bir sorguyu inceleyebilirsiniz. Bunu yapmak için, mevcut bir sorgunun metnine sağ tıklayın ve ayrıca 1C sorgu tasarımcısını seçin - sorgu 1C sorgu tasarımcısında açılacaktır.