1c sorgu oluşturucu seçimi. Özel bir veri kaynağıyla çalışan Rapor Oluşturucu ve Sorgu Oluşturucu. Seçimleri bir rapora dahil etmek için oluşturucuyu kullanma örneği

  • 26.11.2023

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

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

Örnek istek:

SEÇMEK
Bankalar.Adı,
Bankalar.CorrHesabı
İTİBAREN
Dizin.Bankalar NASIL Bankalar

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

Sorgu dili bilgiye ulaşmanın en basit ve etkili yoludur. Yukarıdaki örnekte görülebileceği gibi, sorgu dilinde meta veri adlarını kullanmanız 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ı

Veri elde etmek için “SELECT” ve “FROM” yapılarını kullanmak yeterlidir. En basit istek şuna benzer:

Dizinlerden * SEÇİN.

Burada “*” tablonun tüm alanlarının seçilmesi anlamına gelir ve Dizinler.Nomenklatür – tablonun veritabanındaki adıdır.

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

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

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

GRUPLANDIRMA ŞEKLİ
<ИмяПоля1>

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

SONUÇLAR
<ИмяПоля2>
İLE
<ИмяПоля1>

Bu sorguda “TableName1” ve “TableName” tablolarından “FieldName1” ve “FieldName1” alanlarına ait verileri seçip, “HOW” operatörünü kullanarak alanlara eş anlamlılar atayıp, bunları belirli bir “TableConnectionCondition” koşulunu kullanarak birbirine bağlıyoruz. ”.

Alınan verilerden “NERE” “Veri Seçim Koşulu”ndan sadece koşulu karşılayan verileri seçiyoruz. Daha sonra “Alan Adı2”yi toplayarak isteği “Alan Adı1” alanına göre gruplandırıyoruz. Alan için toplamlar oluşturuyoruz. “Alan Adı1” ve son alan “Alan Adı2”.

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

Genel tasarımlar

1C 8.2 sorgu dilinin genel yapılarına bakalım.

BİRİNCİN

Bu operatörü kullanarak ilk kayıtların n sayısını alabilirsiniz. Kayıtların sırası sorgudaki sıraya göre belirlenir.

İLK 100'Ü SEÇİN
Bankalar.Adı,
Bankalar Kodu AS BIC
İTİBAREN
Dizin.Bankalar NASIL Bankalar
GÖRE SIRALA
Bankalar.Adı

İstek, “Bankalar” dizininin alfabetik olarak sıralanmış ilk 100 girişini alacaktır.

İZİN VERİLMİŞ

Bu tasarım mekanizmayla çalışmakla ilgilidir. Mekanizmanın özü, tablonun tamamını değil, veritabanı tablosundaki belirli kayıtların okunmasını (ve diğer eylemleri) kullanıcılarla sınırlamaktır.

Kullanıcı, erişemediği kayıtları okumak için bir sorgu kullanmaya çalışırsa bir hata mesajı alır. Bunu önlemek için "İZİN VERİLEN" yapıyı kullanmalısınız, yani istek yalnızca kendisine izin verilen kayıtları okuyacaktır.

İZİN VERİLENLERİ SEÇİN
Ek Bilgi Havuzu.
İTİBAREN
Dizin.Ek Bilgi Havuzu

ÇEŞİTLİ

“FARKLI” kullanılması, yinelenen satırların 1C sorgu sonucuna girmesini önleyecektir. Çoğaltma, tüm istek alanlarının eşleştiği anlamına gelir.

İLK 100'Ü SEÇİN
Bankalar.Adı,
Bankalar Kodu AS BIC
İTİBAREN
Dizin.Bankalar NASIL Bankalar

BoşTablo

Bu yapı, sorguları birleştirmek için çok nadiren kullanılır. Katılırken tablolardan birinde boş bir iç içe tablo belirtmeniz gerekebilir. “EmptyTable” operatörü bunun için tam uygun.

1C 8 yardımından örnek:

Kompozisyon OLARAK Bağlantı No., BOŞ TABLO.(No., Ürün, Adet) SEÇİN
Belgeden.Gider Faturası
HER ŞEYİ BİRLEŞTİRİN
Bağlantı Numarasını, İçeriği (Satır Numarası, Ürün, Adet) SEÇİN
FROM Document.Fatura Document.Invoice.Composition.*

BOŞ

Birçok hatadan kaçınmanızı sağlayan çok kullanışlı bir özellik. YesNULL(), NULL değerini istediğiniz değerle değiştirmenize olanak sağlar. Birleştirilmiş tablolarda bir değerin varlığının kontrol edilmesinde sıklıkla kullanılır, örneğin:

SEÇMEK
İsimlendirme Referans Bağlantısı,
IsNULL(Kalan Öğe.Kalan Miktar,0) AS Kalan Miktar
İTİBAREN


Başka şekillerde de kullanılabilir. Örneğin, her satır için değerin hangi tabloda mevcut olduğu bilinmiyorsa:

ISNULL(FaturaAlındı.Tarih, FaturaVerilen.Tarih)

HOW, bir tabloya veya alana bir ad (eşanlamlı) atamamızı sağlayan bir operatördür. Yukarıda bir kullanım örneğini gördük.

Bu yapılar birbirine çok benzer; istenen değerin dize gösterimini elde etmenize olanak tanır. Tek fark REPRESENTATION'ın herhangi bir değeri string türüne dönüştürmesi, REPRESENTATIONREF'in ise yalnızca referans değerlerini dönüştürmesidir. REFERANS GÖSTERİMİNİN, elbette referans veri alanının seçimlerde kullanılması planlanmadığı sürece, optimizasyon için veri kompozisyon sistemi sorgularında kullanılması tavsiye edilir.

SEÇMEK
Görünüm(Bağlantı), //dize, örneğin “10/10/2015 tarihli 123 numaralı ön rapor
View(DeletionMark) AS SilMarkText, //string, “Evet” veya “Hayır”
ViewReferences(DeletionMark) AS SilMarkBoolean //boolean, Doğru veya Yanlış
İTİBAREN
Document.Gelişmiş Rapor

İFADE ETMEK

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

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

EXPRESS(TableCost.Subconto1 AS Directory.Cost Items).Faaliyet TürüForTaxAccountingCosts

İ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 alanlarla karşılaştırılamaz). Hatayı önlemek için" Karşılaştırma işleminde geçersiz parametreler. Alanları karşılaştıramazsınız
sınırsız uzunluk ve uyumsuz türlerin alanları
", bu tür alanları aşağıdaki gibi ifade etmeniz gerekir:

EXPRESS(Satırda Yorum OLARAK(150))

FARKTARİH

1C'de 267 video dersini ücretsiz alın:

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

İÇİNDEN SEÇMEK
Referans
SOL BAĞLANTI KayıtBirikimler.DepolardakiÜrünler.Kalan AS Ürün Kalan
Yazılım İsimlendirmesiRef.Link = Satılan MallarKomitelerKalanlar.İsimlendirme
NEREDE KALAN ÜRÜNLER KALAN MİKTAR BOŞ

Bir sorgudaki veri türü, TYPE() ve VALUETYPE() işlevleri veya mantıksal REFERENCE operatörü kullanılarak belirlenebilir. İki fonksiyon benzerdir.

Önceden tanımlanmış değerler

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

Kullanım örneği:

NEREDE Adlandırma. Adlandırma Türü = Değer (Dizin. Adlandırma Türleri. Ürün)

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

NEREDE Hesap Bakiyeleri. Muhasebe Hesabı = Değer (Hesap Planı. Kâr. Kâr Zararı)

Bağlantılar

4 tür bağlantı vardır: SOL, SAĞ, KOMPLE, İÇ.

SOL ve SAĞ BAĞLANTI

Birleştirmeler, belirli bir koşula göre iki tabloyu birbirine bağlamak için kullanılır. Özellik ne zaman SOL YÖNDEN KATILIM belirtilen ilk tabloyu bütünüyle almamız ve ikinci tabloyu koşullu olarak bağlamamızdır. İkinci tablonun koşulla bağlanamayan alanları şu değerle doldurulur: HÜKÜMSÜZ.

Örneğin:

Karşı Taraflar tablosunun tamamını döndürecek ve "Banka" alanını yalnızca "Karşı Taraflar.Adı = Bankalar.Adı" koşulunun karşılanacağı yerlerde dolduracaktır. Koşul karşılanmazsa Banka alanı şu şekilde ayarlanacaktır: HÜKÜMSÜZ.

1C dilinde SAĞDAN KATIL kesinlikle benzer SOL bağlantı tek bir fark dışında - BAĞLANTI HAKKI“Ana” tablo ikincidir, ilk değil.

TAM BAĞLANTI

TAM BAĞLANTI iki tablodaki tüm kayıtları göstermesi ve yalnızca koşula göre bağlanabildiği kayıtları bağlaması bakımından soldan ve sağdan farklıdır.

Örneğin:

İTİBAREN

TAM BAĞLANTI
Dizin.Bankalar NASIL Bankalar

İLE

Sorgu dili, yalnızca kayıtları birleştirme koşulu karşılandığında her iki tabloyu da tamamen döndürecektir. Sol/sağ birleşiminden farklı olarak NULL'un iki alanda görünmesi mümkündür.

İÇ BİRLEŞİM

İÇ BİRLEŞİM yalnızca belirli bir duruma göre bağlanabilecek kayıtları göstermesi bakımından tam olandan farklıdır.

Örneğin:

İTİBAREN
Dizin. Karşı Taraflar AS Müşteriler

İÇ BİRLEŞİM
Dizin.Bankalar NASIL Bankalar

İLE
Clients.Name = Banks.Name

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

Dernekler

JOIN ve JOIN ALL yapıları iki sonucu tek bir sonuçta birleştirir. Onlar. iki işlemin sonucu tek, ortak bir sonuçla "birleştirilecektir".

