ckd 1s'de hesaplanan alanlar 8.3. Veri oluşturma sistemi ifade dili işlevleri

Öğrenci olarak giriş yapın

Okul malzemelerine erişmek için öğrenci olarak oturum açın

Yeni başlayanlar için veri kompozisyon sistemi 1C 8.3: sonuçları düşünün (kaynaklar)

Bu eğitimin amacı:

  • Yiyeceklerin bir listesini (yemek rehberi), kalori içeriğini ve tadını gösteren bir rapor yazın.
  • Ürünleri renge göre gruplandırın.
  • Özetleme (kaynaklar) ve hesaplanan alanlar hakkında bilgi edinin.

Yeni bir rapor oluşturma

Önceki derslerde olduğu gibi üssü açıyoruz " Şarküteri"yapılandırıcıda ve menü aracılığıyla yeni bir rapor oluştur" Dosya"->"Yeni...":

Belge türü - dış rapor:

Raporu ayarlama şeklinde, adını yazın " ders 3"ve düğmeye basın" Veri oluşturma şemasını aç":

Varsayılan şema adını bırakın ve " Hazır":

Yapıcı aracılığıyla bir istek ekleme

Üzerinde " veri seti"itmek Yeşil artı işaretleyip öğeyi seçin " Veri kümesi ekle - sorgu":

İstek metnini manuel olarak yazmak yerine tekrar çalıştırıyoruz. sorgu oluşturucu:

Üzerinde " Tablolar"masayı sürükle" Gıda"ilk sütundan ikinciye:

Tablodan seçim " Gıda"talep edeceğimiz alanlar. Bunu yapmak için alanları sürükleyin" İsim", "Damak zevki", "Renk" ve " kalori içeriği"ikinci sütundan üçüncü sütuna:

Şu şekilde çıktı:

Düğmesine basın " Tamam"- istek metni otomatik olarak oluşturuldu:

Raporun sunumu için ayarları oluşturuyoruz

Yer işaretine git " Ayarlar"ve tıklayın sihirli değnek, aramak ayarlar oluşturucu:

Rapor türünü seçme " Liste... "ve düğmeye basın" Daha öte":

Sol sütundan listede görüntülenecek sağ alanlara sürükleyin ve " Daha öte":

Sol sütundan sağ kenar boşluğuna sürükleyin " Renk"- Olacak gruplama Rapordaki satırlar. Tıklamak " Tamam":

Ve işte yapıcının çalışmasının sonucu. Raporumuzun hiyerarşisi:

  • bir bütün olarak rapor
  • "Renk" gruplandırma
  • detaylı kayıtlar - yemek isimleri olan satırlar

Raporu kaydet (düğme disket) ve kapatmadan yapılandırıcının, hemen kullanıcı modunda açacağız. Şu şekilde çıktı:

Sütunların sırasını değiştirme

Ama hadi siparişi değiştir sütunları (yukarı ve aşağı oklar) aşağıdaki resimdeki gibi görünecek şekilde:

Raporu kaydedelim ve kullanıcı modunda yeniden açalım:

Harika, çok daha iyi.

Kalori içeriğine göre özetleme (miktar)

Yiyeceklerin kalori içeriğini gruplara göre özetlemek güzel olurdu. Beyaz veya sarı gibi tüm yiyeceklerin kalorilerinin toplamını görmek için. Veya veritabanındaki tüm ürünlerin toplam kalori içeriğini öğrenin.

Bunun için kaynakları hesaplamak için bir mekanizma var.

" Kaynaklar"ve alanı sürükleyin" kalori içeriği"(özetleyeceğiz) sol sütundan sağa.

Bu durumda, ifade alanında açılır listeden seçin " Miktar (Kalori)", toplam, toplamda yer alan tüm öğelerin toplamı olacağından:

Bir rapor kaydediyor ve oluşturuyoruz:

Artık grupların her biri ve bir bütün olarak rapor için toplamlarımız var.

Kalori içeriğine göre özetleme (ortalama)

Şimdi bir sütun daha görüntülenecek şekilde yapalım ortalamaürünlerin kalori içeriği gruplara göre ve genel olarak rapora göre.

Halihazırda var olan "Kalori" sütununa dokunamazsınız - toplam miktar zaten içinde gösterilir, bu nedenle hadi başka bir alan alalım"Kalori içeriği" alanının tam bir kopyası olacaktır.

Böyle bir "sanal" alan oluşturmak için mekanizmayı kullanacağız. hesaplanan alanlar.

Yer işaretine git " Hesaplanan alanlar"ve tıklayın Yeşil artı işareti:

Bir sütunda " Veri yolu"yeni alanın adını yazın ( bir arada, boşluksuz). denilsin" Ortalama kalori içeriği"ve sütunda" İfade"yeni alanın hesaplanacağı mevcut bir alanın adını yazıyoruz. Oraya yazıyoruz" kalori içeriği". Konuşmacı" Başlık"otomatik olarak doldurulacaktır.

Yeni bir alan ekledik (" Ortalama kalori içeriği"), ancak raporda kendi başına görünmeyecek - aramanız gerekir ayarlar oluşturucu("sihirli değnek") veya bu alanı ekleyin manuel olarak.

hadi yapalım ikinci yol. Bunu yapmak için " Ayarlar", Seç" Rapor"(sonuçta alanı bir bütün olarak rapora eklemek istiyoruz), aşağıdaki sekmeyi seçin" Seçili alanlar"ve alanı sürükleyin" Ortalama kalori içeriği"sol sütundan sağa:

Şu şekilde çıktı:

Bir rapor kaydediyor ve oluşturuyoruz:

Alan ortaya çıktı ve değerlerinin "Kalori içeriği" alanının değerleri olduğunu görüyoruz. İyi!

Bunu yapmak için zaten tanıdık mekanizmayı tekrar kullanacağız. Kaynaklar(özetleme). Yer işaretine git " Kaynaklar"ve alanı sürükleyin" Ortalama kalori içeriği"sol sütundan sağa:

Ayrıca, sütunda " İfade"Seç" Ortalama (Ortalama Kalori)":

