1c istekte boş bir satır olup olmadığını kontrol edin. boş değeri kontrol ederek

1c istekte boş bir satır olup olmadığını kontrol edin. boş değeri kontrol ederek

1C'de kontrol edin boş değerözel bir fonksiyon tarafından gerçekleştirilir. Özelliğinizin veya değişkeninizin doldurulup doldurulmadığını kontrol etmek için global bağlamdan bir işlev kullanmalısınız. DeğerDolu(<Значение>) .

1C 8'de, bir değer, varsayılan değerden farklıysa doldurulmuş (boş değil) kabul edilir. bu türden. Örneğin, bir referans türü için varsayılan değer şöyledir: Boş bağlantı(bu referans kitabı, belge vb.). Değer içeren değişkenler ve ayrıntılar da boştur. Hükümsüz Ve Tanımlanmamış.

1c boş değeri kontrol edin. Örnekler

Değişken = Directoryes.Nomenclature.EmptyLink();

Kontrol = DeğerDolu(Değişken); Bu durumda değişken Sınav değeri içerecek Yalan DeğerDolu(<Значение>) . Ayrıca işlev

. koşullarda doğrudan kullanılabilir.

Örnek 1.1

Değer Doldurulmuşsa(Değişken) Then Report("Değişkendeki değer boş değil!"); endIf;

Değişken = Documents.AdvanceReport.FindByNumber("000000001"); Kontrol = DeğerDolu(Değişken); İÇİNDE bu örnekte eğer belgeÖn rapor 000000001 numara ile Bu durumda değişken var, o zaman değişkende değeri içerecek Doğru değeri içerecek.

, aksi takdirde İşlevi kullan DeğerDolu gibi değişken türlerdeki değişkenler için mümkün değildir, Değer tablosu Değerler ağacı

vesaire. İşlev tüm konfigürasyonlarda çalışır. 1C'deki değerler tablosunun boş olduğunu nasıl kontrol edebilirsiniz? Bu amaçla yöntem kullanılır Miktar()

Değerler tablosunda kaç satır bulunduğunu kontrol etmek için bunu kullanabilirsiniz. Örnek 3. Let Masam

- kodda yukarıda tanımlanan değerler tablosu.

MyTable.Quantity() = 0 ise Geri Dön; endIf;

Değer ağacının doluluğunun belirlenmesi ve sorgu sonucu seçimi için de aynı yöntem kullanılabilir. Örnek 4. Let Ağacım

— kodda yukarıda tanımlanan değerler ağacı.

MyTree.Rows.Quantity() = 0 ise Geri Dön; endIf;

Gördüğünüz gibi, değer ağacında birinci düzey satırların varlığını kontrol ediyoruz; eğer orada değilse ağaç boştur. Örnek 5. Let Rica etmek

Bir dize, 1C:Enterprise 8 sistemlerindeki ilkel veri türlerinden biridir. astar metin içerir.

Değişken değerlerini yazın astarçift ​​tırnak içine alınır. Bu türden birkaç değişken eklenebilir.

Per1 = "Kelime 1";
Per2 = "Kelime 2";
Per3 = Per1 + " " + Per2;

Sonunda Per3"anlamına gelecektir" Kelime 1 Kelime 2″.

Ayrıca 1C:Enterprise 8 sistemleri dizelerle çalışmaya yönelik işlevler sağlar. Başlıcalarına bakalım:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — işlev, kullanıcının bir değer belirtebileceği bir iletişim kutusu görüntülemek üzere tasarlanmıştır değişken türü Astar. Parametre <Строка> gereklidir ve girilen dizenin yazılacağı değişkenin adını içerir. Parametre <Подсказка> isteğe bağlı - bu, iletişim kutusunun başlığıdır. Parametre <Длина> isteğe bağlı, giriş dizesinin maksimum uzunluğunu gösterir. Varsayılan olarak sıfırdır, bu da sınırsız uzunluk anlamına gelir. Parametre <Многострочность> isteğe bağlı. Giriş modunu belirtir çok satırlı metin: Doğru—satır ayırıcılarla çok satırlı metni girin; Yanlış - basit bir dize girin.

Unicode'daki karakter kodunu biliyorsanız bir dize girebilirsiniz:

Sembol(<КодСимвола>) — kod sayı olarak girilir.

Harf= Sembol(1103) ;

// BEN