Yani sistem, yalnızca geçici bir tablo için normal olanlarla tamamen aynı şekilde çalışır.

INDEX BY nasıl kullanılır?

Ancak bir noktayı dikkate almak gerekir. Geçici bir tablo üzerinde dizin oluşturmanın tamamlanması da zaman alır. Bu nedenle geçici tabloda 1-2'den fazla kayıt olacağı kesin olarak biliniyorsa " " yapısının kullanılması tavsiye edilir. Aksi takdirde etki tam tersi olabilir; indekslenmiş alanların performansı indeksi oluşturmak için gereken süreyi telafi etmez.

SEÇMEK
Döviz kurları En son kesit Para Birimi AS Para Birimi,
Döviz kurları En son kesit.
PUT Döviz Kurları
İTİBAREN
Bilgi Kaydı.Döviz Kurları.Son Dilim(&Dönem,) AS Döviz KurlarıSon Dilim
DİZİN:
Para birimi
;
SEÇMEK
Fiyatlar İsimlendirme. İsimlendirme,
Fiyatlarİsimler.Fiyat,
FiyatlarAdlandırmalar.Para Birimi,
Döviz kurları.Kur
İTİBAREN
Bilgi Kaydı.İsimlendirme Fiyatları.Son Dilim(&Dönem,
İsimlendirme B (&İsimlendirme) VE FiyatTürü = &FiyatTürü) OLARAK FiyatNomenklatür
LEFT JOIN Döviz Kurları AS Döviz Kurları
Yazılım FiyatlarıNomenklatürler.Para Birimi = Döviz Kurları.Para Birimi

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, Adet, Farklı Sayı, Maksimum, Minimum, Ortalama.

Örnek 1:

SEÇMEK
Mal ve Hizmet Mallarının Satışı, İsimlendirme,
SUM(MalHizmetMal.Miktar Satışı) OLARAK Miktar,
SUM(MalHizmetMal Satışı.Tutar) OLARAK Tutar
İTİBAREN

GRUPLANDIRMA ŞEKLİ
Mal ve Hizmet Mallarının Satışı.

Talep, malların bulunduğu tüm satırları alır ve bunları miktara ve maddeye göre tutarlara göre özetler.

Örnek No.2

SEÇMEK
Bankalar.Kodu,
MİKTAR(FARKLI Bankalar.Link) Kopya Sayısı Olarak
İTİBAREN
Dizin.Bankalar NASIL Bankalar
GRUPLANDIRMA ŞEKLİ
Bankalar.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

Sonuçlar hiyerarşik yapıya sahip bir sistemden veri elde etmenin bir yoludur. Toplama işlevleri, gruplamalarda olduğu gibi özet alanları için de kullanılabilir.

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

SEÇMEK




İTİBAREN
Belge Mal ve Hizmet Satışı Mallar Mal ve Hizmet Satışı NASIL Yapılır
GÖRE SIRALA

SONUÇLAR
TOPLA(Miktar),
TOPLAM(Toplam)
İLE
İsimlendirme

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

Genel sonuçlar

Tüm "toplamlar" için toplam almanız gerekiyorsa "GENEL" operatörünü kullanın.

SEÇMEK
Mal ve Hizmet Mallarının Satışı, İsimlendirme AS İsimlendirme,
Mal ve Hizmet Mal Satışı Link AS Belgesi,
Mal ve Hizmet Mallarının Satışı Miktar AS Miktar,
Mal ve Hizmet Mallarının Satışı Tutar OLARAK Tutar
İTİBAREN
Belge Mal ve Hizmet Satışı Mallar Mal ve Hizmet Satışı NASIL Yapılır
GÖRE SIRALA
Mal ve Hizmet Mallarının Satışı Bağlantı Tarihi
SONUÇLAR
TOPLA(Miktar),
TOPLAM(Toplam)
İLE
ORTAKTIR,
İsimlendirme

İsteğin yerine getirilmesi sonucunda aşağıdaki sonucu elde ederiz:

1. düzey gruplandırmada gerekli tüm alanların toplanması söz konusudur.

Düzenleme

ORDER BY operatörü sorgu sonuçlarını sıralamak için kullanılır.

İlkel türler (dize, sayı, boolean) için sıralama olağan kurallara göre yapılır. Referans türü alanlar için sıralama, kod veya referans gösterimi yerine bağlantının dahili temsiline (benzersiz tanımlayıcı) göre gerçekleşir.

SEÇMEK

İTİBAREN
Dizin.Adlandırma AS Adlandırma
GÖRE SIRALA
İsim

İstek, terminoloji dizinindeki adların alfabetik olarak sıralanmış bir listesini görüntüler.

Otomatik sipariş

Sıralama yapılmadan yapılan bir sorgunun sonucu, düzensiz bir şekilde sunulan bir satır kümesidir. 1C platformu geliştiricileri, aynı sorgular yürütülürken satırların aynı sırayla çıkarılacağını garanti etmez.

Tablo kayıtlarını sabit bir sırada görüntülemeniz gerekiyorsa Otomatik Sıralama yapısını kullanmanız gerekir.

SEÇMEK
İsimlendirme.İsim AS İsim
İTİBAREN
Dizin.Adlandırma AS Adlandırma
OTOMATİK SİPARİŞ

Sanal tablolar

1C'deki sanal tablolar, 1C sorgu dilinin diğer benzer sözdizimlerinde bulunmayan benzersiz bir özelliğidir. Sanal tablo, kayıtlardan profil bilgilerini almanın hızlı bir yoludur.

Her kayıt tipinin, kayıt ayarlarına bağlı olarak farklılık gösterebilecek kendi sanal tablo seti vardır.

  • ilkinin kesimi;
  • ikincisinin kesilmesi.
  • kalanlar;
  • devrimler;
  • bakiyeler ve ciro.
  • alt kontodan hareketler;
  • devrimler;
  • hız Dt Kt;
  • kalanlar;
  • bakiyeler ve ciro
  • alt konto.
  • temel;
  • grafik verileri;
  • fiili geçerlilik süresi.

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

SEÇMEK
Depolardaki Ürünler Kalıntıları ve Devirleri.
ÜrünlerDepolardaKalanVeCiro.MiktarBaşlangıçKalan,
ÜrünlerDepolardaKalanlarVeCiro.MiktarCiro,
Depolardaki MallarKalanlarVeCiro.MiktarGelen,
Depolardaki MallarKalanlarVeCiro.MiktarTüketim,
ÜrünlerDepolardaKalanlarVeCiro.MiktarFinalKalan
İTİBAREN
KaydetBirikimler.Depolardaki Mallar.KalanlarVe Ciro AS MallarDepolarda KalanlarVe Ciro

Bu sorgu, büyük miktarda veriyi hızlı bir şekilde almanızı sağlar.

Sanal Tablo Seçenekleri

Sanal tablolarla çalışmanın çok önemli bir yönü parametrelerin kullanılmasıdır. Sanal tablo parametreleri, seçim ve yapılandırmaya yönelik özel parametrelerdir.

Bu tür tablolar için “NEREDE” yapısında seçim kullanılması yanlış kabul edilir. Sorgunun optimumun altına düşmesinin yanı sıra yanlış veri alınması da mümkündür.

Bu parametrelerin kullanımına bir örnek:

Biriktirme Kaydı, Depolardaki Mallar, Bakiyeler ve Cirolar (& Dönem Başı & Dönem Sonu, Ay, Dönem Hareketleri ve Sınırları, İsimlendirme = & Gerekli İsimlendirme)

Sanal tablolar için algoritma

Örneğin, "Kalanlar" türündeki en çok 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 ölçü bazında hesaplanan en yakın değeri elde ediyoruz.
  2. Hareket tablosundaki tutarı toplamlar tablosundaki tutara “ekliyoruz”.


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– veritabanı sorgularının geliştirilmesini büyük ölçüde kolaylaştıran, 1C Enterprise sistemine yerleşik bir araç.

Sorgu oluşturucunun oldukça basit ve sezgisel bir arayüzü var. Yine de sorgu yapıcının kullanımına daha detaylı bakalım.

Sorgu metni yapıcısı, program kodunda istenen yerde içerik menüsünden (sağ fare tuşu) başlatılır.

1C istek yapıcısının açıklaması

Tasarımcının her sekmesine daha ayrıntılı olarak bakalım. Bunun istisnası, başka bir tartışmanın konusu olan Oluşturucu sekmesidir.

Tablolar ve Alanlar sekmesi

Bu sekme, raporda görüntülenmesi gereken veri kaynağını ve alanları belirtir. Temelde SELECT.. FROM yapıları burada açıklanmaktadır.

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

Sanal tabloların içerik menüsünde sanal tablo parametrelerini ayarlayabilirsiniz:

Bağlantılar sekmesi

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

Gruplandırma sekmesi

Bu sekmede sistem, tablo sonucunun gerekli alanlarını gruplandırmanıza ve özetlemenize olanak tanır. GRUP BY, TOPLAM, MİNİMUM, ORTALAMA, MAKSİMUM, MİKTAR, FARKLI SAYISI yapıların kullanımını açıklar.

Koşullar sekmesi

WHERE yapısından sonra istek metninde gelen her şeyden, yani alınan verilere uygulanan tüm koşullardan sorumludur.

Gelişmiş sekme

Sekme bunlara ek olarakçok önemli olan her türlü parametreyle doludur. Her bir özelliğe bakalım.

Gruplama Kayıtları seçme:

  • İlk N– sorguya yalnızca N kayıt döndüren bir parametre (FIRST operatörü)
  • Kopya yok– alınan kayıtların benzersizliğini sağlar (FARKLI operatör)
  • İzin verilmiş– yalnızca sistemin dikkate alarak seçmenize izin verdiği kayıtları seçmenize olanak tanır (İZİN VERİLEN inşaat)

