Bu yazıda 1C sorgu dilinde "Express" işlevi tarafından sağlanan tür dönüştürme olanaklarını analiz edeceğiz.
Bu işlevi kullanmak için çeşitli seçeneklere bakalım.
Ve ilk seçenek sayıları yuvarlamak.

Bunu yapmak için Ekspres işlevini aşağıdaki biçimde kullanmanız gerekir:

İfade etmek(<Число>Sayı olarak(<ДлинаЧисла>,<Точность>))

Nerede:
Sayı— yuvarlanması gereken alan
UzunlukSayılar— maksimum sayı uzunluğu
Kesinlik— sayı yuvarlama doğruluğu

Hem uzunluk hem de hassasiyet parametreleri pozitif tamsayılar olmalıdır.
Aşağıdaki resimde bu fonksiyonun nasıl çalıştığını görün.

İkinci kullanım durumu tel dökümdür. Çoğu zaman, yapılandırmalar sınırsız uzunlukta dizeler kullanır ve bu da bazı kısıtlamalar getirir. Örneğin sınırsız uzunluktaki dizeleri karşılaştıramayız.
Aşağıdaki sorguda FullName alanı sınırsız uzunlukta string türündedir ve bu sorgu çalışmayacaktır.

Çalışması için, sınırsız uzunluktaki bir alanı belirli uzunlukta bir dizeye dönüştürmek gerekir; bu, aşağıdaki formattaki Express işlevi kullanılarak yapılır:

İfade etmek(<Строка>Dize olarak(<ДлинаСтроки>)

Nerede
Hat Uzunluğu– dizinin azaltılacağı maksimum uzunluk.
Sorguyu yeniden çalışalım: Sınırsız bir dizeyi belirli uzunlukta bir dizeye dönüştüreceğimiz koşulda. O zaman hiçbir hata olmayacak.

Uygulamanın son ve en önemli seçeneğini ele alalım: Bileşik tipteki alanlarla çalışırken.
Aşağıda bileşik alanları kullanan iki sorgu bulunmaktadır. Birincisi yanlış, ikincisi doğrudur.

Onlar. Karmaşık türde bir alan elde etmeniz gerektiğinde, her zaman bu alanın değerini yalnızca Express işlevini kullanarak türü değiştirdikten sonra alın. Bu durumda belgeler ve referans kitapları aşağıdaki formatta olacaktır:

İfade etmek(<Документ>Belge olarak.<ИмяТаблицы>)
İfade etmek(<Справочник>Dizin olarak.< ИмяТаблицы >)
.

Nerede
Tablo ismi— nesne adı .

Bileşik türlerle çalışırken her zaman ekspres işlevini kullanın; bu, sorguyu büyük ölçüde optimize eder.

Sorgu dilinin yapılarında hala "yüzüyorsanız" ve en basit sorgular bile size zorluk çıkarıyorsa, o zaman size "Başlangıçtan profesyonele 1C'de Sorgular" kursumu tavsiye ederim. Bunların ve diğer birçok konunun daha ayrıntılı olarak tartışıldığı yer.

Bu kursun özelliği:
Kurs, 1C'deki sorgulama diline aşina olmayanlar için tasarlanmıştır;
Eğitim materyali iyi bir şekilde düzenlenmiştir ve öğrenmesi kolaydır;
Birkaç düzine ders;
Yararlı pratik örnekler;
Tüm dersler açık ve basit bir dille sunulmaktadır

Okuyucularım için %25 indirim kuponu: hrW0rl9Nnx

Mümkün olduğunca sık çeşitli ilginç ücretsiz makaleler ve video eğitimleri yayınlamaya çalışıyorum. Bu nedenle projeme herhangi bir miktar aktararak destek olursanız çok sevinirim:

İstediğiniz tutarı doğrudan aktarabilirsiniz:
Yandex.Para - 410012882996301
Web Parası - R955262494655

Gruplarıma katılın.

Birçok kişi 1C 8 sorgu dilindeki EXPRESS işlevini bir tür dönüştürücü olarak yorumluyor, ancak bu amaçlara yönelik değil. Kesimin altındaki detaylar...

Bu nedenle birçok kişi yanlışlıkla bir alanı türle dönüştürebileceklerine inanıyor Astar türü olan alanda Sayı veya satır içi bağlantı. Aslında EXPRESS operatörü şunları dönüştürebilir:

  • ilkel tür ayarları;
  • bileşik türdeki bir alanın tek türdeki bir alana dönüştürülmesi;

Gelin bu durumlara daha detaylı bakalım...

Temel Tür Ayarlarını Dönüştürme

Verileri sınırsız türde bir dizeye göre gruplandırmak istediğimiz bir durumu ele alalım; örneğin, böyle bir dize genellikle belgelerdeki bir yorumdur. Bu durumda yoruma göre gruplama yapamayız, hata alırız. Bu nedenle sınırsız uzunluktaki bir diziyi sınırlı uzunlukta bir diziye dönüştürüp gruplandırmamız gerekiyor. Örneğin, aynı yorumlara sahip dokümanların sayısını sayalım:

SEÇMEK
EXPRESS(Giriş.Yorum AS LINE(300)) AS Yorum,
MİKTAR(Gelen.Link) AS Bağlantısı
İTİBAREN
Belge.Giriş holü AS Giriş holü

GRUPLANDIRMA ŞEKLİ
EXPRESS(Kabul.Yorum AS SATIR(300))

Diğer bir durum ise, isteğin hesaplamaları kullanması durumunda, çıktıda çok sayıda ondalık basamağa sahip bir sayı (1100.001568794) alabilmemizdir. Sorgu tamamlandıktan sonra bu sayıyı işlememek için hemen istediğiniz uzunluğa kesebilirsiniz ancak sayının yuvarlanmadığını, kırpıldığını anlamak önemlidir. Örnek:

SEÇMEK
Satış.Ürün,
EXPRESS(Satış.Miktar * Satış.Fiyat AS NUMBER(15, 2)) Tutar Olarak
İTİBAREN

Bileşik türü tek türe dönüştürme

Kayıt kayıtları genellikle bileşik bir türe sahiptir; onu tek bir türe dönüştürmek için yapıyı kullanın. İFADE ETMEK Ancak örnekleme aşamasında uygulama belgesini alındı ​​belgesine dönüştürmeye çalışırsanız, istek kesinlikle hatayla başarısız olacaktır, bu nedenle dönüştürmeden önce bağlantının türünü kontrol etmelisiniz. Bu çok saçma))) Bütün bunlar neden gerekli diye soruyorsunuz. Cevap veriyorum, bu, yazmanın kısalığı pahasına örtülü sorgu optimizasyonunun anlarından biridir. Bu noktanın uygulamasına bir örnekle bakalım.

Diyelim ki RN Sales'ten her bir kayıt memurunun numarasını almak için yola çıktınız. bir istek yazın:

ÇEŞİTLİ SEÇİN
Satış.Kayıt Şirketi.Numara
İTİBAREN
KayıtBirikimler.Satış NASIL Satış

Aslında hiçbir şey daha basit olamaz. Ancak 1C, yürütme aşamasında, herhangi bir bağlantısı olmayan bu isteği, mümkün olan kayıt şirketlerine sahip olduğumuz kadar sol bağlantıya sahip bir isteğe dönüştürür. Onlar. Bu kayda 20 belge yazılırsa, 20 sol birleşimi olan bir SQL sorgusu alırız. Bu neden oluyor? Yerleşik 1C iyileştirici, bir noktadan alınan alanları çok iyi işlemediğinden, bu durumda bu, Sayı niteliğidir. Bunlar turtalardır, eğer sık ​​sık belge numarasını almak istiyorsak, bunu kayıt ayrıntılarına dahil etmek veya EXPRESS operatörünü kullanmak en mantıklısıdır, ancak kısalık pahasına:

ÇEŞİTLİ SEÇİN
Satış.Kayıt Şirketi.Numara,
SEÇENEK
NE ZAMAN Satış.Kayıt Şirketi BAĞLANTISI Belgesi.Sarf Malzemesi
SONRA EXPRESS(Satış.Kayıt Şirketi OLARAK Belge.Sarf Malzemesi)
BAŞKA SEÇİM
NE ZAMAN Satış.Kayıt Şirketi BAĞLANTISI Belgesi.Uygulama
SONRA EXPRESS(Satış.Kayıt Şirketi AS Belge.Uygulama)
SON
...
SON OLARAK Sayı
İTİBAREN
KayıtBirikimler.Satış NASIL Satış

Artık sol birleştirme belirli bir tabloyu içerecektir.

Genel olarak verilere nokta aracılığıyla dikkatlice atıfta bulunmalısınız, çünkü Bu durumda 1C, SQL sorgusunda performansı önemli ölçüde etkileyebilecek bir sol birleştirme kullanır. Bu optimizasyon noktalarından biridir.

Dikkat! Bu, materyalleri eksik olabilecek dersin giriş versiyonudur.

Öğrenci olarak siteye giriş yapın

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

Yeni başlayan programcılar için sorgulama dili 1C 8.3: türlerle çalışmaya yönelik işlevler ve operatörler (VALUE TYPE, TYPE, REFERENCE, ISNULL, EXPRESS)

Bir dizinin, belgenin veya herhangi bir uygulama nesnesinin her özelliğinin (özellik, alan) kendi türüne sahip olduğunu hatırlayalım. Yapılandırıcıda bu türe bakabiliriz:

Sorgu dilinde, ayrıntı türleriyle çalışmak için bir dizi işlev ve operatör vardır. Şimdi onlara bakalım.

DEĞER TÜRÜ işlevi

Bu işlev bir parametre (değer) alır ve türünü döndürür. Resimde açıklanan aksesuarlar için (yukarıda) Tatmak dizin Yiyecek aşağıdakiler döndürülecektir:

Şimdi aksesuarlara bakalım Ayırt Edici Özellik rehberde Şehirler:

Bu pervanenin birkaç türden biri olabileceğini görüyorsunuz: Astar, Dizin.Tatlar, Dizin.Renkler. Bu tip detaylara KOMPOZİT denir.

Böyle bir detayın değerini 1C:Enterprise modunda doldurmaya çalışırsak sistem bize ne tür bir değerin girileceğini soracaktır:

Ve ancak seçimimizden sonra seçilen türün değerini girmemize izin verecek.

Böylece aynı türden dizin öğeleri ( Dizin.Şehirler) aynı öznitelikte depolayabilecektir ( Ayırt Edici Özellik) farklı türlerdeki değerler (Dize, Renkler veya Tatlar).

Dizinin öğelerine tıklayarak bunu kendiniz görebilirsiniz. Şehirler 1C:Kurumsal modunda. Dersin deneme sürümünü okuyorsunuz, derslerin tamamı mevcut.

Burada ayırt edici özellik değeri bir dizin öğesidir Tatlar:

İşte satır:

Ve işte genellikle referans kitabının bir unsuru Renkler:

Bunlar bileşik bir veri türünün bizim için açtığı olasılıklardır!

Fonksiyonun nasıl davranacağını merak ediyorum TİP DEĞERLER sahne donanımı üzerinde Ayırt Edici Öğe, bileşik veri türüne sahip:

Bu zaten çok ilginç. Her satıra ayrı ayrı bakalım.

Rusya unsuru için ayırt edici özelliğin değer türü eşittir HÜKÜMSÜZ. Bu tiple ilk kez karşılaşıyoruz. Bu tür değerler yalnızca veritabanıyla çalışırken eksik değeri belirlemek için kullanılır.

Bu doğrudur, çünkü Rusya öğesi sıradan bir dizin öğesi değil, bir gruptur Şehirler yani alanı yok Ayırt Edici Özellik. Ve yukarıda okuduğumuz gibi eksik değerin türü her zaman şuna eşittir: HÜKÜMSÜZ.

