• SKD temsil ifadesi. Veri Bileşim Sistemi İfade Dili (1Cv8). Bir hücredeki değerler dizisi

    Yaklaşan 8.2.14 sürümünün ışığında, veri kompozisyon sisteminin bazı yeni fonksiyonlarını anlatmaya çalışacağım.

    Düzenlemeyi kolaylaştırmak için veri düzeni diyagramını tercihen harici bir raporda açın.

    Sorgu türünün bir veri kümesini ekliyoruz ve manuel olarak veya sorgu tasarımcısını kullanarak basit bir sorgu yazıyoruz:

    1. Erişim kontrol sisteminde bir istek oluşturun.

    2. Erişim kontrol sisteminde hesaplanan alanları ayarlayın

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

    4. 1C Enterprise 8.2.14'ü başlatın. Raporu açın. Biz oluştururuz, alırız.

    Yeni işlevlerin açıklaması:

    1. Geçerli tarih()

    Sistem tarihini döndürür. Bir düzen düzeni oluştururken, düzende bulunan tüm ifadelerde CurrentDate() işlevi, geçerli tarihin değeriyle değiştirilir.

    2. COMPUTEEXPRESSION()

    Sözdizimi:

    İfadeyi Hesapla(,)

    Tanım:

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

    İşlev, gruplamaların seçimini hesaba katar ancak hiyerarşik seçimleri hesaba katmaz.

    İşlev, bir gruplamaya ait grup seçiminde o gruplamaya uygulanamaz. Örneğin, Adlandırma gruplandırmasını seçerken şu ifadeyi kullanamazsınız: CalculateExpression("Toplam(ToplamTurnover)", "ToplamToplam") > 1000. Ancak hiyerarşik seçimde böyle bir ifade kullanılabilir.

    Bitiş kaydı başlangıç ​​kaydından önce geliyorsa, detaylı verilerin hesaplanmasına ve toplu fonksiyonların hesaplanmasına yönelik kayıtların olmadığı kabul edilir.

    Genel toplam için aralık ifadelerini hesaplarken (Gruplandırma parametresi Genel Toplam olarak ayarlanmıştır), ayrıntılı verileri hesaplamak ve toplama işlevlerini hesaplamak için hiçbir kayıt olmadığı varsayılır.

    Bir işlev ifadesi oluştururken düzen bağlayıcı İfadeyi Hesapla sıralama ifadesi gruplandırmada kullanılamayan alanlar içeriyorsa işlevin yerine geçer İfadeyi Hesapla Açık HÜKÜMSÜZ.

    Seçenekler

    Tip: Astar. Değerlendirilecek ifade.

    Tip: Astar. İfadenin değerlendirileceği bağlamdaki gruplamanın adını içerir. Gruplandırma adı olarak boş bir dize kullanılırsa hesaplama geçerli gruplandırma bağlamında gerçekleştirilecektir. Grup adı olarak GenelToplam dizesi kullanılırsa hesaplama genel toplam bağlamında gerçekleştirilecektir. Aksi takdirde hesaplama aynı adı taşıyan üst grup bağlamında gerçekleştirilecektir.

    Örneğin:

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

    Bu örnekte sonuç, toplamın alana oranı olacaktır. Satış.TutarCiro kayıtları tüm düzende aynı alanın toplamına göre gruplamak;

    Tip: Astar. Parametre aşağıdaki değerleri alabilir:

    · Genel Toplam— ifade tüm gruplama kayıtları için hesaplanacaktır.

    · Hiyerarşi— ifade, varsa üst hiyerarşik kayıt için, üst hiyerarşik kayıt yoksa tüm gruplama için değerlendirilecektir.

    · Gruplama— ifade mevcut grup gruplandırma kaydı için değerlendirilecektir.

    · GruplamaKaynak Dışı— kaynaklara göre bir grup kaydı için bir işlev hesaplanırken, ifade orijinal gruplandırmanın ilk grup kaydı için hesaplanacaktır.

    Bir fonksiyonu hesaplarken Hesaplamaİfadesi() anlamı olan GruplamaKaynak Dışı kaynaklara göre gruplandırılmayan grup kayıtları için işlev, parametre değerinin değere eşit olması durumunda hesaplanacağı şekilde hesaplanır. Gruplama.

    Veri kompozisyonu düzeni oluşturucusu, mizanpajda gruplandırmanın gerçekleştirildiği kaynak alanının çıktısını alırken bir veri kompozisyonu düzeni oluştururken, işlev kullanılarak hesaplanan mizanpaja bir ifade yerleştirir. Hesaplamaİfadesi() , parametreyi belirten GruplamaKaynak Dışı. Diğer kaynaklar için olağan kaynak ifadeleri kaynak gruplamasına yerleştirilir.

    Tip: Astar. Parçanın hangi kayıttan başlaması gerektiğini, hangi toplu ifade fonksiyonlarının hesaplanması gerektiğini ve toplama fonksiyonları dışındaki alan değerlerinin hangi kayıttan alınacağını belirtir. Değer aşağıdakilerden biri olabilir:

    · Birinci

    · Son (Son)

    · Öncesi

    · Sonraki (Sonraki)

    · Akım

    · Sınırlayıcı Değer(Sınır değeri) Sınırlayıcı Değer

    Tip: Astar. İfadenin toplu fonksiyonlarının hesaplanması gereken parçanın hangi kayda kadar devam etmesi gerektiğini belirtir. Değer aşağıdakilerden biri olabilir:

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

    İlk kayıt gruplamanın dışında ise kayıt olmadığı kabul edilir. Örneğin 3 kayıt varsa ve First(4) almak istiyorsanız bu durumda kayıt olmadığı kabul edilir.

    · Son (Son). Son gruplandırma kaydını almanız gerekir. Parantez içindeki kelimeden sonra, sonucu gruplamanın sonundan itibaren sapma olarak kullanılacak bir ifade belirleyebilirsiniz. Ortaya çıkan değer sıfırdan büyük bir tam sayı olmalıdır. Örneğin, Son(3) - grubun sonundan üçüncü kaydın alınması.

    Son kayıt gruplamanın dışında ise kayıt olmadığı kabul edilir. Örneğin 3 kayıt varsa ve Last(4) almak istiyorsanız bu durumda kayıt olmadığı kabul edilir.

    · Öncesi. Önceki gruplama kaydını almanız gerekir. Parantez içindeki sözcükten sonra, sonucu geçerli gruplama kaydından geriye doğru bir sapma olarak kullanılacak bir ifade belirleyebilirsiniz. Örneğin, Önceki(2) - önceki kayıttan öncekini almak.

    Önceki kayıt gruplamanın dışına çıkıyorsa (örneğin ikinci gruplama kaydı için Önceki(3) almanız gerekir) ilk gruplama kaydı elde edilir.

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

    · Sonraki (Sonraki). Bir sonraki gruplama kaydını almanız gerekir. Parantez içindeki sözcükten sonra, sonucu geçerli gruplama kaydından ileriye doğru bir sapma olarak kullanılacak bir ifade belirtebilirsiniz. Örneğin, Sonraki(2) - sonraki kayıttan sonrakine geçmek.

    Bir sonraki kaydın gruplamanın dışına çıkması durumunda kayıt olmadığı kabul edilir. Örneğin, 3 giriş varsa ve üçüncü giriş Next() alıyorsa bu durumda hiçbir giriş olmadığı kabul edilir.

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

    · Akım. Güncel kaydı almanız gerekiyor.

    Gruplandırma toplamı alınırken ilk kayıt elde edilir.

    · Sınırlayıcı Değer(Sınır değeri). Belirtilen değere göre bir kayıt alma ihtiyacı. Kelimeden sonra Sınırlayıcı Değer parantez içinde, ilk sıralama alanı olan parçayı başlatmak istediğiniz değeri olan ifadeyi belirtmeniz gerekir.

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

    Tip: Astar. Sıralama kurallarını açıklayan ifadeleri virgülle ayırarak listeler. Belirtilmezse sıralama, ifadenin değerlendirildiği gruplandırmayla aynı şekilde gerçekleştirilir. Her ifadeden sonra bir anahtar kelime belirleyebilirsiniz Yaş(artan düzende sıralamak için), Azalan(azalan sırada sıralamak için) ve Otomatik sipariş(referans alanlarını, başvurulan nesneyi sıralamak istediğiniz alanlara göre sıralamak için). Kelime Otomatik sipariş kelimesinde olduğu gibi kullanılabilir Yaş yani kelimeyle Azalan.

    Tip: Astar. Parametreyle 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 sıralamayı oluşturur Sıralama.

    Tip: Astar. Aynı sıralama değerine sahip birden fazla kaydın olması durumunda önceki veya sonraki kaydın belirlenmesine yönelik kuralı belirtir:

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

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

    Örneğin, elde edilen sıra tarihe göre sıralanmışsa:

    tarih Ad Soyad Anlam
    1 01 Ocak 2001

    İvanov 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ı, O:

    § Giriş 3'ten önceki giriş, giriş 2 olacaktır.

    Şimdiki şimdiki(buna göre parametreler Başlangıç Ve Son), o zaman 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 Birlikte, O:

    § Giriş 3'ten önceki giriş, giriş 1 olacaktır.

    § hesaplama parçası şu şekilde tanımlanmışsa Şimdiki şimdiki(buna göre parametreler Başlangıç Ve Son), o zaman kayıt 2 için bu parça kayıt 2 ve 3'ten oluşacaktır. CalculateExpression("Toplam(Değer)", Geçerli, Geçerli) 50'ye eşit olacaktır.

    Şuna eşit bir parametre değeri belirlerken: Birlikte, parametrelerde Başlangıç Ve Son konumlar için bir uzaklık belirleyemezsiniz İlk, Son, Önceki, Sonraki.

    CalculateExpression("Toplam(ToplamTurnover)", "İlk", "Geçerli")

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

    CalculateExpression("Oran", "Önceki")

    Liste yeni işlevler:

    CalculateExpressionWithGroupArray(,) -

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

    İfadeyiGrupValueTable ile Hesapla(,) -

    İş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ğerDolu() - Değer, bu türün varsayılan değerinden farklıysa, NULL dışında, boş bir başvuru dışında, Tanımsız dışındaysa True değerini döndürür. NULL değerler için Boolean değerleri kontrol edilir. Dizeler, boşluk olmayan karakterlerin bulunmaması açısından kontrol edilir

    Biçim(, ) - Aktarılan değerin biçimlendirilmiş bir dizesini alın. Biçim dizesi, 1C:Enterprise sisteminin biçim dizesine uygun olarak ayarlanır.

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

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

    Astar() - Bir dizi parametre olarak aktarılırsa işlev, "; " karakterleriyle ayrılmış olarak tüm dizi öğelerinin dize temsillerini içeren bir dize döndürür. Bir değerler tablosu parametre olarak iletilirse, işlev, değerler tablosunun tüm satırlarının dize temsillerini içeren, her satırın hücre temsilleri ";" karakterleri ve satırlar bir yeni satırla ayrılmış şekilde içeren bir dize döndürür. karakter. Bir elemanın dize gösterimi boşsa, onun gösterimi yerine bir dize görüntülenir.

    İş yazılımlarının en önemli alanlarından biri raporlamadır. Bir işletmenin kaderi, mevcut bir raporu işletmenin (ve mevzuatın) değişen ihtiyaçlarına göre özelleştirmenin veya vergi dairesi için bir rapor gibi yeni bir rapor oluşturmanın ne kadar kolay olduğuna bağlı olabilir (ve mecazi anlamda değil!) veya mallara olan talebin mevsime ve diğer faktörlere bağımlılığının bir diyagramı. Gerekli verilerin sistemden çıkarılmasını kolaylaştıran, bunları anlaşılır bir biçimde sunan, son kullanıcının verileri yeni bir ışıkta görecek şekilde standart bir raporu yeniden yapılandırmasına olanak tanıyan güçlü ve esnek bir raporlama sistemi; bu, her birinin sahip olması gereken idealdir. iş sistemi bunun için çabalamalıdır.

    1C:Enterprise platformunda, raporların oluşturulmasından "Veri Kompozisyon Sistemi" (DCS olarak kısaltılır) adı verilen bir mekanizma sorumludur. Bu yazımızda ACS mekanizmasının fikri, 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. Erişim kontrol sistemi, karmaşık bir yapıya sahip raporların oluşturulması ve bilgilerin görüntülenmesi için tasarlanmıştır. Bu arada, rapor geliştirmenin yanı sıra, ACS mekanizması aynı zamanda dinamik bir listede 1C: Enterprise'da da kullanılıyor; liste bilgilerini zengin işlevselliğe sahip (düz ve hiyerarşik listeleri görüntüleme, satırların koşullu tasarımı, gruplamalar vb.) görüntülemek için bir araç. ).

    Biraz tarih

    1C:Enterprise 8 platformunun ilk sürümü olan 8.0 sürümünde raporlar şu şekilde yapıldı:
    1. 1C sorgu dilinde (SQL benzeri dil, bunun hakkında daha fazla bilgi aşağıda) bir veya daha fazla sorgu yazılmıştır.
    2. Yürütülen sorguların sonuçlarını bir elektronik tablo belgesine veya grafiğe aktaran kod yazılmıştır. Kod ayrıca bir sorguda yapılamayan işleri de yapabilir; örneğin, yerleşik 1C dilini kullanarak değerleri hesaplayabilir.
    Yaklaşım basittir, ancak en uygunu değildir - minimum görsel ayarlar vardır, her şeyin "el ele" programlanması gerekir. Ve tamamen yeni olan “1C:Enterprise 8” platformunun o zamanki kozlarından biri, uygulama çözümünde, özellikle görsel tasarım yoluyla 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 olan Veri Kompozisyon Sistemi geliştirilerek yapıldı.

    Erişim kontrol sisteminin temelini oluşturan fikirlerden biri, hem geliştiricinin hem de son kullanıcının erişebileceği raporların esnekliği ve özelleştirilmesiydi. İdeal olarak, son kullanıcıya geliştiriciyle aynı rapor tasarım araçları setine erişim hakkı vermek isterim. Herkesin kullanabileceği tek bir araç seti oluşturmak mantıklı olacaktır. Araçlar son kullanıcının katılımını gerektirdiğinden, bu, bunlardaki programlama kullanımının en aza indirilmesi gerektiği (en iyisi tamamen ortadan kaldırmaktır) ve görsel ayarların maksimumda kullanılması gerektiği anlamına gelir.

    Sorunun formülasyonu

    Geliştirme ekibinin önündeki görev, algoritmik (yani kod yazma yoluyla) değil, rapor oluşturma konusunda bildirimsel bir yaklaşıma dayalı bir raporlama sistemi oluşturmaktı. Ve sorunun başarıyla çözüldüğüne inanıyoruz. Deneyimlerimize göre, gerekli raporlamanın yaklaşık %80'i ACS kullanılarak tek satır kod gerektirmeden (hesaplanan alanlar için formül yazmak hariç), çoğunlukla görsel ayarlar aracılığıyla gerçekleştirilebilmektedir.
    SDS'nin ilk versiyonunun geliştirilmesi yaklaşık 5 kişi-yıl sürdü.

    İki dil

    Rapor oluşturmada iki dil kullanılır. Bunlardan biri, verileri almak için kullanılan bir sorgu dilidir. İkincisi, kullanıcı alanlarının ifadelerini tanımlamak için sistemin çeşitli kısımlarında, örneğin veri kompozisyonu ayarlarında kullanılan ifadeleri yazmaya yönelik veri kompozisyonu ifade dilidir.

    Sorgu dili

    Sorgu dili SQL tabanlıdır ve SQL konusunda bilgili olanlar için öğrenmesi kolaydır. Örnek istek:

    SQL sorguları için standart bölümlerin analoglarını görmek kolaydır - SELECT, FROM, GROUP BY, ORDER BY.

    Aynı zamanda sorgulama dili, finansal ve ekonomik sorunların özelliklerini yansıtmayı ve uygulama çözümleri geliştirme çabalarının azaltılmasını en üst düzeye çıkarmayı amaçlayan önemli sayıda uzantı içerir:

    • Nokta kullanarak alanlara erişme. Bir tablonun alanları referans türündeyse (başka bir tablonun nesnelerine olan bağlantıları saklıyorlarsa), geliştirici istek metninde bunlara “.” aracılığıyla başvurabilir ve sistem, iç içe geçme düzeylerinin sayısını sınırlamaz. bu tür bağlantıların (örneğin, Müşteri Siparişi. Sözleşme. Organizasyon. Telefon).
    • Sonuçların çok boyutlu ve çok düzeyli oluşumu. Gruplama ve hiyerarşi dikkate alınarak toplamlar ve alt toplamlar oluşturulmakta, toplama ile seviyeler istenilen sırayla geçilebilmekte ve toplamların zaman boyutlarına göre doğru oluşturulması sağlanmaktadır.
    • Sanal tablolar için destek. Sistem tarafından sağlanan sanal tablolar, karmaşık sorgular oluşturmaya gerek kalmadan çoğu uygulama görevi için neredeyse hazır veriler elde etmenize olanak tanır. Böylece sanal bir tablo, belirli bir zaman dilimindeki ürün bakiyeleri hakkında veri sağlayabilir. Aynı zamanda sanal tablolar, önceden hesaplanan toplamlar vb. gibi depolanan bilgilerden maksimum düzeyde yararlanır.
    • Geçici tablolar. Sorgu dili, sorgularda geçici tabloları kullanmanıza olanak tanır. Bunların yardımıyla sorgu performansını artırabilir, bazı durumlarda engelleme sayısını azaltabilir ve sorgu metninin okunmasını kolaylaştırabilirsiniz.
    • Toplu istekler. Geçici tablolarla çalışmayı daha kolay hale getirmek için sorgu dili toplu sorgularla çalışmayı destekler; böylece geçici tablonun oluşturulması ve kullanımı tek bir sorguya yerleştirilir. Toplu istek, noktalı virgülle (";") ayrılmış bir istek dizisidir. Toplu işteki istekler birbiri ardına yürütülür. Bir toplu isteğin yürütülmesinin sonucu, kullanılan yönteme bağlı olarak, ya toplu işteki son istek tarafından döndürülen sonuç ya da toplu işteki sorguların takip ettiği sırayla toplu işteki tüm sorgulardan elde edilen sonuçların bir dizisi olacaktır. .
    • Referans alanlarının temsillerini alma. Her nesne tablosunun (içinde bir referans kitabının veya belgenin saklandığı) bir sanal alanı vardır - “Görünüm”. Bu alan nesnenin metinsel temsilini içerir ve rapor oluşturucunun işini kolaylaştırır. Dolayısıyla, 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 000000003 Satışı"), geliştiriciyi hesaplanmış bir alan yazma.
    • ve benzeri.
    Talep mekanizması, adına talebin yürütüldüğü kullanıcının ait olduğu rolleri (yani kullanıcı yalnızca görme hakkına sahip olduğu verileri görecektir) ve işlevsel seçenekleri (yani, uygun şekilde) dikkate alarak talebi otomatik olarak değiştirir. uygulama çözümü işlevinde yapılandırılmış olanlarla).

    Erişim kontrol sistemleri için özel sorgulama dili uzantıları da bulunmaktadır. Genişletme, küme parantezleri içine alınmış ve doğrudan istek gövdesine yerleştirilen özel sözdizimsel talimatlar kullanılarak gerçekleştirilir. Geliştirici, uzantıları kullanarak, raporu özelleştirirken son kullanıcının hangi işlemleri gerçekleştirebileceğini belirler.

    Örneğin:

    • SEÇMEK. Bu cümle, kullanıcının çıktı için seçebileceği alanları açıklamaktadır. Bu anahtar kelimeden sonra, ana sorgu seçim listesindeki yapılandırma için kullanılabilecek alanların takma adları virgülle ayrılmış olarak listelenir. Örnek: (Ürün SEÇ, Depo)
    • NEREDE. Kullanıcının seçimi uygulayabileceği alanlar açıklanmaktadır. Bu teklif tablo alanlarını kullanıyor. Seçim listesi alanı takma adlarının kullanımına izin verilmez. Birliğin her parçası kendi WHERE öğesini içerebilir. Örnekler: (NEREDE Öğe.*, Depo), (NERE Belge.Tarih >= &BaşlangıçTarihi, Belge.Tarih)<= &ДатаКонца}
    • ve benzeri.
    Uzantıları kullanma örneği:

    Veri Bileşimi İfade Dili

    Veri Bileşimi İfade Dili, özellikle özel alan ifadelerini tanımlamak için kullanılan ifadeleri yazmak üzere tasarlanmıştır. SKD, kendi ifadelerinizi veya seçim koşullarıyla birlikte seçenek kümelerini kullanarak bir raporda özel alanlar tanımlamanıza olanak tanır (SQL'deki CASE'e benzer). Ö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 ziyade kullanıcıya yöneliktir.

    Örnek:

    Erişim kontrol sistemi hakkında rapor oluşturma süreci

    Rapor oluştururken verilerin raporda nasıl görüntüleneceğini tanımlayan bir düzen oluşturmamız gerekir. Veri düzeni diyagramını temel alan bir düzen oluşturabilirsiniz. Veri düzeni diyagramı, rapora sağlanan verilerin özünü açıklar (verilerin nereden alınacağı ve düzenini nasıl kontrol edebileceğiniz). Veri kompozisyon şeması her türlü raporun oluşturulabilmesinin temelini oluşturur. Veri kompozisyon şeması şunları içerebilir:
    • veri kompozisyon sistemi talimatlarını içeren talep metni;
    • çoklu veri setlerinin açıklaması;
    • mevcut alanların ayrıntılı açıklaması;
    • birden fazla veri kümesi arasındaki ilişkilerin tanımlanması;
    • veri toplama parametrelerinin açıklaması;
    • saha düzenlerinin ve gruplamalarının açıklaması;
    • ve benzeri.

    Örneğin, veri kompozisyon şemasına bir veri kümesi olarak bir sorgu ekleyebilir ve sorgu oluşturucuyu çağırabilirsiniz; bu, grafiksel olarak isteğe bağlı karmaşıklıkta bir sorgu oluşturmanıza olanak tanır:

    Sorgu tasarımcısını başlatmanın sonucu sorgu metni olacaktır (1C:Enterprise sorgu dilinde). Bu metin gerekirse manuel olarak ayarlanabilir:

    Bir veri düzeni şemasında birden fazla veri seti olabilir, veri setleri herhangi bir şekilde düzene bağlanabilir, hesaplanan alanlar eklenebilir, rapor parametreleri belirtilebilir vb. 1C:Enterprise'daki sorgu mekanizmasının ilginç bir özelliğinden bahsetmeye değer. Sorgular sonuçta uygulamanın doğrudan ç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 - MS SQL, Oracle, IBM DB2 tarafından desteklenen tüm DBMS'lerde aynı anda mevcut olan yetenekleri kullanmamızla sınırlıdır) , PostgreSQL). Böylece hesaplanan alanlarda sorgu düzeyinde yalnızca SQL'e çevrilmiş işlevleri kullanabiliriz.

    Ancak veri kompozisyon şeması düzeyinde, yerleşik 1C geliştirme dilinde (bizim tarafımızdan yazılanlar dahil) zaten özel alanlar ekleyebilir ve bunların içindeki işlevleri kullanabiliriz, bu da raporların yeteneklerini büyük ölçüde genişletir. Teknik olarak şöyle görünüyor - SQL'e çevrilebilecek 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 SKD her kayıt için değerleri hesaplar. Formülleri 1C dilinde yazılmış hesaplanmış alanların sayısı.


    Özel Alanlar Ekleme

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


    Rapor tasarımcısı


    Çalışma zamanı raporu

    Kullanıcı, SKD'yi kullanarak rapora karmaşık seçimler (isteğe doğru yerlere eklenecek), koşullu tasarım (görüntülenen alanların değerlerine bağlı olarak yazı tipi, renk vb. ile farklı biçimlendirilmesine izin veren) ekleyebilir. ) ve daha fazlası. .

    Raporun oluşturulması ve üretilmesi süreci kısaca şu şekilde açıklanabilir:

    • Geliştirici, tasarım zamanında bir tasarımcının yardımıyla (veya çalışma zamanında kod kullanarak) veri düzeni şemasını belirler:
      • Talep/talep metni
      • Hesaplanan alanların açıklaması
      • İstekler arasındaki ilişkiler (birkaç tane varsa)
      • Rapor Seçenekleri
      • Varsayılan ayarları
      • Vesaire.
    • Yukarıdaki ayarlar düzende kaydedilir
    • Kullanıcı raporu açar
      • Muhtemelen ek ayarlar yapar (örneğin parametre değerlerini değiştirir)
      • “Oluştur” düğmesine tıklar
    • Kullanıcı ayarları, geliştirici tarafından tanımlanan veri kompozisyon şemasına uygulanır.
    • Verilerin nereden alınacağına ilişkin talimatları içeren bir ara veri kompozisyon düzeni oluşturulur. Özellikle düzende belirtilen sorgular ayarlanır. Böylece 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üllerine katılan tüm alanlar sorguya eklenir.
    • Veri kompozisyon işlemcisi devreye giriyor. Düzen işlemcisi sorguları yürütür, veri kümelerini bağlar, hesaplanan alanlar ve kaynaklar için değerleri hesaplar ve gruplandırmayı gerçekleştirir. Kısaca DBMS düzeyinde yapılmayan tüm hesaplamaları yapar.
    • Veri çıkış işlemcisi, yürütme talebini başlatır ve alınan verileri bir elektronik tablo belgesinde, grafikte vb. görüntüler.


    ACS mekanizmasını kullanarak rapor oluşturma süreci

    Sunucudan istemci uygulamasına aktarılan rapor verilerinin miktarını en aza indirmeye çalışıyoruz. Verileri bir elektronik tablo belgesinde 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 ilerledikçe eksik veriler sunucudan istemciye indirilir.

    Özel ayarlar

    Tüm ACS araçları hem geliştiricinin hem de son kullanıcının kullanımına açıktır. Ancak uygulama, son kullanıcının genellikle araç özelliklerinin çokluğundan korktuğunu göstermiştir. Ayrıca, çoğu durumda, son kullanıcının tüm ayarların gücüne ihtiyacı yoktur - bir veya iki rapor parametresini (örneğin, dönem ve karşı taraf) ayarlamaya hızlı erişime sahip olması yeterlidir. Rapor geliştirici, platformun belirli bir sürümünden başlayarak kullanıcıya hangi rapor ayarlarının sunulduğunu işaretleme olanağı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ğı bulunmaktadır:
    • Hızlı erişim. Ayar doğrudan rapor penceresinin üst kısmında görüntülenecektir.
    • Sıradan. Ayar, “Ayarlar” düğmesi aracılığıyla kullanılabilir.
    • Müsait değil. Ayar son kullanıcıya sunulmayacaktır.


    Tasarım zamanında ekran 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ı

    Geçiş kontrol sistemlerinin geliştirilmesinde öncelikli alanlarımızdan biri kullanıcı ayarlarının basitleştirilmesidir. Deneyimlerimiz, bazı son kullanıcılar için kullanıcı ayarlarıyla çalışmanın hâlâ büyük bir sorumluluk olduğunu gösteriyor. Biz bunu dikkate alıyoruz ve bu yönde çalışıyoruz. Buna göre geliştiricilerin erişim kontrol sistemleriyle çalışması da kolaylaşacak çünkü Daha önce olduğu gibi hem geliştirici hem de son kullanıcı için raporların ayarlanmasına yönelik tek bir araç sunmak istiyoruz.

    1. Hesapla (Değerlendir)- Bir ifadeyi bazı gruplandırmalar bağlamında değerlendirmeyi amaçlamaktadır. İşlev, platformun önceki sürümleriyle uyumluluk için kullanılır. Bunun yerine CalculateExpression işlevinin kullanılması önerilir.

    Sözdizimi:
    Hesapla(İfade, Gruplandırma, Hesaplama Türü)

    Seçenekler :

    • İfade(Astar). Hesaplanmış bir ifade içerir;
    • Gruplama(Astar). İfadenin değerlendirileceği bağlamdaki gruplamanın adını içerir. Gruplandırma adı olarak boş bir dize kullanılırsa hesaplama geçerli gruplandırma bağlamında gerçekleştirilecektir. Grup adı olarak Genel Toplam dizesi kullanılırsa hesaplama genel toplam bağlamında gerçekleştirilecektir. Aksi takdirde hesaplama aynı adı taşıyan üst grup bağlamında gerçekleştirilecektir.
      Örneğin:
      Sum(Sales.SumTurnover) / Calculate("Sum(Sales.SumTurnover)", "Toplam").
      Bu örnekte sonuç, gruplama kaydının "Sales.AmountTurnover" alanına ilişkin tutarın tüm düzende aynı alanın tutarına oranı olacaktır.
    • Hesaplama türü(Astar). Bu parametre "TotalTotal" olarak ayarlanırsa ifade tüm gruplama kayıtları için hesaplanacaktır. Parametrenin değeri "Gruplama" ise mevcut gruplama grup kaydı için değerler hesaplanacaktır.
    2. İfadeyi Değerlendirin (EvalExpression) - Bir ifadeyi bazı gruplandırmalar bağlamında değerlendirmeyi amaçlamaktadır. İşlev, gruplamaların seçimini hesaba katar ancak hiyerarşik seçimleri hesaba katmaz. İşlev, bir gruplamaya ait grup seçiminde o gruplamaya uygulanamaz.

    Sözdizimi:
    CalculateExpression(İfade, Gruplandırma, Hesaplama Türü, Başlangıç, Bitiş, Sıralama, Hiyerarşik Sıralama, İşlemeIdenticalOrderValues)

    Seçenekler :

    • İfade(Astar). Hesaplanmış bir ifade içerir;
    • Gruplama(Astar). İfadenin değerlendirileceği bağlamdaki gruplamanın adını içerir. Gruplandırma adı olarak boş bir dize kullanılırsa hesaplama geçerli gruplandırma bağlamında gerçekleştirilecektir. Grup adı olarak Genel Toplam dizesi kullanılırsa hesaplama genel toplam bağlamında gerçekleştirilecektir. Aksi takdirde hesaplama o isimdeki üst gruplama bağlamında gerçekleştirilecektir;
    • Hesaplama türü(Astar). Bu parametre "TotalTotal" olarak ayarlanırsa ifade tüm gruplama kayıtları için hesaplanacaktır. Parametrenin değeri "Gruplama" ise mevcut gruplama grup kaydı için değerler hesaplanacaktır. Parametre "Kaynak Dışı Gruplandırma" olarak ayarlanırsa kaynağa göre bir grup kaydının işlevi hesaplanırken ifade, orijinal gruplandırmanın ilk grup kaydı için değerlendirilecektir. Kaynağa göre gruplandırılmayan grup kayıtları için CalculateExpression işlevi "GroupingNonResource" değeriyle değerlendirilirken, işlev "Grouping" parametresinin değeriyle değerlendirileceği şekilde değerlendirilir. Veri kompozisyonu düzeni oluşturucu, bir alanın (gruplandırmanın gerçekleştirildiği bir kaynak) çıktısını alırken bir veri kompozisyonu düzeni oluştururken, düzene, belirtilen "GroupingNon-Resource" parametresi ile CalculateExpression işlevi kullanılarak hesaplanan bir ifadenin çıktısını verir. Kaynağa göre gruplandırılan diğer kaynaklar için normal kaynak ifadeleri döndürülür. Parametre "Hiyerarşi" olarak ayarlanmışsa ifadenin, varsa üst hiyerarşik kayıt için, üst hiyerarşik kayıt yoksa tüm gruplama için değerlendirilmesi gerekir. Düzen oluşturucu, Hiyerarşi Grubu alanında % için bir ifade oluştururken, Hiyerarşi hesaplama türüne sahip geçerli gruplandırma için hesaplanmakta olan kaynak ifadesi için kaynak ifadesinin CalculateExpression işleviyle ilişkisini içeren bir ifade oluşturur.
    • Başlangıç. Parçanın hangi kayıttan başlaması gerektiğini, hangi toplu ifade fonksiyonlarının hesaplanması gerektiğini ve toplama fonksiyonları dışındaki alan değerlerinin hangi kayıttan alınacağını belirtir. Aşağıdakilerden birini içeren bir dize:
      • "Birinci" İlk gruplama kaydını almak gerekir. Parantez içindeki kelimeden sonra, sonucu gruplamanın başlangıcından itibaren ofset olarak kullanılacak bir ifade belirleyebilirsiniz. Ortaya çıkan değer sıfırdan büyük bir tam sayı olmalıdır. Örneğin, İlk(3) – gruplandırmanın başlangıcından itibaren üçüncü kaydı alma. İlk kayıt gruplamanın dışında ise kayıt olmadığı kabul edilir. Örneğin 3 kayıt varsa ve First(4) almak istiyorsanız bu durumda kayıt olmadığı kabul edilir.
      • "Son" Son gruplandırma kaydını almanız gerekir. Parantez içindeki kelimeden sonra, sonucu gruplamanın sonundan itibaren sapma olarak kullanılacak bir ifade belirleyebilirsiniz. Ortaya çıkan değer sıfırdan büyük bir tam sayı olmalıdır. Örneğin, Son(3) – grubun sonundan üçüncü kaydın alınması. Son kayıt gruplamanın dışında ise kayıt olmadığı kabul edilir. Örneğin 3 kayıt varsa ve Last(4) almak istiyorsanız bu durumda kayıt olmadığı kabul edilir.
      • "Öncesi" Önceki gruplama kaydını almanız gerekir. Parantez içindeki sözcükten sonra, sonucu geçerli gruplama kaydından geriye doğru bir sapma olarak kullanılacak bir ifade belirleyebilirsiniz. Örneğin, Önceki(2) – önceki kayıttan öncekini almak. Önceki kayıt gruplamanın dışındaysa (örneğin ikinci gruplama kaydı Önceki(3) almayı gerektiriyorsa) ilk gruplama kaydı elde edilir. Gruplandırma toplamı için bir önceki kayıt alınırken ilk kayıt elde edilir.
      • "Sonraki" Bir sonraki gruplama kaydını almanız gerekir. Parantez içindeki sözcükten sonra, sonucu geçerli gruplama kaydından ileriye doğru bir sapma olarak kullanılacak bir ifade belirtebilirsiniz. Örneğin, Sonraki(2) – sonraki kayıttan sonrakini almak. Bir sonraki kaydın gruplamanın dışına çıkması durumunda kayıt olmadığı kabul edilir. Örneğin 3 giriş varsa ve üçüncü giriş Next alıyorsa bu durumda giriş olmadığı kabul edilir. Gruplandırma toplamı için bir sonraki kayıt alındığında kayıt olmadığı kabul edilir.
      • "Akım". Güncel kaydı almanız gerekiyor. Gruplandırma toplamı alınırken ilk kayıt elde edilir.
      • "Sınır değeri". Belirtilen değere göre bir kayıt alma ihtiyacı. Parantez içindeki LimitingValue kelimesinden sonra ilk sıralama alanı olan fragmenti başlatmak istediğiniz değeri olan ifadeyi belirtmeniz gerekiyor. Sıralama alanı değeri belirtilen değerden büyük veya ona eşit olan ilk kayıt, kayıt olarak döndürülür. Örneğin, Dönem alanı sıralama alanı olarak kullanılıyorsa ve 01/01/2010, 02/01/2010, 03/01/2010 değerlerine sahipse ve LimitingValue(DateTime(2010) değerini almak istiyorsanız , 1, 15)), daha sonra 02/01 2010 tarihli bir kayıt elde edilecektir.
    • Son. Parçanın hangi kayda kadar devam etmesi gerektiğini, toplu ifadenin hesaplanması gerektiğini belirtir. Aşağıdakilerden birini içeren bir dize:
      • "Birinci"
      • "Son"
      • "Öncesi"
      • "Sonraki"
      • "Akım".
      • "Sınır değeri".
    • Sıralama. Sıranın sıralanması gereken yönde virgüllerle ayrılmış ifadeleri listeleyen bir dize. Belirtilmezse sıralama, ifadenin değerlendirildiği gruplandırmayla aynı şekilde gerçekleştirilir. Her ifadeden sonra, artan sırada sıralamak için Artan anahtar sözcüğünü, azalan sırada sıralamak için Azalan anahtar sözcüğünü, referans alanlarını, başvurulan nesneyi sıralamak istediğiniz alanlara göre sıralamak için Otomatik Sıralama anahtar sözcüğünü belirleyebilirsiniz. Otomatik Sıralama kelimesi hem Artan hem de Azalan kelimesiyle birlikte kullanılabilir.
    • Hiyerarşik Sıralama. Sıralamaya benzer. Hiyerarşik kayıtları düzenlemek için kullanılır. Belirtilmediği takdirde düzen oluşturucu sıralamayı Sort parametresinde belirtilen sıralamaya göre oluşturur.
    • Aynı Sıra Değerlerinin İşlenmesi. Aşağıdakilerden birini içeren bir dize:
      • "Birlikte", önceki ve sonraki kayıtları belirlemek için sıralı kayıtlar dizisinin kullanıldığı anlamına gelir;
      • "Ayrı ayrı", sıralama ifadelerinin değerlerine göre önceki ve sonraki kayıtların belirlendiği anlamına gelir;
      Örneğin, elde edilen sıra tarihe göre sıralanmışsa:
      1. 01 Ocak 2001 Ivanov M.10
      2. 02 Ocak 2001 Petrov S.20
      3. 02 Ocak 2001 Sidorov R.30
      4. 03 Ocak 2001 Petrov S.40
      "Ayrı Olarak" sırasının aynı değerlerinin işlenmesini kullanırken, kayıt 3 için bir önceki kayıt 2 olacak ve "Birlikte" kullanıldığında - kayıt 1 olacaktır. Ve "Ayrı Olarak" için kayıt 2 için mevcut kaydın parçası olacaktır. kayıt 2 olacak ve "Birlikte" için - kayıt 2 ve 3 olacaktır. Böylece, mevcut kaydın toplamı "Ayrı Olarak" için 20 ve "Birlikte" için - 50 olacaktır. Başlangıç ​​ve Başlangıç'ta "Birlikte" belirtildiğinde Son parametreler, “İlk”, “Son”, “Önceki”, “Sonraki” konumları için bir ofset belirleyemezsiniz. Varsayılan değer "Ayrı"dır.
    Örnek:
    Bir gruplama kaydının "Sales.AmountTurnover" alanına ilişkin tutarın, tüm düzendeki aynı alanın tutarına oranının elde edilmesi:
    Sum(Sales.SumTurnover) / CalculateExpression("Sum(Sales.SumTurnover)", "Toplam").

    Bu örnek, mevcut hiyerarşinin değerini hesaplar:
    Seçenek
    Seviye() > 0 olduğunda
    Sonra EvaluateExpression("Referans", "Hiyerarşi")
    Aksi takdirde Boş
    Son

    Notlar:
    İşlev, gruplamaların seçimini hesaba katar ancak hiyerarşik seçimleri hesaba katmaz. İşlev, bir gruplamaya ait grup seçiminde o gruplamaya uygulanamaz. Örneğin, Adlandırma gruplandırmasını seçerken CalculateExpression("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, detaylı verilerin hesaplanmasına ve toplu fonksiyonların hesaplanmasına yönelik kayıtların olmadığı kabul edilir. Genel toplam için aralık ifadeleri hesaplanırken (Gruplandırma parametresi "BrütToplam" olarak ayarlanmıştır), ayrıntılı verileri hesaplamak ve toplama işlevlerini hesaplamak için hiçbir kayıt olmadığı varsayılır. CalculateExpression işlevi için bir ifade oluştururken, sıralama ifadesi gruplamada kullanılamayan alanlar içeriyorsa düzen oluşturucu, CalculateExpression işlevini NULL ile değiştirir.

    3. İfadeyi Grup Dizisi ile Değerlendirin (Grup Dizisi ile EvalExpression) - işlev, her bir öğesi belirtilen alana göre gruplandırmaya yönelik bir ifadenin hesaplanmasının sonucunu içeren bir dizi döndürür.

    Sözdizimi:
    CalculateExpressionWithGroupArray (İfade, GroupFieldExpressions, SelectRecords, SelectGroups)

    Seçenekler :

    • İfade(String) - değerlendirilecek ifade. Örneğin, "Tutar(TutarCiro)";
    • Alan İfadeleriGrupları
    • Kayıtların Seçimi
    • Gruplamaların Seçimi- grup kayıtlarına uygulanan seçim. Örneğin: "Tutar(TutarCiro) > &Parametre1".
    Örnek:
    Maksimum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Karşı Taraf"));


    Düzen oluşturucu, ifadesi yalnızca CalculateArrayWithGroup işlevini içeren özel bir alanın görüntülenmesi için ifadeler oluştururken, görünümler tarafından görüntülenen veriler ve veriler sıralanacak şekilde görüntüleme ifadesini oluşturur.
    Örneğin, şu ifadeyi içeren özel bir alan için:
    CalculateExpressionWithGroupArray("Tutar(AmountTurnover)", "Karşı Taraf")
    Düzen oluşturucu çıktı için aşağıdaki ifadeyi oluşturacaktır:
    ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover))), Amount(DataSet.AmountTurnover)", "DataSet.Account"), "2")))

    4. GroupValueTable (EvalExpressionWithGroupValueTable) ile İfadeyi Hesaplayın - işlev, her bir öğesi belirtilen alana göre gruplandırmaya yönelik bir ifadenin hesaplanmasının sonucunu içeren bir değerler tablosu döndürür.

    Sözdizimi:
    CalculateExpressionWithGroupValueTable (İfade, Grup Alanı İfadeleri, Kayıt Seçimi, Grup Seçimi)

    Seçenekler :

    • İfade(String) - değerlendirilecek ifade. Bir satır virgülle ayrılmış birden fazla ifade içerebilir. Her ifadeden sonra isteğe bağlı bir AS anahtar sözcüğü ve değer tablosu sütununun adı bulunabilir. Örneğin: "Karşı Taraf, Satış Hacmi Olarak Tutar (Ciro Tutarı)."
    • Alan İfadeleriGrupları- virgülle ayrılmış olarak gruplandırma alanlarının ifadeleri. Örneğin "Karşı Taraf, Taraf";
    • Kayıtların Seçimi- detay kayıtlarına uygulanan bir ifade. Örneğin, "Silme Bayrağı = Yanlış." Bu parametre bir toplama işlevi kullanıyorsa veriler oluşturulurken bir hata meydana gelecektir;
    • Gruplamaların Seçimi- grup kayıtlarına uygulanan seçim. Örneğin: "Tutar(TutarCiro) > &Parametre1".
    Örnek:
    Gruplama Değer Tablosu ile İfade Hesaplayın ("Karşı Taraf Olarak Hesap, Tutar (Ciro Tutarı) Satış Hacmi AS", "Hesap")

    Bu işlevin sonucu, karşı tarafları satış hacimleriyle birlikte içerecek olan Karşı Taraf ve Satış Hacmi sütunlarına sahip bir değerler tablosu olacaktır.
    Düzen oluşturucu, bir düzen oluştururken işlev parametrelerini veri kompozisyonu düzen alanları terimlerine dönüştürür. Örneğin Hesap alanı DataSet.Account'a dönüştürülecektir.
    Örneğin, şu ifadeyi içeren özel bir alan:
    CalculateExpressionWithGroupValueTable("Hesap, Tutar(AmountTurnover)", "Hesap")
    Düzen oluşturucu çıktı için aşağıdaki ifadeyi oluşturacaktır:
    ConnectRows(GetPart(Order(CalculateExpressionWithGroupingValueTable("DataSet.Account, DataSet.AccountReference, Sum(DataSet.AmountTurnover), View(DataSet.AmountTurnover), DataSet.OrderingField", "DataSet.Account"), "5, 1, 3" ), "2, 4"))

    5. Seviye - fonksiyon mevcut kayıt seviyesini elde etmek için tasarlanmıştır.

    Sözdizimi:
    Seviye()

    Örnek:
    Seviye()

    6. Sıra Numarası - bir sonraki seri numarasını alın.

    Sözdizimi:
    NumberByOrder()

    Örnek:
    NumberByOrder()

    7. SıraNumberInGruplama - geçerli gruplandırmadaki bir sonraki sıra numarasını döndürür.

    Örnek:
    NumberByOrderInGroup()

    8. Biçim - iletilen değerin biçimlendirilmiş bir dizesini alın.

    Sözdizimi:
    Format(Değer, FormatString)

    Seçenekler :

    • Anlam- biçimlendirilmesi gereken ifade;
    • BiçimDizesi- biçim dizesi 1C:Enterprise biçim dizesine uygun olarak ayarlanır.
    Örnek:
    Format(Sarf Malzemesi Faturaları.Belge Tutarı, "NPV=2")

    9.Dönem Başlangıcı

    Sözdizimi:
    StartPeriod(Tarih, Dönem Türü)

    Seçenekler :

    • tarih(Tarihi). Belirtilen tarih;
    • Dönem Türü
    Örnek:
    StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Ay")
    Sonuç: 10/01/2002 0:00:00

    10. Dönem Sonu - işlev, belirli bir tarihten belirli bir tarihi seçmek için tasarlanmıştır.

    Sözdizimi:
    EndPeriod(Tarih, Dönem Türü)

    Seçenekler :

    • tarih(Tarihi). Belirtilen tarih;
    • Dönem Türü(Astar). Aşağıdaki değerlerden birini içerir: Dakika; Saat; Gün; Bir hafta; Ay; Çeyrek; Yıl; On yıl; Yarım yıl.
    Örnek:
    EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Hafta")
    Sonuç: 13.10.2002 23:59:59

    11. KTarih Ekle (Tarih Ekle) - işlev tarihe belirli bir değer katmak için tasarlanmıştır.

    Sözdizimi:
    AddToDate(İfade, Artış Türü, Büyüklük)

    Seçenekler :

    • İfade(Tarihi). Orijinal tarih;
    • TürBüyütme(Astar). Aşağıdaki değerlerden birini içerir: Dakika; Saat; Gün; Bir hafta; Ay; Çeyrek; Yıl; On yıl; Yarım yıl.
    • Büyüklük(Sayı). Tarihin ne kadar artırılması gerekiyorsa kesirli kısım göz ardı edilir.
    Örnek:
    AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Ay", 1)
    Sonuç: 11/12/2002 10:15:34

    12. Tarih Farkı - fonksiyon iki tarih arasındaki farkı elde etmek için tasarlanmıştır.

    Sözdizimi:
    FarkTarihi(İfade1, İfade2, FarkTürü)

    Seçenekler :

    • İfade1(Tarihi). Çıkarılan tarih;
    • İfade2(Tarihi). Orijinal tarih;
    • TipFark(Astar). Değerlerden birini içerir: İkinci; Dakika; Saat; Gün; Ay; Çeyrek; Yıl.
    Örnek:
    DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34),
    DATETIME(2002, 10, 14, 9, 18, 06), "GÜN")
    Sonuç: 2

    13. Alt dize - bu işlev bir dizeden bir alt dize çıkarmak için tasarlanmıştır.

    Sözdizimi:
    Alt dize(Dize, Konum, Uzunluk)

    Seçenekler :

    • Astar(Astar). Alt dizenin çıkarıldığı dize;
    • Konum(Sayı). Dizeden çıkarılacak alt dizenin başladığı karakterin konumu;
    • Uzunluk(Sayı). Tahsis edilen alt dizenin uzunluğu.
    Örnek:
    SUBSTRING(Hesaplar.Adres, 1, 4)

    14. Dize Uzunluğu - işlev bir dizenin uzunluğunu belirlemek için tasarlanmıştır.

    Sözdizimi:
    StringLength(Dize)

    Parametre :

    • Astar(Astar). Uzunluğu belirtilen bir dize.
    Örnek:
    Satır(Karşı Taraflar.Adres)

    15 yıl- bu işlev, yılı bir Tarih türü değerinden çıkarmak için tasarlanmıştır.

    Sözdizimi:
    Yıl(Tarih)

    Parametre :

    • tarih(Tarihi). Yılın belirlendiği tarih.
    Örnek:
    YIL(Gider.Tarihi)

    16. Çeyrek - bu işlev, çeyrek sayısını bir Tarih türü değerinden çıkarmak için tasarlanmıştır. Çeyrek sayısı normalde 1'den 4'e kadar değişir.

    Sözdizimi:
    Çeyrek(Tarih)

    Parametre :

    • tarih(Tarihi). Çeyreğin belirlendiği tarih
    Örnek:
    ÇEYREK(Gider.Tarihi)

    17. Ay - bu işlev, ay sayısını Tarih türü değerinden çıkarmak için tasarlanmıştır. Ay sayısı normalde 1'den 12'ye kadar değişir.

    Sözdizimi:
    Ay Tarihi)

    Parametre :

    • tarih(Tarihi). Ayın belirlendiği tarih.
    Örnek:
    AY(Gider.Tarihi)

    18. Yılın Günü (Yılın Günü) - bu işlev, bir Tarih türü değerinden yılın gününü elde etmek için tasarlanmıştır. Yılın günü normalde 1 ile 365 (366) arasında değişir.

    Sözdizimi:
    Yılın Günü(Tarih)

    Parametre :

    • tarih(Tarihi). Yılın gününün belirlendiği tarih.
    Örnek:
    GÜNYIL(GiderHesabı.Tarih)

    19. Gün- bu işlev, bir Tarih türü değerinden ayın gününü elde etmek için tasarlanmıştır. Ayın günü normalde 1 ile 31 arasında değişir.

    Sözdizimi:
    Gün(Tarih)

    Parametre :

    • tarih(Tarihi). Ayın gününün belirlendiği tarih.
    Örnek:
    GÜN(Gider.Tarihi)

    20. Hafta - bu işlev, bir Tarih türü değerinden yılın hafta numarasını elde etmek için tasarlanmıştır. Yılın haftaları 1'den başlayarak numaralandırılır.

    Sözdizimi:
    Hafta(Tarih)

    Parametre :

    • tarih(Tarihi). Hafta numaralarının belirlendiği tarih.
    Örnek:
    HAFTA(Gider.Tarih)

    21. HaftaGün - bu işlev, Tarih türü değerinden haftanın gününü elde etmek için tasarlanmıştır. Haftanın normal günü 1'den (Pazartesi) 7'ye (Pazar) kadar değişir.

    Sözdizimi:
    Haftanın Günü(Tarih)

    Parametre :

    • tarih(Tarihi). Haftanın gününün belirlendiği tarih.
    Örnek:
    HAFTANIN GÜNÜ(Gider.Tarih)

    22. Saat- bu işlev, Tarih türü değerinden günün saatini elde etmek için tasarlanmıştır. Günün saati 0 ila 23 arasındadır.

    Sözdizimi:
    Saat(Tarih)

    Parametre :

    • tarih(Tarihi). Günün saatinin belirlendiği tarih.
    Örnek:
    SAAT(Gider.Tarihi)

    23. Dakika - bu işlev, Tarih türü değerinden saatin dakikasını elde etmek için tasarlanmıştır. Saatin dakikası 0 ile 59 arasında değişir.

    Sözdizimi:
    Dakika(Tarih)

    Parametre :

    • tarih(Tarihi). Saatin dakikasının belirlendiği tarih.
    Örnek:
    DAKİKA(Gider.Tarih)

    24. İkinci - bu işlev, Tarih türü değerinden bir dakikanın saniyesini elde etmek için tasarlanmıştır. Dakikanın saniyesi 0 ile 59 arasında değişir.

    Sözdizimi:
    İkinci(Tarih)

    Parametre :

    • tarih(Tarihi). Dakikanın saniyelerinin belirlendiği tarih.
    Örnek:
    İKİNCİ(Gider.Tarihi)

    25. Oyuncular - bu işlev, bileşik tür içerebilecek bir ifadeden tür çıkarmak için tasarlanmıştır. İfade gerekli türden farklı bir tür içeriyorsa NULL döndürülür.

    Sözdizimi:
    Ekspres(İfade, TürGösterge)

    Seçenekler :

    • İfade- dönüştürülecek ifade;
    • Tip Göstergesi(Astar). Bir tür dizesi içerir. Örneğin, "Sayı", "Dize" vb. Bu satır, ilkel türlerin yanı sıra tablonun adını da içerebilir. Bu durumda, belirtilen tabloya bir referans ifade edilmeye çalışılacaktır.
    Örnek:
    Express(Data.Props1, "Sayı(10,3)")

    26.IsNull (IsNull) - bu fonksiyon, eğer birinci parametrenin değeri NULL ise, ikinci parametrenin değerini döndürür. Aksi takdirde ilk parametrenin değeri döndürülecektir.

    Sözdizimi:
    IsNull(İfade1, İfade2)

    Seçenekler :

    • İfade1- kontrol edilecek değer;
    • İfade2- İfade1 NULL ise değeri döndürür.
    Örnek:
    YesNULL(Tutar(Satış.TutarCiro), 0)

    27.ACo'lar- ark kosinüsünü radyan cinsinden hesaplar.

    Sözdizimi:
    ACos(İfade)

    Parametre :

    • İfade(Sayı). Açının belirlendiği kosinüs değeri (-1 ... 1 aralığında).
    28.ASin- Arsinüsü radyan cinsinden hesaplar.

    Sözdizimi:
    ASin(İfade)

    Parametre :

    • İfade(Sayı). Açının belirlendiği sinüs değeri (-1 ... 1 aralığında).
    29. ATan- arktanjantı radyan cinsinden hesaplar.

    Sözdizimi:
    ATan(İfade)

    Parametre :

    • İfade(Sayı). Açının belirlendiği teğet değeri.
    30.Çünkü- kosinüsü hesaplar.

    Sözdizimi:
    Çünkü(İfade)

    Parametre :

    • İfade
    31. Deneyim- e sayısını bir kuvvete yükseltmek.

    Sözdizimi:
    İfade(İfade)

    Parametre :

    • İfade(Sayı). Derecenin anlamı.
    32.Günlük- doğal logaritmayı hesaplar.

    Sözdizimi:
    Günlük(İfade)

    Parametre :

    • İfade
    33.Günlük10- X'in 10 tabanına göre logaritmasını hesaplar.

    Sözdizimi:
    Log10(İfade)

    Parametre :

    • İfade(Sayı). Orijinal sayı 0'dan büyüktür.
    34. Güç- üs alma.

    Sözdizimi:
    Pow(Taban, Gösterge)

    Seçenekler :

    • Temel(Sayı). Üs alma işleminin temeli.
    • Dizin(Sayı). Üs.
    35. Günah- sinüsü hesaplar.

    Sözdizimi:
    Günah(İfade)

    Parametre :

    • İfade(Sayı). Radyan cinsinden belirtilir.
    36. Kare- karekökü hesaplar.

    Sözdizimi:
    Sqrt(İfade)

    Parametre :

    • İfade(Sayı). Negatif olmayan sayı.
    37. bronzluk- tanjantı hesaplar.

    Sözdizimi:
    Tan(İfade)

    Parametre :

    • İfade(Sayı). Açının belirlendiği sinüs değeri.
    38. Yuvarlak- orijinal sayıyı gereken bit derinliğine yuvarlar. Yuvarlama modu standarttır (1,5 - 2).

    Sözdizimi:
    Env(İfade, Bit derinliği)

    Seçenekler :

    • İfade(Sayı). Orijinal numara;
    • Bit derinliği(Sayı). Yuvarlanacak ondalık basamak sayısı.
    39. Uluslararası- bir sayının kesirli kısmını keser.

    Sözdizimi:
    Nesne(İfade)

    Parametre :

    • İfade(Sayı). Kesirli bir sayı.
    40. Ortak modüllerin işlevleri

    Bir veri kompozisyonu motoru ifadesi, genel ortak konfigürasyon modüllerinin işlevlerine yapılan çağrıları içerebilir. Bu tür işlevleri çağırmak için ek bir söz dizimine gerek yoktur.

    Örnek:
    KısaltılmışAd(Belgeler.Bağlantı, Belgeler.Tarih, Belgeler.Numara)

    Bu örnekte "KısaltılmışAd" fonksiyonu genel konfigürasyon modülünden çağrılacaktır.
    Ortak modül işlevlerinin kullanımına yalnızca uygun veri bileşimi işlemci parametresinin belirtilmesi durumunda izin verildiğini unutmayın.
    Ayrıca özel alan ifadelerinde ortak modüllerin işlevleri kullanılamaz.

    41. Kızgınlık - bu işlev, ilkel olmayan bir türün iletilen değerinin dize temsilini döndürür. İlkel türdeki değerler için değerin kendisini döndürür.

    <Пустое значение>".

    Örnek:
    Sunum(Karşı Taraf)

    42. Dize - bu işlev iletilen değeri bir dizeye dönüştürür.

    Parametre olarak bir dizi veya değerler tablosu kullanılıyorsa, işlev, "; " karakterleriyle ayrılmış olarak dizinin tüm öğelerinin dize temsilini içeren bir dize döndürür. Herhangi bir öğenin boş bir dize temsili varsa, o zaman " dizesi<Пустое значение>".

    Örnek:
    Satır(SatışTarihi)

    43. DeğerDoludur

    NULL değerler için Tanımsız her zaman False değerini döndürür.
    Boolean değerleri için her zaman True değerini döndürür.
    Diğer türler için, değer verilen türün varsayılan değerinden farklıysa True değerini döndürür.

    Örnek:
    DeğerDolu(TeslimatTarihi)

    44. LevelInGroup - bu işlev, gruplamaya göre geçerli kayıt düzeyini alır.

    Hiyerarşik bir gruplandırmada bir kaydın iç içe geçme düzeyini elde etmek için kullanılabilir.

    Örnek:
    LevelInGroup()

    45. Değer Türü

    Sözdizimi:
    ValueType(İfade)

    Parametre :

    • İfade(Astar). Dize değeri türü.
    İşlev parametresinin değer türünü içeren Type türünde bir değer döndürür.

    Bu kısa notta, bir veri kompozisyon sistemi kullanarak bir rapordaki çeşitli gruplandırma düzeylerinde değerleri nasıl özetleyebileceğinizi göstermek istiyorum.
    Resimde gösterildiği gibi, yalnızca "Öğe Grupları" gruplandırma düzeyinde "Sipariş" kaynağı hesaplanır ve belirli koşullara göre mevcut öğe grubu için ne kadar sipariş verilmesi gerektiğini görüntüler:


    Hesaplanacak herhangi bir değerin üstünde veya altında olmadığından bu değer yalnızca bu gruplandırma düzeyinde hesaplanabilir. Örneğin, ayrıntılı kayıtlar düzeyinde, bir gruptaki maksimum miktara ilişkin veri yoktur, çünkü bu veriler yalnızca bir bütün olarak grup için geçerlidir, bireysel bileşenleri için geçerli değildir.

    Buna göre artık yukarıdaki gruplamaların (“Depolar”, “Depo Tipleri”) toplamlarını ve genel toplamı hesaplamak gerekiyor.
    Bunu yapmak için işlevi kullanın CalculateExpressionWithGroupArray:
    GROUPARRAY İLE İFADEYİ DEĞERLENDİRİN (GROUPARRAY İLE EVALEXPRESSION)
    Sözdizimi:
    EvaluateExpressionWithGroupArray(,)
    Tanım:
    İşlev, her bir öğesi, bir ifadenin belirtilen alana göre gruplandırılması için değerlendirilmesinin sonucunu içeren bir dizi döndürür.
    Düzen oluşturucu, bir düzen oluştururken işlev parametrelerini veri kompozisyonu düzen alanları terimlerine dönüştürür. Örneğin Hesap alanı DataSet.Account'a dönüştürülecektir.
    Düzen oluşturucu, ifadesi yalnızca CalculateArrayWithGroupArray() işlevini içeren özel bir alanın çıktısı için ifadeler oluştururken, çıktı bilgilerinin sıralanması için çıktı ifadesini oluşturur. Örneğin, şu ifadeyi içeren özel bir alan için:

    CalculateExpressionWithGroupArray("Tutar(AmountTurnover)", "Karşı Taraf")
    Düzen oluşturucu çıktı için aşağıdaki ifadeyi oluşturacaktır:

    ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover))),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

    Seçenekler:

    Tür: Dize. Değerlendirilecek ifade. Dize, örneğin, Amount(AmountTurnover).

    Tür: Dize. Gruplandırma alanı ifadeleri – virgülle ayrılmış şekilde gruplandırma alanlarının ifadeleri. Örneğin Yüklenici, Taraf.

    Tür: Dize. Ayrıntı kayıtlarına uygulanan seçimi açıklayan bir ifade. İfade, toplama işlevlerinin kullanımını desteklemiyor. Örneğin, DeletionFlag = False.

    Tür: Dize. Grup kayıtlarına uygulanan seçimi açıklayan bir ifade. Örneğin, Tutar(TutarCiro) > &Parametre1.
    Örnek:

    Maksimum(CalculateExpressionWithGroupArray("Amount(AmountTurnover)", "Karşı Taraf"));

    İşlev sözdiziminin ayrıntılı bir açıklamasını http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582 adresinde bulabilirsiniz.
    Şimdi, hesaplama için, aşağıdaki ifadeleri kullanarak “Sırala” alanını farklı “Hesapla…” değerleri ile kopyalıyoruz, her bir yüksek seviyede, gruplandırmaların altındaki seviyelerin değerlerinin kullanıldığını unutmayın. .

    Sonuç olarak aşağıdaki yapıyı elde ederiz:

    İçerik
    1 Veri kompozisyon sistemi ifade dili
    2 Literal
    2.1 Dizi
    2.2 Sayı
    2.3 Tarih
    2.4 Boolean
    2.5 Anlamı
    3 Sayılarla işlemler
    3.1 Tekli –
    3.2 Tekli +
    3.3 İkili -
    3.4 İkili+
    3.5 Çalışma
    3.6 Bölüm
    3.7 Kalan
    4 Dize işlemleri
    4.1 Birleştirme (İkili +)
    4.2 Benzer
    5 Karşılaştırma işlemleri
    5.1 Eşit
    5.2 Eşit değil
    5.3 Daha az
    5.4 Daha Fazla
    5.5 Küçük veya eşit
    5.6 Büyük veya eşittir
    5.7 Operasyon B
    5.8 Bir veri setinde bir değerin varlığını kontrol etme işlemi
    5.9 NULL için bir değerin kontrol edilmesi işlemi
    5.10 NULL eşitsizliği için bir değeri kontrol etme işlemi
    6 Mantıksal işlemler
    6.1 Çalıştırma DEĞİL
    6.2 Operasyon I
    6.3 VEYA işlemi
    7 Toplama işlevleri
    7.1 Tutar
    7.2 Miktar
    7.3 Farklı sayısı
    7,4 Maksimum
    7,5 Asgari
    7,6 Ortalama
    8 Diğer işlemler
    8.1 SEÇİM işlemi
    9 İki değeri karşılaştırma kuralları
    10 NULL değeriyle çalışma
    11 Operasyon öncelikleri
    12 Veri kompozisyon sistemi ifade dilinin işlevleri
    12.1 Hesapla
    12.2 Seviye
    12.3 Sıradaki Sayı
    12.4 Gruplandırmada Sırayla Sayı
    12.5 Biçimi
    12.6 Dönem Başı
    12.7 Dönem Sonu
    12.8 Tarihe Ekle
    12.9 Tarih Farkı
    12.10 Alt dize
    12.11 Hat Uzunluğu
    12.12 Yılı
    12.13 Çeyrek
    12.14 Ay
    12.15 Yılın Günü
    12.16 Gün
    12.17 Hafta
    12.18 Haftanın Günü
    12.19 Saat
    12.20 Dakika
    12.21 İkinci
    12.22 Ekspres
    12.23 EvetNull
    12.24 Ortak modüllerin işlevleri

    Veri Bileşim Sistemi İfade Dili

    Veri kompozisyon sistemi ifade dili, sistemin çeşitli kısımlarında kullanılan ifadeleri yazmak için tasarlanmıştır.

    İfadeler aşağıdaki alt sistemlerde kullanılır:

    • veri düzeni şeması - hesaplanan alanları, toplam alanları, bağlantı ifadelerini vb. açıklamak için;
    • veri düzeni ayarları - özel alan ifadelerini tanımlamak için;
    • veri düzeni düzeni - veri kümelerini bağlamak, düzen parametrelerini açıklamak vb. için ifadeleri tanımlamak için.

    Değişmez değerler

    İfade değişmez değerler içerebilir. Aşağıdaki hazır bilgi türleri mümkündür:

    • Astar;
    • Sayı;
    • Tarihi;
    • Boolean.

    Astar

    Bir dize değişmezi “” karakterleriyle yazılır, örneğin:

    "Dize değişmezi"


    Bir dize değişmezi içinde “” karakterini kullanmanız gerekiyorsa, bu tür iki karakteri kullanmalısınız.

    Örneğin:

    “Gerçek anlamda ““tırnak içinde”““

    Sayı

    Sayı boşluksuz olarak ondalık formatta yazılır. Kesirli kısım "." sembolü kullanılarak ayrılır. Örneğin:

    tarih

    Bir tarih değişmez değeri DATETIME anahtarı kullanılarak yazılır. Bu anahtar kelimeden sonra yıl, ay, gün, saat, dakika, saniye, virgülle ayrılarak parantez içinde listelenir. Zaman spesifikasyonu gerekli değildir.

    Örneğin:
    DATETIME(1975, 1, 06) – 6 Ocak 1975
    DATETIME(2006, 12, 2, 23, 56, 57) – 2 Aralık 2006, 23 saat 56 dakika 57 saniye, 23 saat 56 dakika 57 saniye

    Boolean

    Boolean değerleri True (True), False (False) değişmez değerleri kullanılarak yazılabilir.

    Anlam

    Diğer türlerdeki değişmez değerleri (sistem numaralandırmaları, önceden tanımlanmış veriler) belirtmek için, Değer anahtar sözcüğü ve ardından parantez içindeki değişmez değerin adı kullanılır.
    Değer(Hesap Türü. Etkin)

    Sayılarla ilgili işlemler

    Tekli –

    Bu işlemin amacı bir sayının işaretini karşıt işarete değiştirmektir. Örneğin:
    -Satış miktarı

    Tekli +

    Bu işlem numara üzerinde herhangi bir işlem gerçekleştirmez. Örneğin:
    +Satış.Miktar

    İkili -

    Bu işlem iki sayının farkını hesaplamak için tasarlanmıştır. Örneğin:
    RemainingsAndTurnover.InitialRemaining – RemainingAndTurnover.FinalRemaining
    KalanlarVeTurnover.İlkKalan - 100
    400 – 357

    İkili +

    Bu işlem iki sayının toplamını hesaplamak için tasarlanmıştır. Örneğin:
    RemainsAndTurnover.InitialRemaining + RemainsAndTurnover.Ciro
    KalanlarVeTurnover.BaşlangıçKalan + 100
    400 + 357

    İş

    Bu işlem iki sayının çarpımını hesaplamak için tasarlanmıştır. Örneğin:
    İsimlendirme.Fiyat * 1,2
    2 * 3.14

    Bölüm

    Bu işlem bir işlenenin diğerine bölünmesi sonucunu elde etmek için tasarlanmıştır. Örneğin:
    İsimlendirme.Fiyat / 1.2
    2 / 3.14

    Bölümün geri kalanı

    Bu işlem, bir işlenenin diğerine bölünmesinden kalanı elde etmek için tasarlanmıştır. Örneğin:
    İsimlendirme.Fiyat% 1,2
    2 % 3.14

    Dize İşlemleri

    Birleştirme (İkili +)

    Bu işlem iki dizeyi birleştirmek için tasarlanmıştır. Örneğin:
    İsimlendirme.Makale + “: ”+ İsimlendirme.Ad

    Beğenmek

    Bu işlem, dizenin iletilen kalıpla eşleşip eşleşmediğini kontrol eder.

    LIKE operatörünün değeri, eğer değer<Выражения>modeli karşılıyor, aksi takdirde FALSE.

    Aşağıdaki karakterler<Строке_шаблона>satırdaki başka bir karakterden farklı bir anlama sahip:

    • % - yüzde: sıfır veya daha fazla rastgele karakter içeren bir dizi;
    • _ - alt çizgi: isteğe bağlı bir karakter;
    • […] - köşeli parantez içindeki bir veya daha fazla karakter: köşeli parantez içinde listelenenlerden herhangi biri olan bir karakter. Numaralandırma, aralığın uçları da dahil olmak üzere aralığa dahil edilen rastgele bir karakter anlamına gelen a-z gibi aralıklar içerebilir;
    • [^...] - köşeli parantez içinde bir olumsuzlama simgesi ve ardından bir veya daha fazla karakter: olumsuzlama simgesinden sonra listelenenler dışındaki herhangi bir karakter;

    Bunun dışındaki herhangi bir sembol kendini ifade eder ve herhangi bir ek yük taşımaz. Listelenen karakterlerden birinin kendisi olarak yazılması gerekiyorsa, önüne şu karakter yazılmalıdır:<Спецсимвол>ÖZEL KARAKTER anahtar sözcüğünden (ESCAPE) sonra belirtilir.

    Örneğin şablon
    “%ABV[abvg]\_abv%” ÖZEL KARAKTER “\”

    bir dizi karakterden oluşan bir alt dize anlamına gelir: A harfi; B harfleri; B harfleri; Bir basamak; a, b, c veya d harflerinden biri; vurgulamak; harfler a; harfler b; harfler Üstelik bu dizi, satırda isteğe bağlı bir konumdan başlayarak yerleştirilebilir.

    Karşılaştırma İşlemleri

    Eşittir

    Bu işlemin amacı iki işleneni eşitlik açısından karşılaştırmaktır. Örneğin:
    Sales.Counterparty = Sales.NomenclatureMainSupplier

    Eşit değil

    Bu işlemin amacı iki işleneni eşitsizlik açısından karşılaştırmaktır. Örneğin:
    Satış Karşı Taraf Satışları.

    Az

    Bu işlem, birinci işlenenin ikinciden küçük olup olmadığını kontrol etmek için tasarlanmıştır. Örneğin:
    Satış Cari.Tutar

    Daha

    Bu işlem, birinci işlenenin ikinciden büyük olup olmadığını kontrol etmek için tasarlanmıştır. Örneğin:
    Satış Cari.Sum > SatışGeçmiş Toplamı

    Daha az veya eşit

    Bu işlem, birinci işlenenin ikinciden küçük veya ona eşit olup olmadığını kontrol etmek için tasarlanmıştır. Örneğin:
    Satış Cari.Tutar

    Daha fazla veya eşit

    Bu işlem, birinci işlenenin ikinciden büyük veya ona eşit olup olmadığını kontrol etmek için tasarlanmıştır. Örneğin:
    Cari Satış Tutarı >= Geçmiş Satış Tutarı

    B Operasyonu

    Bu işlem, iletilen değerler listesinde bir değerin varlığını kontrol eder. Değer bulunursa işlemin sonucu True, aksi halde False olacaktır. Örneğin:
    Madde B (&Ürün1, &Ürün2)

    Bir veri setinde bir değerin varlığının kontrol edilmesi işlemi

    İşlem, belirtilen veri kümesinde bir değerin varlığını kontrol eder. Doğrulama veri kümesi bir alan içermelidir. Örneğin:
    Karşı Tarafa Satış.

    NULL için bir değerin kontrol edilmesi işlemi

    Değer NULL ise bu işlem True değerini döndürür. Örneğin:
    Satış.Karşı taraf BOŞ

    NULL eşitsizliği için bir değeri kontrol etme işlemi

    Bu işlem, değer NULL değilse True değerini döndürür. Örneğin:
    Karşı Taraf Satışı BOŞ DEĞİLDİR.

    Mantıksal işlemler

    Mantıksal işlemler Boolean türündeki ifadeleri işlenen olarak kabul eder.

    Operasyon DEĞİL

    NOT işlemi, işleneni Yanlış ise Doğru'yu, işleneni Doğru ise Yanlış'ı döndürür. Örneğin:
    Document.Consignee DEĞİL = Document.Consignor

    Operasyon I

    AND işlemi, her iki işlenen de Doğru ise Doğru'yu, işlenenlerden biri Yanlış ise Yanlış'ı döndürür. Örneğin:
    Document.Consignee = Document.Consignor VE Document.Consignee = &Karşı Taraf

    VEYA işlemi

    VEYA işlemi, işlenenlerinden biri Doğru ise Doğru'yu, her iki işlenen de Yanlış ise Yanlış'ı döndürür. Örneğin:
    Document.Consignee = Document.Consignor VEYA Document.Consignee = &Karşı Taraf

    Toplama işlevleri

    Toplama işlevleri bir veri kümesi üzerinde bazı eylemler gerçekleştirir.

    Toplam

    Toplama toplama işlevi, tüm ayrıntı kayıtları için bağımsız değişken olarak kendisine iletilen ifadelerin değerlerinin toplamını hesaplar. Örneğin:
    Tutar(Satış.TutarCiro)

    Miktar

    Count işlevi NULL dışındaki değerlerin sayısını hesaplar. Örneğin:
    Miktar(Satış.Karşı Taraf)

    Farklı sayısı

    Bu fonksiyon farklı değerlerin sayısını hesaplar. Örneğin:
    Adet(Çeşitli Satışlar.Karşı Taraf)

    Maksimum

    Fonksiyon maksimum değeri alır. Örneğin:
    Maksimum(Kalan.Miktar)

    Asgari

    Fonksiyon minimum değeri alır. Örneğin:
    Minimum(Kalan.Miktar)

    Ortalama

    İşlev NULL olmayan değerlerin ortalamasını alır. Örneğin:
    Ortalama(Kalan.Miktar)

    Diğer işlemler

    SEÇİM işlemi

    Seçim işlemi, belirli koşullar karşılandığında çeşitli değerlerden birini seçmeye yöneliktir. Örneğin:
    Tutar > 1000 Olduğunda Seçin, Aksi Halde Tutar 0 Son

    İki değeri karşılaştırma kuralları

    Karşılaştırılan değerlerin türleri birbirinden farklıysa, değerler arasındaki ilişkiler türlerin önceliğine göre belirlenir:
    NULL (en düşük);
    Boolean;
    Sayı;
    Tarihi;
    Astar;
    Referans türleri

    Farklı referans türleri arasındaki ilişkiler, belirli bir türe karşılık gelen tabloların referans numaralarına göre belirlenir.

    Veri türleri aynıysa değerler aşağıdaki kurallara göre karşılaştırılır:
    Boolean tipi için TRUE değeri FALSE değerinden büyüktür;
    Sayı türü, sayılar için olağan karşılaştırma kurallarına sahiptir;
    Tarih türü için önceki tarihler sonraki tarihlerden daha küçüktür;
    Dize türü için - dizelerin veritabanının belirlenmiş ulusal özelliklerine göre karşılaştırılması;
    referans türleri değerlerine (kayıt numarası vb.) göre karşılaştırılır.

    NULL Değeri ile Çalışmak

    İşlenenlerden birinin NULL olduğu herhangi bir işlem NULL sonuç üretecektir.

    İstisnalar var:
    AND işlemi yalnızca işlenenlerden hiçbiri Yanlış değilse NULL değerini döndürür;
    VEYA işlemi yalnızca işlenenlerinden hiçbiri Doğru değilse NULL değerini döndürür.

    Operasyon öncelikleri

    İşlemler aşağıdaki önceliklere sahiptir (ilk satır en düşük önceliğe sahiptir):
    VEYA;
    VE;
    OLUMSUZ;
    B, BOŞTUR, BOŞ DEĞİLDİR;
    =, <>, <=, <, >=, >;
    İkili +, İkili – ;
    *, /, %;
    Tekli +, Tekli -.

    Veri Bileşimi Sistemi İfade Dili İşlevleri

    Hesaplamak

    Hesapla işlevi, belirli bir gruplama bağlamında bir ifadeyi hesaplamak için tasarlanmıştır. Fonksiyon aşağıdaki parametrelere sahiptir:
    İfade. Dize yazın. Hesaplanmış bir ifade içerir;
    Gruplandırma. Dize yazın. İfadenin değerlendirileceği bağlamdaki gruplamanın adını içerir. Gruplandırma adı olarak boş bir dize kullanılırsa hesaplama geçerli gruplandırma bağlamında gerçekleştirilecektir. Grup adı olarak Genel Toplam dizesi kullanılırsa hesaplama genel toplam bağlamında gerçekleştirilecektir. Aksi takdirde hesaplama aynı adı taşıyan üst grup bağlamında gerçekleştirilecektir. Örneğin:
    Sum(Sales.SumTurnover) / Calculate("Sum(Sales.SumTurnover)", "Toplam")

    Bu örnekte sonuç, gruplama kaydının "Sales.AmountTurnover" alanına ilişkin tutarın tüm düzende aynı alanın tutarına oranı olacaktır.

    Seviye

    İşlev, geçerli kayıt düzeyini elde etmek için tasarlanmıştır.

    Örnek:
    Seviye()

    Sıradaki Sayı

    Bir sonraki sıra numarasını alın.

    Örnek:
    NumberByOrder()

    SayıInOrderInGruplama

    Geçerli gruplandırmadaki sonraki sıra sayısını döndürür.

    Örnek:
    NumberByOrderInGroup()

    Biçim

    İletilen değerin biçimlendirilmiş bir dizesini alın.

    Biçim dizesi, 1C:Enterprise biçim dizesine uygun olarak ayarlanır.

    Seçenekler:
    Anlam;
    Dizeyi biçimlendir.

    Örnek:
    Format(Sarf Malzemesi Faturaları.Belge Tutarı, "NPV=2")

    Dönemin başlangıcı

    Seçenekler:

      • Dakika;
      • Gün;
      • Bir hafta;
      • Ay;
      • Çeyrek;
      • On yıl;
      • Yarım yıl.

    Örnek:
    StartPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Ay")

    Sonuç:

    01.10.2002 0:00:00

    Dönem sonu

    İşlev, belirli bir tarihten belirli bir tarihi çıkarmak için tasarlanmıştır.

    Seçenekler:

    • Tarihi. Tarih yazın. Belirtilen tarih;
    • Dönem türü. Dize yazın. Aşağıdaki değerlerden birini içerir:
      • Dakika;
      • Gün;
      • Bir hafta;
      • Ay;
      • Çeyrek;
      • On yıl;
      • Yarım yıl.

    Örnek:
    EndPeriod(DateTime(2002, 10, 12, 10, 15, 34), "Hafta")

    Sonuç:

    13.10.2002 23:59:59

    Tarihe Ekle

    İşlev, bir tarihe belirli bir değer eklemek için tasarlanmıştır.

    Seçenekler:

    • Büyütme türü. Dize yazın. Aşağıdaki değerlerden birini içerir:
      • Dakika;
      • Gün;
      • Bir hafta;
      • Ay;
      • Çeyrek;
      • On yıl;
      • Yarım yıl.
    Tutar – tarihi ne kadar artırmanız gerektiği. Numara giriniz. Kesirli kısım göz ardı edilir.

    Örnek:
    AddToDate(DateTime(2002, 10, 12, 10, 15, 34), "Ay", 1)

    Sonuç:

    12.11.2002 10:15:34

    Tarih Farkı

    Fonksiyon iki tarih arasındaki farkı bulmak için tasarlanmıştır.

    Seçenekler:

    • İfade. Tarih yazın. Orijinal tarih;
    • İfade. Tarih yazın. Çıkarılan tarih;
    • Fark türü. Dize yazın. Aşağıdaki değerlerden birini içerir:
      • Saniye;
      • Dakika;
      • Gün;
      • Ay;
      • Çeyrek;

    Örnek:
    DATEDIFFERENCE(DATETIME(2002, 10, 12, 10, 15, 34),
    DATETIME(2002, 10, 14, 9, 18, 06), "GÜN")

    Sonuç:

    Alt dize

    Bu işlev bir dizeden bir alt dize çıkarmak için tasarlanmıştır.

    Seçenekler:

    • Astar. Dize yazın. Alt dizenin çıkarıldığı dize;
    • Konum. Numara giriniz. Dizeden çıkarılacak alt dizenin başladığı karakterin konumu;
    • Uzunluk. Numara giriniz. Tahsis edilen alt dizenin uzunluğu.

    Örnek:
    SUBSTRING(Hesaplar.Adres, 1, 4)

    Hat Uzunluğu

    Fonksiyon bir stringin uzunluğunu belirlemek için tasarlanmıştır.

    Parametre:
    Astar. Dize yazın. Uzunluğu belirtilen bir dize.

    Örnek:
    Satır(Karşı Taraflar.Adres)

    Bu işlev, yılı bir Tarih türü değerinden çıkarmak için tasarlanmıştır.

    Parametre:
    Tarihi. Tarih yazın. Yılın belirlendiği tarih.

    YIL(Gider.Tarihi)

    Çeyrek

    Bu işlev, çeyrek sayısını bir Tarih türü değerinden çıkarmak için tasarlanmıştır. Çeyrek sayısı normalde 1'den 4'e kadar değişir.

    Parametre
    Tarihi. Tarih yazın. Çeyreğin belirlendiği tarih

    ÇEYREK(Gider.Tarihi)

    Ay

    Bu işlev, ay sayısını bir Tarih türü değerinden çıkarmak için tasarlanmıştır. Ay sayısı normalde 1'den 12'ye kadar değişir.
    Tarihi. Tarih yazın. Ayın belirlendiği tarih.
    AY(Gider.Tarihi)

    Yılın Günü

    Bu işlev, yılın gününü bir Tarih türü değerinden elde etmek için tasarlanmıştır. Yılın günü normalde 1 ile 365 (366) arasında değişir.
    Tarihi. Tarih yazın. Yılın gününün belirlendiği tarih.
    GÜNYIL(GiderHesabı.Tarih)

    Gün

    Bu işlev, bir Tarih türü değerinden ayın gününü elde etmek için tasarlanmıştır. Ayın günü normalde 1 ile 31 arasında değişir.
    Tarihi. Tarih yazın. Ayın gününün belirlendiği tarih.
    GÜN(Gider.Tarihi)

    Bir hafta

    Bu işlev, bir Tarih türü değerinden yılın hafta numarasını elde etmek için tasarlanmıştır. Yılın haftaları 1'den başlayarak numaralandırılır.
    Tarihi. Tarih yazın. Hafta numaralarının belirlendiği tarih.
    HAFTA(Gider.Tarih)

    Haftanın günü

    Bu işlev, Tarih türü değerinden haftanın gününü elde etmek için tasarlanmıştır. Haftanın normal günü 1'den (Pazartesi) 7'ye (Pazar) kadar değişir.
    Tarihi. Tarih yazın. Haftanın gününün belirlendiği tarih.
    HAFTANIN GÜNÜ(Gider.Tarih)

    Bu işlev, Tarih türü değerinden günün saatini elde etmek için tasarlanmıştır. Günün saati 0 ila 23 arasındadır.
    Tarihi. Tarih yazın. Günün saatinin belirlendiği tarih.
    SAAT(Gider.Tarihi)

    Dakika

    Bu işlev, Tarih türü değerinden saatin dakikasını elde etmek için tasarlanmıştır. Saatin dakikası 0 ile 59 arasında değişir.
    Tarihi. Tarih yazın. Saatin dakikasının belirlendiği tarih.
    DAKİKA(Gider.Tarih)

    Saniye

    Bu işlev, bir Tarih türü değerinden dakikanın saniyesini elde etmek için tasarlanmıştır. Dakikanın saniyesi 0 ile 59 arasında değişir.
    Tarihi. Tarih yazın. Dakikanın saniyelerinin belirlendiği tarih.
    İKİNCİ(Gider.Tarihi)

    İfade etmek

    Bu işlev, bileşik tür içerebilen bir ifadeden tür çıkarmak için tasarlanmıştır. İfade gerekli türden farklı bir tür içeriyorsa NULL döndürülür.

    Seçenekler:
    Dönüştürülecek ifade;
    Tip göstergesi. Dize yazın. Bir tür dizesi içerir. Örneğin, "Sayı", "Dize" vb. Bu satır, ilkel türlerin yanı sıra tablonun adını da içerebilir. Bu durumda, belirtilen tabloya bir referans ifade edilmeye çalışılacaktır.

    Örnek:
    Express(Data.Props1, "Sayı(10,3)")

    Boş mu

    Bu fonksiyon, eğer birinci parametrenin değeri NULL ise, ikinci parametrenin değerini döndürür.

    Aksi takdirde ilk parametrenin değeri döndürülecektir.

    Örnek:
    YesNULL(Tutar(Satış.TutarCiro), 0)

    Ortak modüllerin işlevleri

    Bir veri kompozisyonu motoru ifadesi, genel ortak konfigürasyon modüllerinin işlevlerine yapılan çağrıları içerebilir. Bu tür işlevleri çağırmak için ek bir söz dizimine gerek yoktur.

    Örnek:
    KısaltılmışAd(Belgeler.Bağlantı, Belgeler.Tarih, Belgeler.Numara)

    Bu örnekte "KısaltılmışAd" fonksiyonu genel konfigürasyon modülünden çağrılacaktır.

    Ortak modül işlevlerinin kullanımına yalnızca uygun veri bileşimi işlemci parametresinin belirtilmesi durumunda izin verildiğini unutmayın.

    Ayrıca özel alan ifadelerinde ortak modüllerin işlevleri kullanılamaz.

    [linki görebilmek için kayıt olmalısınız]