Gruplama İstek Türü isteğin ne tür olacağını belirler: veri alma, geçici tablo oluşturma veya geçici tablonun imha edilmesi.

Aşağıda bir bayrak var Alınan verileri daha sonra değiştirilmek üzere kilitle. Verilerin okunduğu andan değiştirildiği ana kadar güvenliğini sağlayan veri kilitlemeyi ayarlama yeteneğini etkinleştirmenize olanak tanır (yalnızca Otomatik kilitleme modu için geçerlidir, DEĞİŞİM İÇİN tasarım).

Birleşimler/Takma Adlar Sekmesi

Sorgu tasarımcısının bu sekmesinde, farklı tabloları ve takma adları (HOW yapısı) birleştirme yeteneğini ayarlayabilirsiniz. Tablolar sol tarafta gösterilmektedir. Bayrakları tablonun karşısına koyarsanız UNITE yapısı kullanılacaktır, aksi takdirde - UNITE ALL (iki yöntem arasındaki farklar). Sağ tarafta farklı tablolardaki alanların yazışmaları gösterilir; eğer uygunluk belirtilmezse sorgu NULL değerini döndürür.

Sipariş sekmesi

Bu, değerlerin sıralanma sırasını (ORDER BY) - azalan (DESC) veya artan (ASC) belirtir.

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

Toplu Sorgulama sekmesi

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

Sorgu tasarımcısındaki "Sorgu" düğmesi

İstek tasarımcısının sol alt köşesinde, istek metnini istediğiniz zaman görüntüleyebileceğiniz bir İstek düğmesi bulunur:

Bu pencerede istek üzerinde ayarlamalar yapabilir ve onu çalıştırabilirsiniz.


Sorgu Konsolunu Kullanma

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

Bu araca daha yakından bakalım.

1C sorgu konsolunu indirin

Öncelikle sorgu konsoluyla çalışmaya başlamak için onu bir yerden indirmeniz gerekiyor. Tedaviler genellikle iki türe ayrılır: kontrollü formlar ve geleneksel olanlar (veya bazen 8.1 ve 8.2/8.3 olarak da adlandırılırlar).

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

1C sorgu konsolunun açıklaması

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

Sorgu konsolu başlığında son sorgunun yürütme süresini milisaniyelik doğrulukla görebilirsiniz, bu da farklı tasarımları performans açısından karşılaştırmanıza olanak tanır.

Komut çubuğundaki ilk düğme grubu, geçerli sorguların harici bir dosyaya kaydedilmesinden sorumludur. Bu çok kullanışlıdır; her zaman karmaşık bir istek yazmaya geri dönebilirsiniz. Veya örneğin belirli tasarımların tipik örneklerinin bir listesini saklayın.

Sol taraftaki “İstek” alanında yeni istekler oluşturabilir ve bunları ağaç yapısında kaydedebilirsiniz. İkinci düğme grubu, istek listesinin yönetilmesinden sorumludur. Bunu kullanarak bir isteği oluşturabilir, kopyalayabilir, silebilir ve taşıyabilirsiniz.

  • Uygulamakrica etmek– basit uygulama ve sonuçlar
  • Paketi yürüt– bir sorgu kümesindeki tüm ara sorguları görüntülemenize olanak tanır
  • Geçici tabloları görüntüleme– geçici sorguların bir tabloda döndürdüğü sonuçları görmenizi sağlar

İstek parametreleri:

İstek için geçerli parametreleri ayarlamanıza olanak tanır.

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

  • Düğme İstekten al geliştiricinin rahatlığı için istekteki tüm parametreleri otomatik olarak bulur.
  • Bayrak Tüm istekler için ortak parametreler– kurulduğunda, genel istek listesinde istekten isteğe geçerken işlenmesi parametreleri temizlemez.

Değer listesiyle bir parametre ayarlayınÇok basit, sadece bir parametre değeri seçerken, değeri temizle düğmesine (çapraz) tıklayın, sistem sizden “Değer Listesi” seçmeniz gereken veri tipini seçmenizi isteyecektir:

Ayrıca üst panelde sorgu konsolu ayarlarını çağırmak için bir düğme bulunur:

Burada otomatik kaydetme sorguları ve sorgu yürütme parametreleri için parametreler belirleyebilirsiniz.

Konsol istek alanına istek metni girilir. Bu, yalnızca bir sorgu testi yazarak veya özel bir araç olan sorgu tasarımcısını çağırarak yapılabilir.

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

Bu menünün ayrıca isteğe satır sonlarını (“|”) temizleme veya ekleme veya istek kodunu bu kullanışlı biçimde alma gibi yararlı işlevleri de vardır:

Talep = Yeni Talep;
İstek.Text = ”
|SEÇ
| Para Birimleri.Link
|DAN
| Dizin.Para Birimleri AS Para Birimleri”;
requestResult = request.Execute();

Sorgu konsolunun alt alanı sorgu sonuç alanını görüntüler; bu işlem bu nedenle oluşturulmuştur:



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

Sorgu optimizasyonu

1C işletme 8.3'ün verimliliğini artırmanın en önemli noktalarından biri optimizasyonistekler. Bu nokta aynı zamanda çok önemlidir. sertifikayı geçmek. Aşağıda optimum olmayan sorgu performansı ve optimizasyon yöntemlerinin tipik nedenlerinden bahsedeceğiz.

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

Sanal tablo detaylarına filtrelerin sadece VT parametreleri üzerinden uygulanması gerekmektedir. Hiçbir durumda sanal tablodaki seçim için WHERE yapısını kullanmamalısınız; bu, optimizasyon açısından ciddi bir hatadır. WHERE kullanılarak seçim yapılması durumunda, aslında sistem TÜM kayıtları alacak ve ancak bundan sonra gerekli olanları seçecektir.

SAĞ:

SEÇMEK

İTİBAREN
Birikimlerin Kaydı Organizasyon Katılımcıları ile karşılıklı anlaşmalar Bakiyeler (
,
Kuruluş = &Kuruluş
VE Bireysel = &Bireysel) NASIL Organizasyon Katılımcıları ile karşılıklı anlaşmalar Dengeler

YANLIŞ:

SEÇMEK
Kuruluşların Katılımcılarıyla Karşılıklı Anlaşmalar Bakiyeler Tutar Bakiyesi
İTİBAREN
Birikim Kaydı Organizasyon Katılımcıları ile Karşılıklı Mutabakat Bakiyeler (,) NASIL Organizasyon Katılımcıları ile Karşılıklı Mutabakat Bakiyeler
NEREDE
Organizasyon Katılımcıları ile Karşılıklı Anlaşmalar Dengeler Organizasyon = & Organizasyon
VE Organizasyon Katılımcıları ile karşılıklı anlaşmalar Dengeler Bireysel = &Bireysel

Nokta kullanarak karmaşık türdeki bir alanın değerini alma

Bir nokta aracılığıyla bir sorguda karmaşık türde veri alındığında, sistem, karmaşık tür alanında mümkün olan tür sayısı kadar tabloya sol birleştirmeyle bağlanır.

Örneğin, optimizasyon için kayıt kayıt alanına (kayıt şirketi) erişmek son derece istenmeyen bir durumdur. Kayıt şirketi, aralarında kayda veri yazabilen tüm olası belge türlerinin de bulunduğu bileşik bir veri türüne sahiptir.

YANLIŞ:

SEÇMEK
Kayıt Ayarı.Kaydedici.Tarih,
RecordSet.Quantity
İTİBAREN
KayıtBirikimler.ÜrünlerOrganizasyonlar AS SetRecords

Yani aslında böyle bir sorgu bir tabloya değil 22 veritabanı tablosuna erişecektir (bu kayıtta 21 kayıt şirketi türü vardır).

SAĞ:

SEÇMEK
SEÇENEK
WHEN ÜrünlerOrg.Registrar LINK Belgesi.Ürün ve Hizmet Satışı
SONRA EXPRESS(ÜrünlerOrganizasyon.Kayıt Şirketi AS Belgesi.Mal SatışlarıHizmetler).Tarih
NE ZAMAN MalOrg.Kayıt Şirketi BAĞLANTISI Belgesi.Mal Hizmetlerinin Alınması
SONRA EXPRESS(GoodsOrg.Registrar AS Document.Mal Hizmetlerinin Alınması).Tarih
TARİH OLARAK BİTİŞ,
ÜrünlerOrg.Adedi
İTİBAREN
Kayıt OlBirikimler.MallarOrganizasyonlar AS GoodsOrganization

Veya ikinci seçenek, bu tür bilgileri ayrıntılara eklemek, örneğin bizim durumumuzda tarih eklemek.

SAĞ:

SEÇMEK
ÜrünlerOrganizasyonlar.Tarih,
ÜrünlerOrganizasyonlar.Miktar
İTİBAREN
Birikim Kaydı Kuruluşların Malları AS Kuruluşların Malları

Birleştirme koşulundaki alt sorgular

Optimizasyon açısından, 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, daha önce bağlantı alanlarına göre indekslemiş olduğunuz yalnızca meta verileri ve VT nesnelerini kullanmanız gerekir.

YANLIŞ:

SEÇMEK …

SOL YÖNDEN KATILIM (
RegisterInformation.Limits'TAN SEÇİN
NEREDE …
GRUPLAMAYA GÖRE...
) İLE …

SAĞ:

SEÇMEK …
PUT Limitleri
Bilgi Kaydı'ndan.Limitler
NEREDE …
GRUPLAMAYA GÖRE...
DİZİN ŞEKLİ...;

SEÇMEK …
Belgeden Mal ve Hizmet Satışı
LEFT JOIN Sınırları
İLE …;

Kayıtları Sanal Tablolarla Birleştirme