Perm için ayırt edici özelliğin değer türü şuna eşittir: Tatlar. Bu doğrudur, çünkü Perm şehri için veritabanına girilen ayırt edici özelliğin değeri, dizin öğesine bir bağlantıdır. Tatlar.

Krasnoyarsk için nitelik türü şuna eşittir: Renklerçünkü veritabanında seçilen değer bir dizin öğesine bağlantıdır Renkler.

Voronezh için nitelik türü şuna eşittir: Astarçünkü veritabanına girilen değer normal bir dizedir.

Hindistan yine bir grup, dolayısıyla hiçbir önemi yok. Ve hatırladığımız gibi eksik değerin türü şuna eşittir: HÜKÜMSÜZ.

İşte olay şu. Dizin öğesine giderseniz Şehirler isimli Sao Paulo, o zaman alanın Ayırt Edici Özellik hiç doldurulmadı. Bu boş. A bileşik türdeki tüm boş alanların özel bir anlamı vardır TANIMSIZ .

İLE TANIMSIZ aynı zamanda ilk kez karşılaşıyoruz. Anlam TANIMSIZ Başka hiçbir türe ait olmayan boş bir değerin kullanılması gerektiğinde kullanılır. Durumumuz tam da bu. Ve değer türü TANIMSIZ muhtemelen tahmin ettiğiniz gibi eşittir HÜKÜMSÜZ.

İşlev TİPİ

Yalnızca bir parametre alır - ilkel türün adı ( ASTAR, SAYI, TARİH, BOOLE) veya bağlantı türünü almak istediğiniz tablonun adı.

Bu yapının sonucu, belirtilen tür için Type türünde bir değer olacaktır.

Kulağa belirsiz geliyor, değil mi?

Bu tasarımın uygulamasına bakalım ve her şey hemen yerine oturacak.

Diyelim ki tüm dizin girişlerini seçmemiz gerekiyor Şehirler, kompozit desteklere sahip olan Ayırt Edici Özellik tür değeri var ASTAR:

Şimdi özellik değerlerine sahip tüm kayıtları seçelim Ayırt Edici Özellik dizin öğelerine bağlantılardır Renkler(masa Dizin.Renkler):

Geri çekilmek

Hatırlayacağınız gibi dizinin bazı öğeleri Şehirler dekor yok Ayırt Edici Özellik. İşlev TİP DEĞERLERürettiği bu tür elementler için HÜKÜMSÜZ.

Bir sorguda bu tür öğeleri nasıl seçebilirsiniz? Bunun için özel bir mantıksal operatör sağlanmıştır BOŞ(fonksiyonla karıştırılmamalıdır) BOŞ, aşağıda inceleyeceğiz). Dersin deneme sürümünü okuyorsunuz, derslerin tamamı mevcut.

İşte kullanımına bir örnek:

Harika. Ancak Sao Paulo'ya ait hiçbir unsurun olmadığını fark ettiniz mi? Ayırt Edici Özellik bunu da verdi HÜKÜMSÜZ. Neden oldu?

Ancak mesele şu ki, ayrıntıların doldurulduğu gruplar (Rusya, Hindistan, Brezilya) için durum Ayırt Edici Özellik Prensipte imkansız, çünkü hiç sahip olmadıkları için, desteklerin doldurulmasının mümkün olduğu Sao Paulo unsurunun durumundan farklıdır, ancak doldurulmamıştır ve hatırladığımız gibi bir değere eşittir. özel değer TANIMSIZ.

Gerekli özelliklere sahip tüm kayıtları seçmek için Ayırt Edici Özellik mevcut ancak doldurulmamışsa farklı bir yapı kullanılmalıdır:

Ancak boş (doldurulmamış) nitelikleri belirlemek için UNDEFINED ile karşılaştırma yalnızca bileşik türler için işe yarayacaktır.

Bu arada, mantıksal operatör IS NULL'un şuna benzeyen bir olumsuzlama formu vardır:

Mantıksal operatör LINK

Mesela dizinden seçelim Şehirler yalnızca bileşik öznitelik değerine sahip olan kayıtlar Ayırt Edici Özellik bir dizin öğesine bağlantıdır Tatlar:

Hatırlayacağınız gibi aynı problemi şunu kullanarak da çözebilirdik: TİP DEĞERLER Ve TİP:

İşlev ISNULL

İşlev bir değeri değiştirmek için tasarlanmıştır HÜKÜMSÜZ farklı bir anlama.

anlamını hatırlıyoruz HÜKÜMSÜZİstenilen öznitelik (alan, özellik) mevcut değilse döndürülür.

Örneğin, sahne donanımı Ayırt Edici Özellik dizin grupları için Şehirler:

İşlev BOŞ bu değer şuna eşitse farklı bir değer çıkarmamıza yardımcı olacaktır: HÜKÜMSÜZ. Dersin deneme sürümünü okuyorsunuz, derslerin tamamı mevcut. Bu durumda “Böyle bir destek yok!” satırı olsun:

Görünüşe göre fonksiyonun ilk parametresi ise BOŞ eşit değil HÜKÜMSÜZ, sonra geri döner. NULL ise ikinci parametre döndürülür.

EKSPRES işlevi

Bu işlev yalnızca bileşik türe sahip alanlar içindir. Böyle bir alanın mükemmel bir örneği mülkiyettir. Ayırt Edici Özellik dizin öğeleri için Şehirler.

Hatırladığımız gibi, bileşik alanlar yapılandırıcıda belirtilen çeşitli türlerden biri olabilir.

Alan için Ayırt Edici Özellik bu tür geçerli türler ASTAR, Dizin.Renkler Ve Dizin.Tatlar.

Bazen bir bileşik alanın değerlerini belirli bir türe dönüştürmek gerekli olabilir.

Tüm alan değerlerini listeleyelim Ayırt Edici Özellik yazmak Referans.Renkler:

Sonuç olarak, türündeki tüm öğe değerleri Dizin.Renkler, dolu kaldı ve belirtilen türe dönüştürüldü. Diğer türlerin tüm değerleri ( ASTAR, Dizin.Tatlar) şimdi eşit HÜKÜMSÜZ. Bu, işlevi kullanan tip dökümünün özelliğidir. İFADE ETMEK.

Bir türü ilkel bir türe ( BOOLE, SAYI, ASTAR, TARİH) veya bir referans türüne. Dersin deneme sürümünü okuyorsunuz, derslerin tamamı mevcut. Ancak bu kompozit alan için tipler listesine cast'ın yapıldığı tipin dahil edilmesi gerekmektedir, aksi taktirde sistem hata verecektir.

Testi yapın

Testi başlat

1. En doğru ifadeyi seçin

2. Birkaç türden birinin değerini alabilen ayrıntılara denir

3. Özellik değerinin türünü belirlemek için işlevi kullanın

4. Kompozit tipin boş detayları önemlidir

Şimdi geri kalanına bakalım.

1C sorgularında dizelerle çalışma işlevleri

1C sorgularında dize verileriyle çalışmak için az sayıda işlev ve operatör vardır.

Öncelikle sorgulara stringler eklenebilir. Bunu yapmak için “+” operatörünü kullanın:

Rica etmek. Metin = "SEÇ
" "Astar: " " + Kaynak.Adı
;

İkinci olarak satırın bir kısmını seçebilirsiniz. Bunu yapmak için işlevi kullanın İNDİRME.İşlev yerleşik 1C diline benzer. Üç parametresi vardır:

  1. Kaynak dizesi.
  2. Seçilen satırın başlaması gereken karakterin numarası.
  3. Karakterler.