Bir sembolün kodunu bulmanızı sağlayan bir ters fonksiyon da vardır.<Строка>, <НомерСимвола>) — SembolKodu(

Belirtilen karakterin Unicode numarasını sayı olarak döndürür.

Metin durumu dönüştürme işlevleri:<Строка>) VReg(

— Bir dizedeki tüm karakterleri büyük harfe dönüştürür.<Строка>) NReg(

— Bir dizedeki tüm karakterleri küçük harfe dönüştürür.<Строка>) TReg(

— dizedeki tüm karakterleri başlık harfine dönüştürür. Yani tüm kelimelerin ilk harfleri büyük harfe, kalan harfler ise küçük harfe dönüştürülür.

Bir dizedeki karakterleri arama ve değiştirme işlevleri:<Строка>, <ПодстрокаПоиска>) Bulmak(

— arama alt dizisinin oluşumunun karakter numarasını bulur. Örneğin:

Bul ("Dize", "oka");<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 StrFind(- arama alt dizisinin oluşumunun karakter numarasını bulur; oluşum numarası ilgili parametrede gösterilir. Bu durumda arama parametrede numarası belirtilen karakterle başlar.

Başlangıç ​​Konumu. Arama dizenin başından veya sonundan itibaren mümkündür. Örneğin: Sayı4 Oluşumları = Str Bul (

"Savunmacılık"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) , "hakkında", Arama Yönü. Başlangıç, 1, 4); // 7 StrDeğiştir(

– içinde bulunur

orijinal çizgi<Строка>) arama alt dizesinin tüm tekrarlarını belirler ve onu değiştirilen alt dizeyle değiştirir. değeri içerecek StrReplace ("Dize", "oka", ""); değeri içerecek.

// Sayfa<Строка>, <ПодстрокаПоиска>) – Arama alt dizesinin kaynak dizede tekrarlanma sayısını hesaplar.