Sanal bir masayı başkalarına bağlarken sistemin en iyi şekilde çalışmadığı durumlar vardır. Bu durumda, sorgunun performansını optimize etmek için, geçici tablo sorgusunda birleştirilmiş alanları dizine eklemeyi unutmadan, sanal tabloyu geçici bir tabloya yerleştirmeyi deneyebilirsiniz. Bunun nedeni, VT'lerin genellikle birkaç fiziksel DBMS tablosunda bulunmasıdır; sonuç olarak, bunları seçmek için bir alt sorgu derlenir ve sorunun önceki noktaya benzer olduğu ortaya çıkar.

Dizine eklenmemiş alanlara dayalı seçimleri kullanma

Sorgu yazarken en yaygın hatalardan biri, dizine eklenmemiş alanlardaki koşulları kullanmaktır; bu durum, sorgu optimizasyon kuralları. Sorgu, indekslenemeyen alanlarda seçim içeriyorsa, DBMS bir sorguyu en iyi şekilde yürütemez. Geçici bir tablo alırsanız bağlantı alanlarını da indekslemeniz gerekir.

Her koşul için uygun bir indeks bulunmalıdır. Uygun bir indeks aşağıdaki gereksinimleri karşılayan indekstir:

  1. Dizin, koşulda listelenen tüm alanları içerir.
  2. Bu alanlar endeksin en başında yer alır.
  3. Bu seçimler ardışıktır, yani sorgu koşuluna dahil olmayan değerler aralarına "sıkışmaz".

DBMS doğru dizinleri seçmezse tablonun tamamı taranacaktır; bu, performans üzerinde çok olumsuz bir etkiye sahip olacaktır ve tüm kayıt kümesinin uzun süre engellenmesine yol açabilir.

Koşullarda mantıksal VEYA kullanma

Hepsi bu kadar, bu makale her 1C uzmanının bilmesi gereken sorgu optimizasyonunun temel yönlerini kapsıyordu.

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

1C programlama sadece bir program yazmaktan daha fazlasını içerir. 1C, üzerinde çalıştığı kullanıcı eylemleri ve verilerinin bir külçesidir.

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

Raporun temel kısmı 1C talebidir. Bir rapor söz konusu olduğunda ACS, raporun en büyük bölümünü oluşturur.

Oturmak. Nefes al. Sakin ol. Şimdi size haberleri anlatacağım.

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

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

Aynı zamanda iki dillidir - yani Rusça veya İngilizce yazabilirsiniz. SQL sorgu diline son derece benzemektedir ve bilenler için rahat olabilir.

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

Bir kullanıcı 1C'yi Kurumsal modda başlattığında, çalışan istemcide tek bir gram veri yoktur. Dolayısıyla bir dizini açmanız gerektiğinde 1C veritabanından veri ister, yani 1C isteği yapar.

1C sorguları şunlardır:

  • Otomatik sorgular 1C
    Sistem tarafından otomatik olarak oluşturulur. Bir belge listesi formu oluşturdunuz. Bir sütun eklendi. Bu, bu formu Enterprise modunda açtığınızda bir sorgu olacağı ve bu sütuna ait verilerin isteneceği anlamına gelir.
  • Yarı otomatik sorgular 1C
    1C dilinde birçok yöntem (işlev) vardır, erişildiğinde veritabanına sorgu yapılır. Örneğin.GetObject()
  • Manuel 1C sorguları (programcı tarafından özel olarak sorgu olarak yazılmıştır)
    Bir 1C isteğini kendiniz kodla yazabilir ve yürütebilirsiniz.

1C sorguları oluşturma ve yürütme

1C isteği, isteğin 1C istek dilindeki gerçek metnidir.
Metin kalemlerle yazılabilir. Yani alın ve yazın (eğer bu dili biliyorsanız).

1C, çoğu veya neredeyse her şeyin elle kod yazmadan yapılabileceği görsel programlama kavramını desteklediğinden, sorgu dilini bilmeden bir sorgu metnini çizmenize olanak tanıyan özel bir Sorgu Oluşturucu nesnesi vardır. Ancak mucizeler olmaz - bunun için yapıcıyla nasıl çalışacağınızı bilmeniz gerekir.

1C isteğinin metni hazır olduğunda yürütülmesi gerekir. Bu amaçla 1C kodu olan request()'da bir nesne bulunmaktadır. İşte bir örnek:

İstek = Yeni İstek();
Query.Text = "SEÇ
| İsimlendirme.Bağlantı
|DAN
| Dizin.Adlandırma AS Adlandırma
|NEREDE
| İsimlendirme.Hizmet";
Select = Query.Run().Select();

Rapor(Seçim.Bağlantı);
EndCycle;

Ö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 yüklenebilir:
Getir = Query.Run().Unload(); //Sonuç – değerler tablosu

Veya sadece satır satır dolaşın.
Select = Query.Run().Select();
Select.Next() Döngüsü sırasında
//Sorgu sonuçlarıyla ilgili bir şeyler yapın
EndCycle;

1C istekleriyle çalışma

1C sorgularının temel ilkeleri

1C isteği oluşturmanın temel ilkeleri –
Tablo Başlığından Alan Listesini SEÇİN NEREDE Koşullar

Böyle bir 1C isteği oluşturmanın bir örneği:

SEÇMEK
//seçilecek alanların listesi
Bağlantı,
İsim,
Kod
İTİBAREN
//veriyi seçeceğimiz tablonun adı
//tablo listesi yapılandırıcı penceresindeki nesnelerin listesidir
Dizin.Adlandırma
NEREDE
//seçimi belirtiyoruz
Ürün Tipi = &Hizmet //harici değere göre seçim
Veya Hizmet // Boolean türünde “Hizmet” niteliği, True değerine göre seçim
GÖRE SIRALA
//Sıralama
İsim

1C tablolarının listesi

Tablo adlarını yapılandırıcı penceresinde görebilirsiniz. “Rehberler” yerine “Rehber” yazmanız yeterli, örneğin “Rehber.Nomenklatür” veya “Belge.Mal ve Hizmet Satışı” veya “Birikim Kaydı.Satış”.

Kayıtlar için son sayıları almanızı sağlayan ek tablolar (sanal) vardır.

Bilgi Kaydı.RegisterName.Last Slice(&Date) – Belirli bir tarih için periyodikse, bilgi kaydından 1C talebi

Biriktirme Kaydı.Kayıt Adı.Bakiyeler(&Tarih) – Belirli bir tarih için bakiyeler kaydından 1C talebi

Biriktirme Kaydı.Kayıt Adı.Ciro (&Başlangıç ​​Tarihi, &Bitiş Tarihi) – Başlangıç ​​tarihinden bitiş tarihine kadar olan dönem için ciro kaydından 1C talebi.

Ek ilkeler

Bazı verilerin bir listesini talep ettiğimizde temel prensipler işe yarar. Ancak aynı zamanda numara talep edebiliriz ve istek bunları bizim için sayabilir (örneğin ekleyin).

SEÇMEK
//Quantity(FieldName) – miktarı sayar
//Field AS OtherName – alanı yeniden adlandırır
Miktar (Bağlantı) AS Gönderilen Belgelerin Miktarı
İTİBAREN

NEREDE
Yürütülen

Bu 1C talebi bize toplam belge sayısını döndürecektir. Ancak her belgenin bir Organizasyon alanı vardır. Diyelim ki 1C sorgusunu kullanarak her kuruluş için belge sayısını saymak istiyoruz.

SEÇMEK
//sadece bir belge alanı
Organizasyon,
//miktarı say
Adet(Link) AS AdetKuruluşlara Göre
İTİBAREN
Belge Mal ve Hizmet Satışı
NEREDE
Yürütülen
GRUPLANDIRMA ŞEKLİ

Organizasyon

Bu 1C talebi bize her kuruluş için ("kuruluş bazında" olarak da adlandırılır) belge sayısını döndürecektir.

1C talebini kullanarak bu belgelerin miktarını ek olarak hesaplayalım:

SEÇMEK
//sadece bir belge alanı
Organizasyon,
//miktarı say

//miktarı say

İTİBAREN
Belge Mal ve Hizmet Satışı
NEREDE
Yürütülen
GRUPLANDIRMA ŞEKLİ
//alan listesinde bir count() işlevi ve aynı anda bir veya daha fazla alan varsa kullanılmalıdır - o zaman bu alanlara göre gruplandırmanız gerekir
Organizasyon

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

SEÇMEK
//sadece bir belge alanı
Organizasyon,
//miktarı say
Miktar(Link) AS MiktarKuruluşlar Tarafından,
//miktarı say
Tutar(BelgeTutarı) AS Tutar
İTİBAREN
Belge Mal ve Hizmet Satışı
NEREDE
Yürütülen
GRUPLANDIRMA ŞEKLİ
//alan listesinde bir count() işlevi ve aynı anda bir veya daha fazla alan varsa kullanılmalıdır - o zaman bu alanlara göre gruplandırmanız gerekir
Organizasyon
PO SONUÇLARI Genel

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

1C sorgu dilinin ek özellikleri hakkında kısaca:

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

1C Sorgu Oluşturucu

İstek metninin elle yazılmaması için 1C istek tasarımcısı bulunmaktadır. Modülde herhangi bir yere sağ tıklayın ve 1C Sorgu Tasarımcısı'nı seçin.

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

1C sorgu tasarımcısındaki tablodan gerekli alanları seçin ve sağa sürükleyin. Yalnızca bir alan seçmek değil, aynı zamanda ona bir tür toplama işlevi uygulamak istiyorsanız, sürükledikten sonra alana fareyle iki kez tıklayın. Gruplandırma sekmesinde, gruplama için gerekli alanları seçmeniz (sürüklemeniz) gerekecektir.

1C sorgu tasarımcısındaki Koşullar sekmesinde, gerekli seçimleri aynı şekilde seçebilirsiniz (seçimi yapacağınız alanları sürükleyerek). Doğru koşulu seçtiğinizden emin olun.