Bir rapor kaydediyor ve oluşturuyoruz:

Gruplar için yani her bir renk için ve bir bütün olarak rapor için ortalama değerin oldukça doğru hesaplandığını görüyoruz. Ama var ekstra girişler rapordan çıkarmak istediğimiz tek tek ürünler için (gruplar için değil).

Neden göründüklerini biliyor musunuz (değerler gruba göre değil)? Çünkü alanı eklediğimizde " Ortalama kalori içeriği"rapor ayarlarında, seçtiğimiz ikinci adımda raporun tamamı bir bütün olarak ve bu yeni alan öğeye girdi " Detaylı kayıtlar".

Hatayı düzeltelim. Bunu yapmak için, " Ayarlar", Seçme" Ayrıntılı kayıtlar"önce yukarıdan (adım 2) ve sonra" Ayrıntılı kayıtlar"aşağıda (3. adım), sekmeye gidin" Seçildi alanlar"ve sağ sütununda bir öğe göreceğiz" Oto".

eleman " Oto"bir alan değil. Bunlar, daha yüksek ayarlara göre otomatik olarak buraya gelen birkaç alan.

Bu alanların ne olduğunu görmek için - tıklayın " Oto" sağ düğmesine basın ve öğeyi seçin " Genişletmek":

eleman " Oto"aşağıdaki alanlara genişletildi:

Ve işte bizim alanımız " Ortalama kalori içeriği"hangi noktadan buraya geldi" Rapor"Onu oraya sürüklediğimizde. çıkarmakçıktısını kaldırmak için bu alanın yanındaki onay kutusu.

1. Hesapla (Değerlendir)- bir ifadeyi bazı gruplandırma bağlamında değerlendirmeye yöneliktir. İşlev, uyumluluk için kullanılır önceki sürümler platformlar. Bunun yerine EvaluateExpression işlevini kullanmanız önerilir.

Sözdizimi:
Hesapla (İfade, Gruplama, Hesaplama Türü)

Seçenekler :

  • İfade(Hat). Hesaplanmış bir ifade içerir;
  • gruplama(Hat). İfadenin değerlendirileceği bağlamda 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 GeneralTotal dizesi kullanılırsa, hesaplama genel toplam bağlamında gerçekleştirilecektir. Aksi takdirde, hesaplama bu adla üst gruplama bağlamında gerçekleştirilecektir.
    Örneğin:
    Tutar (Satış.Ciro Tutarı) / Hesapla ("Tutar (Satış.Ciro Tutarı)", "ToplamToplam").
    V bu örnek sonuç olarak, gruplama kaydının "Sales.SumTurnover" alanı için tutarın tüm mizanpajdaki aynı alanın toplamına oranını elde edersiniz.
  • Yerleşim Türü(Hat). Bu parametre "OverallTotal" olarak ayarlanırsa, tüm gruplama kayıtları için ifade hesaplanır. Parametrenin değeri "Gruplama" ise, gruplamanın mevcut grup kaydı için değerler hesaplanacaktır.
2. İfadeyi Değerlendir - bir ifadeyi bazı gruplandırma bağlamında değerlendirmeye yöneliktir. İşlev, gruplama seçimini hesaba katar, ancak hiyerarşik seçimleri hesaba katmaz. İşlev, bu gruplandırmanın grup seçiminde bir gruplamaya uygulanamaz.

Sözdizimi:
EvaluateExpression (Expression, Grouping, CalculationType, Start, End, Sort, HierarchicalSort, ProcessSimilarOrderValues)