Rica etmek. Metin= "SEÇMEK
SUBSTRING("
"Astar: " ", 4, 3) Sonuç Olarak"; // Sonuç: tamam

İşlev BOŞ

NULL, 1C:Enterprise platformundaki özel bir veri türüdür. Aynı zamanda bu türün mümkün olan tek değeridir. NULL, birkaç durumda sorgularda görünebilir: sorgu kaynaklarını bağlarken, tablolardan birinde karşılık gelen bir değer bulunamazsa; var olmayan bir nesnenin ayrıntılarına erişirken; sorgu alanları listesinde NULL belirtilmişse (örneğin, birkaç tablodan seçim sonuçlarını birleştirirken), vb.

Çünkü NULL ne null, ne boş dize, ne de bir değer. Tanımsız, onu daha kullanışlı bir veri türüyle değiştirmek genellikle yararlıdır. İşlev bunun için tasarlanmıştır. HAYIR.

İki parametresi vardır:

  1. Değer kontrol ediliyor.
  2. NULL olduğu ortaya çıkarsa ilk parametrenin değiştirileceği değer.

Rica etmek. Metin= "SEÇMEK
ISNULL(Kaynak.Kalan, 0) AS Kalan"
; // İsteğin sonucu alanın kalanı = NULL ise,
// o zaman 0 ile değiştirilecektir ve onunla matematiksel işlemler yapabilirsiniz

Fonksiyonlar VERİM Ve GİRİŞBAĞLANTILAR

Bu işlevler çeşitli değerlerin dize temsillerini elde etmek için tasarlanmıştır. Yani referansları, sayıları, booleanları vb. dönüştürürler. düz metne dönüştürün. Aralarındaki fark, fonksiyonun VERİM herhangi bir veri türünü metne (string) ve işleve dönüştürür GİRİŞBAĞLANTILAR- yalnızca bağlantılar verir ve kalan değerleri dönüştürülmeden olduğu gibi döndürür.

Rica etmek. Metin= "SEÇMEK
Boole OLARAK GÖSTERİM(DOĞRU),
GÖSTERİM (4) Sayı Olarak,
TEMSİL (Source.Link) AS Link,
TEMSİL(DATETIME(2016,10,07)) AS Tarih"
;
// Boolean = "Evet", Sayı = "4", Bağlantı = "Belge Nakit Sipariş No....'dan..."
// Tarih = "07.10.2016 0:00:00"

Rica etmek. Metin= "SEÇMEK
GÖSTERİMREFERANS(DOĞRU) Boole OLARAK,
TEMSİLREFERANS(4) SAYI OLARAK
BAĞLANTIYI(Source.Link) Bağlantı OLARAK SUNUYORUZ,
TEMSİLREFERANS(DATETIME(2016,10,07)) AS Tarih"
;
// Boolean = DOĞRU, Sayı = 4, Bağlantı = "Belge Nakit Sipariş No....'dan..."
// Tarih=07.10.2016 0:00:00

Fonksiyonlar TİP Ve TİP DEĞERLER

İşlev TİP 1C:Enterprise platformu veri türünü döndürür.

Rica etmek. Metin= "SEÇMEK
Numara giriniz)
TİP (Dize),
TİP (Belge. Harcama Nakit Emri)"
;

İşlev TİP DEĞERLER kendisine iletilen değerin türünü döndürür.