Sipariş sekmesinde sıralama gösterilir. Sonuçlar sekmesinde – sonuçların özetlenmesi.

1C sorgu tasarımcısını kullanarak mevcut herhangi bir sorguyu inceleyebilirsiniz. Bunu yapmak için mevcut bir isteğin metnine sağ tıklayın ve ayrıca 1C sorgu tasarımcısını seçin; istek 1C sorgu tasarımcısında açılacaktır.

1C platformunun sekizinci sürümü, her biri uygulama geliştirme sürecini basitleştirmeyi ve performansı optimize etmeyi mümkün kılan kendi yöntemlerine ve özelliklerine sahip olan oldukça fazla sayıda yeni yapılandırma nesnesi sunar. Bunlardan biri rapor oluşturucudur.

1C'de rapor oluşturucunun ne olduğundan, hangi işlevleri yerine getirdiğinden, programlamada hangi uygulamaları bulduğundan bahsetmek istiyorum.

1C'deki rapor oluşturucu - nedir bu?

Bu, verileri bir elektronik tablo belgesinde veya grafikte görüntülemenize olanak tanıyan bir yapılandırma nesnesidir. Veri kaynağı şunlar olabilir:

  1. Talebin sonucu;
  2. Bir elektronik tablo belgesinin hücre alanı;
  3. Bir belgenin veya referans kitabının tablolu kısmı;
  4. Bir dizi kayıt girişi.

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

Şekil 1, rastgele bir değer tablosu görüntülemek için "Rapor Oluşturucusu"nu kullanmanıza olanak tanıyan bir kod bölümünü göstermektedir

Dolayısıyla inşaatçı için bariz kullanım durumu raporlar tasarlamaktır. Oluşturucunun daha az belirgin bir kullanımı, kullanıcının bir sorgunun çeşitli öğelerini (gruplamalar, seçimler vb.) özelleştirmesi için kullanılmasıdır.

Bu arada, Şekil 1'de gösterilen kodun çalıştırılmasının sonucu, Şekil 2'de görülebilir.

İncir. 2

Oluşturucu kurulumu

Rapor oluşturucu bir anlamda veri kompozisyon sistemine benzemektedir ve erişim kontrol sisteminin herhangi bir nedenle kullanılamadığı veya düzgün çalışmama ihtimalinin olduğu durumlarda kullanılabilir.

SKD oluşturucu gibi şunları içerir:

  • Gruplamalar (bilgileri görüntülerken hiyerarşi seviyeleri);
  • Göstergeler (sonucu elde etmek için gerekli olan değerler);
  • Hesaplanan ek alanlar (öğe ayrıntıları, değerleri olan eylemlerin sonuçları);
  • Filtreler (seçimler);
  • Sıralama.

Oluşturucunun tasarım düzeni ayarları, farklı düzeylerde ve ayrıntı hassasiyetleri sunar.

Oluşturucuyu kullanmak için algoritma

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

  1. ReportBuilder türünde yeni bir nesnenin oluşturulduğunu bildiriyoruz;
  2. Bu aşamada, seçim metnini oluşturmak için Sorgu Oluşturucuyu kullanabilir veya DataSourceDescription nesnesini kullanarak mevcut bir seçimi kullanabilirsiniz;
  3. Rapor oluşturucu ayarları, oluşturucu nesne yöntemi FillSettings(); kullanılarak ayarlanabilir.
  4. Oluşturucunun Düzen nesnesi özelliğini tanımlayarak, otomatik oluşturma yöntemi kullanılarak oluşturulan standart bir tasarım düzenini kullanmayı reddedebilirsiniz;
  5. DataSourceDescription kullanılmıyorsa, bu aşamada isteğin yürütülmesi gerekir, Execute() yöntemini kullanın;
  6. Son adım Output() yöntemini başlatmaktır; çıktı bir elektronik tablo belgesinde veya karşılık gelen form öğesinde yapılabilir.

Oluşturucuda şifre çözmeyi kullanma

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

Bunu yapmak için Şifre Çözme Doldurma özelliğini kullandık. Bu özelliğin türü ReportBuilderDecryptionFillType'tır; üç değerden birini alabilir:

  1. GroupingValues ​​– bir hücre etkinleştirildiğinde, içinde belirtilen gruplandırmanın değeri kullanılacaktır;
  2. Doldurma – varsayılan değer; bu, transkriptin nihai sonuç için kullanılmayacağı anlamına gelir;
  3. Transkript – transkript yapısı, orijinal numunedeki tüm gruplamaların değerleriyle doldurulacaktır.

Ek olarak kullanıcı, ChangeDecryption() yöntemini kullanarak şifre çözmeyi bağımsız olarak ayarlama olanağına sahiptir. Bu yöntemi çalıştıran kod bölümü Şekil 3'te gösterilmektedir.

Ş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. Harici bir rapor oluşturarak ve ona isteğe bağlı bir adla bir öznitelik ekleyerek ve ReportBuilder yazarak başlayalım (Şekil 4);

Şekil 4

  1. Bir rapor formu oluşturup üzerine TabularField arayüz nesnesini yerleştirip Selection olarak yazıyoruz ve oluşturulan özelliğin Selection özelliği ile ilişkilendiriyoruz Şekil 5

Şekil 5

  1. Formumuzun karşılık gelen olayıyla ilişkili bir OnOpen() prosedürü oluşturuyoruz;

Şekil 6

  1. İçinde yazılan kod mutlaka rapor oluşturucu için bir istek içermelidir, kodun bir örneği Şekil 6'da gösterilmiştir, oluşturucunun metnini oluşturmak için sorgu yapıcıyı, yapıcıda, koşulları kullanabilirsiniz. oluşturucu ve ek ayarları Şekil 7'deki ilgili sekmede belirtilmiştir;

Şekil 7

  1. İstek metninde süslü () parantez içinde belirtilen seçim koşulları, yalnızca ilgili seçimin kullanıcı tarafından etkinleştirilmesi ve kullanılması durumunda yürütülecektir;

  2. Oluşturucunun sonucunu görüntüleyen prosedür Şekil 8'de gösterilmektedir ve Oluştur düğmesinin tıklatı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

Elbette tek bir makalede yeni bir nesnenin tüm yeteneklerini göstermek oldukça zordur, ancak bize öyle geliyor ki onun hakkında bir fikir edinmek ve kazanılan bilgileri dikkate alarak onu kullanmaya başlamak mümkün.

1. Rapor oluşturucu nedir?

Rapor oluşturucu, belirtilen sorgu metnine ve ayarlara dayalı olarak bir sonuç elde edilmesine ve bu sonucun bir elektronik tablo belgesinde veya grafikte görüntülenmesine olanak tanıyan bir nesnedir.

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

  • gruplandırmalar (örnek: “Adlandırma”, “Karşı Taraf”...),
  • göstergeler (örnek: “Miktar”, “Tutar”...),
  • ek alanlar (örnek: “Ürün.Hizmet”, “Hesap.Kodu”...),
  • filtre (örneğin: belirli bir öğeye göre, karşı taraf grubuna göre...) ve
  • sıralama (örnek: “Adlandırma.Kod”, “Karşı Taraf.Adı”...)

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

Çıktıdan önce, bir görünüm düzeni kullanarak rapor oluşturucu düzenine stil verebilirsiniz.

Rapor oluşturucu sorgu sonucunun çıktısı tek komutla gerçekleştirilir.

2. Rapor oluşturucuyu nerede kullanabilirim?

Rapor oluşturucuyu kullanarak raporların büyük bir kısmını tasarlayabilirsiniz (örneğin: "Envanter bakiyeleri", "Dönem satışları"...). Aynı zamanda, geliştirme ve program kodları için gereken süre önemli ölçüde azalacak ve tasarım ve işlevsellik kalitesi artacaktır.

Ayrıca rapor oluşturucu, sonucun çıktısına ihtiyaç duyulmayan ancak kullanıcının sorgu öğelerini (örneğin, gruplamalar veya filtre) özelleştirmesi gerektiği durumlarda kullanılabilir (örneğin: bir öğeyi bir xml dosyasına yüklemek veya işlemek). belgelerin belirli bir filtreye göre yayınlanması).

Rapor oluşturucu 1C:Enterprise sunucusunda bulunmadığından ve harici bağlantı modülünde kullanılmadığından, bu durumlarda kullanılması gerekir. Sorgu oluşturucu Rapor oluşturucuya benzeyen ancak görsel özelliklere ve yöntemlere sahip olmayan (“Layout”, “OutputReportTitle”, “Output()”, “DesignLayout()”...).

3. Kavramlar hakkında biraz

Sürüm 7.7 ile karşılaştırıldığında sürüm 8.0'da konseptlerde ufak bir değişiklik yaşandı, bu yüzden bunun üzerinde biraz durmakta fayda var.

Konsept

Tanım

Satır ölçümleri Satır bazında çıktı alınacak gruplamaların listesi (örnek: “Öğe”, “Hesap”...)
Sütun ölçümleri Sütunlara göre çıktının gerçekleştirileceği gruplamaların listesi (örnek: “Depo”, “Ay”...).
Seçim Bir dizi çeşitli filtre (örneğin: karşı taraf grubuna göre, belirli bir kuruluşa göre...).
Emir Bir dizi sıralama alanı (örnek: “Ürün. Kodu”, “Satış Belgesi. Sorumlu”…).
Alan Sorgu seçim alanlarından biri (örnek: “Öğe”, “Hesap.Kodu”, “Miktar”, “Tutar”...).
Seçilen alanlar Seçilen alanların listesi göstergeleri (örnek: "Miktar", "Tutar"...) ve ek alanları (gruplandırma ayrıntıları) (örnek: "Adlandırma.Grup", "Hesap.Kodu"...) içerir.
Mevcut alanlar Gruplandırmaya, filtrelemeye, sıralamaya ve seçilen alanlara eklenebilecek alanların listesi. Kural olarak sorgu seçim alanlarının bir listesiyle 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 ilişkili olmadığını; bunların farklı nesneler olduğunu anlamak önemlidir.