Seçenekler :

  • İfade(Hat). Hesaplanmış bir ifade içerir;
  • gruplama(Hat). İfadenin değerlendirileceği bağlamda 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 GeneralTotal dizesi kullanılırsa, hesaplama genel toplam bağlamında gerçekleştirilecektir. Aksi takdirde, hesaplama aynı ada sahip üst gruplama bağlamında gerçekleştirilecektir;
  • Yerleşim Türü(Hat). Bu parametre "OverallTotal" olarak ayarlanırsa, tüm gruplama kayıtları için ifade hesaplanır. Parametrenin değeri "Gruplama" ise, gruplamanın mevcut grup kaydı için değerler hesaplanacaktır. Parametre "Kaynak Dışı Gruplama" olarak ayarlanmışsa, kaynaklara göre bir grup kaydı için fonksiyon hesaplanırken, ifade orijinal gruplandırmanın ilk grup kaydı için hesaplanacaktır. Kaynak gruplamaları olmayan grup kayıtları için bir Kaynak Dışı Gruplama değeriyle İfadeyi Değerlendir işlevi değerlendirilirken, işlev, Gruplama parametre değeriyle aynı şekilde değerlendirilir. Veri oluşturma şablonu oluşturucusu, veri oluşturma şablonunu oluştururken, şablona bir alan - gruplamanın gerçekleştirildiği bir kaynak çıktısı verirken, şablonda belirtilen "GroupingNoResource" parametresiyle EvaluateExpression işlevi kullanılarak hesaplanan bir ifade yayınlar. Kaynağa göre gruplandırılmış kaynakların geri kalanı için normal kaynak ifadeleri döndürülür. Parametre Hiyerarşi olarak ayarlanırsa, ifade varsa üst hiyerarşik kayıt için ve üst hiyerarşik kayıt yoksa tüm gruplama için değerlendirilmelidir. Düzen oluşturucu, hiyerarşi grubundaki % alanı için bir ifade oluştururken, Hiyerarşi hesaplama türüyle geçerli gruplandırma için değerlendirilen kaynak ifadesi için kaynak ifadesinin EvaluateExpression işleviyle ilişkisini içeren bir ifade oluşturur.
  • Başlangıç... Parçanın hangi kayıtla başlatılacağını, ifadenin toplama işlevlerinin hangisinde hesaplanacağını ve toplama işlevlerinin dışındaki alanların değerlerinin hangi kayıttan alınacağını belirtir. Aşağıdakilerden birini içeren bir dize:
    • "Birinci" ("Birinci"). Gruplandırmanın ilk kaydı alınmalıdır. 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, İlk (3) - gruplamanın başlangıcından üçüncü kaydı almak. İlk kayıt gruplama limitlerinin dışında ise kayıt olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve İlk (4)'ü almak istiyorsanız, kayıt olmadığı kabul edilir.
    • "Son". En son gruplama kaydını almanız gerekir. Parantez içindeki sözcükten sonra, sonucu gruplamanın sonundan itibaren bir ofset olarak kullanılacak bir ifade belirtilebilir. Ortaya çıkan değer, sıfırdan büyük bir tam sayı olmalıdır. Örneğin, Son (3) - gruplamanın sonundan üçüncü kaydı almak. Son kayıt gruplama limitlerinin dışında ise kayıt olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve Son (4)'ü almak istiyorsanız, kayıt olmadığı kabul edilir.
    • "Önceki" ("Önceki"). Önceki gruplama kaydını almanız gerekir. Parantez içindeki sözcükten sonra bir ifade belirtilebilir, bunun sonucu geçerli gruplama kaydından geriye doğru bir ofset olarak kullanılacaktır. Örneğin, Önceki (2) - önceki kayıttan öncekini alın. Bir önceki kayıt gruplamanın ötesine geçerse (örneğin, Önceki (3) almak istediğiniz ikinci gruplama kaydı için), 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". Bir sonraki gruplama kaydını almanız gerekir. Parantez içindeki sözcükten sonra bir ifade belirtilebilir, bunun sonucu geçerli gruplama kaydından ileri doğru bir kaydırma olarak kullanılacaktır. Örneğin, Sonraki (2) - sonraki kayıttan bir sonrakini alın. Bir sonraki kayıt gruplamanın dışına çıkarsa kayıt olmadığı kabul edilir. Örneğin, 3 kayıt varsa ve üçüncü kayıt için Sonraki alındıysa, kayıt yoktur. Gruplama toplamı için bir sonraki kayıt alındığında kayıt olmadığı kabul edilir.
    • "Şimdiki şimdiki"). Mevcut kaydı almanız gerekir. Gruplama toplamı alınırken ilk kayıt alınır.
    • "Sınır değeri". Belirtilen değerde bir kayıt alma ihtiyacı. Parantez içindeki LimitingValue kelimesinden sonra, ilk sıralama alanı olan parçayı başlatmak istediğiniz değeri ile ifadeyi belirtmeniz gerekir. Kayıt olarak, sıralama alanının değeri belirtilen değerden büyük veya ona eşit olan ilk kayıt elde edilecektir. Örneğin, dönem alanı sipariş alanı olarak kullanılıyorsa ve 01/01/2010, 01/02/2010, 01/03/2010 değerlerine sahipse ve bir BoundingValue (DateTime (2010) almak istiyorsanız) , 1, 15)), ardından 01.02.2010 tarihli bir kayıt alacaksınız.
  • Son... Toplam ifadenin değerlendirileceği yığına hangi kayda devam edileceğini gösterir. Aşağıdakilerden birini içeren bir dize:
    • "Birinci" ("Birinci").
    • "Son".
    • "Önceki" ("Önceki").
    • "Sonraki".
    • "Şimdiki şimdiki").
    • "Sınır değeri".
  • sıralama... Diziyi sıralamak istediğiniz yönde virgülle ayırarak ifadeleri listeleyen bir dize. Belirtilmezse, sıralama, ifadenin değerlendirildiği gruplandırmayla aynı şekilde gerçekleştirilir. Her ifadeden sonra, artan sıra için Artan, azalan sıra için Azalan, Otomatik sıralayan, başvurulan alanları, başvurulan nesneyi sıralamak istediğiniz alanlara göre sıralamak için anahtar kelimesini belirtebilirsiniz. Otomatik Düzenleme kelimesi hem Artan hem de Azalan ile kullanılabilir.
  • Hiyerarşik Sıralama... Sıralamaya benzer. Hiyerarşik kayıtları düzenlemek için kullanılır. Belirtilmezse, düzen oluşturucu sıralamayı Sort parametresinde belirtilen sıralamaya göre oluşturur.
  • Aynı sipariş değerlerinin işlenmesi... Aşağıdakilerden birini içeren bir dize:
    • "Birlikte", önceki ve sonraki kayıtları tanımlamak için bir sıralı kayıt dizisinin kullanıldığını belirtir;
    • "Ayrı" - önceki ve sonraki kayıtların sıralama ifadelerinin değerlerine göre belirlendiğini belirtir;
    Örneğin, elde edilen dizi tarihe göre sıralanırsa:
    1.01 Ocak 2001 İvanov M. 10
    2.02 Ocak 2001 Petrov S. 20
    3.02 Ocak 2001 Sidorov R. 30
    4. 03 Ocak 2001 Petrov S. 40
    işleme kullanırken aynı değerler"Ayrı" siparişinde, 3'ü kaydeden önceki kayıt 2 olacak ve “Birlikte” kullanıldığında - kayıt 1 olacak ve mevcut kaydın “Ayrı” için 2 kaydedecek parçası kayıt 2 olacak ve “ Birlikte” - 2 ve 3 numaralı kayıtlar Böylece, "Ayrı" için geçerli kaydın toplamı 20 ve "Birlikte" için - 50 olacaktır. Başlangıç ​​ve Bitiş parametrelerinde "Birlikte" belirtilirse, bir ofset belirtemezsiniz. "İlk", "Son", "Önceki", "Sonraki" konumları için. Varsayılan, Ayrı'dır.
Örnek:
Gruplama kaydının "Sales.SumTurnover" alanı için tutarın tüm mizanpajdaki aynı alanın tutarına oranını alma:
Tutar (Sales.SumTurnover) / CalculateExpression ("Miktar (Sales.SumTurnover)", "ToplamToplam").

Bu örnek, mevcut hiyerarşinin değerini hesaplar:
Tercih
Düzey ()> 0 olduğunda
Ardından EvaluateExpression ("Referans", "Hiyerarşi")
Aksi takdirde Null
Son