StrNumberOccurrences ( "öğren, çalış ve tekrar çalış", "çalışmak" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — parametreleri sayıya göre bir dizeye dönüştürür. Satır şu formdaki değiştirme işaretlerini içermelidir: “%1..%N”. İşaretleyici numaralandırması 1'den başlar. Parametre değeri Tanımlanmamış boş bir dize değiştirilir.

StrTemplate ( "Parametre 1 = %1, Parametre 2 = %2", "1" , "2" ) ; // Parametre 1= 1, Parametre 2 = 2

Dize dönüştürme işlevleri:

Aslan(<Строка>, <ЧислоСимволов>) – Bir dizenin ilk karakterlerini döndürür.

Sağ(<Строка>, <ЧислоСимволов>) – Bir dizenin son karakterlerini döndürür.

Çarşamba(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – bir uzunluk dizisi döndürür<ЧислоСимволов>, sembolden başlayarak<НачальныйНомер>.

KısaltL(<Строка>) ilkinin solundaki önemsiz karakterleri keser anlamlı sembolÇizgide.

Kısaltma(<Строка>) — satırdaki son önemli karakterin sağındaki önemsiz karakterleri keser.

KısaltLP(<Строка>) – satırdaki ilk önemli karakterin solundaki ve satırdaki son önemli karakterin sağındaki önemsiz karakterleri keser.

StrGetString(<Строка>, <НомерСтроки>) – Sayıya göre çok satırlı bir dize alır.

Diğer özellikler:

StrLength(<Строка>) – dizedeki karakter sayısını döndürür.

StrNumberRow(<Строка>) – çok satırlı bir dizedeki satır sayısını döndürür. Bir satır öncekinden yeni satır karakteriyle ayrılmışsa yeni satır olarak kabul edilir.

StrKarşılaştır(<Строка1>, <Строка2> ) – iki dizeyi büyük/küçük harfe duyarlı olmayan bir şekilde karşılaştırır. Bir fonksiyon bir nesne gibi çalışır Değerlerin Karşılaştırılması. İade:

  • 1 - eğer ilk satır ikinciden büyükse
  • -1 - eğer ikinci satır birinciden büyükse
  • 0 - dizeler eşitse

StrCompare("İlk satır", "İkinci satır");

// 1

Sorgularla çalışırken herhangi bir programcının boş değerlerle bir şekilde etkileşime girmesi gerekir. Boş değerle neyi kastediyoruz?

Boş değer ya değer değildir ya da veri türü için varsayılan değerdir. İlkel türlerde her şey oldukça basittir: Varsayılan değer, başlangıç ​​noktası görevi gören bir başlangıç ​​değeridir.

Boş Değer Türleri

  • Bir sorguda karşılaşılabilecek veya gerekli olabilecek boş değer türlerine bakalım.
  • Sayı türü için boş değer sıfır – 0'dır.
  • Dize türü için – boş bir dize – “”.
  • Tarih türü için – ilk yılın 1 Ocak – 01/01/0001 00:00:00. Bu tarihten itibaren zaman 1C'ye göre sayılır.*

Boolean türü için varsayılan değer teknik olarak False'tur ancak mantıksal olarak türün her iki değeri de dolguludur. Bu nedenle boş bir değerin False olup olmadığına karar vermek belirli bir algoritmanın mantığına dayanır. *Dikkatli olun, 1C dışında farklı tarih sayma sistemleri vardır. geri sayım.

Eksik değer tamamen yalnızca türe karşılık gelir Hükümsüz. Bu tür yalnızca bir değer içerir; bu, değer olmadığını gösterir.

Benzer tip Tanımlanmamış ayrıca yalnızca bir değer içerir, ancak Tanımsız, veri yokluğu anlamına gelmez, yalnızca tür için varsayılan değeri belirlemenin imkansızlığı anlamına gelir. Tanımsız, açıkça tanımlanmayanlar da dahil olmak üzere bileşik türler için varsayılan değerdir. Örneğin, içindeki değer yeni hat türü açıkça tanımlanmayan bir sütundaki değerler tablosu.

ortak referans türlerde belirsizlik çok daha azdır. Tüm referans türleri boş bir değer sağlar. Boş değer, veri türünü belirten aynı referanstır ancak belirli bir değer için benzersiz bir tanımlayıcı içermez. Bu sayede boş bir bağlantıya normal bir bağlantıymış gibi davranabilir ve platformun sağladığı tüm yöntemleri ona uygulayabilir, onunla tam teşekküllü bir değermiş gibi çalışabiliriz.

Bir Sorguda Boş Değerlerle Çalışmak

Bir sorgu sonucuna açıkça boş bir değer girmeniz veya mevcut değerleri boş bir değerle karşılaştırmanız gerekip gerekmediğini sorgunuzdaki boş değerleri nasıl tanımlayacağınızı bilmeniz gerekir.

Türler Sayı, Dize, Boolean istekte yerleşik dilde olduğu gibi açıklanmıştır:

SampleTypeNumber AS olarak 0'ı SEÇİN, SampleTypeString AS "Merhaba dünya", SampleTypeBoolean AS Doğru

Temel olarak ilkel bir tür olan tanımsız, benzer şekilde tanımlanır:

Biriktirme Kaydı'ndan Batch.Period'u seçin.Geri Kalan Yerde Toplu İş Olarak Toplu İş.DocumentBatch = Tanımsız

Boş referans değerlerinin tanımlanması biraz daha zordur. Tüm referans nesnelerinin önceden tanımlanmış bir EmptyRef hizmet değeri vardır. Bu sayede, Değer işlevi aracılığıyla boş bir bağlantıyı tek bir yöntemle seçmek mümkündür:

Değer Seçin(Directory.Nomenclature.EmptyLink) İsimlendirme Nasıl Boşaltılır

Null değerleri ile çalışma olanakları biraz daha zengindir. Diğer ilkel türler gibi Null da yerleşik dilde olduğu gibi tanımlanır. Ayrıca Is Null adlı özel bir operatör ve IsNull işlevi de vardır.

  • Is Null operatörü oluşturmanıza olanak sağlar mantıksal ifade seçilen değerin Null değeriyle karşılaştırılması.
  • IsNull işlevi, Null değilse ilk argümanı, aksi takdirde ikinci argümanı döndürür.

Boş değerleri tanımlayan ifadeler, ifadeleri destekleyen tüm sorgu bölümlerinde kullanılabilir. Örneğin, Seçim bölümüne boş bir bağlantı veya Koşul'a Boş bir denetim ekleyebilirsiniz.

Pratik örnekler

Değer işlevini kullanma

Products.Link As Nomenclature, Products.Link = Value(Directory.Nomenclature.EmptyLink) Benzerini SeçinLinkEmpty From TueProducts As TueProducts

Is Null operatörünü kullanma

Ürünleri Seçin.Adlandırma Olarak Bağlantı, Ürünler.Bağlantı Bu Bağlantı Gibi Boştur TueProducts Olarak TueProducts'tan Boş

Solda boş veya tam birleştirme

Boş olup olmadığı kontrol ediliyor

Örnek, sol birleştirmede ikinci tablodaki ilk tablo için eşleşme olmadığında yaygın bir pratik durumu göstermektedir. Bu durumda ikinci tablonun tüm alanları Null olacaktır.

TueProducts'ı seçin.Adlandırma Olarak Bağlantı, Kalanlar.Miktar Olarak Kalan Miktar, Kalanlar.Kalan Miktar, TueProducts olarak TueProducts'tan NoRemaining Olarak Boştur Sol Bağlantı RegisterAccumulations.ProductsInWarehouses.TueProducts'a Göre Kalanlar.Link = Kalanlar.Nomenclature

Boş Değerleri İşleme

Eksik değerleri değiştirmek için bazı varsayılan değerleri elde etmeye yönelik ortak bir tekniği göstermek amacıyla önceki sorgunun değiştirilmesi. Bu örnekte IsNull işlevi kullanılarak eksik kalan değer, mantıksal olarak doğru bir 0 ile değiştirilir.

TueProducts.Link As Nomenclature'ı seçin, IsNull (Remaining.QuantityRemaining, 0) As Quantity From TueProducts as TueProducts Sol Bağlantı RegisterAccumulations.ProductsInWarehouses.TueProducts'a Göre Kalanlar.Link = Kalanlar.Nomenclature

Bu yazıda çeşitli boş değer türlerine ve özelliklerine baktık ve bunları belirlemenin yollarını inceledik. çeşitli türler sorgularda boş değerler ve pratik kısımda dikkate alınan malzemenin uygulama kolaylığına ikna olduk.

Bu makalede, boş bir bağlantı da dahil olmak üzere, kontrol edilen öznitelik türüne bağlı olarak boş bir değeri kontrol etmenin yolları incelenecektir.

Özniteliğin mevcut olmadığı durumlarda NULL değeri döndürülür. Bu durumda tür de NULL olacaktır. Örneğin, sol birleştirmeyi kullanarak iki tabloyu birleştiriyorsunuz. Soldaki tablo için sağdaki tabloda değer bulunamaması durumunda NULL döndürülecektir.

Şunu kontrol et: verilen değer“IS NULL” ve “ ” yapısı kullanılarak yapılabilir. İlk durumda Doğru veya Yanlış döndürülür. İkinci durumda, NULL döndürüldüğünde hemen farklı bir değer ayarlayabilirsiniz.

Aşağıdaki 1C 8.3 isteği, belirli bir segmenti olmayan iş ortakları için irtibat kişilerinin bir listesini döndürecektir.

SEÇMEK
İrtibat KişileriPartners.Link
İTİBAREN
Dizin.Ortakların İrtibat Kişileri AS Ortakların İrtibat Kişileri
DAHİLİ KATIL Dizini.İş Ortağı Segmentleri AS İş Ortağı Segmentleri
Partners.Owner'ın Yazılım İrtibat Kişileri = Partners.Parent'in Segmentleri
NEREDE
İş Ortağı Segmentleri BOŞ.

Boş tarih

Değerin boş bir tarih olup olmadığı DATETIME(1, 1, 1, 0, 0, 0) yapısıyla karşılaştırılarak kontrol edilir. Aşağıda örnek bir kullanım verilmiştir:

1C isteğinde boş bağlantı

Döndürülen özniteliğin bir referans türünde olması durumunda (örneğin, bir dizinin, belgenin vb. bir öğesiyse), aşağıdaki yapı kullanılır: VALUE(Directory.DirectoryName.EmptyLink).

Aşağıdaki örnekte sorgu, iş bölgesi belirtilmemiş tüm iş ortaklarını seçmektedir.

“ValueFilled”ı kontrol etmek için tam tersi koşulu uygulamanız gerekir:

Partners.İş Bölgesi<>VALUE(Directory.BusinessRegions.EmptyLink)

Boş dize

Dizi türlerini kontrol etmek için başka bir örnekle karşılaştırma yapılır. Bu durumda - "".

Aşağıdaki sorgu, adı boş olan tüm iş ortaklarını seçecektir.