Kullanımı istek 1s 8.2'ye benzer. Sorgu koşullarına benzer

Tüm eksikliklere rağmen, metin alanı araması hala en popüler yöntemlerden biridir. Dize veri türlerini her yerde bulabiliriz; adlar, hesap numaraları, adresler ve diğer bilgiler bu biçimde saklanabilir. Yerleşik 1C dilindeki sorgularda geliştiricilerin rahatlığı için özel bir "LIKE" operatörü kullanılır. Bu en çok kullanılan komutlardan biridir, bu nedenle sözdizimi ve yetenekleri hakkında kapsamlı bilgi olmadan bir programcının çalışması zor olacaktır.

LIKE operatörünü kullanma

Herhangi bir operatörü pratikte kullanmadan önce amacını, uygulama yerlerini ve sözdizimini açıkça anlamanız gerekir. 1C isteğinde "LIKE" kullanmanın amacı, şablon olarak sunulan koşulun yerine getirilip getirilmediğini kontrol etmektir. Dönüş değeri, belirtilen koşulun doğru olup olmadığını belirten bir Boolean türüdür (doğru veya yanlış). LIKE operatörü bir sorguda birkaç yerde kullanılabilir:

  • “NEREDE” anahtar kelimesiyle gösterilen koşullar bloğunda;
  • Tercih O Zaman Aksi Halde Biter tasarımında;
  • Alan karşılaştırması sonucunda doğrudan seçim alanlarında.

Doğrulama sözdizimi her zaman aynıdır ve 3 bağlantıdan oluşur. Solda kontrol edilen metin değeri, ardından "LIKE" operatörünün kendisi ve sağda kontrol edilen şablon bulunur. Hızlı ve kolay bir şekilde şablon oluşturmak için geliştirmeyi kolaylaştıran özel semboller vardır:

  1. “%”, isteğe bağlı uzunluktaki herhangi bir karakterin dizisidir. Bir dizedeki tek tek kelimeleri veya sayıları aramak için kullanılır;
  2. “_” – herhangi bir tek karakter. Tek bir karakterin varlığını belirtmek amacıyla;
  3. “[...]” bir dizedeki bir karakterle karşılaştırılacak bir karakter dizisidir. Böyle bir modelin yardımıyla parantez içinde listelenen karakterlerden herhangi birinin eşleşmesi kontrol edilir. Ayrıca bir sayı veya harf aralığı da belirleyebilirsiniz ([a-g], );
  4. “[^...]” öncekinin tam tersi bir kalıptır. Satırda belirtilen karakter ile parantez içinde listelenen karakter arasındaki fark kontrol edilir.

Doğru şablonlar oluşturmanın ilkelerini daha iyi anlamak ve anlamak için geliştiricilerin hayatında sıklıkla karşılaşılan bazı örneklere bakalım. Birincisi, isimlendirme dizininden adlarında “CUTTER” kelimesinin göründüğü tüm öğeleri seçmemiz gerektiği zamandır. Bu durumda sorgu koşullarında LIKE kullanmamız gerekir:

İsimlendirmeyi SEÇİN.Ad AS İsim Dizinden.Adlandırma AS İsimlendirme NEREDE İsimlendirme.Ad "% CUTTER%" ile BENZER

Her iki “%” sembolünü de kaldırırsak sorgu, adı tırnak içinde belirtilenle tamamen eşleşen bir ürün gösterecektir. “CUTTER%” veya “% CUTTER” şablonunu bırakırsak, sonuç, belirli bir karakter kombinasyonuyla sırasıyla biten veya başlayan öğelerin bir listesi olacaktır.


Sorgu sözdizimini bilmeyen acemi programcıların kafasını karıştırabilecek bir soruna bakalım. Diyelim ki adında “%” sembolü olan tüm eşyaları bulmanız gerekiyor. Özellikle ayrılmış karakterleri aramanız gereken durumlar için “özel karakter” operatörü vardır. #,\,/,~ ve diğer karakterler özel karakter olarak kullanılabilir; bundan sonra ayrılmış karakterler yalnızca bir işareti ifade eder.

İsimlendirmeyi SEÇİN.Ad AS İsim Dizinden.Adlandırma AS İsimlendirme NEREDE İsimlendirme.Ad "%#%" ile BENZER ÖZEL KARAKTER "#"