Temel fark, mevcut alanın "DataPath" özelliğine sahip olmamasıdır (örneğin: "Nomenclature.Code", "Quantity"), çünkü bu, yalnızca bulmaya çalışılacak alanın bir tür açıklamasıdır. o anda sorgu örnek alanları arasında bir eşleşmenin gruplamalar, filtreler, sıralamalar veya seçilen alanlar listesine eklenmesi.

Aynı zamanda, mevcut alanlardan birini yukarıdaki listelerden herhangi birine programlı olarak eklemek mümkün değildir, çünkü bir yandan mevcut alan "AddToSelection()" veya "AddToSelectedFields()" gibi yöntemlere sahip değildir. ”ve diğer yandan yukarıdaki listelerden herhangi birine yeni bir öğe eklerken, her zaman alan adıyla örtüşmeyen “DataPath” özelliğini belirtmeniz gerekir (örnek: “Nomenclature.Parent” alanları) ve "Adlandırma.Ebeveyn.Ebeveyn" aynı "Ebeveyn") adını taşır.

4. Rapor oluşturucunun tipik kullanım durumu

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

  1. Yeni bir "Rapor Oluşturucusu" nesnesi oluşturun;
  2. İsteğin metnini “Metin” özelliğine atayın;
  3. Rapor oluşturucu ayarları istek metninde belirtilmemişse “FillSettings()” yöntemini yürütün;
  4. Kullanıcıya rapor oluşturucu ayarlarını değiştirme yeteneği sağlayın;
  5. Gerekirse düzenin rapor oluşturucu tarafından otomatik olarak oluşturulmasını reddedebilir ve "Düzen" özelliğine sabit bir düzen atayabilirsiniz;
  6. Gerekirse, "Tasarım Düzeni" özelliğini standart olanlardan birine veya kendi düzeninize atayabilirsiniz ve rapor oluşturucunun otomatik olarak oluşturulan düzeni sabit bir düzen ile değiştirilmişse, "DesignLayout()" komutunu çalıştırın. yöntem;
  7. “Run()” yöntemini çağırın;
  8. “Output()” yöntemini çağırın.
Oluşturucu = Yeni "Rapor Oluşturucu"; Builder.Text = "İZİN VERİLENİ SEÇ | Şirket CashRemains.StructuralUnit, | SUM(CompanyCashRemains.AmountRemaining) AS Tutar | |FROM | RegisterAccumulations.CompanyCash.Remains(, (StructuralUnit.*)) | birim | |TOPLAM MİKTAR (Tutar) TARAFINDAN | GENEL, | Yapısal Birim"; Builder.FillSettings(); //Burada kullanıcıya rapor oluşturucu ayarlarını değiştirme //fırsatını verebilirsiniz Builder.Layout = GetLayout("CustomLayout");
Builder.AppearanceLayout = GetAppearanceLayout(StandardAppearance.Classic);
Builder.DesignLayout();
Builder.Run();
Builder.Output();

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

Mülk

Tanım

Metin Rapor oluşturucu isteğinin metnini içerir. Rapor oluşturucu sorgu metni “(…)” ayar öğelerini içermiyorsa ayarları sorgu metnine göre otomatik olarak doldurmak için “FillSettings()” yöntemini kullanabilirsiniz.
Başlık Metni Rapor başlığında görüntülenecek metin (örnek: "01/01/2004 tarihi itibariyle stok bakiyeleri", "Ocak 2004 satışları"...).
ÇıktıRaporBaşlığı
OutputTable Başlığı
ÇıktıGenelSonuçlar
ÇıktıAltbilgiTabloları
ÇıktıRaporAyak
Bu özellikler sırasıyla rapor başlığının, tablo başlığının, genel toplamların, tablo altbilgisinin ve rapor altbilgisinin görüntülenip görüntülenmeyeceğini belirler.
ÇıktıAyrıntılı Kayıtlar Tesis, ayrıntılı kayıtların çıktısını zorlamak veya çıktısını yasaklamaktan sorumludur.
Otomatik Ayrıntılı Kayıtlar “Otomatik Ayrıntılı Kayıtlar” özelliği Doğru olarak ayarlanmışsa, her ayrıntılı kayıt yalnızca grup kaydından farklı olması durumunda görüntülenecektir.
Kullanılabilir Alanlar Gruplandırmalara, filtrelere, seçili alanlara ve sıralamaya eklenebilecek alanların listesini içerir.
BoyutlarDizeler
BoyutlarSütunlar
Sırasıyla satırlara ve sütunlara göre gruplamaların bir listesini içerir.
Seçim Rapor oluşturucu için belirtilen filtrelerin listesini içerir.
Seçilen Alanlar seçilen göstergelerin ve gruplandırma ayrıntılarının bir listesini içerir.
Emir sıralama alanlarının bir listesini içerir.
Seçenekler Oluşturucu parametrelerinin bir listesini içerir (“&” karakteri kullanılarak oluşturucu isteğinin gövdesinde belirtilir).
Sonuç Bir rapor oluşturucu sorgusunun yürütülmesinin sonucunu içerir (Sorgu Sonucu türünde bir nesne).

6. Rapor Oluşturucuyu Kullanarak Transkriptleri İşleme

"Şifre Çözme Doldurma" özelliği, çıktı sırasında transkripti doldurmak için üç seçenekten birini içerir:

Seçenek 1: doldurmayın (transkript kullanmayın).

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

3. seçenek: şifre çözme (şifre çözme, tüm gruplamaların değerlerini içeren bir yapıyla doldurulacaktır). Bu durumda, aktarılan yapıyı analiz etmeniz ve belirli eylemleri gerçekleştirmeniz gereken "Şifre Çözme İşlemi" elektronik tablo belge olayını işlemeniz gerekir.

Önemli bir nokta, üçüncü seçenekte oluşturulan elektronik tablo belgesine çıktı vermenin imkansız olmasıdır, çünkü o zaman olay işlenmesi elektronik tablo belge alanının bulunduğu formun modülünde meydana gelen transkriptin işlenmesi imkansızdır. .

Transkriptin doldurulması için üçüncü seçenek kullanılıyorsa, kullanıcı tarafından gerçekleştirilen transkript dikkate alınarak raporun yürütülmesi ve görüntülenmesi için tasarlanan “SetupTranscript()” yöntemini kullanabilirsiniz.

Rapor oluşturucu aynı veya yeni olabilir. Bir transkript yapılandırdığınızda, tüm özel rapor oluşturucu filtreleri kaldırılacak ve orijinal sorgu oluşturucudan yüklenen tüm filtrelerin yanı sıra transkriptteki gruplandırma değerlerine dayalı filtreler eklenecektir.

7. Raporun hazırlanması

“Düzen” özelliği, sonucun bir elektronik tablo belgesine çıktısı alınırken kullanılan düzeni içerir. Tanımsızsa düzen otomatik olarak oluşturulur.

"ReportHeader Layout", "TableHeaderLayout", "DetailedRecordsLayout", "TotalTotalsLayout", "TableFooterLayout" ve "ReportFooterLayout" özellikleri, rapor oluşturucu düzenindeki alanın adını veya sırasıyla rapor başlığını görüntülerken kullanılan bireysel düzenleri içerir. tablo başlığını, ayrıntılı kayıtları, genel toplamları, tablo altbilgisini ve rapor altbilgisini bir elektronik tablo belgesine dönüştürün. Kapsam adları Rapor Oluşturucu düzenindeki adlarla eşleşiyorsa özellikleri doldurmanıza gerek yoktur.

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 görünümü, rapor oluşturucu düzenindeki hücrelere uygulanacaktır.

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

Rapor oluşturucunun “Layout” özelliğine sabit bir düzen atanmışsa, bunu tasarlamak için “DesignLayout()” yöntemini uygulamanız gerekir.

“Boyutların Satırlara Yerleştirilmesi” ö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:

"Boyutların Sütunlara Yerleştirilmesi" ö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 sonunda.
Örnek:

“Toplamları Satırlara Yerleştir” ö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ı kayıtların üstünde).

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

3. seçenek: bodrum katında (sonraki gruplamaların ve ayrıntılı kayıtların altında, bunların üstünde yalnızca gruplandırmanın açıklaması görüntülenir).

4. seçenek: yalnızca bodrum katında (yalnızca sonraki gruplamaların ve ayrıntılı kayıtların altında).

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

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

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

3. seçenek: bodrum katında (sonraki gruplamaların ve ayrıntılı kayıtların sağında, sollarında yalnızca gruplandırmanın açıklaması görüntülenir).

4. seçenek: yalnızca bodrum katında (yalnızca sonraki gruplamaların ve ayrıntılı kayıtların sağında).

Mülk " Boyutların Ayrıntılarını Satırlara Yerleştirme”, gruplandırma ayrıntılarını satıra göre görüntülemek için üç seçenekten birini tanımlar.

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

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

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

Mülk " Ölçümlerin Ayrıntılarını Sütunlara Yerleştirme”, gruplandırma ayrıntılarını sütunlara göre görüntülemek için üç seçenekten birini tanımlar.

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

2. seçenek: boyutlarla birlikte (gruplandırılmış satırlar halinde).
Örnek:

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

8. Rapor Oluşturucu Çıktısı

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

“Output()” yöntemi, sonucu bir elektronik tablo belgesinde veya grafiğinde görüntüler. Çıktısını almak istediğiniz nesneyi belirtmezseniz yeni bir elektronik tablo belgesi oluşturulacaktır.

Yeni bir elektronik tablo belgesine çıktı örneği:
Builder.Output();

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

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

