skd ifadesini hesaplayın. Yararlı Veri Bileşim Şeması Örnekleri

Bir gruplamada önceki kaydın alanlarını nasıl alabileceğinize dair bir örnek ve sadece. Önceki fiyatın değerleri ile mevcut fiyat arasındaki farkı hesaplamak için uygun.

Çözümün özü, SKD ifade dilinin işlevini kullanmaktır. Hesaplama İfadesi() aradığım eklenen hesaplanmış alanda Delta. İşlev aşağıdaki parametrelere sahiptir:

Seçenekler:

  • İfade. Bir çeşit Astar;
  • gruplama. Bir çeşit Astar;
  • Hesaplama Türü. Bir çeşit Astar;
  • Başlama
  • Son. Seçeneklerden birini içeren bir dize;
  • sıralama. Astar;
  • HiyerarşikSıralama;
  • Aynı Değerlerde Sıralama İşlemi

4 ve 5 parametreleriyle ilgileniyoruz ( Başlama ve Son). İfade şöyle görünecek:

isNULL((İFADE HESAPLA("Fiyat", "Önceki", "Önceki") - Fiyat), 0)

Burada alanın önceki değerini hesaplıyoruz Fiyat ve mevcut alan değerini ondan çıkarın Fiyat. Doğal olarak, ilk kayıt için önceki değer hesaplanmayacak ve mevcut alanın değeriyle çıkarmanın sonucu Null olacaktır, bu nedenle her şeyi "temiz" yapmak için Null'u sıfıra dönüştürmek için isNULL(isNull) işlevini kullanırız. .

Elektronik tablo belge hücresine bir değerler tablosu yerleştirin

Bazen belgenin tablolu kısmını veya tablo şeklindeki kısmın satırları olan verileri elektronik tablo belgesinin bir hücresine yerleştirmek gerekir, örneğin şöyle:

Bunu yapmak için işlevi kullanmanız gerekir: ComputeExpressionGroupedValueTable() parametreleri olan:

  • İfade değerlendirilmesi gereken ifadedir. Dize yazın. Bir satır, virgülle ayrılmış birden çok ifade içerebilir. Her ifadeyi, isteğe bağlı AS anahtar sözcüğü ve değer tablosunun sütun adı takip edebilir. Örneğin: "Yüklenici, Satış Hacmi Olarak Tutar(AmountCirnover)".
  • Alan İfadeleriGruplamalar- virgülle ayrılmış alan ifadelerini gruplama. Örneğin, "Yüklenici, Taraf";
  • Kayıt Seçimi ayrıntılı kayıtlara uygulanan bir ifadedir. Örneğin, "DeletionMark = False";
  • Gruplama Seçimi- grup kayıtlarına uygulanan seçim. Örneğin: "Miktar(AmountTurnover) > &Parametre1".

Bunu yapmak için, sonuç tablosunu görüntüleyeceğimiz hesaplanmış bir alan oluşturuyoruz, ardından bu alanı ifade ile kaynaklara yerleştiriyoruz. CalculateExpressionGroupedValueTable("Adlandırma, Miktar")

Sayı sütunları

SKD'de sütunların nasıl numaralandırılabileceğine bir örnek.

Çözümün özü:

  1. Sorgu sonucunun satırlarını belirli bir alt sıralama içinde numaralandırdığımız bir sorgu oluşturuyoruz.
  2. Sonucu bir çapraz tabloda görüntüleme

ÖNEMLİ!

Sorgudaki satırlar numaralandırıldıktan sonra BT'ye yerleştirilmeli ve ardından bu BT'den seçilmelidir, aksi takdirde ACS her şeyi kendi yolunda yapacak ve yanlış alanlar gruplamanın içine düşecektir.

Sonucu almak için ifade ile hesaplanmış bir alan oluşturmanız gerekir. "Çalışan" + Format(NPP, "FH=3; FH=") ve Çalışanı yerleştirmenin kolay olduğu hesaplanan alan adını, ardından alanı yerleştiririz Ad Soyad ifadesi olan bir kaynağa Maksimum(tam ad) ya da sadece Ad Soyad- fark yok

Renk vurgulamalı alternatif gruplar

Mista'da veya aynı 1Cskd.ru'da bir yerde, farklı renklerle gruplar oluşturan çizgilerin nasıl vurgulanacağı sorusu vardı.

Bu, hesaplanan bir alan oluşturularak elde edilir:

Hesaplama İfadesi("Miktar (Farklı Öğeler)", "İlk", "Önceki", "Birlikte") % 2

Adlandırma alanının farklı "gruplamalarının" sayısını sayıyoruz, ProcessingSameOrderValues ​​parametresinin değeri ayarlanarak gruplamalar sayılabilir = "Birlikte"

İkiye bölmenin geri kalanı, bu grubun çift olup olmadığını netleştirecektir, sırasıyla, koşullu bir koşullu tasarım öğesi oluşturuyoruz. Alan = 1

Özellikler bağlamında kalan. Parantez içinde miktar ile satır başına özellikler

Aynı 1CSkd.ru'da, yazarın bir rapor hazırlamak için yardım istediği bir konu vardı, burada sütunlardan birinde sayılarıyla birlikte bir özellik listesi (ayakkabı bedenleri) gerekli. http://1cskd.ru/2013/05/podskazhite-novichku-v-skd/

Bu aynı işlev kullanılarak elde edilir GroupingArray() İle İfadeyi Hesapla

Bu örnekte, işlev şöyle görünür:

ExpressionWith GroupingArray("Nomenclature.Description'ın Özelliği +
""("" + Format(Kalan Sayı,""CH=0"") + "")""",
,
"ValueFilled(FeatureNomenclature)")

Üçüncü parametre bir seçimdir, boş bir "" dizesinin sunulmasından kaçınmanıza izin verir - buna göre, özellikleri olmayan artıkları görmezsiniz

String = Number tuşuyla iki tabloyu birleştirin

Veya bir sayı türü değerinin SKD'de bir dizgeye nasıl dönüştürüleceğinin bir çeşidi

Forumlarda periyodik olarak "Sorguda bir sayıyı dizeye dönüştürme" gibi bir konu görüyorum. ACS üzerinde bir rapor yazıyorsanız ve böyle bir dönüşüm yapmanız gerekiyorsa, istekte herhangi bir hile yazmanıza gerek yoktur.

Bir sayıyı bir dizgeye dönüştürmek için, SKD veri kompozisyon sisteminin ifade dili işlevini kullanmanız yeterlidir. Astar() veya Biçim()

Bir dizeyi sayıya dönüştürmek için işlevi kullanabilirsiniz. Hesapla()

Sayıya göre dizeye göre sırala

Örneğimde, personel dizinini personel numarasına (kod) göre sıralayarak basitçe görüntüleyeceğim.

Sonuç şöyle görünecektir:

Bu, hesaplanmış bir alan oluşturularak ve SKD ifade dili işlevi kullanılarak elde edilir. Hesapla()

  1. Hesaplanmış bir alan oluştur SekmeNumarası, ifade ile: Hesapla(Çalışan.Kodu)
  2. Bu alana göre sırala

aslında bu, SKD ifade dilinin işlevini kullanarak bir dizgenin bir sayıya dönüştürülmesidir. Hesapla()

Ayrıca "skd'deki video eğitimlerine" bakmanızı tavsiye ederim (Google'da kolayca aranır)

Geliştirme yaparken, dönüştürülmüş bir .

Yaklaşan 8.2.14 sürümünün ışığında, veri kompozisyon sisteminin bazı yeni özelliklerini açıklamaya çalışacağım.

Düzenlemeyi kolaylaştırmak için tercihen harici bir raporda veri kompozisyon şemasını açın.

Bir sorgu veri seti ekleriz ve en basit sorguyu manuel olarak veya sorgu oluşturucuyu kullanarak yazarız:

1. ACS'de bir istek oluşturun.

2. ACS'de hesaplanan alanları ayarlayın

3. Ayarlar sekmesinde veri düzenini yapılandırıyoruz

4. 1C Enterprise 8.2.14'ü başlatıyoruz. Raporu açıyoruz. oluşturuyoruz, alıyoruz.

Yeni özelliklerin kendilerinin açıklaması:

1. Geçerli tarih()

Sistem tarihini döndürür. Düzenin düzenini düzenlerken, düzende bulunan tüm ifadelerde CurrentDate() işlevi geçerli tarihin değeriyle değiştirilir.

2. BİLGİSAYAR İFADE()

Sözdizimi:

Hesaplama İfadesi(,)

Tanım:

İşlev, bir ifadeyi bazı gruplandırma bağlamında değerlendirmek için tasarlanmıştır.

İşlev, gruplama seçimini hesaba katar, ancak hiyerarşik seçimleri hesaba katmaz.

İşlev, o gruplamanın grup seçimindeki bir gruplamaya uygulanamaz. Örneğin, Nomenklatür gruplaması seçiminde şu ifadeyi kullanamazsınız: İfadeyi Hesapla ("Sum(SumTurnover)", "TotalTotal") > 1000. Ancak böyle bir ifade hiyerarşik seçimde kullanılabilir.

Bitiş kaydı başlangıç ​​kaydından önce geliyorsa, ayrıntılı verilerin hesaplanması ve toplu fonksiyonların hesaplanması için kayıt olmadığı kabul edilir.

Bir genel toplam için aralık ifadelerini hesaplarken (Gruplama parametresi GrandTotal olarak ayarlanmıştır), ayrıntılı verileri hesaplamak ve toplama işlevlerini hesaplamak için kayıt olmadığı kabul edilir.

Bir işlev ifadesi oluştururken düzen oluşturucu Hesaplama İfadesi, sıralama ifadesi gruplandırmada kullanılamayan alanlar içeriyorsa, işlevin yerini alır Hesaplama İfadesiüzerinde HÜKÜMSÜZ.

Seçenekler

Bir çeşit: Astar. Değerlendirilecek ifade.

Bir çeşit: Astar. İfadenin bağlamında değerlendirileceği gruplandırmanın adını içerir. Gruplama adı olarak boş bir dize kullanılırsa, hesaplama geçerli gruplama bağlamında gerçekleştirilecektir. Gruplama adı olarak GrandTotal dizesi kullanılırsa, hesaplama genel toplam bağlamında gerçekleştirilecektir. Aksi takdirde, hesaplama o ada sahip üst gruplama bağlamında gerçekleştirilecektir.

Örneğin:

Sum(Sales.SumTurnover)/Calculate("Sum(Sales.SumTurnover)", "ToplamToplam")

Bu örnekte sonuç, miktarın alana göre oranı olacaktır. Satış.MiktarCiro girişleri tüm düzende aynı alanın toplamına göre gruplama;

Bir çeşit: Astar. Parametre aşağıdaki değerleri alabilir:

· genel sonuç— ifade, tüm gruplandırma kayıtları için değerlendirilecektir.

· hiyerarşi— ifade, varsa üst hiyerarşik giriş için ve üst hiyerarşik giriş yoksa tüm gruplama için değerlendirilir.

· gruplama— ifade, gruplandırmanın mevcut grup kaydı için değerlendirilecektir.

· GruplamaKaynak Değil— kaynaklara göre bir grup kaydı için bir fonksiyon hesaplanırken, ifade ilk gruplandırmanın ilk grup kaydı için hesaplanacaktır.

Fonksiyonu hesaplarken Hesaplama İfadesi() anlamı olan GruplamaKaynak Değil kaynaklara göre gruplamayan grup kayıtları için fonksiyon, parametre değerinin değere eşit olması durumunda hesaplanacağı şekilde hesaplanır. gruplama.

Veri kompozisyonu düzeni düzeni oluşturucu, bir veri kompozisyonu düzeni düzeni oluştururken, gruplandırmanın gerçekleştirildiği kaynak alanını görüntülerken, düzene işlev kullanılarak hesaplanan bir ifade yerleştirir. Hesaplama İfadesi() , parametrenin belirtilmesi GruplamaKaynak Değil. Kaynağa göre gruplandırılmış diğer kaynaklar için normal kaynak ifadeleri yerleştirilir.

Bir çeşit: Astar. İfadenin toplama işlevlerinin hesaplanacağı parçanın hangi kayıttan başlatılacağını ve toplama işlevlerinin dışındaki alanların değerlerinin hangi kayıttan alınacağını belirtir. Değer aşağıdakilerden biri olabilir:

· İlk (Birinci)

· Son (Son)

· Önceki (Önceki )

· Sonraki (Sonraki )

· Şimdiki şimdiki)

· LimitingValue(Sınır değeri) LimitingValue

Bir çeşit: Astar. İfadenin toplama işlevlerinin hesaplanacağı parçaya hangi kayda devam edileceğini gösterir. Değer aşağıdakilerden biri olabilir:

· İlk (Birinci). İlk gruplama kaydını almanız gerekir. Parantez içindeki kelimeden sonra, sonucu gruplamanın başlangıcından itibaren bir ofset olarak kullanılacak bir ifade belirtebilirsiniz. Ortaya çıkan değer, sıfırdan büyük bir tam sayı olmalıdır. Örneğin, First(3) - gruplamanın başlangıcından itibaren üçüncü kaydı almak.

İlk giriş gruplamanın dışındaysa, giriş olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve First(4) almak istiyorsanız, o zaman kayıt olmadığı kabul edilir.

· Son (Son). En son gruplama girişini almanız gerekir. Parantez içindeki kelimeden sonra, sonucu gruplamanın sonundan itibaren bir ofset olarak kullanılacak bir ifade belirtebilirsiniz. Ortaya çıkan değer, sıfırdan büyük bir tam sayı olmalıdır. Örneğin, Last(3) - gruplamanın sonundan üçüncü kaydı alın.

Son giriş gruplamanın dışındaysa, giriş olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve Last(4) almak istiyorsanız, kayıt olmadığı kabul edilir.

· Önceki (Önceki ). Önceki gruplama girişini almanız gerekir. Parantez içindeki sözcükten sonra, sonucu geçerli gruplama kaydından geriye kayma olarak kullanılacak bir ifade belirtebilirsiniz. Örneğin, Önceki(2) - önceki kayıttan öncekini alın.

Önceki kayıt gruplamanın dışındaysa (örneğin, ikinci gruplandırma kaydı Önceki(3) gerektirir), o zaman ilk gruplandırma kaydı elde edilir.

Gruplama toplamı için bir önceki kayıt alınırken ilk kaydın elde edildiği kabul edilir.

· Sonraki (Sonraki ). Bir sonraki gruplama girişini almanız gerekir. Parantez içindeki sözcükten sonra, sonucu geçerli gruplama kaydından ileri kaydırma olarak kullanılacak bir ifade belirtebilirsiniz. Örneğin, Sonraki(2) - sonraki kayıttan sonrakini alın.

Bir sonraki kayıt gruplamanın ötesine geçerse kayıt olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve üçüncü kayıt Next() alırsa, kayıt olmadığı kabul edilir.

Gruplama toplamı için bir sonraki kayıt alındığında kayıt olmadığı kabul edilir.

· Şimdiki şimdiki). Geçerli girişi almanız gerekir.

Bir gruplandırma toplamı için alındığında, ilk kayıt alınır.

· LimitingValue(Sınır değeri). Belirtilen değere göre kaydı alma ihtiyacı. kelimeden sonra LimitingValue parantez içinde, ilk sıralama alanı olan parçayı başlatmak istediğiniz değeri olan ifadeyi belirtmeniz gerekir.

Kayıt, sıralama alanı değeri belirtilen değerden büyük veya ona eşit olan ilk kayıt olacaktır. Örneğin, sipariş alanı olarak Dönem alanını kullanırsanız ve 01/01/2010 , 02/01/2010 , 03/01/2010 , değerlerine sahipse ve almak istediğiniz LimitValue(DateTime(2010, 1, 15)), daha sonra 02/01/2010 tarihli bir kayıt alınacaktır.

Bir çeşit: Astar. Sıralama kurallarını açıklayan virgülle ayrılmış ifadeler listelenir. Belirtilmezse, sıralama, ifadenin değerlendirildiği gruplandırmayla aynı şekilde gerçekleştirilir. Her ifadeyi bir anahtar kelime takip edebilir artan(artan sıra için), Azalan(azalan düzen için) ve Otomatik düzenleme(referans alanlarını, başvurulan nesneyi sıralamak istediğiniz alanlara göre sıralamak için). Kelime Otomatik düzenleme kelime ile olduğu gibi kullanılabilir artan ve kelime ile Azalan.

Bir çeşit: Astar. parametre ile aynı sıralama. Hiyerarşik kayıtları düzenlemek için kullanılır. Belirtilmezse, düzen oluşturucu parametrede belirtilen sıralamaya göre bir sıralama oluşturur. sıralama.

Bir çeşit: Astar. Aynı sıralama değerine sahip birden çok kayıt varsa, önceki veya sonraki kaydı belirlemek için bir kural belirtir:

· Ayrı ayrıönceki ve sonraki kayıtları belirlemek için bir sıralı kayıt dizisinin kullanıldığını gösterir. Varsayılan değer.

· Birlikte birlikte) sıralama ifadelerinin değerlerine göre önceki ve sonraki kayıtların belirlendiğini belirtir.

Örneğin, elde edilen dizi tarihe göre sıralanırsa:

tarih Ad Soyad Anlam
1 01 Ocak 2001

Ivanov M.

10
2 02 Ocak 2001 Petrov S. 20
3 03 Ocak 2001 Sidorov R. 30
4 04 Ocak 2001 Petrov S. 40

Ayrı ayrı, sonra:

§ 3. girişe bir önceki giriş 2. giriş olacaktır.

şimdiki şimdiki(sırasıyla, parametreler Başlama ve Son), sonra kayıt 2 için bu parça bir kayıt 2'den oluşacaktır. İfade 20'ye eşit olacaktır.

parametre değeri ise Bir arada, sonra:

§ 3. girişe bir önceki giriş 1. giriş olacaktır.

§ hesaplanan parça şu şekilde tanımlanırsa şimdiki şimdiki(sırasıyla, parametreler Başlama ve Son), sonra kayıt 2 için bu parça kayıt 2 ve 3'ten oluşacaktır. CalculateExpression("Sum(Value)", Current, Current) 50'ye eşit olacaktır.

Şuna eşit bir parametre değeri belirtirken Bir arada, parametrelerde Başlama ve Son pozisyonlar için bir ofset belirleyemezsiniz İlk , Son , Önceki , Sonraki.

CalculateExpression("Miktar(AmountTurnover)", "İlk", "Mevcut")

Bir önceki satırdaki gruplama değerini almak istiyorsanız aşağıdaki ifadeyi kullanabilirsiniz:

CalculateExpression("Ders", "Önceki")

Liste yeniözellikleri:

ComputeExpressionGroupedArray(,) -

İşlev, her bir öğesi, belirtilen alana göre gruplandırma için ifadenin değerlendirilmesinin sonucunu içeren bir dizi döndürür.

ComputeExpressionGroupedValueTable(,) -

İşlev, her satırı belirtilen alana göre gruplandırma için ifadelerin değerlendirilmesinin sonucunu içeren bir değerler tablosu döndürür.

Değer Dolduruldu() - Değer, bu türün varsayılan değerinden farklıysa, NULL dışında, bir boş başvuru dışında, Undefined dışındaysa True döndürür. Boole değerleri NULL'a karşı test edilir. Dizeler, boşluk olmayan karakterler için kontrol edilir.

Biçim(, ) - Geçirilen değerin biçimlendirilmiş dizesini alın. Biçim dizisi, 1C:Enterprise sisteminin biçim dizisine göre ayarlanır.

alt dize(, , ) - Bu işlev, bir dizeden bir alt dize seçmek için tasarlanmıştır.

IP uzunluğu() - İşlev, bir dizenin uzunluğunu belirlemek için tasarlanmıştır. Parametre, bir dize türü ifadesidir

Astar() - Bir dizi parametre olarak geçirilirse, işlev, dizinin tüm öğelerinin "; " karakterleriyle ayrılmış dize temsillerini içeren bir dize döndürür. Bir değerler tablosu parametre olarak geçirilirse, işlev, değerler tablosunun tüm satırlarının dize temsillerini içeren bir dize döndürür ve her satırın hücre temsilleri "; " karakterleriyle ve satırlarla ayrılır. yeni satır karakteriyle ayrılır. Herhangi bir öğenin boş bir dize temsili varsa, temsili yerine bir dize görüntülenir.

  • 1C-Bitrix
  • İş yazılımlarının en önemli alanlarından biri raporlamadır. Mevcut bir raporu işletmenin (ve mevzuatın) değişen ihtiyaçlarına göre uyarlamanın veya yeni bir rapor hazırlamanın ne kadar kolay olduğu (mecazi anlamda değil!) Vergi dairesi için bir rapor olsun, işletmenin kaderine bağlı olabilir. veya mal talebinin mevsime ve diğer faktörlere bağımlılığının bir diyagramı. Sistemden doğru verileri kolayca çıkarmanıza, anlaşılır bir biçimde sunmanıza ve son kullanıcının verileri yeni bir ışık altında görmek için standart raporu yeniden yapılandırmasına olanak tanıyan güçlü ve esnek bir raporlama sistemi - bu, her kullanıcının iş sistemi için çaba sarf etmelidir.

    1C:Enterprise platformunda, raporların oluşturulmasından Veri Kompozisyon Sistemi (kısaca ACS) adı verilen bir mekanizma sorumludur. Bu yazıda, ACS mekanizmasının fikri ve mimarisi ve yetenekleri hakkında kısa bir açıklama yapmaya çalışacağız.


    ACS, raporların bildirimsel açıklamasına dayanan bir mekanizmadır. ACS, karmaşık bir yapıya sahip raporlar oluşturmak ve bilgileri görüntülemek için tasarlanmıştır. Bu arada, raporlar geliştirmeye ek olarak, ACS mekanizması dinamik bir listede 1C:Enterprise'da da kullanılır, zengin işlevselliğe sahip liste bilgilerini görüntülemek için bir araç (düz ve hiyerarşik listeleri görüntüleme, koşullu satır biçimlendirme, gruplama vb.) .

    biraz tarih

    1C:Enterprise 8 platformunun ilk sürümü olan sürüm 8.0'da raporlar aşağıdaki gibi yapılmıştır:
    1. 1C sorgu dilinde bir veya daha fazla sorgu yazılmıştır (SQL benzeri dil, aşağıda bununla ilgili daha fazla bilgi).
    2. Yürütülen sorguların sonuçlarını bir elektronik tablo belgesine veya grafiğe aktaran kod yazılmıştır. Kod, bir sorguda yapılamayan işleri de yapabilir - örneğin, yerleşik 1C dilini kullanarak değerleri hesapladı.
    Yaklaşım basittir, ancak en uygun olanı değildir - minimum görsel ayar vardır, her şeyin elden ele programlanması gerekir. Ve tamamen yeni 1C:Enterprise 8 platformunun o zamanki kozlarından biri, uygulama çözümünde özellikle görsel tasarım nedeniyle manuel olarak yazılması gereken kod miktarının en aza indirilmesiydi. Raporlama mekanizmasında da aynı yolu izlemek mantıklı olacaktır. Bu, yeni bir mekanizma geliştirilerek yapıldı - Veri Kompozisyon Sistemi.

    ACS'nin temelini oluşturan fikirlerden biri, hem geliştirici hem de son kullanıcı tarafından kullanılabilen raporların esnekliği ve özelleştirilmesiydi. İdeal olarak, son kullanıcıya geliştiriciyle aynı rapor tasarım araçlarına erişim vermek isteriz. Tek bir araç setini herkesin kullanımına sunmak mantıklı olacaktır. Eh, araçlar son kullanıcının katılımını içerdiğinden, bunlarda programlama kullanımının minimuma indirilmesi (en iyisi, tamamen ortadan kaldırılması) ve görsel ayarların maksimum düzeyde kullanılması gerektiği anlamına gelir.

    Sorunun formülasyonu

    Geliştirme ekibinden önceki görev şuydu - algoritmik (yani kod yazarak) değil, raporlar oluşturmaya yönelik bildirimsel bir yaklaşıma dayalı bir raporlama sistemi yapmak. Ve sorunun başarıyla çözüldüğüne inanıyoruz. Deneyimlerimize göre, gerekli raporlamanın yaklaşık %80'i, tek bir kod satırı olmadan (hesaplanan alanlar için formül yazmak dışında), çoğunlukla görsel ayarlar aracılığıyla ACS kullanılarak uygulanabilir.
    ACS'nin ilk versiyonunun geliştirilmesi yaklaşık 5 adam-yılı aldı.

    İki dil

    Raporların oluşturulmasında iki dil yer alır. Biri, verileri getirmek için kullanılan sorgu dilidir. İkincisi, sistemin çeşitli bölümlerinde, örneğin veri kompozisyonu ayarlarında kullanılan ifadeleri, özel alan ifadelerini tanımlamak için yazmak üzere tasarlanmış veri kompozisyonu ifade dilidir.

    Sorgu dili

    Sorgu dili SQL tabanlıdır ve SQL bilenler tarafından kolayca öğrenilir. Talep örneği:

    Standart SQL sorgu bölümlerinin analoglarını görmek kolaydır - SEÇ, FROM, GROUP BY, ORDER BY.

    Aynı zamanda, sorgu dili, finansal ve ekonomik görevlerin özelliklerini yansıtmayı ve uygulamalı çözümler geliştirme çabalarında maksimum azalmayı amaçlayan önemli sayıda uzantı içerir:

    • Alanları bir nokta aracılığıyla referans alma. Herhangi bir tablonun alanları referans türündeyse (başka bir tablonun nesnelerine bağlantıları saklarlar), geliştirici bunlara sorgu metninde "." aracılığıyla başvurabilir, ancak bu tür bağlantıların iç içe geçme düzeylerinin sayısı bunlarla sınırlı değildir. sistem (örneğin, Müşteri Siparişi.Sözleşme.Kuruluş. Telefon).
    • Sonuçların çok boyutlu ve çok düzeyli oluşumu. Toplamlar ve alt toplamlar, gruplama ve hiyerarşi dikkate alınarak oluşturulur, ara toplamlar toplanarak keyfi bir sırayla seviyeler atlanabilir, toplamların zaman boyutlarına göre doğru yapılandırılması sağlanır.
    • Sanal tablolar için destek. Sistem tarafından sağlanan sanal tablolar, karmaşık sorgular yazmaya gerek kalmadan çoğu uygulama görevi için neredeyse hazır veriler elde etmenizi sağlar. Böylece sanal bir tablo, belirli bir zaman noktasındaki dönemler bağlamında mal dengesi hakkında veri sağlayabilir. Aynı zamanda, sanal tablolar, örneğin önceden hesaplanmış toplamlar vb. gibi depolanan bilgilerden en iyi şekilde yararlanır.
    • Geçici tablolar Sorgu dili, sorgularda geçici tablolar kullanmanıza olanak tanır. Onların yardımıyla sorguların performansını iyileştirebilir, bazı durumlarda kilit sayısını azaltabilir ve sorgu metninin daha kolay okunmasını sağlayabilirsiniz.
    • toplu istekler. Geçici tablolarla daha rahat çalışma için, sorgu dili toplu sorgularla çalışmayı destekler - bu nedenle, geçici bir tablonun oluşturulması ve kullanımı tek bir sorguya yerleştirilir. Toplu istek, noktalı virgül (";") ile ayrılmış bir dizi istektir. Partideki istekler birbiri ardına yürütülür. Bir toplu sorgu yürütmenin sonucu, kullanılan yönteme bağlı olarak, toplu işin son sorgusu tarafından döndürülen sonuç veya toplu iş isteklerinin takip ettiği sırayla tüm toplu isteklerin sonuçlarının bir dizisi olacaktır. .
    • Referans alan görünümleri alınıyor. Her nesne tablosunun (bir dizinin veya belgenin depolandığı) bir sanal alanı vardır - "Temsil". Bu alan, nesnenin metinsel bir temsilini içerir ve muhabirin işini kolaylaştırır. Bu nedenle, bir belge için, bu alan tüm önemli bilgileri içerir - belge türünün adı, numarası ve tarihi (örneğin, "07/06/2017 17:49:14 tarihinden itibaren Satış 000000003"), geliştiriciyi şu adresten kaydeder: hesaplanmış bir alan yazma.
    • ve benzeri.
    Sorgu motoru, adına sorgunun yürütüldüğü kullanıcının rollerini (yani, kullanıcı yalnızca görme hakkına sahip olduğu verileri görecek) ve işlevsel seçenekleri (yani, uygulama çözümü işlevinde yapılandırılan).

    SKD için özel sorgu dili uzantıları da vardır. Genişletme, küme parantezleri içine alınmış ve doğrudan istek metnine yerleştirilmiş özel sözdizimi talimatları kullanılarak gerçekleştirilir. Uzantılar yardımıyla geliştirici, raporu özelleştirerek son kullanıcının hangi işlemleri gerçekleştirebileceğini belirler.

    Örneğin:

    • SEÇ. Bu cümle, kullanıcının çıktı için seçebileceği alanları açıklar. Bu anahtar kelimeden sonra, ana sorgu seçim listesinden özelleştirmeye açık olacak alanların takma adları virgülle ayrılmış olarak listelenir. Örnek: (İsimlendirme, Depo SEÇİN)
    • NEREDE. Kullanıcının seçimi uygulayabileceği alanları tanımlar. Bu teklif, tablo alanlarını kullanır. Seçim listesi alanı takma adlarının kullanımına izin verilmez. Her birleşim parçası kendi WHERE öğesini içerebilir. Örnekler: (WHERE Nomenclature.*, Warehouse ), (WHERE Document.Date >= &StartDate, Document.Date<= &ДатаКонца}
    • ve benzeri.
    Uzantıları kullanmaya bir örnek:

    Veri Bileşimi İfade Dili

    Veri kompozisyonu ifade dili, özellikle özel alan ifadelerini tanımlamak için kullanılan ifadeleri yazmak için tasarlanmıştır. ACS, kendi ifadelerinizi veya seçim koşullarıyla (SQL'deki CASE'e benzer) seçenek kümelerini kullanarak bir raporda özel alanlar tanımlamanıza olanak tanır. Özel alanlar, hesaplanan alanlara benzer. Hem yapılandırıcıda hem de 1C:Enterprise modunda ayarlanabilirler, ancak ortak modüllerin işlevleri özel alan ifadelerinde kullanılamaz. Bu nedenle, özel alanlar geliştiriciden çok kullanıcı içindir.

    Örnek:

    ACS hakkında bir rapor oluşturma süreci

    Rapor oluştururken verilerin raporda nasıl görüntüleneceğini tanımlayan bir layout oluşturmamız gerekiyor. Bir veri kompozisyon şemasına dayalı bir düzen oluşturabilirsiniz. Veri oluşturma şeması, rapora sağlanan verilerin özünü açıklar (verilerin nereden alınacağı ve bileşimini nasıl kontrol edebileceğiniz). Veri kompozisyon şeması, her türlü raporun oluşturulabileceği temeldir. Veri kompozisyon şeması şunları içerebilir:
    • veri oluşturma sistemi talimatlarını içeren talep metni;
    • birkaç veri setinin tanımı;
    • mevcut alanların ayrıntılı bir açıklaması;
    • birkaç veri seti arasındaki ilişkilerin tanımı;
    • veri toplama parametrelerinin tanımı;
    • alan yerleşimlerinin ve gruplamaların tanımı;
    • ve benzeri.

    Örneğin, veri kompozisyon şemasına bir veri seti olarak bir sorgu ekleyebilir ve grafiksel olarak rastgele karmaşıklıkta bir sorgu oluşturmanıza izin veren sorgu oluşturucusunu çağırabilirsiniz:

    Sorgu oluşturucuyu çalıştırmanın sonucu, sorgunun metni olacaktır (1C:Enterprise sorgu dilinde). Bu metin gerekirse manuel olarak ayarlanabilir:

    Bir veri kompozisyon şemasında birkaç veri seti olabilir, veri setleri bir düzende rastgele bir şekilde bağlanabilir, hesaplanan alanlar eklenebilir, rapor parametreleri ayarlanabilir, vb. 1C:Enterprise'daki sorgu mekanizmasının ilginç bir özelliğinden bahsetmeye değer. Sorgular sonunda, uygulamanın doğrudan birlikte çalıştığı DBMS'ye özgü bir SQL lehçesine çevrilir. Genel olarak, DBMS sunucularının yeteneklerini maksimumda kullanmaya çalışıyoruz (yalnızca 1C:Enterprise platformu tarafından desteklenen tüm DBMS'de aynı anda kullanılabilen yetenekleri kullanmamız gerçeğiyle sınırlıyız - MS SQL, Oracle, IBM DB2 , PostgreSQL). Böylece hesaplanan alanlarda sorgu düzeyinde sadece SQL'e çevrilen fonksiyonları kullanabiliriz.

    Ancak, veri oluşturma şeması düzeyinde, raporların yeteneklerini büyük ölçüde genişleten yerleşik 1C geliştirme dilinde (bizim tarafımızdan yazılanlar dahil) özel alanlar ekleyebilir ve bunlarda işlevler kullanabiliriz. Teknik olarak şuna benziyor - SQL'e çevrilebilen her şey SQL'e çevrilir, sorgu DBMS düzeyinde yürütülür, sorgu sonuçları 1C uygulama sunucusunun belleğine yerleştirilir ve ACS değerleri hesaplar. formülleri 1C dilinde yazılmış her kayıt için hesaplanmış alanların sayısı.


    Özel Alanlar Ekleme

    Rapora istediğiniz sayıda tablo ve grafik ekleyebilirsiniz:


    Rapor Tasarımcısı


    Çalışma zamanında rapor

    ACS yardımıyla kullanıcı, rapora karmaşık seçimler (sorguya doğru yerlere eklenecektir), koşullu tasarım (farklı biçimlendirmenize izin veren - yazı tipi, renk vb. - çıktı alanlarına bağlı olarak çıktı alanları ekleyebilir. değerler) ve çok daha fazlası .

    Bir rapor oluşturma ve oluşturma sürecini aşağıdaki gibi kısaca açıklayın:

    • Geliştirici, tasarımcının yardımıyla tasarım zamanında (veya kod yardımıyla çalışma zamanında) veri düzeni şemasını tanımlar:
      • İstek/talep metni
      • Hesaplanan alanların açıklaması
      • Sorgular arasındaki ilişkiler (birden fazla varsa)
      • Rapor Seçenekleri
      • Varsayılan ayarları
      • Vb.
    • Yukarıdaki ayarlar düzene kaydedilir
    • Kullanıcı bir rapor açar
      • Muhtemelen ek ayarlar yapar (örneğin, parametre değerlerini değiştirir)
      • "Oluştur" düğmesine basar
    • Kullanıcı ayarları, geliştirici tarafından tanımlanan veri oluşturma şemasına uygulanır.
    • Veri bileşiminin, verilerin nereden alınacağına ilişkin talimatları içeren bir ara düzeni oluşturulur. Özellikle layoutta belirtilen sorgular düzeltilir. Bu nedenle, raporda kullanılmayan alanlar istekten çıkarılır (bu, alınan veri miktarını en aza indirmek için yapılır). Hesaplanan alan formüllerinde kullanılan tüm alanlar sorguya eklenir.
    • Veri oluşturma işlemcisi kasaya dahildir. Düzen işlemcisi sorguları yürütür, veri kümelerini bağlar, hesaplanan alanların ve kaynakların değerlerini hesaplar, gruplama gerçekleştirir. Tek kelimeyle, DBMS düzeyinde yapılmayan tüm hesaplamaları yapar.
    • Veri çıkış işlemcisi, yürütme için bir sorgu başlatır ve alınan verileri bir elektronik tablo belgesine, çizelgeye vb.


    ACS mekanizması tarafından bir rapor oluşturma süreci

    Sunucudan istemci uygulamasına aktarılan raporlama verilerinin miktarını en aza indirmeye çalışıyoruz. Bir elektronik tablo belgesindeki verileri görüntülerken, bir elektronik tablo belgesini açarken, sunucudan yalnızca kullanıcının belgenin başında gördüğü satırları aktarırız. Kullanıcı belgenin satırları boyunca hareket ettikçe, eksik veriler sunucudan istemciye indirilir.

    Kullanıcı ayarları

    Tüm ACS araçları hem geliştirici hem de son kullanıcı tarafından kullanılabilir. Ancak uygulama, son kullanıcının genellikle alet yeteneklerinin bolluğundan korktuğunu göstermiştir. Ayrıca, çoğu durumda, son kullanıcının ayarların tüm gücüne ihtiyacı yoktur - bir veya iki rapor parametresini (örneğin, dönem ve karşı taraf) ayarlamaya hızlı erişimi olması yeterlidir. Platformun belirli bir sürümünden başlayarak, rapor geliştiricisi, kullanıcı için hangi rapor ayarlarının mevcut olduğunu işaretleme fırsatına sahiptir. Bu, "Kullanıcı ayarlarına dahil et" onay kutusu kullanılarak yapılır. Ayrıca, rapor ayarlarında artık üç değerden birini alan bir "Görüntüleme modu" bayrağı var:
    • Hızlı erişim. Ayar, doğrudan rapor penceresinin en üstünde görüntülenecektir.
    • Sıradan. Ayar, "Ayarlar" düğmesi aracılığıyla kullanılabilir olacaktır.
    • Müsait değil. Ayar, son kullanıcı tarafından kullanılamayacak.


    Tasarım zamanında görüntüleme modunu ayarlama


    Ayarı çalışma zamanında Hızlı Erişim modunda görüntüleyin (Oluştur düğmesinin altında)

    Kalkınma planları

    ACS'nin geliştirilmesinde bizim için önceliklerden biri kullanıcı ayarlarının basitleştirilmesidir. Deneyimlerimiz, bazı son kullanıcılar için kullanıcı ayarlarıyla çalışmanın hala ciddi bir iş olduğunu gösteriyor. Bunu dikkate alıyor ve bu doğrultuda çalışıyoruz. Buna göre, geliştiricilerin ACS ile çalışması da kolaylaşacaktır, çünkü daha önce olduğu gibi, hem geliştirici hem de son kullanıcı için raporların ayarlanması için tek bir araç seti sağlamak istiyoruz.

    Yaklaşan 8.2.14 sürümünün ışığında, veri kompozisyon sisteminin bazı yeni özelliklerini açıklamaya çalışacağım.

    Düzenlemeyi kolaylaştırmak için tercihen harici bir raporda veri kompozisyon şemasını açın.

    Bir sorgu veri seti ekleriz ve en basit sorguyu manuel olarak veya sorgu oluşturucuyu kullanarak yazarız:

    1. ACS'de bir istek oluşturun.

    2. ACS'de hesaplanan alanları ayarlayın

    3. Ayarlar sekmesinde veri düzenini yapılandırıyoruz

    4. 1C Enterprise 8.2.14'ü başlatıyoruz. Raporu açıyoruz. oluşturuyoruz, alıyoruz.

    Yeni özelliklerin kendilerinin açıklaması:

    1. Geçerli tarih()

    Sistem tarihini döndürür. Düzenin düzenini düzenlerken, düzende bulunan tüm ifadelerde CurrentDate() işlevi geçerli tarihin değeriyle değiştirilir.

    2. BİLGİSAYAR İFADE()

    Sözdizimi:

    Hesaplama İfadesi(<Выражение>, <Группировка>, <ОбластьВычисления>, <Начало>, <Конец>, <Сортировка>, <ИерархическаяСортировка>, <ОбработкаОдинаковыхЗначенийПорядка>)

    Tanım:

    İşlev, bir ifadeyi bazı gruplandırma bağlamında değerlendirmek için tasarlanmıştır.

    İşlev, gruplama seçimini hesaba katar, ancak hiyerarşik seçimleri hesaba katmaz.

    İşlev, o gruplamanın grup seçimindeki bir gruplamaya uygulanamaz. Örneğin, Nomenklatür gruplamasının seçiminde, İfade Hesapla ("Sum(SumTurnover)", "TotalTotal") > 1000 ifadesini kullanamazsınız. Ancak hiyerarşik seçimde böyle bir ifade kullanılabilir.

    Bitiş kaydı başlangıç ​​kaydından önce geliyorsa, ayrıntılı verilerin hesaplanması ve toplu fonksiyonların hesaplanması için kayıt olmadığı kabul edilir.

    Genel toplam için aralık ifadeleri hesaplanırken (Gruplama parametresi GrandTotal olarak ayarlanır), ayrıntılı verilerin hesaplanması ve toplama fonksiyonlarının hesaplanması için kayıt olmadığı kabul edilir.

    Düzen oluşturucu, İfade Hesapla işlevinin ifadesini oluştururken, sıralama ifadesi gruplandırmada kullanılamayan alanlar içeriyorsa, İfade Hesapla işlevini NULL ile değiştirir.

    Seçenekler

    <Выражение>

    Tür: Dize. Değerlendirilecek ifade.

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

    Tür: Dize. İfadenin bağlamında değerlendirileceği gruplandırmanın adını içerir. Gruplama adı olarak boş bir dize kullanılırsa, hesaplama geçerli gruplama bağlamında gerçekleştirilecektir. Gruplama adı olarak GrandTotal dizesi kullanılırsa, hesaplama genel toplam bağlamında gerçekleştirilecektir. Aksi takdirde, hesaplama o ada sahip üst gruplama bağlamında gerçekleştirilecektir.

    Örneğin:

    Toplam(Satış.ToplamDevir)/Hesapla(“Toplam(Satış.ToplamDevir)”, “ToplamToplam”)

    Bu örnekte, sonuç, gruplandırma kaydının Sales.AmountVolume alanı için tutarın tüm yerleşimdeki aynı alanın tutarına oranı olacaktır;

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

    Tür: Dize. Parametre aşağıdaki değerleri alabilir:

    • GeneralTotal - ifade, tüm gruplandırma kayıtları için hesaplanacaktır.
    • Hiyerarşi - ifade, varsa üst hiyerarşik giriş için ve üst hiyerarşik giriş yoksa tüm gruplandırma için değerlendirilir.
    • Gruplandırma - ifade, geçerli gruplandırma kaydı için değerlendirilecektir.
    • GroupingNotResource - kaynaklara göre bir grup kaydı için bir fonksiyon hesaplanırken, ifade orijinal gruplandırmanın ilk grup kaydı için hesaplanacaktır.

    Fonksiyonu hesaplarken Hesaplama İfadesi() kaynaklara göre gruplandırma olmayan grup kayıtları için GroupingNotResource değeriyle, işlev, parametrenin değeri Gruplama değerine eşit olduğunda hesaplanacağı şekilde değerlendirilir.

    Veri kompozisyonu düzeni düzeni oluşturucu, bir veri kompozisyonu düzeni düzeni oluştururken, gruplandırmanın gerçekleştirildiği kaynak alanını görüntülerken, düzene işlev kullanılarak hesaplanan bir ifade yerleştirir. Hesaplama İfadesi(), GroupingNotResource parametresini belirterek. Kaynağa göre gruplandırılmış diğer kaynaklar için normal kaynak ifadeleri yerleştirilir.

    <Начало>

    Tür: Dize. İfadenin toplama işlevlerinin hesaplanacağı parçanın hangi kayıttan başlatılacağını ve toplama işlevlerinin dışındaki alanların değerlerinin hangi kayıttan alınacağını belirtir. Değer aşağıdakilerden biri olabilir:

    <Конец>

    Tür: Dize. İfadenin toplama işlevlerinin hesaplanacağı parçaya hangi kayda devam edileceğini gösterir. Değer aşağıdakilerden biri olabilir:

    • İlk (Birinci). İlk gruplama kaydını almanız gerekir. Parantez içindeki kelimeden sonra, sonucu gruplamanın başlangıcından itibaren bir ofset olarak kullanılacak bir ifade belirtebilirsiniz. Ortaya çıkan değer, sıfırdan büyük bir tam sayı olmalıdır. Örneğin, First(3) - gruplamanın başlangıcından itibaren üçüncü kaydı almak.

    İlk giriş gruplamanın dışındaysa, giriş olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve First(4) almak istiyorsanız, o zaman kayıt olmadığı kabul edilir.

    • Son (Son). En son gruplama girişini almanız gerekir. Parantez içindeki kelimeden sonra, sonucu gruplamanın sonundan itibaren bir ofset olarak kullanılacak bir ifade belirtebilirsiniz. Ortaya çıkan değer, sıfırdan büyük bir tam sayı olmalıdır. Örneğin, Last(3) - Gruplandırmanın sonundaki üçüncü kaydı alır.

    Son giriş gruplamanın dışındaysa, giriş olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve Son(4)'ü almak istiyorsanız, kayıt olmadığı kabul edilir.

    • Öncesi. Önceki gruplama girişini almanız gerekir. Parantez içindeki sözcükten sonra, sonucu geçerli gruplama kaydından geriye kayma olarak kullanılacak bir ifade belirtebilirsiniz. Örneğin, Önceki(2) - önceki kayıttan öncekini alın.

    Önceki kayıt gruplamanın dışındaysa (örneğin, ikinci gruplandırma kaydının Önceki(3) olması gerekir), o zaman ilk gruplandırma kaydı elde edilir.

    Gruplama toplamı için bir önceki kayıt alınırken ilk kaydın elde edildiği kabul edilir.

    • Sonraki (Sonraki). Bir sonraki gruplama girişini almanız gerekir. Parantez içindeki sözcükten sonra, sonucu geçerli gruplama kaydından ileri kaydırma olarak kullanılacak bir ifade belirtebilirsiniz. Örneğin, Sonraki(2) - sonraki kayıttan sonrakini alın.

    Bir sonraki kayıt gruplamanın ötesine geçerse kayıt olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve üçüncü kayıt Sonraki() alırsa, kayıt olmadığı kabul edilir.

    Gruplama toplamı için bir sonraki kayıt alındığında kayıt olmadığı kabul edilir.

    • Şimdiki şimdiki). Geçerli girişi almanız gerekir.

    Bir gruplandırma toplamı için alındığında, ilk kayıt alınır.

    • Sınır değeri. Belirtilen değere göre kaydı alma ihtiyacı. Parantez içindeki RestrictingValue kelimesinden sonra, ilk sıralama alanı olan parçayı başlatmak istediğiniz değeri ile ifadeyi belirtmeniz gerekir.

    Kayıt, sıralama alanı değeri belirtilen değerden büyük veya ona eşit olan ilk kayıt olacaktır. Örneğin, dönem alanı sipariş alanı olarak kullanılıyorsa ve 01/01/2010, 02/01/2010, 03/01/2010 değerlerine sahipse ve LimitValue(DateTime(2010) almak istiyorsanız , 1, 15)), ardından 02/01 tarihli bir kayıt alınacaktır. 2010.

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

    Tür: Dize. Sıralama kurallarını açıklayan virgülle ayrılmış ifadeler listelenir. Belirtilmezse, sıralama, ifadenin değerlendirildiği gruplandırmayla aynı şekilde gerçekleştirilir. Her ifadeden sonra, Artan (artan düzende sıralamak için), Azalan (azalan düzende sıralamak için) ve Otomatik Sırala (başvurulan alanları, başvurulan nesneyi sıralamak istediğiniz alanlara göre sıralamak için) anahtar sözcüklerini belirtebilirsiniz. AutoOrder kelimesi hem Artan hem de Azalan kelimelerle kullanılabilir.

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

    Tür: Dize. Sıralama seçeneğine benzer. Hiyerarşik kayıtları düzenlemek için kullanılır. Belirtilmezse, düzen oluşturucu, Sort parametresinde belirtilen sıralamaya göre bir sıralama oluşturur.

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

    Tür: Dize. Aynı sıralama değerine sahip birden çok kayıt varsa, önceki veya sonraki kaydı belirlemek için bir kural belirtir:

    • Ayrı ayrı, önceki ve sonraki kayıtları belirlemek için bir sıralı kayıt dizisinin kullanıldığı anlamına gelir. Varsayılan değer.
    • Birlikte (Birlikte) önceki ve sonraki kayıtların sıralama ifadelerinin değerlerine göre belirlenmesi anlamına gelir.

    Örneğin, elde edilen dizi tarihe göre sıralanırsa:

    tarih Ad Soyad Anlam
    1 01 Ocak 2001 Ivanov M. 10
    2 02 Ocak 2001 Petrov S. 20
    3 03 Ocak 2001 Sidorov R. 30
    4 04 Ocak 2001 Petrov S. 40

    Parametre değeri Ayrı ise, o zaman:

    § 3. girişe bir önceki giriş 2. giriş olacaktır.

    § hesaplama parçası Akım, Akım (sırasıyla Başlangıç ​​ve Bitiş parametreleri) olarak tanımlanmışsa, o zaman kayıt 2 için bu parça bir kayıt 2'den oluşacaktır. İfadeyi Hesapla ("Toplam (Değer)", Akım, Akım) ifadesi 20'ye eşit olacaktır.

    Parametre değeri Birlikte ise:

    § 3. girişe bir önceki giriş 1. giriş olacaktır.

    § hesaplama parçası Current, Current (sırasıyla Başlangıç ​​ve Bitiş parametreleri) olarak tanımlanmışsa, o zaman 2. kayıt için bu parça 2 ve 3 kayıtlarından oluşacaktır. İfade CalculateExpression(“Sum(Value)”, Current, Current) 50'ye eşit olsun.

    Parametrenin Birlikte değerine eşit değerini belirtirken, Başlangıç ​​ve Bitiş parametrelerinde İlk, Son, Önceki, Sonraki konumları için bir ofset belirtemezsiniz.

    CalculateExpression("Miktar(AmountTurnover)", "İlk", "Mevcut")

    Bir önceki satırdaki gruplama değerini almak istiyorsanız aşağıdaki ifadeyi kullanabilirsiniz:

    CalculateExpression("Ders", "Önceki")

    Liste yeniözellikleri:

    ComputeExpressionGroupedArray(<Выражение>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

    İşlev, her bir öğesi, belirtilen alana göre gruplandırma için ifadenin değerlendirilmesinin sonucunu içeren bir dizi döndürür.

    ComputeExpressionGroupedValueTable(<Выражения>, <ВыражениеПолейГруппировки>, <ОтборЗаписей>, <ОтборГруппировок>) –

    İşlev, her satırı belirtilen alana göre gruplandırma için ifadelerin değerlendirilmesinin sonucunu içeren bir değerler tablosu döndürür.

    Değer Dolduruldu(<Выражение>) – Değer, NULL dışında, tanımsız dışında bir boş başvuru dışında, verilen türün varsayılan değerinden farklıysa True döndürür. Boole değerleri NULL için test edilir. Dizeler, boşluk olmayan karakterler için kontrol edilir.

    Biçim(<Выражение>, <Форматная строка>) – Geçirilen değerin biçimlendirilmiş dizesini alın. Biçim dizisi, 1C:Enterprise sisteminin biçim dizisine göre ayarlanır.

    alt dize(<Выражение>, <Начальные символ>, <ДлинаПодстроки>) - Bu işlev, bir dizeden bir alt dize seçmek için tasarlanmıştır.

    IP uzunluğu(<Выражение>) – İşlev, bir dizenin uzunluğunu belirlemek için tasarlanmıştır. Parametre - dize türü ifadesi

    Astar(<Выражение>) – Bir dizi parametre olarak iletilirse, işlev, dizinin tüm öğelerinin karakterleriyle ayrılmış dize temsillerini içeren bir dize döndürür; ". Bir değerler tablosu parametre olarak geçirilirse, işlev, değerler tablosunun tüm satırlarının dize temsillerini içeren bir dize döndürür ve her satırın hücre temsilleri “; " ve yeni satır karakterine sahip dizeler. Herhangi bir öğenin boş bir dize temsili varsa, temsili yerine bir dize görüntülenir.<Пустое значение>.

    Merhaba sevgili okuyucu! Yerleşim sisteminin temelleri hakkında başka bir dersimiz var. SKD ifade dilinin fonksiyonlarını öğrendiniz, pafta sisteminin özelliklerini gördünüz ve ayrıca pafta alanları için temel ayarları anladınız. Ve şimdi yeni bir malzeme ele alacağız. Gitmek!

    ACS alanları için ek ayarlar.

    Kolon "değer türü" düzen alanı için veri türünü belirtmenize olanak tanır. Ne tür olduğunu zaten biliyorsanız, örneğin "Terminal" alanı için türü neden belirtin? Bu, yerleşim alanı birleşik türdeyse gereklidir. Belirli bir tür seçebilirsiniz, ardından bu alana göre filtreleme yaparken bu türün değerleri seçilecektir.

    Kolon "Mevcut Değerler" seçim için mevcut değerleri belirtmenize ve kullanıcının seçimini belirli sınırlarla sınırlamanıza olanak tanır.

    Kolon "Dekor" düzenleri kullanmadan düzen alanının görünümünü ayarlamanıza olanak tanır. Yazı tipi rengini, çerçeve rengini, metin yönünü vb. belirtebilirsiniz.

    Kolon "Düzenleme Seçenekleri" düzen alanının nasıl düzenleneceğini belirlemenize olanak tanır. Örneğin, bir seçimdeki listeden hızlı bir öğe seçimi belirtebilirsiniz. Varsayılan olarak, yerleşim alanı tüm düzenleme seçeneklerini meta veri nesnesinden devralır.

    Hesaplanan alanlar

    Veri kompozisyonunun Hesaplanan alanlar sekmesinde kendi hesaplanmış alanlarınızı oluşturabilirsiniz.

    Bunları sorgu düzeyinde oluşturabiliyorken neden hesaplanmış alanlara ihtiyacımız var? Tüm alanlar bir sorgu ile tanımlanamaz. Sorgu ve nesne türleri gibi farklı veri kümelerinden karmaşık bir alan oluşturmanız gerekiyorsa, hesaplanan alanlar vazgeçilmezdir. Veri kaynağı bir sorgu ve otomatik tamamlama ise veri oluşturma alanı ekleyemezsiniz, ancak hesaplanan alanları kullanarak istediğiniz kadar alan ekleyebilirsiniz.

    Hesaplanan alan "İfade" sütununda, veri kompozisyonunun alanlarını kullanan, yollarına atıfta bulunan rastgele bir ifade yazmanız gerekir ("Veri kümeleri" sekmesindeki ("Yol" sütunu). Ya matematiksel dönüşüm fonksiyonlarını kullanabilir ya da genel modüllerin fonksiyonlarına başvurabilirsiniz. Örneğin, "Path to data" sütununa hesaplanan "Sapma" alanının adını ve "Expression" alanına aşağıdakini yazalım:

    Tutar - Fiyat* Adet

    Başka birine göz atın ve bu işlevleri kullanarak da indirebilirsiniz.

    Esasen hesaplanan alanlar, yerleşim alanlarıyla aynı ayarlara ayarlanır. Burada yalnızca Hiyerarşi Grubu sütunu eksik. Hesaplanan alanları yazarken diğer hesaplanan alanlara başvuramazsınız.

    Bir rapor formu oluşturmadan ACS üzerine kurulu bir rapora parametreler ve seçimler nasıl aktarılır?

    &İstemci // Parametreleri ACS raporuna geçirme Prosedür Komut İşleme(Komut Parametresi, Komut Yürütme Parametreleri) Seçim = Yeni Yapı("Adlandırma", Komut Parametresi); SabitSettings = GetFixedSettings() ; FormParameters = Yeni Yapı( "ShapeOnAçık, Seçim, Varyant Anahtarı, Sabit Ayarlar", Gerçek , Seçim, "Satış Raporu Varyantı", Sabit Ayarlar) ; OpenForm( "Rapor.SatışRaporu.Formu", FormParameters) ; EndProcedure &AtServer İşlevi GetFixedSettings() Satış Raporu = Raporlar. Satış raporu. Oluşturmak() ; SKD = ​​Satış Raporu. DataCompositionScheme; Ayarlar = SKD. Varsayılan ayarları; StartPeriod = Ayarlar. Parametre Verileri. FindParameterValue(NewDataCompositionParameter("PeriodStart") ); Dönemin başlangıcı. Değer = MonthStart(CurrentDate()) ; Dönemin başlangıcı. Kullanım = doğru; StartPeriod = Ayarlar. Parametre Verileri. FindParameterValue( NewDataCompositionParameter("EndPeriod" ) ) ; EndPeriod. Değer = EndMonth(CurrentDate() ) ; EndPeriod. Kullanım = doğru; Dönüş Ayarları; EndFonksiyonlar // GetFixedSettings()

    Bir SKD raporunda sütun başlıkları merkeze nasıl hizalanır?

    "Veri Kümeleri" sekmesindeki "Tasarım" alanında iki parametre ayarlamanız gerekir:

    Yatay Konum: Merkez Dikey Konum: Merkez

    Ayrıca alttaki "Ayarlar" sekmesinde başka bir sekme bulacaksınız: "Koşullu Görünüm". Her gruplama, parametre vb. için orada. istediğiniz düzeni ayarlayabilirsiniz.

    Görünüşe göre her şeyi anlattı! Hatırladığınız gibi, varsa soru sorma imkanınız var. cevaplamaya çalışacağım. Gelecekte bu konuyla ilgili daha fazla makale yazmayı planlıyorum, bu yüzden kaçırmamak için sitemizin güncellemelerine abone olmayı unutmayın! Ayrıca, bu dersteki materyali pekiştirmek için bir test yaptığınızdan emin olun.

    Makalenin sonunda size Anatoly Sotnikov'dan ücretsiz tavsiye vermek istiyorum. Bu, deneyimli bir programcıdan bir kurstur. ACS'de raporların nasıl oluşturulacağını size ayrı bir temelde gösterecektir. Sadece dikkatlice dinlemeniz ve hatırlamanız gerekiyor! Aşağıdaki gibi soruların yanıtlarını alacaksınız:
    • Basit bir liste raporu nasıl oluşturulur?
    • Alanlar sekmesindeki Alan, Yol ve Başlık sütunları ne işe yarar?
    • Düzen alanlarındaki kısıtlamalar nelerdir?
    • Roller nasıl düzgün bir şekilde kurulur?
    • Düzen alanları için roller nelerdir?
    • Bir sorguda veri düzeni sekmesini nerede bulabilirim?
    • SKD'de parametreler nasıl yapılandırılır?
    • Daha da ilginç...
    Belki de gerekli bilgileri aramak için internette gezinmeye çalışmamalısınız? Üstelik her şey kullanıma hazır. Sadece başla! Ücretsiz video eğitimlerinde neler olduğuna dair tüm detaylar