Bir aramada bir parametre kullanmanız gerekiyorsa, sorgudaki SIMILAR parametresine sahip değişken toplama kullanılarak kullanılır. Parametrenin bir dize türü olması gerektiğini, aksi takdirde onu istekte bir dizeye dönüştürmeniz gerekeceğini unutmayın. Bu oldukça karmaşık bir işlemdir ve bunu önceden dışlamak daha iyidir.

İsimlendirmeyi SEÇİN.Ad AS Ad Dizinden.Adlandırma AS İsimlendirme NEREDE İsimlendirme.Ad "%" + &ad + "%" ile BENZER

BENZER işlevi, platformun 8'den başlayarak tüm sürümlerinde geçerlidir ve uygulanabilirliği nedeniyle 1C geliştiricileri bunu değiştirmek istemeyecektir. Elbette metin araması her zaman girilen ismin doğruluğuna bağlıdır, ancak yine de en yaygın olanlardan biri olmaya devam etmektedir. Bu bağlamda, profesyonel 1C geliştiricilerinin SIMILAR'ın kullanımını tüm nüanslarıyla incelemeleri gerekir.

Bir sorgudaki SIMILAR operatörü, tablolardaki dize değerlerinin bir kalıpla benzerliğini kontrol eder.
Şu şekilde kullanılır: kontrol edilecek dize bu operatörün soluna, desen ise sağına yerleştirilir.

Kontrol edildikten sonra True veya False değeri döner, buna göre durumlarda aktif olarak kullanılır.
Bir şablon oluşturmak için aşağıdaki hizmet karakterleri kullanılır:

  • % (yüzde) - herhangi bir sayıda 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 listelenen herhangi bir tek karakter
    Ayrıca, çeşitli sembollere ek olarak, aralıkları kullanabilirsiniz, örneğin a-z(A-z), bu, aralığın uçları da dahil olmak üzere aralığa dahil edilen rastgele bir sembolün varlığı anlamına gelir.
  • [^...] (köşeli parantez içinde bir olumsuzluk işareti ve ardından bir veya daha fazla karakter) - olumsuzluk işaretinden sonra listelenenler dışındaki herhangi bir tek karakter

Geriye kalan semboller amaçlarına uygun olarak kullanılır.
Yukarıdaki hizmet karakterlerinden birinin sembol olarak iletilmesi gerekiyorsa, bunun önüne şu karakter eklenmelidir:<Спецсимвол>. Kendim<Спецсимвол>(herhangi bir uygun karakter), ÖZEL KARAKTER anahtar sözcüğünden sonra aynı ifadede tanımlanır.
Örneğin, “%ABV[abvg]\_abv%” ÖZEL KARAKTER “\” modeli, bir karakter dizisinden oluşan bir alt dize anlamına gelir:
A harfleri; B harfleri; B harfleri; Bir basamak; a, b, c veya d harflerinden biri; vurgulamak; harfler a; harfler b; harfler
Üstelik bu diziden önce rastgele bir karakter kümesi gelebilir.

Prosedür Sözleşmeyi SeçinContainingInNameText(mText)
//İstekte "%" + mText + "%" gibi bir şablon kullanacağız İstek = Yeni İstek; Query.SetParameter("Ad", "%" + Metin + "%"); request.Text = "SEÇ | Anlaşmalar. Bağlantı, | Anlaşmalar. Sahip | FROM | Dizin. Karşı Tarafların Sözleşmeleri AS Anlaşmaları | | NEREDE | Anlaşmalar. İsim BENZER & İsim"; Sonuç = Query.Run(); Seçim = Sonuç.Select(); Report("Adında şunu içeren anlaşmalar: " + mText + " aşağıdaki Karşı Taraflara sahiptir"); While Selection.Next() Döngü Raporu("Karşı Taraf: " + Selection.Owner + "; Sözleşme: " + Selection. Bağlantı EndIf; EndProcedure

Koşullu operatörün amacına ve kullanımına bakalım GİBİ(İng. GİBİ)örneklerde 1C sorgu dilinde.

Hızlı geçiş

Amaç

İstekteki dize değerinin belirtilen kalıpla eşleşip eşleşmediğini kontrol edin; bir Boole değeri (DOĞRU veya YANLIŞ) döndürür.

  • Çek vakadan bağımsızdır.
  • Sorgu, tam metin arama dizinleriyle ilişkili olmayan tablo dizinlerini kullanır.
  • Büyük tablolarla tamamlanması uzun zaman alabilir.
  • Sınırsız uzunluktaki dizeler SUBSTRING işlevi kullanılarak dönüştürülmelidir