Notlar:
İşlev, gruplama seçimini hesaba katar, ancak hiyerarşik seçimleri hesaba katmaz. İşlev, bu gruplandırmanın grup seçiminde bir gruplamaya uygulanamaz. Örneğin, Nomenclature gruplandırmasının seçiminde CalculateExpression ("Sum (SumTurnover)", "TotalTotal")> 1000 ifadesini kullanamazsınız. 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 toplama fonksiyonlarının hesaplanması için kayıt olmadığı kabul edilir. Genel toplam için aralık ifadeleri hesaplanırken (Gruplama parametresi "Toplam" olarak ayarlanmıştır), ayrıntılı verileri hesaplamak ve toplama işlevlerini hesaplamak için kayıt olmadığı varsayılır. Düzen oluşturucu, EvaluateExpression işlevi için bir ifade oluştururken, sıralama ifadesi gruplandırmada kullanılamayan alanlar içeriyorsa, EvaluateExpression işlevini NULL ile değiştirir.

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

Sözdizimi:
EvaluateGroupExpressionArray (Expression ,GroupFieldExpressions, RecordSelection, GroupSelection)

Seçenekler :

  • İfade(Dize) - değerlendirilecek ifade. Örneğin, "Miktar (AmountCirnover)";
  • Alan İfadeleri
  • Kayıtların Seçimi
  • Grup Seçimi- grup kayıtlarına uygulanan seçim. Örneğin: "Miktar (AmountTurnover)> & Parametre1".
Örnek:
Maksimum (CalculateExpressionWithGroupArray ("Sum (SumTurnover)", "Karşı Taraf"));


Çıktı için ifadeler oluştururken mizanpaj bağlayıcısı özel alan ifadesi yalnızca EvaluateArrayWithGrouping işlevini içeren, verilerin görüntülenmesi ve verilerin sıralanması için çıktı ifadesini oluşturur.
Örneğin, ifade içeren özel bir alan için:
CalculateExpressionWithGroupArray ("Sum (SumTurnover)", "Karşı taraf")
düzen bağlayıcı çıktı için aşağıdaki ifadeyi üretecektir:
Satırları Bağlayın (Array (EvaluateExpressionWith GroupingValuesTable ("Görünüm (Sum (Dataset.SumTurnover))), Sum (Dataset.SumTurnover)", "Dataset.Contractor"), "2"))

4. EvaluateExpressionWithGroupValueTable (EvalExpressionWithGroupValueTable) - işlev, her bir öğesi, belirtilen alana göre gruplandırma için ifadenin değerlendirilmesinin sonucunu içeren bir değerler tablosu döndürür.

Sözdizimi:
EvaluateGroupExpressionValueTable (Expression, GroupField Expressions, RecordSelection, GroupSelection)

Seçenekler :

  • İfade(Dize) - değerlendirilecek ifade. Bir satırda virgülle ayrılmış birkaç ifade listelenebilir. Her ifadeyi isteğe bağlı bir AS anahtar kelimesi ve bir değerler tablosu sütununun adı takip edebilir. Örneğin: "Karşı Taraf, Satış Hacmi Olarak Tutar (AmountCirnover)".
  • Alan İfadeleri- virgülle ayrılmış alan gruplandırma ifadeleri. Örneğin, "Karşı Taraf, Taraf";
  • Kayıtların Seçimi- ayrıntılı kayıtlara uygulanan bir ifade. Örneğin, "Silme İşareti = Yanlış". Bu parametrede bir toplama işlevi kullanılırsa, veri oluşturma işlemi gerçekleştirilirken bir hata oluşur;
  • Grup Seçimi- grup kayıtlarına uygulanan seçim. Örneğin: "Miktar (AmountTurnover)> & Parametre1".
Örnek:
CalculateExpressionWithGroupValuesTable ("Karşı Taraf Olarak Karşı Taraf, Satış Hacmi Olarak Tutar (AmountCirnover)", "Karşı Taraf")

