• Dize 1'lerden numarayı alın. Dizelerle çalışmak için yeni işlevler. Metin durumu dönüştürme işlevleri

    herkese selam
    Bugün benden uygulama belgesini yazdırırken belge önekini göstermememi istediler, sorun şu şekilde çözüldü.

    StrReplace(Sayı, Lion(Sayı, 3 ), "" );

    Sözdizimi asistanına baktığımda o kadar hoşuma gitti ki hakkında yazmak istedim. 1C:Enterprise'da dizelerle çalışma.

    1C'deki bir dize, ilkel bir veri türünü ifade eder.

    1C yardımına bakarsanız, String (String) tipinin aşağıdaki açıklamasını göreceksiniz.
    Bu türdeki değerler, isteğe bağlı uzunlukta bir Unicode dizesi içerir.
    Dizeler hakkında kendi sözlerinizle konuşursanız, işe yarayacaktır. Bir dize, her zaman tırnak işaretleri içine alınmış, çeşitli karakterlerden oluşan bir sabittir.

    Dize spesifikasyonu
    Title = "Merhaba yolcu";

    Tipik konfigürasyonlardaki çok satırlı dizeler çoğunlukla dikey ayırıcı "|" kullanılarak oluşturulur:
    String = "Çok satırlı
    |dize
    | yaz
    |metin";

    Bir dize içindeki alıntı çift tırnakla belirtilir.
    String = ""Tırnak işaretleri içindeki metin"";

    Dizeler üzerinde birçok işlem vardır (bir dize içinde arama yapmak, ilk olanları belirlemek vb.), Sözdizimi Yardımcısına bakmak daha iyidir.
    Sözdizimi yardımcısı - Yerleşik dilin genel açıklaması-> yerleşik işlevler-> dizelerle çalışmaya yönelik işlevler.

    Dizelerle çalışmaya yönelik işlevler

    Burada kısa bir biçimde dizelerle çalışmaya yönelik işlevleri vereceğim:

    VReg(<Строка>) - İşlev, dizedeki tüm karakterleri büyük harfe dönüştürür.

    SembolKodu(<Строка>, <НомерСимвола>) – Fonksiyon, iletilen dizede belirtilen sayıdaki konumda bulunan karakterin kodunu alır.

    Bir aslan(<Строка>, <ЧислоСимволов>) – İşlev, dizenin solundan ilk karakterleri seçer.

    Bulmak(<Строка>, <ПодстрокаПоиска>) — İşlev, aranan dizenin orijinal dizede bir alt dize olarak geçtiği yeri bulur.

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

    Sağ(<Строка>, <ЧислоСимволов>) – Bu işlev, dizenin sağındaki son karakterleri seçmesi açısından Sol işlevlerden farklıdır.

    Boş satır(<Строка>) — İşlev, dizede önemli karakterlerin olup olmadığını kontrol eder.

    Sembol(<КодСимвола>) — İşlev, karakter kodunu, karakteri içeren bir dizeye dönüştürür.

    Kısalt(<Строка>) — İşlev, dizedeki ilk önemli karakterin solundaki önemsiz karakterleri keser.

    Kısalt(<Строка>) — İşlev, dizedeki ilk anlamlı karakterin solundaki önemsiz karakterleri keser ve dizedeki son anlamlı karakterin sağındaki boşlukları keser.

    kısaltma(<Строка>) — İşlev, dizedeki son önemli karakterin sağındaki önemsiz karakterleri keser.

    Çarşamba(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) - İşlev, karakterle başlayan bir karakter dizisi seçer.<НачальныйНомер>, Toplam<ЧислоСимволов>.

    StrLength(<Строка>) — İşlev dizedeki karakter sayısını alır.

    StrDeğiştir(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — İşlev, kaynak dizede arama alt dizesinin tüm oluşumlarını bulur ve onu değiştirilen alt dizeyle değiştirir.

    StrGetString(<Строка>, <НомерСтроки>) — İşlev, çok satırlı bir dizenin dizesini sayıya göre alır.

    StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — İşlev, arama alt dizesinin kaynak dizedeki oluşum sayısını hesaplar.

    StrSatır Sayısı(<Строка>) — İşlev, çok satırlı bir dizedeki satır sayısını sayar. Çok satırlı bir dizede satırlar yeni satır karakterleriyle ayrılır.

    TReg(<Строка>) — İşlev, dizeyi başlık harfine dönüştürür. Bu, her sözcük için ilk karakterin büyük harfe veya karakter için başlık durumu belirtilmemişse büyük harfe dönüştürüleceği anlamına gelir. Geri kalan karakterler küçük harfe dönüştürülür.

    Dönüşümleri yazın
    Açık veri türü dönüşümü için, dönüşümün gerçekleştiği veri türüyle aynı ada sahip işlevler vardır: String(<Значение>)

    StringFromNumbers= String(Sayı);

    Tüm bu işlevler Sözdizimi Asistanı'nda ayrıntılı olarak anlatılmıştır, Sözdizimi Asistanının acemi bir programcıya nasıl yardımcı olabileceğini makalede anlattım.

    Dize Örnekleri

    Sayıyı dizeye ve geriye dönüştürün.

    Yılın dize gösterimini elde etmek için Format işlevini kullanın.

    Yıl = Format(GeçerliTarih(), "DF=yyyy" ) // Yıl = "2012"

    Bir sayıyı, grup ayırma karakteri (bölünmeyen boşluk) eklemeden dizeye dönüştürmek için, Format işlevini NH=0 parametresiyle uygulamanız gerekir:

    Sayı = 2012 String = Format(Sayı, "NW=0" ); //Dize = "2012"

    Dize Boşluk yok.

    String, 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önemli olacak" Kelime 1 Kelime 2″.

    Ayrıca 1C:Enterprise 8 sistemleri dizelerle çalışmaya yönelik işlevler sağlar. Ana olanları düşünün:

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

    Bir dize girilebilir ve Unicode'daki karakter kodunu bilerek:

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

    Harf= Sembol(1103 ) ; // BEN

    Bir karakterin 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.

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

    TReg(<Строка>) - dizenin tüm karakterlerini 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", "göz"); // 4

    StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) — arama alt dizisinin oluşumunun karakter numarasını bulur; oluşum numarası ilgili parametrede belirtilir. Bu durumda arama parametrede numarası belirtilen karakterden başlar. Başlangıç ​​konumu. Arama dizenin başından veya sonundan itibaren mümkündür. Örneğin:

    Sayı4 Girişi= StrFind( "Savunmacılık", "o" , Arama Yönü. İlk olarak, 1 , 4 ) ; // 7

    StrDeğiştir(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) Kaynak dizede arama alt dizesinin tüm oluşumlarını bulur ve onu değiştirilen alt dizeyle değiştirir.

    StrReplace("Dize", "göz", "" ); // Sayfa

    Boş satır(<Строка>) - dizeyi önemli karakterler açısından kontrol eder. Önemli karakter yoksa veya hiç karakter yoksa değer döndürülür Doğru. Aksi takdirde - Yalan.

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

    StrNumberOccurrences ( "Çalışın, çalışın ve tekrar çalışın", "çalışmak" , "" ) ; // 3

    StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — parametreleri dizeye sayıyla değiştirir. Dize şu biçimde değiştirme işaretçileri içermelidir: "%1..%N". İşaretleyicilerin numaralandırması 1'den başlar. Parametre değeri ise Tanımsız boş dize değiştirilir.

    StrPattern ( "Seçenek 1 = %1, Seçenek 2 = %2", "1" , "2" ) ; // Parametre 1= 1, Parametre 2 = 2

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

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

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

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

    Kısalt(<Строка>) Anlamlı olmayan karakterleri dizedeki ilk anlamlı karakterin soluna doğru keser.

    kısaltma(<Строка>) - dizedeki son önemli karakterin sağındaki önemsiz karakterleri keser.

    Kısalt(<Строка>) - dizedeki ilk anlamlı karakterin solundaki ve dizedeki son anlamlı karakterin sağındaki anlamlı olmayan karakterleri keser.

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

    Diğer özellikler:

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

    StrSatır Sayısı(<Строка>) - çok satırlı bir dizedeki satır sayısını döndürür. Bir satır, önceki satırdan 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 duyarsız bir şekilde karşılaştırır. İşlev bir nesne gibi çalışır Değerleri Karşılaştırma. İadeler:

    • 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

    Bir programlama dilinin temel özellikleri genellikle sayılar ve dizelerle çalışmayı içerir. Genellikle bu özellikler derleyici koduna bağlanır (veya programlama dilinin "temel" sınıfları uygulanır).

    1C'de dizelerle çalışma yetenekleri platformun kendisinde programlanmıştır. Bugün, yerleşik 1C dilindeki programlarda 1C dizeleriyle çalışmanın özelliklerini ele alacağız.

    Satır değeri 1C

    1. En basitiyle başlayalım. Bir değişken oluşturmak ve ona bir dize sabit değeri atamak 1C'de şöyle görünür:

    Değişken = "Merhaba dünya!";

    1C sabit dize değerinde bir tırnak karakteri belirtmek istiyorsanız, onu iki katına çıkarmanız gerekir ""

    Değişken = "Merhaba "dünya""!";

    2. Satır sonu 1C aynı anda iki şekilde belirtilebilir. İlki | sembolünü kullanıyor.

    Değişken = "Merhaba,
    | dünya! ";

    İkincisi, Semboller sistemi numaralandırmasını kullanmaktır. Hem satır sonu 1C'yi hem de TAB gibi diğer yazdırılamayan karakterleri eklemenizi sağlar.

    Değişken = "Merhaba" + Semboller.ps + "barış!";

    3. 1C'deki konfigürasyonlar yalnızca bir dil (Rusça, İngilizce veya diğer) için değil, aynı anda birkaç dil için de geliştirilebilir. Bu durumda, şu anda kullanılan dil 1C penceresinin altında seçilir.

    Dillerin listesi Genel/Diller bölümündeki yapılandırma penceresinde bulunur. Her dilin aşağıdaki gibi kısa bir tanımlayıcısı vardır: tr veya ingilizce.

    Böyle bir konfigürasyon programlanırken 1C hatlarının da çok dilli olabileceği açıktır. Bunu yapmak için, şunu belirterek böyle bir 1C satırı oluşturmak mümkündür; Dil kimliğine göre seçenekler:

    Değişken = "ru=""Merhaba dünya!""; en=""Merhaba dünya! """;

    Bu şekilde oluşturulan 1C satırını her zamanki gibi kullanırsanız, içinde yazılanlar olacaktır. Sistemin bunu iki seçeneğe bölmesi ve istediğiniz seçeneği kullanması için NStr() işlevini kullanmanız gerekir:

    //iki dilli yapılandırmalar için doğru
    Rapor(NStr(Değişken));

    1C hat tipine sahip aksesuarlar

    Gerekli olan dizin / belge 1C'nin alanıdır. 1C dilindeki bir programdaki değişkenden, türünün nitelik için tam olarak belirtilmesi (sayı, dize 1C, vb.) bakımından farklılık gösterir. Sahne malzemelerinin ne olduğunu tazelemeniz gerekiyorsa, adresindeki eğitime göz atın.

    Öznitelik türünü belirtirseniz - satır 1C, o zaman ek olarak parametreleri de belirtmeniz gerekir.

    1C dizeleri sınırsız uzunluktadır (uzunluk = 0 olarak gösterilir) ve karakterlerin tam sayısını gösteren sınırlı uzunluktadır. Sınırsız uzunluktaki 1C dizeleri ayrı bir SQL tablosunda depolanır, dolayısıyla bunların kullanımı sınırlı olanlara göre daha az verimlidir.

    Bu nedenle sınırsız uzunluktaki 1C dizilerinin kullanımının sınırlamaları vardır - bunları her yerde kullanmak mümkün değildir. Örneğin belge numarası, rehber kodu, ölçü olarak mümkün değildir.

    1C hatlarıyla çalışma

    Dizelerle çalışmak için 1C platformunun birkaç yerleşik işlevi vardır.

    • AbbrLP("İnanılmaz ama gerçek!")
      1C dizesindeki fazladan boşlukları kaldırır. Ayrıca herhangi bir türü 1C dizesine (örneğin sayılara) dönüştürmek için de kullanılabilir.
    • Değişken = "Vasya" + Kısalt("artı") + "Olya"; //"Vasya artı Olya" olacak
      Birkaç dize değerinin toplanmasına bir örnek 1C. Sonuç bir satır 1C'dir.
    • Değişken = Aslan("Müzik", 2); // "Mu" olacak
      Değişken = Avg("Müzik", 2, 2); // "ps" olacak
      Değişken = Haklar("Müzik", 2); // "ka" olacak
      1C dizesinden bir alt dize elde etmek için çeşitli seçenekler.
    • Değişken = Bul("Müzik", "ps"); //3 olacak
      1C dizesinde 1. karakterden başlayarak bir alt dize arayın.
    • Değişken = StrLength("Müzik"); //6 olacak
      1C dizesindeki karakter sayısını döndürür.
    • Notify("Merhaba") //1C penceresinin altındaki mesaj kutusunda
      warning("merhaba") //açılır iletişim kutusu
      Status("Merhaba") //sol alttaki durum görüntüleme satırında
      .

    Nesneleri 1C çizgisine getirme

    Bildiğiniz gibi şu anda yapılandırılmış bilgi alışverişinde en popüler format XML'dir. MS Office Word ve Excel'in en son sürümleri bile dosyaları bu formatta kaydeder (sırasıyla docx ve xlsx, uzantıyı zip olarak değiştirin, bir arşivleyicide açın).

    Veri alışverişi için 1C platformu, ana kısmı da XML olan çeşitli seçenekler sunar.

    1. En basit yöntem ShortLP() veya String() işlevini kullanmaktır. Sorgu metninde REPRESENTATION() işlevini kullanabilirsiniz. Eylemlerinin sonucu aynıdır; kullanıcı için herhangi bir 1C nesnesinin dize temsilini oluştururlar.

    Varsayılan dizin için bu onun adı olacaktır. Bir belge için belge adı, numarası ve tarihi.

    2. Herhangi bir 1C nesnesi (kısıtlamalarla) XML'e dönüştürülebilir ve bunun tersi de geçerlidir. Dönüştürme işlemine serileştirme denir.

    ViewStringXml = XMLString(Value); //1C değerinden XML alın
    Value1С = XMLValue(Type("CatalogReference.Nomenclature"),ViewStringXml); //XML stringinden 1C değerini alıyoruz, alınması gereken 1C tipini belirtmelisiniz

    3. 1C platformunun herhangi bir 1C nesnesini bir dizeye dönüştürmenin yerel bir yolu vardır. 1C 7.7 sürümünden taşındı. Bu format diğer programlar tarafından anlaşılmaz, ancak başka bir 1C'yi anlar, bu da onu 1C veritabanları arasında alışveriş yapmak için kullanmayı kolaylaştırır.

    String = ValueInStringInt(Value1S); //1C değerinden 1C dizesini alıyoruz
    ValueToFile("C:\MyFile.txt", Value1C); //başka bir seçenek olarak, 1C değerinden kaydedilmiş bir dize içeren bir dosya alırız
    Value1C = ValueFromStringInt(String); //1C satırından geri dön
    Value1C = ValueFromFile("C:\MyFile.txt"); //dosyadan geri dön

    Formdaki 1C satırlarını düzenleme

    Bir 1C programında 1C dizeleriyle çalışmanın yanı sıra elbette kullanıcının bunları düzenleyebilmesini isterim. Bunun için birkaç olasılık var:

    1. En kolay yol, talep üzerine 1C hattının girişini talep etmektir. Bu yöntem 1C programlamayı öğretirken kullanılır, hayatta çok daha az kullanılır (ancak kullanılır!).

    Değişken = "";
    String = EnterValue(Değişken, "Tam adı girin");

    2. 1C nesnesinin (dizin / belge) ayrıntılarını veya formun ayrıntılarını (bkz.) görüntülemek için en sık giriş alanı kullanılır. Bu, kullanıcının düzenleme alanlarıyla çalışması için 1C'deki en yaygın araçtır.

    3. Giriş alanının özellikleri genişletilebilir (daha fazla ayrıntı için giriş alanının özelliklerine bakın, üzerine sağ tıklayın):

    • Onay Kutusu Çok satırlı düzenleme modu
    • Gelişmiş düzenleme onay kutusu (önceki onay kutusu işaretliyse kullanılabilir)
    • Onay Kutusu Şifre modu (bkz. ).

    4. Giriş alanının tüm olanakları sizin için yeterli değilse yerleşik bir düzenleyici bulunmaktadır. Forma eklemek için Form / Ekle kontrol elemanı menüsündeki metin belgesinin Alanını eklemeniz gerekir. Özelliklerinde, çalışma modunu (Uzantı özelliği) belirleyebilirsiniz.

    Bir metin belgesi alanı doğrudan verilere bağlanamaz. OnOpening() formunun olay işleyicisine aşağıdaki işlevi yazmak gerekir (bkz. ):

    FormElements.ElementNameTextDocumentField.SetText(StringValue); //burada ValueString, örneğin öznitelikten alınan metindir

    Kaydetme işleyicisinde (örneğin, Kaydet düğmesinde) bir kaydetme ekleyin:

    ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueString burada değeri kaydettiğimiz sahnedir

    5. 1C sürüm 8.2.11'de, yönetilen formlarda, 1C satırını (Biçimlendirilmiş Belge alanı) temsil etme konusunda yeni bir olasılık vardır.


    Bir metin belgesinin alanına benzer şekilde, programı kullanarak metni açarken ayarlamanız ve metni kaydederken yazmanız gerekir.

    • Formunu yaptığımız 1C nesnesine (referans kitabı, belge, işleme vb.) - Değer Depolama türüne sahip bir nitelik ekleyin
    • OnReadOnServer() işlevinde, özelliğin metnini ayarlayın

      //burada gerekli olan 1C nesnesinin eklenen özelliğidir
      //burada FormattedDocument düzenleme formundaki alanın adıdır
      &Sunucuda

      FormattedDocument = CurrentObject.Attributes.Get();
      Prosedürü Sonlandır

    • BeforeWriteOnServer() işlevinde veya düğmeye basarak alandaki metni yazın

      &Sunucuda
      Prosedür OnReadingOnServer(CurrentObject)
      CurrentObject.Attributes = NewValueStorage(FormattedDocument);
      Prosedürü Sonlandır

    String türü tüm programlama dillerinde bulunur. İlkeldir ve 1C'de onunla çalışmak için birçok işlev vardır. Bu makalede, örnekler kullanarak 1C 8.3 ve 8.2'deki dize türleriyle çalışmanın çeşitli yollarını ayrıntılı olarak ele alacağız.

    Astar

    Herhangi bir türdeki değişkeni dizeye dönüştürmek için aynı adı taşıyan "String ()" işlevi vardır. Giriş parametresi, dize temsili elde edilecek olan değişkenin kendisi olacaktır.

    String(False) // "Hayır" değerini döndürür
    String(12345) // "12 345" değerini döndürür
    String(GeçerliTarih()) //"21.07.2017 11:55:36"

    Yalnızca ilkel türleri değil aynı zamanda dizin ve belge öğeleri gibi diğer türleri de dizeye dönüştürmek mümkündür.

    Kısaltılmış LP, Kısaltılmış L, Kısaltılmış P

    Bu işlevlerin giriş parametreleri dize tipi bir değişkendir. İşlevler önemsiz karakterleri (boşluklar, satırbaşları vb.) kaldırır: sırasıyla sol ve sağ taraftan, yalnızca sol taraftan ve yalnızca sağdan.

    abbrl("Her iki taraftaki boşluklar kaldırılacak") // "Her iki taraftaki boşluklar kaldırılacak"
    abbr("Her iki taraftaki boşluklar kaldırılacak") // "Soldaki boşluklar kaldırılacak"
    abbr(" Her iki taraftaki boşluklar kaldırılacak ") // "Sağdaki boşluklar kaldırılacak"

    Aslan, Sağ, Orta

    Bu işlevler bir dizenin bir kısmını kesmenize olanak tanır. Lion() işlevi, dizenin belirtilen uzunluktaki sol tarafındaki kısmını döndürür. "Right()" işlevi de benzerdir ancak kırpma sağ tarafta yapılır. "Wed()" işlevi, dizenin seçileceği karakter numarasını ve uzunluğunu belirtmenize olanak tanır.

    Lion("String değişkeni", 4) // "Stro" değerini döndürür
    Right("Dize değişkeni", 7) // "değişken" değerini döndürür
    avg("Dize değişkeni", 2, 5)// "troco" değerini döndürür

    StrLength

    İşlev, bir dize değişkeninde bulunan karakter sayısını belirler.

    StrLength("Word") // uygulamanın sonucu 5 sayısı olacaktır

    Bulmak

    İşlev, bir dize değişkeninde bir dizenin bir bölümünü aramayı mümkün kılar. Dönüş değeri, bulunan dizenin başlangıcının konumunu belirten bir sayı olacaktır. Hiçbir eşleşme bulunamazsa sıfır döndürülür.

    Aramanın büyük/küçük harfe duyarlı olduğunu unutmayın. Orijinal dizede arama alt dizesinin birden fazla oluşumu varsa, işlev ilk geçtiği yerin başlangıcını döndürür.

    Find("bir, iki, bir, iki, üç", "iki") // fonksiyon 6 sayısını döndürecek

    Boş satır

    Bu işlevi kullanmak, bir dizenin boş olup olmadığını belirlemenizi sağlar. Boşluk, satır başı ve diğerleri gibi önemsiz karakterler dikkate alınmaz.

    EmptyString("Vasily Ivanovich Pupkin") // fonksiyon False değerini döndürecek
    EmptyString(" ") // fonksiyon True değerini döndürecek

    VReg, NReg, TReg

    Bu işlevler dize değişkenlerini karşılaştırırken ve dönüştürürken çok kullanışlıdır. "Vreg()" orijinal dizeyi büyük harfle, "HReg()" küçük harfle döndürecek ve "TReg()" onu her bir kelimenin ilk karakteri büyük olacak ve sonraki tüm karakterler küçük harf olacak şekilde biçimlendirecektir.

    VReg("GENEL MÜDÜR") // dönüş değeri - "GENEL MÜDÜR"
    HReg("GENEL MÜDÜR") // dönüş değeri - "CEO"
    TReg("GENEL MÜDÜR") // dönüş değeri - "Genel Müdür"

    StrDeğiştir

    Bu işlev, metin düzenleyicilerdeki değiştirme işlevine benzer. Dize değişkenlerinde bir karakteri veya karakter kümesini başka bir karakterle değiştirmenize olanak tanır.

    StrReplace("kırmızı, beyaz, sarı", ",", ";") // "kırmızı;" değerini döndürür beyaz; sarı"

    StrNumberRows

    İşlev, bir metin değişkeninde satır başıyla ayrılan satır sayısını belirlemenize olanak tanır.

    Aşağıdaki örnekteki döngü üç daireden geçecektir çünkü StrNumberRows işlevi 3 değerini döndürecektir:

    ind \u003d 1 için StrNumber of Lines ("Satır1" + Semboller.PS + "String2" + Semboller.PS + "Satır3") Döngüsü
    <тело цикла>
    EndCycle;

    StrGetString

    Bu işlev, çok satırlı metinlerle öncekiyle aynı şekilde çalışır. Bir metin değişkeninden belirli bir dize almanızı sağlar.

    StrGetString("Dize1" + Semboller.PS + "Dize2" + Semboller.PS + "Dize3", 2) // "Satır2"yi döndürür

    StrNumberOluşumları

    İşlev, aranan dizede bir karakterin veya alt dizenin oluşum sayısını sayar.

    StrNumberInstallations("a;b;c;d; ", ";") // fonksiyon 4 sayısını döndürecek

    Sembol ve SembolKodu

    Bu işlevler, bir karakteri Unicode koduna göre almanıza ve bu kodu karakterin kendisine göre belirlemenize olanak tanır.

    SembolKodu("A") // fonksiyon 1 040 sayısını döndürecektir
    SembolKodu(1040) // fonksiyon "A" değerini döndürecek

    Dizelerle çalışırken sık yapılan görevler

    Dize Birleştirme

    Birden fazla dizeyi birleştirmek (birleştirmek) için sadece toplama operatörünü kullanın.

    "Satır 1" + "Satır 2" //iki satırın eklenmesinin sonucu "Satır 1 Satır 2" olacaktır

    Tür dönüşümü

    Bir türü bir dizeye dönüştürmek için, örneğin bir sözlük öğesine bir başvuruyu, bir sayıyı vb. "String ()" işlevini kullanmak yeterlidir. "ShortLP()" gibi işlevler de değişkenleri bir dizeye dönüştürür, ancak hemen önemsiz karakterleri keser.

    String(1000) // "1000" değerini döndürecek

    Lütfen bir sayıyı dizeye dönüştürürken programın binlik rakamını ayıran bir boşluk eklediğini unutmayın. Bunu önlemek için aşağıdaki yapıları kullanabilirsiniz:

    StrReplace(String(1000),Characters.NPP,"") // "1000" değerini döndürür

    String(Format(1000,"CH=")) // "1000" değerini döndürecektir

    Bir dizedeki alıntılar

    Çoğu zaman bir dize değişkenine tırnak işareti koyma ihtiyacıyla uğraşmak zorunda kalacaksınız. Yapılandırıcıda yazılmış bir istek metni veya yalnızca bir değişken olabilir. Bu sorunu çözmek için iki alıntı karakteri ayarlamanız yeterlidir.

    Header = String("Horns and Hooves LLC biziz!") // şunu döndürür: "Roga and Hooves LLC biziz!"

    Çok satırlı, satır sonu

    Çok satırlı bir metin oluşturmak için satır sonu karakterlerini (Symbols.PS) eklemeniz yeterlidir.

    MultilineText = "İlk Satır" + Karakterler.PS + "İkinci Satır"

    Boşluklar nasıl kaldırılır

    Sağdaki veya soldaki boşlukları kaldırmak için "Stretch()" fonksiyonunu kullanabilirsiniz ("Scrpt()" ve "ScreenP()"nin yanı sıra):

    StringWithoutSpaces = ShortLP(" Birçok harf ") // fonksiyon "Birçok harf" değerini döndürecektir

    Bir sayıyı dizeye dönüştürdükten sonra bölünemeyen boşlukları kaldırmanız gerekiyorsa, aşağıdaki yapıyı kullanın:

    StringWithoutSpaces = StrReplace(String(99999),Characters.NPP,"") // "99999" değerini döndürür

    Ayrıca programcılar genellikle bir metin değişkenindeki tüm boşlukları kaldırmanıza veya başka bir karakterle değiştirmenize olanak tanıyan aşağıdaki yapıyı kullanır:

    StringWithoutSpaces = StrReplace(" merhaba", " " ,"") // "merhaba" değerini döndürür

    Dizeleri birbirleriyle karşılaştırma

    Terimleri her zamanki eşittir işaretiyle karşılaştırabilirsiniz. Karşılaştırma büyük/küçük harfe duyarlıdır.

    "merhaba" = "merhaba" // false değerini döndürecektir
    "Merhaba" = "Merhaba" // True değerini döndürecektir
    "Merhaba" = "Güle güle" // False değerini döndürecektir

    Aynanın Notları

    18.08.2014 Dizelerle çalışmak için yeni işlevler

    8.3.6.1977 sürümünde uygulandı.

    Dizelerle çalışmaya yönelik işlev kümesini genişlettik. Bunu size dize verilerini ayrıştırmaya yönelik daha gelişmiş araçlar sunmak için yaptık. Yeni işlevler, metin analizinin teknolojik görevlerinde kullanışlı ve faydalı olacaktır. Biçimlendirilmiş formdaki verileri içeren metnin ayrıştırılmasıyla ilgili görevlerde. Bu, ekipmandan alınan bazı dosyaların analizi veya örneğin bir teknolojik günlüğün analizi olabilir.

    Yeni işlevlerin gerçekleştirdiği tüm eylemleri daha önce gerçekleştirebiliyordunuz. Gömülü bir dilde yazılmış az çok karmaşık algoritmaların yardımıyla. Bu nedenle, yeni işlevler size temelde yeni fırsatlar sunmaz. Ancak kod miktarını azaltmanıza, kodu daha basit ve anlaşılır hale getirmenize olanak tanırlar. Ek olarak, eylemlerin yürütülmesini hızlandırmanıza da olanak tanır. Çünkü platformda uygulanan işlevler elbette yerleşik dilde yazılmış benzer bir algoritmadan daha hızlı çalışıyor.

    Biçim işlevi StrTemplate()

    Bu işlev, parametreleri bir dizeye dönüştürür. Böyle bir dönüşüme duyulan ihtiyaç, örneğin uyarı mesajları görüntülenirken sıklıkla ortaya çıkar. Bu işlevin sözdizimi aşağıdaki gibidir:

    StrTemplate(<Шаблон>, <Значение1-Значение10>)

    <Шаблон>parametre gösterimlerinin değiştirileceği dizedir.

    <Значение1> , ... <Значение10>- bunlar, gösterimleri dizede değiştirilmesi gereken parametrelerdir (en fazla - on).

    Değiştirmeyi gerçekleştirmek istediğiniz şablonda belirli bir yeri belirtmek için %1, ... %10 biçimindeki işaretçileri kullanmanız gerekir. Şablonda yer alan işaretçilerin sayısı ile değerleri içeren parametrelerin sayısı eşleşmelidir.

    Örneğin, böyle bir operatörün yürütülmesinin sonucu:

    bir satır olacak:

    2. satırda veri hatası (Tarih türü gerektirir)

    Dize İşlev StrCompare()

    Bu işlev iki dizeyi büyük/küçük harfe duyarsız olarak karşılaştırır. Örneğin şöyle:

    Aynı eylemi nesneyi kullanmadan önce de gerçekleştirebilirsiniz. Değerleri Karşılaştırma:

    Ancak yeni işlevi kullanmak daha basit görünüyor. Ve bunun yanı sıra, bir nesneden farklı olarak bir işlev Değerleri Karşılaştırma, hem ince istemcide hem de web istemcisinde çalışır.

    Dize İşlevleri StrBeginsC(), StrEndsTo()

    Bu işlevler, bir dizenin belirli bir alt dizeyle başlayıp başlamadığını veya bir dizenin belirli bir alt dizeyle bitip bitmediğini belirler. Bu işlevlerin algoritmasının yerleşik bir dilde uygulanması zor değildir, ancak bunların varlığı daha temiz ve anlaşılır kod yazmanıza olanak tanır. Ve daha hızlı çalışırlar.

    Örneğin, bunları operatörde kullanmak uygundur Eğer:

    StrSplit(), StrJoin() dizeleriyle çalışmaya yönelik işlevler

    Bu işlevler, dizeyi belirtilen sınırlayıcıya göre parçalara böler. Veya tam tersi, seçilen ayırıcıyı aralarına yerleştirerek birkaç satırı tek bir satırda birleştirirler. Teknolojik bir günlük olan günlükleri oluşturmak veya analiz etmek için uygundurlar. Örneğin, teknolojik bir günlük girişini daha ileri analiz için uygun parçalara kolayca ayırabilirsiniz:

    Dizelerle çalışma işlevi StrFind()

    Eski fonksiyon yerine Bulmak() ek özelliklere sahip yeni bir özelliği hayata geçirdik:

    • Farklı yönlerde arama yapın (baştan sona);
    • Belirtilen konumdan arama yapın;
    • Belirtilen numaraya (ikinci, üçüncü vb.) sahip bir oluşumu arayın.

    Aslında eski işlevin yeteneklerini kopyalıyor. Bu, eski sürümlerde derlenen modüllerle uyumluluğu korumak için yapılır. eski fonksiyon Bulmak() bir daha kullanılmaması tavsiye edilir.

    Aşağıda yeni arama yeteneklerinin kullanıldığı bir örnek verilmiştir. Geriye doğru arama yapmak, URL'deki bir dosyanın tam adı gibi resmileştirilmiş bir dizenin son parçasına ihtiyaç duyduğunuzda kullanışlıdır. Ve belirli bir konumdan arama yapmak, dizenin tamamında değil, bilinen bir parçada arama yapmanızın gerektiği durumlarda yardımcı olur.