Kullanım yerleri

  • Operatör açısından NEREDE
  • Tasarım koşullarında SEÇİM NE ZAMAN<>SONRA "" BAŞKA "" SON
  • Seçim alanlarında (örneğin: Name LIKE &ParameterSimilar to StringSuitable)

LIKE operatörünün sözdiziminin açıklaması

Operatör parametresi bir dize olmalıdır: sabit olarak belirtilebilir veya istek parametresi olarak iletilebilir.

Aşağıda listelenen değişmezler (maskeler) birlikte veya ayrı ayrı kullanılabilir.

Tam dize spesifikasyonu

İlk 10'u SEÇİN
Anahtarlar.Ad
İTİBAREN
Dizin.Anahtarlar AS Anahtarları
NEREDE
Keys.Name BENZER to "1" // Eşdeğer Keys.Name ="1"

Sonuç:

%, herhangi bir karakterin keyfi bir sayısı anlamına gelen gerçek bir değerdir

İlk 10'u SEÇİN
Anahtarlar.Ad
İTİBAREN
Dizin.Anahtarlar AS Anahtarları
NEREDE
Tuşlar.Ad GİBİ "%"

Sonuç: herhangi bir 10 öğe

_ (alt çizgi): herhangi bir karakterle eşleşen gerçek değer

Örnek 1:

İlk 10'u SEÇİN
Anahtarlar.Ad
İTİBAREN
Dizin.Anahtarlar AS Anahtarları
NEREDE
Tuşlar.Ad GİBİ "_"

Örnek #2: herhangi bir karakterle başlayıp ardından “1” ve ardından herhangi bir karakter gelir

İlk 10'u SEÇİN
Anahtarlar.Ad
İTİBAREN
Dizin.Anahtarlar AS Anahtarları
NEREDE
Anahtarlar.Adı "_1%" ile BENZER

Sonuç:

(köşeli parantez içinde bir veya daha fazla karakter)

  • Herhangi bir karakterle eşleşen her değişmez değer OR olarak kullanılır.
    Belirtilen aralıktan rastgele bir karakter anlamına gelen a-z,0-5 gibi bir aralık belirtmek kabul edilebilir.

Örnek

İlk 10'u SEÇİN
Anahtarlar.Ad
İTİBAREN
Dizin.Anahtarlar AS Anahtarları
NEREDE
Anahtarlar.Adı "[l]%" ile BENZER

Sonuç: "l" veya "z" ile başlayan 10

Örnek: 5,6,7 ile başlayan

İlk 10'u SEÇİN
Anahtarlar.Ad
İTİBAREN
Dizin.Anahtarlar AS Anahtarları
NEREDE
Tuşlar.Ad GİBİ "%"

Sonuç:

[^] (köşeli parantez içinde bir kaçış işareti ^ ve ardından bir veya daha fazla karakter vardır)

Belirtilenler () dışındaki herhangi bir karaktere (_) eşdeğerdir

Örnek

İlk 10'u SEÇİN
Anahtarlar.Ad
İTİBAREN
Dizin.Anahtarlar AS Anahtarları
NEREDE
Anahtarlar.Adı "8.[^012]%" ile BENZER//8.0,8.1,8.2'yi içermez

Sonuç: hepsi "8" ile başlıyor. belirtilenler hariç

ÖZEL KARAKTER - istekte yukarıda kayıtlı karakterleri belirtme komutu

Hizmet sembolü olarak en az şunun kullanılması kabul edilebilir: #,~,/,\

Örnek:

İlk 10'u SEÇİN
Anahtarlar.Ad
İTİBAREN
Dizin.Anahtarlar AS Anahtarları
NEREDE
Tuşlar.Ad GİBİ "#_" ÖZEL KARAKTER "#"

Sonuç:

Platformlarda uygulanabilirlik

GİBİ yanlış parametreler<>

  • Dize türü olmayan bir parametre iletilir: örneğin, "1" dizisi yerine 1 sayısı
  • Dize türü olmayan bir alan geçerli bir maskeyle (örneğin bir bağlantı) karşılaştırılır veya bağlanırken değer IsNUL için kontrol edilmez