Bu işlevin sonucu, karşı tarafların satış hacimleriyle yer alacağı Karşı Taraf ve Satış Hacmi sütunlarıyla bir değerler tablosu olacaktır.
Düzen oluşturucu, düzeni oluştururken, işlev parametrelerini veri kompozisyonu düzen alanlarının terimlerine dönüştürür. Örneğin, Hesap alanı Dataset.Contractor'a dönüştürülecektir.
Örneğin, şu ifadeye sahip özel bir alan:
CalculateExpressionWithGroupValuesTable ("Hesap, Tutar (AmountCirnover)", "Hesap")
Düzen oluşturucu, çıktı için aşağıdaki ifadeyi üretecektir:
ConnectRows (GetPart (Arrange (EvaluateGroupExpressionValuesTable ("Dataset.Contractor, Dataset.ContractorPresentation, Sum (Dataset.SumTurnover), View (Dataset.TotalTurnover), Dataset.Field" Arranged "," 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ı - sıradaki seri numarası.

Sözdizimi:
NumaraSipariş ()

Örnek:
NumaraSipariş ()

7. Sıra NumarasıGruplama - geçerli gruplamadaki bir sonraki sıra numarasını döndürür.

Örnek:
NumberOrderInGrouping ()

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

Sözdizimi:
Biçim (Değer, BiçimDizesi)

Seçenekler :

  • Anlam- biçimlendirilecek ifade;
  • BiçimDizesi- biçim dizgisi 1C: Kurumsal biçim dizgisine göre ayarlanır.
Örnek:
Biçim (Faturalar.SumDoc, "NPT = 2")

9. Dönemin Başlangıcı (Periyodun Başlangıcı)

Sözdizimi:
Dönem Başlangıcı (Tarih, Dönem Türü)

Seçenekler :

  • tarih(Tarih). Belirtilen tarih;
  • Dönem Türü
Örnek:
Dönemin Başlangıcı (DateTime (2002, 10, 12, 10, 15, 34), "Ay")
Sonuç: 01.10.2002 0:00:00

10. EndOfPeriod (EndOfPeriod) - işlev, belirli bir tarihten belirli bir tarihi çıkarmak için tasarlanmıştır.

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

Seçenekler :

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

11.AddKTarih (TarihEkle) - işlev, tarihe belirli bir değer eklemek için tasarlanmıştır.

Sözdizimi:
AddKDate (İfade, Artış Türü, Değer)

Seçenekler :

  • İfade(Tarih). Orijinal tarih;
  • Büyütme Türü(Hat). Değerlerden birini içerir: Dakika; Saat; Gün; Bir hafta; Ay; Çeyrek; Yıl; On yıl; Yarı yıl.
  • Miktar(Sayı). Tarihin ne kadar arttırılması gerektiğine göre, kesirli kısım göz ardı edilir.
Örnek:
Tarihe Ekle (DateTime (2002, 10, 12, 10, 15, 34), "Ay", 1)
Sonuç: 12.11.2002 10:15:34

12.FarkTarihi (Tarih Farkı) - işlev, iki tarih arasındaki farkı elde etmek için tasarlanmıştır.

Sözdizimi:
Tarih Farkı (İfade1, İfade2, FarkTürü)

Seçenekler :

  • İfade1(Tarih). Çıkarılan tarih;
  • İfade2(Tarih). Orijinal tarih;
  • TipFark(Hat). Değerlerden birini içerir: Second; Dakika; Saat; Gün; Ay; Çeyrek; Yıl.
Örnek:
FARK (TARİH SAAT (2002, 10, 12, 10, 15, 34),
TARİH (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 :

  • Hat(Hat). Alt dizenin çıkarılacağı dize;
  • Konum(Sayı). Dizeden çıkarılacak alt dizenin başladığı karakterin konumu;
  • Uzunluk(Sayı). Seçilecek alt dizenin uzunluğu.
Örnek:
SUBSTRATE (Yükleniciler.Adres, 1, 4)

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

Sözdizimi:
Çizgi Uzunluğu (Dize)

Parametre :

  • Hat(Hat). Uzunluğu belirtilecek dize.
Örnek:
Dize (Hesaplar.Adres)

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

Sözdizimi:
Yıl (Tarih)

Parametre :

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

16. Çeyrek - bu işlev, Tarih türündeki bir değerden bir çeyrek sayı çıkarmayı amaçlar. Çeyrek sayısı normalde 1 ile 4 arasındadır.

Sözdizimi:
Çeyrek (Tarih)

Parametre :

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

17. Ay - bu işlev, Tarih türünün değerinden ay sayısını çıkarmaya yöneliktir. Ay numarası normalde 1 ile 12 arasındadır.

Sözdizimi:
Ay Tarihi)

Parametre :

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

18. Yılın Günü (Yılın Günü) - bu fonksiyon, Date türündeki bir değerden yılın gününü almak için tasarlanmıştır. Yılın günü normalde 1 ila 365 (366) aralığındadır.

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

Parametre :

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

19. Gün- bu işlev, Tarih türündeki bir değerden ayın gününü almak için tasarlanmıştır. Ayın günü normalde 1 ile 31 arasındadır.

Sözdizimi:
Gün (Tarih)

Parametre :

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

20. Hafta - bu fonksiyon, Date türündeki bir değerden yılın haftasının numarasını almak için tasarlanmıştır. Yılın haftaları 1'den başlayarak numaralandırılır.

Sözdizimi:
Hafta (Tarih)

Parametre :

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

21. HaftaGün - bu işlevin amacı, Tarih türündeki bir değerden haftanın gününü almaktır. Haftanın günü normalde 1 (Pazartesi) ile 7 (Pazar) arasındadır.

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

Parametre :

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

22. Saat- bu işlevin amacı, Date türündeki bir değerden günün saatini almaktır. Günün saati 0 ile 23 arasındadır.

Sözdizimi:
Saat (Tarih)

Parametre :

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

23. Dakika - bu işlev, Tarih türünün değerinden saatin dakikasını almaya yöneliktir. Saatin dakikası 0 ile 59 arasındadır.

Sözdizimi:
Dakika (Tarih)

Parametre :

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

24. İkinci - bu işlev, Date türündeki bir değerden bir dakikanın saniyesini almaya yöneliktir. Dakikanın saniyesi 0 ile 59 arasındadır.

Sözdizimi:
İkinci (Tarih)

Parametre :

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

25. Oyuncular - bu işlevin amacı, karmaşık bir tür içerebilecek bir ifadeden bir tür çıkarmaktır. İfade, gerekli türden başka bir tür içeriyorsa, bir NULL değeri döndürülür.

Sözdizimi:
Ekspres (İfade, Tip Belirtimi)

Seçenekler :

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

26. IsNull (IsNull) - bu fonksiyon, ilk 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 edilen değer;
  • İfade2- İfade1 NULL ise değer döndürür.
Örnek:
EvetNULL (Miktar (Satış.Toplam Devir), 0)

27. ACos- radyan cinsinden ters kosinüsü hesaplar.

Sözdizimi:
ACos (İfade)

Parametre :

  • İfade(Sayı). Açının belirlendiği kosinüs değeri (-1 ... 1 aralığında).
28. ASin- radyan cinsinden arksinüsünü 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:
Cos (İfade)

Parametre :

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

Sözdizimi:
İfade (İfade)

Parametre :

  • İfade(Sayı). Derecenin değeri.
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ük.
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. Tan- tanjantı hesaplar.

Sözdizimi:
Tan (İfade)

Parametre :

  • İfade(Sayı). Açıyı belirlemek için kullanılan sinüs değeri.
38. Okr (Yuvarlak)- orijinal sayıyı gerekli bit derinliğine yuvarlar. Yuvarlama modu standarttır (1.5 olarak 2).

Sözdizimi:
Ocr (İfade, Bit Derinliği)

Seçenekler :

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

Sözdizimi:
Int (İfade)

Parametre :

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

Bir veri oluşturma motoru ifadesi, genel ortak yapılandırma modüllerinin işlevlerine yapılan çağrıları içerebilir. Bu tür işlevleri çağırmak için ek sözdizimi gerekmez.

Örnek:
Kısaltılmış Ad (Documents.Link, Documents.Date, Documents.Number)

Bu örnekte, genel yapılandırma modülünden "KısaltılmışAd" işlevi çağrılacaktır.
Ortak modüllerin işlevlerinin kullanımına yalnızca veri bileşimi işlemcisinin karşılık gelen parametresi belirtildiğinde izin verildiğine dikkat edin.
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:
Gönderim (Karşı Taraf)

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

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

Örnek:
Dize (Satış Tarihi)

43. Değer Dolduruldu

NULL değerler için Undefined her zaman False değerini döndürür.
Değerler için Boolean her zaman True değerini döndürür.
Diğer türler için, değer bu türün varsayılan değerinden farklıysa True değerini döndürür.

Örnek:
Doldurulan Değer (Teslimat Tarihi)

44. LevelInGroup (LevelInGroup) - bu fonksiyon, gruplamaya göre mevcut kayıt seviyesini alır.

Hiyerarşik bir gruplamada 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(Hat). Türün bir dize değeri.
İşlev parametresinin değerinin türünü içeren Type türünde bir değer döndürür.

Veri kompozisyon şeması (1C ACS)- 1C'de karmaşık raporlar oluşturmak için uygun bir kurucu: üretim otomasyonunun geliştirilmesine ve izlenmesine katkıda bulunan kurumsal yazılım ürünleri, minimum sürede mümkün olduğunca esnek ve güzel olmalarını sağlar. Veri Oluşturma Planının (1C ACS) ek bir artısı, kontrollü bir rapor formunun otomatik olarak oluşturulmasıdır ve bu yönün daha da geliştirilmesiyle, bir rapor geliştirmek için bir yöntem seçerken önemli bir faktördür. Ancak, Veri Bileşim Planının (1C ACS) yapısının karmaşıklığı ve çok sayıda ayar nedeniyle, genellikle raporun "çıktı formu tasarımcısından" daha uzun süre geliştirilmesine yol açar. Bu nedenle, bir 1C programcısı, raporların oluşturulması için geliştirme süresini daha da hızlandırmak için Veri Kompozisyon Şemasının (1C ACS) tüm inceliklerini anlamalıdır.

Veri oluşturma şemasının (1C ACS) ilk üç sekmesini analiz edelim - veri kümesi, veri kümesi bağlantıları ve hesaplanan alanlar.

1C ACS'de veri seti

Veri kümesi yeteneği içerir üçün yaratılması nesneler - sorgu, nesne ve birleşim, her biri üzerinde daha ayrıntılı olarak duralım:

Temsil etmek düzenli istek, düğmesi Query yapıcısı tarafından oluşturulur. Otomatik Tamamlama bayrağı ayarlanırsa, seçilen tüm ayrıntılar otomatik olarak veri kümesinin alanlarına düşer. Üç sekmenin bulunduğu Veri oluşturma sekmesindeki istekteki alanların doldurulmasını özelleştirmek de mümkündür:

Tablolar, burada raporun oluşumuna katılacak tabloları seçiyoruz, genellikle varsayılan veriler seçilir, çünkü Tablolar ve Alanlar sekmesinde zaten ihtiyacımız olan belgeleri, referans kitaplarını, kayıtları seçtik ...

Alanlar, burada rapora dahil edilmesi gereken nesneleri seçiyoruz, alt bayrak nesne için kullanılabilir alt öğeler olup olmayacağını belirtir, dize, sayısal ve benzeri veriler için bayrağın True olarak ayarlanamaması mantıklıdır. .

Koşullar, burada ACS'deki koşullarda kullanılabilecek nesneleri seçiyoruz.

İşin bir kısmı veri kompozisyon şemasında yapılır, bir kısmı programlı olarak yapılır, basit bir örnek düşünelim:

İlk önce, belge için veri kompozisyon şemasının bir düzenini oluşturacağız ve ACS'yi adlandıracağız (örneğin: 1C ACS), içinde bir veri seti nesnesi oluşturacağız, sonra alanları dolduracağız, örneğin, tablo şeklinde bir bölümümüz var. ayrıntıları içeren belge - kalem, miktar ve fiyat.

Üç alan ekleyelim ve her sütun için alanı ayrıntıların adıyla dolduralım, geri kalan sütunlar otomatik olarak doldurulacaktır:

Belge formunda bir düğme oluşturalım, yönetilen formlarda çalışma mekanizmasını açıklayalım:

& OnClient

Prosedür Yazdır ()

OurReport = PrintOnServer(); // sunucudaki işlevi çağır

Raporumuz.Göster (); // oluşturulan raporu göster

Prosedürün Sonu

&Sunucuda

PrintOnServer () işlevi

DocumentObject = FormAvailableValue (“Nesne”);

//Tablolar bölümünü, ACS'nin kendisinde belirttiğimiz şekilde GoodsSKD adlı bir yapıya koyuyoruz, verileri içeren nesnenin adını

Veri Kümesi = Yeni Yapı;

SetData.Insert ("GoodsSKD", DocumentObject.Goods);

//düzenimizi alın ve tüm rapor çıktı ayarlarının düzenimizden alınması için varsayılan ayarları yapın

OurMakeup = DocumentObject.GetMakeup (“SKD”);

Ayarlar = Düzenimiz.Varsayılan Ayarlarımız;

//ayarlarımızla bir veri kompozisyonu düzeni oluşturun

Düzen Oluşturucu = Yeni DataComposition Düzen Oluşturucu;

LayoutComposition = LayoutComposer.Execute (OurLayout, Ayarlar);

//veri kümemizle veri kompozisyonu gerçekleştirme

DataComposition İşlemci = Yeni DataComposition İşlemci;

DataCompositionProcessor.Initialize (LayoutDataset);

//bir elektronik tablo belgesi oluşturuyoruz ve raporumuzu içinde gösteriyoruz

ReportDocument = Yeni Elektronik Tablo Belgesi;

OutputProcessor = Yeni OutputProcessorDataCompositionResultInTableSheetDocument;

OutputProcessor.SetDocument (ReportDoc);

OutputProcessor.Output (DataComposition Processor);

Rapor Belgesinin İadesi;

EndFunction

Dilerseniz alanları ve diğer herhangi bir düzeni alabilir ve ayrıca bu raporda görüntüleyebilirsiniz, örneğin, bir ödeme oluşumu için tipik bir düzenimiz var ve bunun içinde bir başlık çok iyi oluşturulmuş, o zaman biz yapıyoruz. gereksiz işler yapmayın, sadece önce düzeni alıyoruz, başlığı gösteriyoruz, sonra raporumuzu ACS üzerinde oluşturup görüntüleyeceğiz.

Ö birleşme

İçine sorgularımızı ve nesnelerimizi koyabiliriz, ancak bir bağlantıdan farklı olarak, yalnızca tabloları birbirine ekler, yani iki özdeş tabloyu bağlarsak, bir tane elde ederiz ve birleştirildiğinde, ikiye katlanır, basit düşünün. örnek:

Tablolarımız var:

İletişim kurarken şunları alacağız:

Ve birleştirirken:

Şimdi veri kümelerindeki sütunların doldurulmasını ele alalım (diğer sekmelerle ilgili oldukları için bazılarını atlayacağız, sonraki makalelerde bunlara döneceğiz):

- alan, aksesuarların genel adını belirtin;

­­- yol, ACS'de atıfta bulunacağımız gerekliliğin adını belirtiriz, örneğin Hesaplanan alanlar;

- başlık, raporda görüntülenecek değişkenin adını belirtin;

- alan sınırlaması, bu gerekliliğin mevcudiyetini belirtin;

- gereksinimlerin kısıtlanması, alt öğelerin kullanılabilirliğini belirtiyoruz, ayrıntıların kullanılabilirliği belirtilirse, alanın kendisinin kullanılabilir olması önemlidir, belki de bu mekanik gelecek sürümlerde değişecektir;

- alanın temsilinin değerlendirildiği ifade, ayrıntıların görüntüsünü biraz değiştirmemiz gerektiğinde kullanmak uygundur, örneğin, adından sonra buna ihtiyacımız var isimlendirmeÇekildi depo, bulunduğu yere gidin, ardından aşağıdakileri doldurun: İsimlendirme + "stokta" + Depo. Gereksinimlere yönelik adresin sütunda belirtilen ad üzerinden gerçekleştirildiğini tekrarlıyorum. yol;

- ifade sıralaması, raporun sırasını ayarlamak için, koşulun manuel olarak ayarlanabileceği, önceki noktaya benzer, ancak uygulamanın gösterdiği gibi, bu mekanizma genellikle istediğimiz gibi çalışmaz ve standardı kullanmanızı tavsiye ederim. sıralama;

- değer türü, değişkenin değerinin türü belirtilir, sonraki alanı kullanacaksanız doldurmanız gerekir;

- mevcut değerler, yalnızca doldurulduğunda çalışır değer türü, doldurma formunu açın ve sütunda Anlam türüne göre değiştirilmesi gereken öğeyi belirtiriz, önceden tanımlanmış nesneler veya sayısal olabilir, örneğin nitelikler, basit değerlere sahip olabilir, teslim boole tipine bir örnek olarak neyi değiştirmemiz gerektiğini belirtiriz:

- kayıtstandart ayar alanın biçimi, yönetilen formlardaki ayarlara benzer şekilde, belirli bir sahne öğesinin çıktısını daha doğru ve güzel bir şekilde özelleştirmenize olanak tanır.

1C ACS'deki veri seti bağlantıları

Bir tek sol kavşak, benzer bir prensipte bağlantılar isteklerde, içinde iletişim kaynağı bağlantı için ana tabloyu gösteriyoruz, alıcı ek olarak. V ifade kaynağı ve ifade alıcısı bağlantının gerçekleşeceği ayrıntıları belirtiyoruz. Sekmeyi ayrıştırırken kalan sütunları daha ayrıntılı olarak ele alacağız. Seçenekler... Parametrelerle ek bir bağlantı yoksa, bağlantının istekte yapılması önerilir, bu raporun çalışmasını hızlandıracaktır.

Değerlendirİfadesi- yeterli karmaşık fonksiyon Anlamak için ACS ve referans bilgilerinde uygulama örnekleri oldukça azdır. Bu makalede, her geliştirici için yararlı olacağı kesin olan örnekler tartışılmaktadır:

  1. gruplandırmada kümülatif toplam;
  2. bir çapraz tabloda değişen toplam;
  3. önceki değeri almak;
  4. PM çıkışı bir satırda.

1. Göstergenin kümülatif bazda alınması

Gruplama düzeyinde kümülatif olarak mal sayısını bulalım. Bunu yapmak için hesaplanmış bir alan oluşturuyoruz (bkz. Şekil 1).
"Kaynaklar" sekmesinde, hesaplanan alan için işlevi ayarlayın:
CalculateExpression ("Sum (NumberCirnover)", "İlk", "Mevcut")
bu, ilk kayıttan mevcut olana kadar olan ürün sayısını toplayacaktır (bkz. Şekil 2).

Bir kümülatif toplamdaki mal sayısını ayrıntılı kayıtlar düzeyinde almak istiyorsanız, "Hesaplanan alanlar" sekmesinde hesaplanan alan için CalculateExpression işlevi ayarlanır (bkz. Şekil 3).
Kümülatif toplamı elde etme düzeyine bağlı olarak, bir gruplama oluştururuz (bkz. Şekil 4): kaynak düzeyinde - mallara göre gruplandırma, DZ düzeyinde - ayrıntılı kayıtların gruplandırılması.
Şekil 4. Kümülatif toplam ile raporun gruplandırmaları

2. Göstergenin değerini önceki satırdan alma

Tarih ve önceki tarih için döviz kurunu alalım. Bunu yapmak için hesaplanmış bir alan oluşturun ve ifade alanına aşağıdaki ifadeyi yazın (bkz. Şekil 5):
CalculateExpression (Ders, Önceki, Önceki)
geçerli satır için önceki döviz kuru değerini alacak olan fonksiyonun son parametresi veri alımını sınırlar.
Ayrıntılı kayıtlar düzeyinde çalıştığımız için doğrudan "Ayarlar" sekmesine gidin ve bir gruplama - ayrıntılı kayıtlar oluşturun.

3. Bir çapraz sekmede kümülatif toplam üzerinde bir gösterge elde etme

Dönem bağlamında kümülatif olarak mal sayısını alalım. Bunu yapmak için hesaplanmış bir alan oluşturuyoruz (bkz. Şekil 1). "Kaynaklar" sekmesinde, hesaplanan bir alan için aşağıdaki ifadeyi belirteceğiz (bkz. Şekil 6):
İfadeyi Hesapla ("Toplam (Sayı (Sayı)", "Dönem", "İlk", "Mevcut")
gruplama düzeyinde, her kalem için dönem bağlamında ilk satırdan mevcut satıra kadar olan aralıktaki mal miktarını hesaplayacaktır.
"Ayarlar" sekmesinde, bir satırdaki öğeye göre gruplanmış ve bir sütundaki döneme göre gruplandırılmış bir tablo oluşturun (bkz. Şekil 7).

4. Tablo kesit verilerinin tek satırda çıktısı

EvaluateExpression işlevini kullanan yöntem de dahil olmak üzere tablo kesit verilerini tek satırda görüntüleme yöntemleri makalede tartışılmaktadır.

Veri oluşturma şemasının (ACS) yetkin kullanımı şunları yapmanızı sağlar:

  • bir rapor geliştirmek için gereken süreyi önemli ölçüde azaltmak;
  • yönetilen bir form işleyicisi oluşturma ihtiyacından kurtulun;
  • yeteneği ile çıktıda güzel bir sonuç elde etmek ek özelleştirme kullanıcı.

Ancak tüm geliştiriciler, tüm ayarları açık ve sezgisel olmadığı için devrenin yeteneklerinden en iyi şekilde yararlanamaz. Özellikle, birçok kişi 1C'de ACS'de hesaplanmış alanlar olduğunu biliyor, ancak kullanım alanlarını ve onlarla çalışma yöntemlerini tam olarak temsil etmiyorlar.

Hesaplanan alan nedir

Çoğu durumda, düzen şemasındaki veri kaynağı bir sorgudur. Prensip olarak, sorgunun içinde zaten çeşitli formüller, yapılar ve ifadeler kullanabilirsiniz. Doğal bir soru ortaya çıkıyor, neden yinelenen işlevselliğe ihtiyacımız var?

Gerçek şu ki, ACS sadece sorgu yürütmenin sonucunu göstermekten daha fazlasıdır ve bu, bir şema oluşturma formundan mükemmel bir şekilde görülebilir (Şekil 1).

Hesaplanan alanlar, oluşturulan veri kümesiyle belirli eylemleri gerçekleştirmenize olanak tanır:

  • Birkaç satırı tek bir satırda birleştirerek bir sorgu tarafından alınan bir dizi veriyi belirli bir hücreye çıktılayın;
  • Ortak modülün dışa aktarma işlevlerine erişin;
  • Düzen dili için mevcut olan çeşitli ifadeleri yürütün ve EvaluateExpression özel işlevlerini kullanın.

Bu listeyi takip edelim ve gidelim.

Bir hücrede bir dizi değer

Bir karşı taraf için tüm makbuz sayılarını ayrı bir hücreye almak gerektiğinde bir durumu simüle edelim:


böylece şemamızda ek bir hesaplanmış alan oluşturduk;


Yukarıdaki örnekten de görebileceğiniz gibi, hesaplanan alanların eklenmesi ve işlenmesinde herhangi bir zorluk yoktur. İki fonksiyon kullandık: Array() ve JoinStrings().

İkincisi hakkında birkaç söz. Dizinin, değerlerin veya değerlerin tanımlayıcısını gösteren ilk parametreye ek olarak, içinde iki tane daha ayarlanabilir:

  1. Öğe Ayırıcı - hangi karakterin bir dizinin bir öğesini veya bir değerler tablosunun bir satırını diğerinden ayıracağını belirtir (bizim durumumuzda, bu parametreyi atladık ve varsayılan olarak bir satır sonu atandı);
  2. Sütun Ayırıcı, bir değerler tablosunun sütunlarını ayırmak için kullanılan bir karakterdir (varsayılan olarak noktalı virgül kullanılır).

Ortak Modülün Dışa Aktarma İşlevlerine Erişim

Ortak modülün işlevleri, hesaplanan bir alanı doldurmak için bir veri kaynağı görevi görebilir.

Birkaç önemli nokta:

  • İşlev dışa aktarılabilir olmalıdır;
  • Bir fonksiyon "Global" bayrak seti ile ortak bir modülde bulunuyorsa, doğrudan adıyla çağrılır, aksi takdirde fonksiyon "Ortak modül adı" şemasına göre çağrılmalıdır. Çağrılan işlevin adı.

Kullanım örneği olarak, makbuz belgeleri için aynı talebi alıp ayrı bir sütunda görüntüleyeceğiz. İsteğin kendisini açıklamayacağız, doğrudan hesaplanan alanlara gideceğiz:


Böylece, hemen hemen her veri işleyicinin ACS'den başlatılabileceğini görüyoruz, bu da şemayı kullanma olanaklarını büyük ölçüde genişletiyor.

Bağlantı Dili İfadeleri

Oldukça sık bir geliştiricinin çalışmasında, ACS alanında bölünme sonucunun gösterilmesi gerektiğinde bir durum ortaya çıkar:

  1. Öğenin ortalama maliyetini hesaplayın;
  2. Her türlü faiz;
  3. Ortalama kazanç hesaplamaları vb.

Sorunlardan kaçınmak için, bu durumlarda hesaplanan alana 0'a bölme kontrolü girilmesi tavsiye edilir.

Bu, "Ne Zaman .... Sonra ... Aksi takdirde ... Bitir" yapısı kullanılarak yapılabilir.

Sonunda, yeterli hakkında birkaç kelime yeni fonksiyon Değerlendirİfadesi (). Özellikle onun yardımıyla, mevcut ve önceki satır arasındaki değer sapmalarını, kümülatif bakiyeyi vb. hesaplayabilirsiniz.

Örneğin, "İfade" alanında İfade Hesapla ("Belge Miktarı", "Önceki Toplam") değerini belirterek sorgumuzun bir önceki satırından Belge Tutarı'nı alabilirsiniz.