Rica etmek. Metin= "SEÇMEK
DEĞERLER TİP (5) AS Numarası,
TİP ("
"Astar" ") AS Dizesi,
TİP (Kaynak.Link) AS Referans
Directory.Source AS Source'tan"
;
//Number=Numara, String=Dize, Dizin = DirectoryLink.Source

Bu işlevlerin kullanımı, örneğin bir istekte alınan alanın bir tür değer olup olmadığını öğrenmeniz gerektiğinde kullanışlıdır. Örneğin, ContactInformation bilgi kaydından karşı tarafların iletişim bilgilerini alalım (yalnızca karşı tarafların değil, aynı zamanda kuruluşların, bireylerin vb. iletişim bilgileri de burada saklanır):

Rica etmek. Metin= "SEÇMEK

İTİBAREN

NEREDE
DEĞERLER TÜR(İletişimBilgisi.Object) = TÜR(Directory.Counterparties)"
;

İşlev ANLAM

İşlev Anlam 1C yapılandırma nesnelerini doğrudan bir istekte, .

Önceki örneğe bir koşul daha ekleyelim. Sadece karşı taraflarınızın telefon numaralarını almanız yeterli.

Rica etmek. Metin= "SEÇMEK
İletişim Bilgileri.Giriş
İTİBAREN
Bilgi Kaydı İletişim Bilgileri NASIL İletişim Bilgileri
NEREDE
DEĞERLER TÜR(ContactInformation.Object) = TÜR(Directory.Counterparties)
VE ContactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

Bu fonksiyonun yalnızca önceden tanımlanmış değerlerle kullanılabileceğine dikkat edilmelidir; doğrudan yapılandırıcıdan erişilebilen değerlerle. Yani, fonksiyon ANLAM kullanıcılar tarafından oluşturulan dizin öğeleriyle kullanılamaz ancak numaralandırmalarla, önceden tanımlanmış dizin öğeleriyle, değerlerle çalışabilir Boş Bağlantı.

Şebeke BAĞLANTI

Şebeke BAĞLANTI Bir isteğin döndürdüğü değerlerin belirli bir referans türüne ait olup olmadığını kontrol etmek için tasarlanmıştır. Aynı görev işlevler kullanılarak da gerçekleştirilebilir TİP Ve TİP DEĞERLER(bunların kapsamı daha geniştir ve yukarıda tartışılmıştır).

Örneğin, karşı taraflar için iletişim bilgilerinin seçilmesi görevi şu şekilde çözülebilir:

Rica etmek. Metin= "SEÇMEK
İletişim Bilgileri.Giriş
İTİBAREN
Bilgi Kaydı İletişim Bilgileri NASIL İletişim Bilgileri
NEREDE
ContactInformation.Object LINK Dizini.Karşı Taraflar"
;

Şebeke İFADE ETMEK

Şebeke İFADE ETMEK 1C sorgularında iki durumda kullanılır:

  • ilkel bir türün özelliklerini değiştirmeniz gerektiğinde;
  • bileşik veri türüne sahip bir alanı tek türe sahip bir alana dönüştürmeniz gerektiğinde.

İlkel veri türleri şunları içerir: sayı, dize, tarih, boolean. Bu veri türlerinden bazılarının ek özellikleri vardır. Tip Sayı uzunluğu ve kesinliği vardır, türü Astar - uzunluk veya sınırsız.

Şebeke İFADE ETMEK veri türünü değil ek özellikleri değiştirmenize olanak sağlar. Örneğin sınırsız uzunluktaki bir ipi, sınırlı uzunlukta bir ipe dönüştürebilir. Sorgu sonuçlarını böyle bir alana göre gruplandırmanız gerekiyorsa bu yararlı olabilir. Sınırsız uzunluktaki alanları gruplandıramazsınız, bu nedenle bunu 200 karakter uzunluğunda bir dizeye dönüştürüyoruz.

Rica etmek. Metin= "SEÇMEK
MİKTAR (Mal ve Hizmetlerin FARKLI Gelişi. Link) AS Link
İTİBAREN
Belge Mal ve Hizmetin Teslim Alınması Mal ve Hizmetin Teslim Alınması NASIL
GRUPLANDIRMA ŞEKLİ
EXPRESS(Mal ve Hizmetin Alınması. SATIR (200) OLARAK Yorum Yapın)"
;

Bazı durumlarda, bileşik veri türüne sahip alanlara yapılan sorgular, 1C platformu tarafından en iyi şekilde işlenemeyebilir. Bu, daha uzun sorgu sürelerine neden olur; bu nedenle, bileşik türün önceden tek bir türe dönüştürülmesi yararlı olabilir.

Rica etmek. Metin= "SEÇMEK
EXPRESS(Mal Hareketi.Sipariş AS Belgesi.Müşteri Siparişi).Tarih AS Sipariş Tarihi,
Malların Hareketi Ciro. İsimlendirme
İTİBAREN
KayıtBirikimler.Mal Hareketi.Ciro AS Mal HareketiCiro
NEREDE
Mal Ciro Hareketi.Sipariş BAĞLANTISI Belgesi.Müşteri Siparişi"
;

Operatörler SEÇENEK Ve BOŞ

Şebeke SEÇENEK operatöre benzer EĞER yerleşik 1C dilinde, ancak biraz azaltılmış işlevselliğe sahiptir.

Diyelim ki ContactInformation bilgi kaydından iletişim bilgilerini almak istiyoruz ve aynı zamanda bunun bir karşı tarafa mı yoksa bir kişiye mi ait olduğunu ayrı bir istek alanında belirtmek istiyoruz.

Rica etmek. Metin= "SEÇMEK
İletişim Bilgileri.Giriş,
SEÇENEK
NE ZAMAN DEĞERLER TÜR(ContactInformation.Object) = TÜR(Directory.Counterparties)
DAHA SONRA "
Karşı taraf "
BAŞKA SEÇİM
NE ZAMAN DEĞERLER TÜR(ContactInformation.Object) = TÜR(Directory.Individuals)
DAHA SONRA "
Bireysel"
BAŞKA "Başka birisi" "
SON
SAHİBİ OLARAK SONLANIR
İTİBAREN
Bilgi Kaydı. İletişim Bilgileri AS İletişim Bilgileri"
;

Örnekte görüldüğü gibi tasarımda SEÇENEK Kelimeden sonra her zaman bir koşul vardır NE ZAMAN; kelimeden sonra koşul doğruysa uygulanan değer DAHA SONRA ve koşulun karşılanmaması durumunda uygulanan değer, kelimeden sonra AKSİ TAKDİRDE. Her üç tasarım öğesi SEÇENEK zorunludur. Öğeyi çıkar AKSİ TAKDİRDE, operatörü kullanırken olduğu gibi EĞER yerleşik 1C dilinde bu imkansızdır. Ayrıca operatörden SEÇENEK tasarımın bir benzeri yok ELSEIF, ancak bir tanesine yatırım yapabilirsiniz SEÇENEK diğerinde, örneğimizde yapıldığı gibi.

Şebeke BOŞ tasarımda kullanılan SEÇENEK bir sorgu alanını NULL türüyle karşılaştırmak için.

Rica etmek. Metin= "SEÇMEK
SEÇENEK
DEĞER BOŞ OLDUĞUNDA 0 OLUR
BAŞKA Anlamı
SON"
;

Ayrıca operatör BOŞ bir cümle gibi sorgu koşullarında kullanılabilir NEREDE.

Uyumsuz türler "EXPRESS"- bu mesaj, bir 1C 8.2 veya 8.3 programcısı iki farklı türü karşılaştırmaya çalıştığında görünür.

Express() işlevi, 1C istek alanının değerini belirli bir türe dönüştürmenize olanak tanır. Bu iki durumda gerekli olabilir:

1. Bir dize değerinin gerekli sayı kapasitesini veya gerekli sayıda karakterini alın. Sınırsız türdeki alanlardaki karakter sayısı bazı özelliklerden dolayı sınırlı olmalıdır.

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

Örneğin:

EXPRESS(Adlandırma.Yorum AS STRING(300))
EXPRESS(Adlandırma.Fiyat SAYI(15, 2)) OLARAK Tutar

2. Bileşik tür alanını tek tür alanına dönüştürün. Bu amaçlar için gerekli olabilir. Yazılan alan başka türde bir değer içeriyorsa, sistem NULL değerini döndürür, bu nedenle "NEREDE" bölümünde her zaman ek olarak bir koşul ayarlamak ve onu LINK operatörüyle sınırlandırmak gerekir.

Örneğin:

SEÇMEK

EXPRESS(Satış.Kayıt Şirketi AS Belgesi.Uygulama)

İTİBAREN

NEREDE Satış.Kayıt Şirketi BAĞLANTISI Belge.Uygulama

Hatalardan nasıl kaçınılır

Söz dizimi yanlış kullanıldığında "Uyumsuz türler EXPRESS..." gibi hatalar ortaya çıkabilir.

Örneğin, "EXPRESS("123″ AS NUMBER(5, 2)) AS SUM" yapısı hatalı olarak kabul edilir, çünkü istek standart yöntemler kullanılarak bir türden diğerine dönüştürülemez.

1C programlamayı öğrenmeye başlıyorsanız ücretsiz kursumuzu öneririz (unutmayın