Sorunun görüntülendiği hata metnine dikkat edin:

Anahtarlar.Adı BENZER<>&L

Şebeke BEĞENMEK operatörün solunda bulunan bir sorgudaki dize türü verilerini, operatörün sağında bulunan dize türü verileriyle karşılaştırmanıza olanak tanır. Karşılaştırmanın sonucu Doğru veya Yanlış olarak değerlendirilir, dolayısıyla karşılaştırma bir koşul olarak uygulanabilir.

Operatör için BEĞENMEK Dize olarak algılanmayan özel hizmet karakterleri vardır:

  • "%" yüzde sembolü: bir dizede herhangi bir sayıda rastgele karakterin varlığını gösterir
  • "[...]" köşeli parantez içindeki bir veya daha fazla karakter: listelenen karakterlerden herhangi birinin (tek) varlığını gösterir. Ayrıca bir dizi karakter de belirtilebilir (örneğin)
  • "_" alt çizgi: herhangi bir rastgele karakterin varlığını gösterir
  • "[^...]" olumsuzlama karakteri: köşeli parantez içinde belirtilenler dışında herhangi bir tek karakterin varlığını belirtir
Karşılaştırma için yukarıdaki özel karakterlerden birini belirtmeniz gerekiyorsa "ÖZEL SEMBOL" anahtar kelimesini kullanmalısınız.

Çeşitli DBMS'lerle kullanım özellikleri

IBMDB2"BENZER operatörünün sağına yalnızca bir parametre yerleştirilebilir. Joker karakterler yalnızca "_" (herhangi bir karakter anlamına gelen alt çizgi) ve "%"dir (herhangi bir karakter dizisi anlamına gelen yüzde).
DBMS kullanılması durumunda " PostgreSQL" veya " Oracle Veritabanı"özel karakterler" köşeli parantezler [...]" yalnızca istekteki metinde belirtilmişse kabul edilir ve isteğe parametre olarak aktarılmaz.

Böylece dosya veritabanında özel karakterler her zaman aynı şekilde algılanacak ve istemci-sunucu sürümünde kullanılan DBMS'ye bağlı olarak farklı şekilde algılanacaktır.

Örnek: Adında "%" sembolünü içeren ürünleri seçin

SEÇ | Referans Bağlantısı |FROM | Dizin İsimlendirme NASIL Ref | NEREDE | Ref.Ad GİBİ "%\%" ÖZEL KARAKTER "\"

Örnek: adları "Tank" kelimesiyle başlayan ürünleri seçin

SEÇ | Referans Bağlantısı |FROM | Dizin İsimlendirme NASIL Ref | NEREDE | Ref.Adı "Bak%" ile BENZER

Örnek: adları sayıyla biten ürünleri seçin

SEÇ | Referans Bağlantısı |FROM | Dizin İsimlendirme NASIL Ref | NEREDE | Ref.Adı "%" ile BENZER

Bazen 1C 8.3 veya 8.2'de, örneğin adında "sır" kelimesi bulunan tüm öğelerin bulunduğu bir dizinden bir seçim yapmanız gerektiğinde bir durum ortaya çıkar. Veya dizinden soyadlarında “Ivan” kelimesini içeren tüm yüklenicileri seçin. Genel olarak bazı dize değerlerini kontrol edin.

Bu amaçla 1C sorgularında 8.3 ve 8.2 - "Benzer" operatörü vardır. Sırasıyla aşağıdaki durumlarda kullanılır:

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

1C sorgularında şablonlar nasıl kullanılır?

Bir seçim koşulu oluşturmak için belirli bir şablonu parametre olarak iletmeniz gerekir. Bir şablon oluşturmak için servis sembolleri adı verilenler vardır.

Örneğin, "%" karakteri herhangi bir rastgele karakter dizisine izin verir:

Başka özel karakterler de var:

  • % (yüzde) - herhangi bir rastgele karakter dizisine izin verir;
  • _ (alt çizgi) - herhangi bir tek karakter;
  • […] – parantez içinde listelenenlerden rastgele bir karakter. Karakterleri listelemenin yanı sıra aralıkları da kullanabilirsiniz. Örnek: a-o;
  • [^...] – öncekiyle aynı, ancak tersi. "^" işareti olumsuzluk anlamına gelir.