Rapor oluşturucunun sonucunu bir pivot tablo veya pivot grafikte görüntülemek istiyorsanız, "Output()" yöntemini kullanmanıza gerek yoktur, ancak pivot tablonun veya pivot grafiğinin "Veri Kaynağı" özelliğini doldurmanız gerekir. . Kaynak, rapor oluşturucunun sonucu veya rapor oluşturucunun kendisi olabilir. Rapor oluşturucunun sonucu, sorgunun yeniden yürütülmesini gerektirmez ancak rapor oluşturucu, gruplandırmaların kompozisyonunu değiştirmenize olanak tanır.

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

"GetSettings()" yöntemi, rapor oluşturucunun geçerli ayarlarını almanızı ve bunların hangileri olduğunu belirtmenizi sağlar (örnek: yalnızca filtrele, filtrele ve sırala...).

“SetSettings()” yöntemi, rapor oluşturucu ayarlarını yüklemenize olanak tanır ve bunların hangileri olduğunu belirleme olanağı sağlar (örnek: yalnızca filtrele, filtrele ve sırala...).

10. Rapor Oluşturucu Gruplamaları ve Alanları

Rapor oluşturucu boyutu, satırlara veya sütunlara göre gruplandırmadır.

Grubun ana detayları şunlardır:

  • “Ad” (ayrıntı tanımlayıcı) ​​(örnek: “Öğe”, “Karşı Taraf”...),
  • “Temsil” (çıktı sırasında sunum) (örnek: “Satış belgesi”, “Ölçü birimi”...),
  • “PathtoData” (sorgu seçim alanının yolu) (örnek: “Nomenclature”, “DocumentSales.Organization”...)

ve eğer gruplama dizine göre oluşturulmuşsa, o zaman

  • “Boyut Türü” (alan değerlerine göre filtre seçeneklerinden biri: hiyerarşi (öğeler ve gruplar), yalnızca hiyerarşi (yalnızca gruplar) veya öğeler (yalnızca öğeler)).

Ek olarak, bir elektronik tablo belgesine çıktı alınırken kullanılacak düzenleri bir gruba atamanıza olanak tanıyan çeşitli özellikler vardır.

  • “Düzen”, rapor oluşturucu düzenindeki alanın adı veya çıktıyı gruplamak için kullanılan ayrı bir düzendir.
  • “Hiyerarşi Düzeni”, rapor oluşturucu düzenindeki bir alanın adı veya gruplandırma hiyerarşisini görüntülerken kullanılan ayrı bir düzendir.
  • “Alt Bilgi Düzeni”, oluşturucu düzenindeki alanın adı veya grup alt bilgisini görüntülerken kullanılan ayrı bir düzendir.
  • "HierarchyFooterLayout", oluşturucu düzenindeki alanın adı veya bir gruplandırma hiyerarşisinin altbilgisini oluştururken kullanılan ayrı bir düzendir.
  • “Seviye Bodrum Düzenleri” - farklı gruplama seviyeleri için bir dizi bodrum düzeni.
  • “Seviye Düzenleri” - farklı gruplandırma seviyeleri için bir dizi düzen.

Rapor oluşturucu alanı seçilen alanlardan biridir. Ana alan ayrıntıları şunlardır

  • “Ad” (alan tanımlayıcı) ​​(örnek: “Miktar”, “Adlandırma Kodu”, “Dönem”...),
  • “Temsil” (çıkış sırasındaki temsil) (örnek: “Miktar”, “Kod”, “Dönem”...) ve
  • “PathKData” (sorgu seçim alanının yolu) (örnek: “Miktar”, “Adlandırma. Kod”, “Dönem”...).

Gruplandırma veya alan listesiyle çok sayıda eylem gerçekleştirebilirsiniz.

  • “Insert()” - belirtilen konuma bir gruplama/alan ekleyin.
  • “Add()” - listenin sonuna bir gruplama/alan ekleyin.
  • “Index()” - listedeki gruplandırma/alan indeksini alın.
  • “Quantity()” - listedeki gruplamaların/alanların sayısını alın.
  • “Bul()” - listede ada göre bir gruplama/alan bulun.
  • “Clear()“ - gruplamaların/alanların listesini temizler.
  • “Get()” - dizine göre bir gruplama/alan elde edin.
  • “Shift()” - gruplandırmayı/alanı belirtilen konum sayısına göre kaydırın.
  • “Delete()” - listeden bir gruplamayı/alanı kaldırın.

11. Oluşturucu dili

Rapor oluşturucunun kendi dili vardır. Bu, “(…)” yapılarıyla desteklenen normal bir sorgulama dilidir. Bu yapıları kullanarak "FillSettings()" yöntemini bırakabilir ve istek gövdesinde rapor oluşturucuyu yapılandırabilirsiniz.
Bu şekilde “SEÇ”, “NEREDE”, “SİPARİŞ BY”, “ÖZETLE” öğelerini özelleştirebilir ve ayrıca birkaç ilginç şey daha yapabilirsiniz. Bu durumda, oluşturucu isteğinin gövdesi varsayılan ayarlar olacak, yapılar (...) ise mevcut ayarları açıklayacaktır.

Seçim alanı nokta yoluyla bir şey elde etmenize izin veriyorsa alandan sonra “.*” belirtebilirsiniz, böylece kullanıcı alan ayrıntılarını seçebilecektir. Örneğin, "Nomenklatür.*", "Nomenklatür.Kod"a göre sıralamanıza veya "Nomenklatür.Hizmet"e göre seçim yapmanıza olanak tanır. Ancak “Miktar” alanında detay bulunmadığından “Miktar*”ın bir anlamı kalmıyor, yani sadece “Miktar”ı belirtmeniz yeterli.

“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.
“PO SONUÇLARI” yapısında belirtilen alanlar, toplamların gruplandırılmasına yönelik alanların listesini sınırlar.

Şimdi ilginç şeyler için.

İlk önce, isteğin ana metninde kaynak parametrelerindeki yapıları (...) da kullanabilirsiniz. Örneğin, bunun yerine
|DAN
| Kayıt OlBirikimler.Şirketin Kalan Ürünleri.Kalanlar(&Bitiş Tarihi)
belirtmek
|DAN
| Biriktirme Kaydı.Şirket Malları Kalanlar.Kalanlar((&Bitiş Tarihi))
bu durumda “Bitiş Tarihi” 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 bu gerekli değildir, ayrıca "Bitiş Tarihi" alanıyla seçim ayarlanmamışsa, o zaman “Birikim Kaydı, Şirketin Kalan Ürünleri, Kalanlar” tablosunun bu parametresi kesinlikle kullanılmayacaktır.

ikinci olarak istek metninde yer alan kaynaklar “(…)” yapısına yerleştirilerek isteğe bağlı olarak işaretlenebilir. Örneğin şöyle bir istek metni yazarsanız

|SEÇ


| Bir Çok MalŞirketKalan.MiktarKalan OLARAK MiktarByLots
|(SEÇ
| Şirketin Geriye Kalan Ürünleri Geriye Kalan Ürünler İsimlendirme AS İsimlendirme,
| Firmanın Geriye Kalan ÜrünleriKalan.AdetKalan AS Adet,
| Çok sayıda MalŞirketKalan.MiktarKalan OLARAK MiktarByLots)
|DAN
| Kayıt OlBirikimler.Şirketin Kalan Ürünleri.Kalanlar A.Ş. Şirketin Kalan ÜrünleriKalanlar
| (SOL BAĞLANTI Birikimleri Kaydedin. Şirket Mal Lotları. Kaldı. Şirket Mal Lotları Kaldı
| Şirketin Kalan Yazılım ÜrünleriRemainings.Nomenclature = Şirketin Birçok ÜrünüRemainings.Nomenclature)
|SONUÇLAR TOPLAMI(Miktar), SUM(Toplam Miktar) AÇIK
| ORTAKTIR,
| İsimlendirme

daha sonra toplu kayıt ile sol birleştirme yalnızca seçilen alanlar listesinde "QuantityByBatch" alanı mevcutsa gerçekleştirilecektir.

Üçüncü, kaynak parametrelerinde, filtreler belirtilmişse, mümkünse bunları "NEREDE" öğesini kullanarak sorgu sonucuna değil, kaynağın kendisine uygulayacağınızı belirtebilirsiniz. Yani bunun yerine
| RegisterAccumulations.CompanyProductRemains.Remains()

yazmak mantıklı

| Biriktirme Kaydı.Şirket Malları Kalanlar.Kalanlar(, (İsimlendirme.*, Şirket Deposu.*, Sipariş.*, Perakende Fiyatı, İsimlendirme Özellikleri.*))

Kuyu, dördüncü olarak bence en lezzetlisi. Kaynakta “Frekans” parametresi belirtilmişse (ciro elde etmenizi sağlayan tablolar için) “(...)” olarak da ayarlanabilir ve builder sorgu metni ile ufak bir manipülasyon sonucunda , gruplandırmaları dönemlere göre kullanabiliriz.

Örnek: |İZİN VERİLENLERİ SEÇ | Ürün ÇokŞirketCirosu.İsimlendirme, | SUM(Çok ÜrünŞirketCiro.MaliyetGelen) AS MaliyetGelen, | SUM(ŞirketÜrün MiktarıCiro.MaliyetTüketimi) AS MaliyetTüketimi | |DAN | Biriktirme Kaydı.Şirket Malları Çok.Ciro(, (&Frekans), | (Adlandırma.*)) AS Şirket Malları Çok Ciro | |GRUPLA | Çok sayıda MalŞirketCirosu.İsimlendirme | |SONUÇLAR MİKTAR(Gelen Maliyet), AMOUNT(MaliyetHarcamaları) TARAFINDAN | GENEL, | İsimlendirme | |(SEÇ | Şirketin Birçok Ürün Cirosu. İsimlendirme.*, | Kayıt Kuruluşu.*, | Dönem Başı (Dönem, Gün) AS DönemDay, | Dönem Başı (Dönem, Hafta) AS DönemHafta, | Başlangıcı Dönem (Dönem, On Yıl) AS Dönem On Yıl, | Dönem Başı (Dönem, Ay) AS Dönem Ay, | Dönem Başı (Dönem, Çeyrek) AS Dönem Çeyrek, | Dönem Başı (Dönem, Altı Ay) AS Dönem Yarım Yıl , | Dönem Başı(Dönem, Yıl) AS DönemYıl, | SUM(Çok ÜrünŞirketCiro.MaliyetMakbuzu) AS MaliyetMakbuzu, | SUM (Şirket Ürün LotCiro.MaliyetGider) NASIL MaliyetGider) | | | (NEREDE | Şirketin Çok Sayıda Ürün Cirosu. İsimlendirme. *, | Tescil Kurumu. *, | SUM (Şirketin Çok Sayıda Mal Cirosu. Gelen Maliyet) AS Gelir Maliyeti, | SUM (Şirketin Çok Sayıda Ürün Cirosu) . Maliyet Giderleri) AS Maliyet Giderleri) | |(SONUÇLAR | İsimlendirme.*, | Kayıt Kuruluşu.*, | Dönem Başı(Dönem, Gün) AS DönemDay, | Dönem Başı(Dönem, Hafta) AS DönemHafta, | Dönem Başı(Dönem, On Yıl) AS DönemOn Yıl, | Dönem Başı(Dönem, Ay) AS DönemAy, | Dönem Başı(Dönem, Çeyrek) AS DönemÇeyrek, | Dönem Başı(Dönem, Altı Yıl) AS DönemYarı Yıl, | Dönem Başı(Dönem) , Yıl) AS DönemYıl)

Bir uyarı var: Dönemlere göre gruplandırmanın çalışabilmesi için "Frekans" parametresine göre bir filtre eklemeniz gerekir. Bunu manuel olarak yapmamak için, kolaylık olması açısından, rapor oluşturucuyu çalıştırmadan önce programlı olarak ekleyebilir ve çalıştırdıktan sonra kaldırabilirsiniz, böylece kafanızı karıştırmaz, çünkü sağduyu açısından böyle bir şeyi anlamak imkansızdır. bir filtre. Bunun gibi bir şey yapıldı

If Report Builder.AvailableFields.Find("Frekans")<>Tanımsız Sonra Periyodiklik = Tanımsız; If Report Builder.DimensionsRows.Find("PeriodYear")<>Tanımsız VEYA Rapor Builder.DimensionsColumns.Find("PeriodYear")<>Tanımsız Sonra Periyodiklik = 9; endIf; If Report Builder.DimensionsRows.Find("PeriodHalf-Year")<>Tanımsız VEYA Rapor Builder.DimensionsColumns.Find("PeriodHalf-Year")<>Tanımsız Sonra Periyodiklik = 8; endIf; If Report Builder.DimensionsRows.Find("PeriodQuarter")<>Tanımsız VEYA Rapor Builder.DimensionsColumns.Find("PeriodQuarter")<>Tanımsız Sonra Periyodiklik = 7; endIf; If ReportBuilder.DimensionsRows.Find("PeriodMonth")<>Tanımsız VEYA Rapor Builder.DimensionsColumns.Find("PeriodMonth")<>Tanımsız Sonra Periyodiklik = 6; endIf; If Report Builder.Row Dimensions.Find("PeriodDecade")<>Tanımsız VEYA Rapor Builder.DimensionsColumns.Find("PeriodDecade")<>Tanımsız Sonra Periyodiklik = 5; endIf; If ReportBuilder.DimensionsRows.Find("PeriodWeek")<>Tanımsız VEYA Rapor Builder.DimensionsColumns.Find("PeriodWeek")<>Tanımsız Sonra Periyodiklik = 4; endIf; If Report Builder.DimensionsRows.Find("PeriodDay")<>Tanımsız VEYA Rapor Builder.DimensionsColumns.Find("PeriodDay")<>Tanımsız Sonra Periyodiklik = 3; endIf; If ReportBuilder.DimensionsRows.Find("Recorder")<>Tanımsız VEYA ReportBuilder.DimensionsColumns.Find("Recorder")<>Tanımsız VEYA ReportBuilder.SelectedFields.Find("Kaydeden")<>Tanımsız Sonra Periyodiklik = 2; endIf; Frekans ise<>Tanımsız Sonra Seçim FieldBy Periodicity = Report Builder.Selection.Add("Periodicity"); SelectionFieldByPeriodicity.Value = Periyodiklik; SelectionFieldByPeriodicity.Use = Doğru; endIf; endIf; Builder.Run(); Seçim Alanı Periyodikliğe Göre ise<>Tanımsız Sonra Rapor Builder.Selection.Delete(Report Builder.Selection.Index(SelectionFieldByPeriodicity)); endIf;

12. Oluşturucuyu özelleştirin

Kullanıcıya gruplandırma listesini, filtreyi, seçilen alanları veya sıralamayı değiştirme imkanı vermek için “Builder” rapor niteliğini oluşturup rapor formuna bir tablo alanı yerleştirip “Builder.DimensionsRows”, “” belirtmeniz yeterlidir. Veri kaynağı olarak Builder.DimensionsColumns”. , “Builder.Selection”, “Builder.SelectedFields” veya “Builder.Order”.

Ek olarak, veri kaynağı olarak "Builder.AvailableFields"ı da belirtebilir ve böylece öncelikle mevcut alanların listesini görebilir ve ikinci olarak bağlam menüsünü kullanarak alanları gruplandırmalara, seçime, seçili alanlara veya filtrelere ekleyebilirsiniz.

Rapor geliştirirken bazen sorgu dili kullanılarak veri elde edilemeyen bir raporu görüntülemeniz gerekebilir. Bu durum, örneğin verileri hesaplamak için bazı karmaşık algoritmalar kullanıldığında veya rapor çıktısı için gereken veriler bilgi tabanından değil, örneğin harici bir dosyadan elde edildiğinde ortaya çıkabilir. Rapor Oluşturucu, rastgele bir veri kaynağından rapor görüntüleme yeteneği sağlar.
Aşağıdakiler rapor çıktısı için veri kaynağı olarak kullanılabilir:

  • Değer Tablosu,
  • Sonuç Talep Et,
  • Tablolu Belge Hücrelerinin Alanı,
  • tablo kısmı,
  • Biriktirme Kayıt Kayıt Seti,
  • Bilgi RegisterRecordSet,
  • Muhasebe Kayıt DefteriKayıt Kümesi,
  • Hesaplama RegisterRecordSet.
Rapor oluşturucunun rastgele bir veri kaynağına ilişkin bir rapor görüntülemesi için DataSource oluşturucu özelliğinde veri kaynağının açıklamasını ayarlamak yeterlidir. Rapor oluşturucu özelliği DataSource, DataSourceDescription türünde bir değer içerebilir. DataSourceDescription nesnesi veri kaynağının kendisini içerir ve ayrıca veri kaynağının sütunlarının açıklamasını da içerir. Her veri kaynağı sütunu açıklaması şunları içerir:
  • Ad - veri kaynağındaki sütunun adını içerir,
  • DataPath - sütunların birbirine bağımlılığının bir açıklamasını içerir. Veri yolu başka bir alanın veri yolundaki bir nokta aracılığıyla elde edilen sütun, diğer sütunun niteliği olarak kabul edilir. Bir alan, noktayla ayrılmış Temsil kelimesini içeriyorsa, bu alan, temsilin elde edildiği verilere giden yoldan sütunun temsili olarak kabul edilir. Örnekler. "Nomenklatür" sütununun "Nomenklatür" verilerine giden bir yolu varsa ve "Kod" sütununun "Nomenklatür.Kod" verilerine giden bir yolu varsa, bu sütun "Nomenklatür" sütununun bir niteliği olarak kabul edilecektir. "Nomenklatür.Temsil" verisine giden yolu içeren sütun, "Nomenklatür" sütununun bir temsili olarak kabul edilecektir,
  • Alan - bu sütunun rapor alanı olarak kullanılabileceğini gösteren bir işaret,
  • Sipariş - belirli bir sütun için sıralamanın mümkün olduğunu gösteren bir işaret,
  • Seçim, belirli bir sütuna seçim dayatmanın mümkün olduğunun bir işaretidir,
  • Boyut - bu sütunun rapor gruplaması olarak kullanılabileceğini gösteren bir işaret,
  • Toplam - toplamı hesaplamak için bir ifade içeren bir satır. Rapor oluşturucu için bu satırın ifadesi, sorgu dilinde kullanılan toplamı hesaplamak için kullanılan ifadeye karşılık gelir,
Veri kaynağını DataSourceDescription nesnesine ayarladığınızda sütun açıklamaları otomatik olarak oluşturulur ve doldurulur.

DataSourceDescription nesnesi, kendisi için bir açıklamanın oluşturulduğu veri kaynağının iletilebileceği bir parametre olarak bir yapıcıya sahiptir; DataSource özelliği ise iletilen veri kaynağıyla doldurulurken, sütun açıklamaları, sütun açıklamalarından gelen sütunlarla ilgili bilgilerle doldurulacaktır. veri kaynağı.

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

ReportBuilder.DataSource = NewDataSourceDescription(ValueTableResult);

Rapor oluşturucuyla daha fazla çalışmak, rapor oluşturucuyla sorgu modunda çalışmaktan farklı değildir: rapor oluşturucu, hiyerarşik toplamları görüntüleme dışında tam işlevselliğini sağlar. Ayrıca özel bir veri kaynağıyla çalışırken bilgi tabanından veri almak için kullanılacak rapor oluşturucudan sorgu alamazsınız.

Sorgu oluşturucunun özel veri kaynağıyla çalışması, rapor oluşturucunun özel kaynağıyla çalışmasıyla aynıdır.