Dizelerle çalışmak için yeni işlevler. Dizelerle çalışmak için yeni işlevler 1c dize işlevleri

  • 17.03.2024

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 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ı - 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ı. Çok satırlı metin giriş modunu tanımlar: Doğru—satır ayırıcılarla çok satırlı metin girişi; 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. İlk pozisyon. 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(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) – kaynak dizgede arama alt dizgisinin tüm oluşumlarını bulur ve onu değiştirilen alt dizgeyle değiştirir.

StrReplace ("Dize", "oka", ""); // 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(<Строка>, <ПодстрокаПоиска>) – Arama alt dizesinin kaynak dizede tekrarlanma sayısını hesaplar.

StrNumberOccurrences ( "Çalışın, çalışın ve tekrar çalışın", "ç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ımsız 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:

Bir 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(<Строка>) Anlamlı olmayan karakterleri dizedeki ilk önemli karakterin soluna kırpar.

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ı. İ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

Aynanın İçinden Notlar

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

8.3.6.1977 sürümünde uygulandı.

Dizelerle çalışmak üzere tasarlanmış işlevler 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ş biçimde veri içeren metnin ayrıştırılmasıyla ilgili görevlerde. Bu, ekipmandan alınan bazı dosyaların analizi veya örneğin teknolojik bir günlüğün analizi olabilir.

Daha önce yeni işlevler gerçekleştiren tüm eylemleri gerçekleştirebiliyordunuz. Yerleşik bir dilde yazılmış az çok karmaşık algoritmalar kullanmak. Bu nedenle, yeni işlevler size temelde yeni yetenekler sağlamaz. Ancak kod miktarını azaltmanıza ve 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 bir dilde yazılmış benzer bir algoritmadan daha hızlı çalışıyor.

Biçimlendirme 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>)

<Шаблон>- bu, parametre gösterimlerini değiştirmeniz gereken dizedir.

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

Değiştirme işlemini gerçekleştirmek istediğiniz şablonda belirli bir yeri belirtmek için %1, ... %10 gibi işaretçiler 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ü gerekli)

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

Bu işlev, iki dizeyi büyük/küçük harfe duyarlı olmayan bir şekilde karşılaştırır. Örneğin şöyle:

Aynı eylemi daha önce nesneyi kullanarak gerçekleştirebilirsiniz. Değerlerin Karşılaştırılması:

Ancak yeni özelliği kullanmak daha kolay görünüyor. Ve bunun yanı sıra, bir nesnenin aksine bir işlev Değerlerin Karşılaştırılması, hem ince istemcide hem de web istemcisinde çalışır.

StrStartsWith(), StrEndsAt() dizeleriyle çalışmaya yönelik işlevler

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şlevlere yönelik algoritmanın gömülü 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:

StrDivide(), StrConnect() dizeleriyle çalışmaya yönelik işlevler

Bu işlevler, belirtilen sınırlayıcıyı kullanarak bir dizeyi parçalara ayırır. Veya tam tersi, seçilen ayırıcıyı aralarına yerleştirerek birkaç satırı tek bir satırda birleştirirler. Günlükleri ve teknolojik 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 ayrıştırabilirsiniz:

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

Eski fonksiyon yerine Bulmak() Ek yeteneklere sahip yeni bir işlevi hayata geçirdik:

  • Farklı yönlerde arama yapın (baştan sona);
  • Belirtilen konumdan arama yapın;
  • Belirtilen sayıda (ikinci, üçüncü vb.) 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 işlev Bulmak() Bir daha kullanılmaması tavsiye edilir.

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

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

1C'de dizelerle çalışma yeteneği platformun kendisinde programlanmıştır. Bugün yerleşik 1C dilindeki programlarda 1C dizeleriyle çalışmanın özelliklerine bakacağız.

Satır değeri 1C

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

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

Sabit bir 1C dize değerinde bir tırnak karakteri belirtmeniz gerekiyorsa, onu ikiye katlamanı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 1C satır sonlarını hem de TAB gibi diğer yazdırılmayan karakterleri eklemenizi sağlar.

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

3. 1C'deki konfigürasyonlar yalnızca bir dil için (Rusça, İngilizce veya başka bir) 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: ru 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 tanımlayıcıya göre seçenekler:

Variable = "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 ayırması ve istediğiniz seçeneği kullanması için НStr() işlevini kullanmanız gerekir:

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

1C hat tipine sahip aksesuarlar

Nitelik, 1C dizinindeki/belgesindeki bir alandır. 1C dilindeki bir programdaki değişkenden, öznitelik için türünün tam olarak belirtilmesi (sayı, 1C dizesi vb.) bakımından farklılık gösterir. Bir pervanenin ne olduğuna dair hafızanızı tazelemeniz gerekiyorsa aşağıdaki dersi izleyin.

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

1C satırları sınırsız uzunlukta (uzunluk = 0 olarak gösterilir) ve sınırlı uzunlukta gelir; bu da karakterlerin tam sayısını gösterir. Sınırsız uzunluktaki 1C satırları 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ı, referans kodu veya ölçü olarak kullanılmasına izin verilmez.

1C dizeleriyle çalışma

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

  • AbbrLP (“İnanılmaz ama gerçek!”)
    1C satırındaki fazladan boşlukları kaldırır. Ayrıca herhangi bir türü 1C dizesine (örneğin sayılar) dönüştürmek için de kullanılabilir.
  • Değişken = "Vasya" + AbbrLP(" artı") + "Olya"; //"Vasya artı Olya" olacak
    Birkaç 1C dize değerinin toplanmasına bir örnek. Sonuç bir satır 1C olacaktır.
  • Değişken = Lev("Müzik", 2); //"Mu" olacak
    Değişken = Orta("Müzik", 2, 2); //"tehdit" 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", "zy"); //3 tane olacak
    1C dizesinde 1. karakterden başlayarak bir alt dize arayın.
  • Değişken = StrLength("Müzik"); //6 tane olacak
    1C satırındaki karakter sayısını döndürür.
  • Report("Merhaba") //1C penceresinin altındaki mesaj penceresinde
    Alert("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 kullanılan 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ştirir, bir arşivleyicide açar).

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

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

Bir dizin için varsayılan olarak adı bu olacaktır. Bir belge için – belgenin 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.

StringViewXml = XMLString(Value); //1C değerinden XML alın
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //XML stringinden 1C değerini alıyoruz, alınması gereken 1C tipini belirtmelisiniz

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

Satır = ValueInRowInt(Value1C); //1C değerinden 1C dizesini alıyoruz
ValueVFile("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 = ValueFile("C:\MyFile.txt"); //dosyadan geri dön

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

1C dilindeki bir programda 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 (ama kullanılır!).

Değişken = "";
Satır = EnterValue(Değişken, "Tam Adı Girin");

2. Bir 1C nesnesinin (dizin/belge) ayrıntılarını veya form ayrıntılarını (bkz.) görüntülemek için çoğunlukla bir 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 yetenekleri genişletilebilir (giriş alanının özelliklerine bakın, sağ tıklayın, daha fazla ayrıntı):

  • 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 yetenekleri sizin için yeterli değilse yerleşik bir düzenleyici bulunmaktadır. Forma eklemek için Form/Ekle Denetimi menüsüne Metin Belgesi Alanı eklemeniz gerekir. Özelliklerinde çalışma modunu (Uzantı özelliği) belirleyebilirsiniz.

Bir metin belgesi alanı doğrudan verilerle ilişkilendirilemez. Formun OnOpen() olay işleyicisine bir işlev yazmak gerekir (bkz.):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //burada ValueString, örneğin nitelikten alınan metindir

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

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Value Buradaki satır değeri kaydettiğimiz özelliktir

5. 1C sürüm 8.2.11'de, yönetilen formlarda, 1C satırını temsil etmek için yeni bir seçenek ortaya çıktı - Biçimlendirilmiş Belge alanı.


Bir metin belgesinin alanına benzer şekilde, onu açarken ayarlamanız ve programı kullanarak kendiniz kaydederken not etmeniz gerekir.

  • Formunu oluşturduğumuz 1C nesnesine (dizin, belge, işleme vb.) - Değer Depolama türüne sahip bir nitelik ekleyin
  • OnReadOnServer() işlevinde, özelliğin metnini ayarladık

    //burada Nitelik, 1C nesnesinin eklenen niteliğidir
    //burada FormattedDocument formda düzenlenecek alanın adıdır
    &Sunucuda

    FormattedDocument = CurrentObject.Attributes.Get();
    Prosedürün Sonu

  • BeforeWritingOnServer() fonksiyonunda veya butonunu kullanarak alandaki metni yazacağız.

    &Sunucuda
    OnServer(CurrentObject) Okunduğunda Prosedür
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Prosedürün Sonu

Yerleşik dil 1C'deki 1C 8.3'teki satırlar, ilkel bir türün değerlerini temsil eder Astar. Bu türdeki değerler, isteğe bağlı uzunlukta bir Unicode dizesi içerir. Dize türü değişkenler tırnak içine alınmış bir karakter kümesidir.

Örnek 1. Metin içeren bir dize değişkeni oluşturalım.

StringVariable = "Merhaba dünya!";

1'lerde dizelerle çalışma işlevleri 8.3

Bu bölüm, 1c'deki satırları değiştirmenize veya bunların içerdiği bilgileri analiz etmenize olanak tanıyan ana işlevleri sağlayacaktır.

StrLength

StrLength(<Строка>) . Parametre olarak iletilen dizede bulunan karakter sayısını döndürür.

Örnek 2. “Merhaba dünya!” satırındaki karakter sayısını sayalım.

String = "Merhaba dünya!"; NumberofCharacters = StrLength(String); Rapor(SayıKarakterler);

Bu kodu çalıştırmanın sonucu, satırdaki karakter sayısının görüntülenmesi olacaktır: 11.

KısaltL

KısaltL(<Строка>) . Anlamlı olmayan karakterleri dizedeki ilk önemli karakterin soluna kırpar.
Küçük karakterler:

  • uzay;
  • kırılmaz alan;
  • tablolama;
  • satırbaşı;
  • satır çevirisi;
  • formun çevirisi (sayfa).

Örnek 3. "Dünya!" satırının sol tarafındaki tüm boşlukları kaldırın. ve buna “Merhaba” satırını ekleyin.

String = Kısaltma("dünya!"); String = "Merhaba"+Dize; Rapor(Dize);

Bu kodu çalıştırmanın sonucu ekranda “Merhaba dünya!” satırının görüntülenmesi olacaktır.

Kısaltılmış

Kısaltma(<Строка>) . Anlamlı olmayan karakterleri dizedeki ilk önemli karakterin sağına doğru kırpar.

Örnek 4. "Merhaba" ve "barış!" Satırlarından oluşan form "Merhaba dünya!"

Satır = Kısaltma("Merhaba ")+" "+ Kısaltma(" ​​dünya!"); Rapor(Dize);

Kısalt LP

KısaltLP(<Строка>) . Anlamlı olmayan karakterleri dizedeki ilk anlamlı karakterin sağından kırpar ve ayrıca anlamlı olmayan karakterleri dizedeki ilk anlamlı karakterin solundan kırpar. Bu işlev, daha evrensel olduğu için önceki ikisinden daha sık kullanılır.

Örnek 5. Karşı tarafın adının sol ve sağındaki önemsiz karakterleri kaldırın.

Karşı Taraf = Dizinler.Karşı Taraflar.Ayrıntılara Göre Bul("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

bir aslan

Bir aslan(<Строка>, <ЧислоСимволов>) . Dizenin ilk karakterlerini alır, karakter sayısı parametrede belirtilir Karakter sayısı.

Örnek 6. Yapıya izin verin Çalışançalışanın adını, soyadını ve soyadını içerir. Soyadı ve baş harfleri içeren bir dize alın.

NameInitial = Lev(Çalışan.Adı, 1); Patronimik Başlangıç ​​= Leo(Çalışan. Patronimik, 1); FullName = Çalışan.Soyadı + " " + Adının Baş Harfi + "." + Orta Harf + ".";

Sağ

Sağ(<Строка>, <ЧислоСимволов>) . Bir dizenin son karakterlerini, parametrede belirtilen karakter sayısını alır Karakter sayısı. Belirtilen karakter sayısı dizenin uzunluğunu aşarsa dizenin tamamı döndürülür.

Örnek 7. Bir string değişkeninin sonuna “yyyyaagg” formatında bir tarih yazalım, tarihi içeren bir string elde edelim ve onu yazıya dönüştürelim. tarih.

String = "Geçerli tarih: 20170910"; StringDate = Haklar(String, 8); Tarih = Tarih(StringDate);

Çarşamba

Çarşamba(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Parametre olarak iletilen dizeden bir alt dize alır Astar parametrede numarası belirtilen karakterden başlayarak İlk Numara ve parametreye aktarılan uzunluk Karakter sayısı. Bir satırdaki karakterlerin numaralandırması 1'den başlar. Parametrede ise İlk Numara sıfırdan küçük veya sıfıra eşit bir değer belirtilirse parametre 1 değerini alır. Karakter sayısı belirtilmezse satırın sonuna kadar olan karakterler seçilir.

Örnek 8. Dokuzuncu pozisyondan başlayan string değişkeni bölge kodunu içersin, onu alıp ayrı bir satıra yazmalısınız.

String = "Bölge: 99 Moskova"; Bölge = Ort(Dize, 9, 2);

Sayfa Bul

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Bir dizede belirtilen bir alt dizeyi arar ve bulunan alt dizenin ilk karakterinin konum numarasını döndürür. Bu fonksiyonun parametrelerine bakalım:

  • Astar. Kaynak dizesi;
  • Alt Dizeyi Ara. Arama alt dizesi;
  • Arama Yönü. Bir dizede bir alt dizenin aranacağı yönü belirtir. Değer alabilir:
    • Arama Yönü.Başlangıçtan itibaren;
    • Arama.Bitiş Yönü;
  • İlk pozisyon. Aramanın başladığı dizedeki konumu belirtir;
  • SayıOluşumlar. Kaynak dizede aranan alt dizenin oluşum numarasını belirtir.

Örnek 9. “Merhaba dünya!” "Ve" karakterinin son geçtiği konumu belirleyin.

PositionNumber = StrFind("Merhaba dünya!", "ve", Arama Yönü.End); Rapor(KonumNumarası);

Bu kodu çalıştırmanın sonucu, “ve” sembolünün en son geçtiği sayıyı görüntülemek olacaktır: 9.

VReg

VReg(<Строка>) . 1s8'de belirtilen dizedeki tüm karakterleri büyük harfe dönüştürür.

Örnek 10: "Merhaba dünya!" dizesini dönüştürün. büyük harfe.

StringVreg = VReg("Merhaba Dünya!"); Rapor(StringVreg);

Bu kodun çalıştırılmasının sonucunda “MERHABA DÜNYA!” satırı görüntülenecektir.

NReg

NReg(<Строка>) . Belirtilen dizenin 1'lerdeki 8'deki tüm karakterlerini küçük harfe dönüştürür.

Örnek 11: "MERHABA DÜNYA!" dizesini dönüştürün. küçük harfe.

StringNreg = NReg("MERHABA DÜNYA!"); Rapor(StringVreg);

Bu kodu çalıştırmanın sonucunda “merhaba dünya!” satırı görüntülenecektir.

Treg

TReg(<Строка>) . Bir dizeyi şu şekilde dönüştürür: Her kelimenin ilk karakteri büyük harfe, kelimenin geri kalan karakterleri küçük harfe dönüştürülür.

Örnek 12: “Merhaba dünya!” satırındaki kelimelerin ilk harflerini büyük yapın.

StringTreg = TReg("Merhaba Dünya!"); Rapor(StringTreg);

Bu kodu çalıştırmanın sonucunda “Merhaba Dünya!” satırı görüntülenecektir.

Sembol

Sembol(<КодСимвола>) . Bir karakteri Unicod koduna göre alır.

Örnek 13. “Merhaba Dünya!” satırına sol ve sağı ekleyin. sembol ★

StringWithStars = Sembol("9733")+"Merhaba Dünya!"+Symbol("9733"); Rapor(StringWithStars);

Bu kodu çalıştırmanın sonucunda “★Merhaba Dünya!★” satırı görüntülenecektir.

Sembol Kodu

SembolKodu(<Строка>, <НомерСимвола>) . İkinci parametrede belirtilen konumda bulunan, birinci parametrede belirtilen dizeden Unicode karakter kodunu alır.

Örnek 14. “Merhaba Dünya!” Satırındaki son karakterin kodunu bulun.

String = "Merhaba Dünya!"; CharacterCode = CharacterCode(String, StrLength(String)); Bildir(KarakterKodu);

Bu kodu çalıştırmanın sonucu, “!” sembol kodunun görüntülenmesi olacaktır. - 33.

Boş satır

Boş satır(<Строка>) . Dizenin yalnızca önemsiz karakterlerden oluşup oluşmadığını, yani boş olup olmadığını kontrol eder.

Örnek 15. Üç boşluktan oluşan bir dizenin boş olup olmadığını kontrol edin.

Boş = EmptyString(" "); Rapor(Boş);

Bu kodu çalıştırmanın sonucu, "Evet" kelimesinin (mantıksal bir değerin dize ifadesi) görüntülenmesi olacaktır. Doğru).

SayfaDeğiştir

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

Örnek 16. “Merhaba Dünya!” “Barış” sözcüğünü “Arkadaşlar” sözcüğüyle değiştirin.

String = StrReplace("Merhaba Dünya!", "Dünya", "Arkadaşlar"); Rapor(Dize);

Bu kodu çalıştırmanın sonucunda “Merhaba Arkadaşlar!” satırı görüntülenecektir.

StrNumberLines

StrNumberRow(<Строка>) . Çok satırlı bir dizedeki satır sayısını saymanızı sağlar. 1s 8'de yeni bir satıra gitmek için simgesini kullanın. PS(yeni satır karakteri).

Örnek 17. Metindeki satır sayısını belirleyin:
"İlk satır
İkinci çizgi
Üçüncü satır"

Number = StrNumberString("İlk satır"+Characters.PS +"İkinci satır"+Symbols.PS +"Üçüncü satır"); Numarayı bildir);

Bu kodu çalıştırmanın sonucu, metindeki satır sayısının görüntülenmesi olacaktır: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Çok satırlı bir dizedeki bir satırı numarasına göre alır. Satır numaralandırması 1'den başlar.

Örnek 18. Metindeki son satırı alın:
"İlk satır
İkinci çizgi
Üçüncü satır"

Metin = "İlk satır" + Semboller. PS + "İkinci satır" + Semboller. PS + "Üçüncü satır"; LastRow = StrGetRow(Text, StrNumberLines(Text)); Rapor(SonSatır);

Bu kodu çalıştırmanın sonucu “Üçüncü Satır” satırının görüntülenmesi olacaktır.

Sayfa NumarasıOluşum Sayısı

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Belirtilen alt dizenin bir dizedeki oluşum sayısını döndürür. İşlev büyük/küçük harfe duyarlıdır.

Örnek 19. “1s 8.3 ve 8.2'deki satırlar” satırında büyük/küçük harfe bakılmaksızın “c” harfinin kaç kez geçtiğini belirleyin.

Satır = "1s 8.3 ve 8.2'deki satırlar"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Rapor(Oluşum Sayısı);

Bu kodu çalıştırmanın sonucu, oluşum sayısının görüntülenmesi olacaktır: 2.

PageStartsWith

StrStartsWith(<Строка>, <СтрокаПоиска>) . İlk parametrede iletilen dizenin ikinci parametredeki dizeyle başlayıp başlamadığını kontrol eder.

Örnek 20. Seçilen karşı tarafın TIN'sinin 1 rakamıyla başlayıp başlamadığını belirleyin. Değişkeni girin Karşı taraf Karşı taraflar.

TIN = Karşı Taraf.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Birimlerle Başlıyor Then //Kodunuz EndIf;

Sayfa Bitiş Tarihi

StrEndsWith(<Строка>, <СтрокаПоиска>) . İlk parametrede iletilen dizenin ikinci parametredeki dizeyle bitip bitmediğini kontrol eder.

Örnek 21. Seçilen karşı tarafın TIN'sinin 2 rakamıyla bitip bitmediğini belirleyin. Değişkeni girin Karşı taraf bir dizin öğesine referans saklanır Karşı taraflar.

TIN = Karşı Taraf.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Kodunuz EndIf;

Sayfa Bölünmesi

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Belirtilen sınırlayıcı karakterleri kullanarak bir dizeyi parçalara böler ve elde edilen dizeleri bir diziye yazar. İlk parametre kaynak dizeyi saklar, ikincisi sınırlayıcıyı içeren dizeyi içerir ve üçüncüsü diziye boş dizelerin yazılıp yazılmayacağını gösterir (varsayılan olarak) Doğru).

Örnek 22. “;” sembolüyle ayrılmış sayılar içeren bir dizimiz olsun, dizeden bir sayı dizisi elde edelim.

Dize = "1; 2; 3"; Array = StrDivide(String, ";"); Sayım için = 0 Array.Quantity()'ye göre - 1 Döngü Denemesi Array[Count] = Number(AbbrLP(Array[Count])); İstisna Dizisi[Sch] = 0; EndAttemptsEndCycle;

Uygulama sonucunda 1'den 3'e kadar sayıların yer aldığı bir dizi elde edilecektir.

Sayfa Bağlantısı

StrConnect(<Строки>, <Разделитель>) . Dize dizisini, ilk parametreden, ikinci parametrede belirtilen sınırlayıcıyla ayrılmış dizinin tüm öğelerini içeren bir dizeye dönüştürür.

Örnek 23. Önceki örnekteki sayı dizisini kullanarak orijinal dizeyi alın.

Hesap İçin = 0 By Array.Quantity() - 1 Cycle Array[Act] = String(Array[Act]); EndCycle; Satır = StrConnect(Array, "; ");

1C sorgularında dizelerle çalışmak için birkaç mekanizma vardır. İlk olarak satırlar eklenebilir. İkinci olarak, bir dizeden bir alt dize alabilirsiniz. Üçüncüsü, dizeler, desene göre de dahil olmak üzere karşılaştırılabilir. Muhtemelen dizelerle yapılabilecek tek şey budur.

Dize ekleme

Bir sorguya satır eklemek için “+” işlemi kullanılır. Yalnızca sınırlı uzunlukta dizeler ekleyebilirsiniz.

"Ad: " + Karşı Taraflar SEÇİN. Dizinden AS Sütun 1 Adı. Karşı Taraflar Karşı Taraflar NEREDE Karşı Taraflar. Bağlantı = &Bağlantı

Alt dize işlevi

SUBSTRING(<Строка>, <НачальнаяПозиция>, <Длина>)

Nesne modelindeki Environment() fonksiyonunun bir benzeri. Substring() işlevi dize verilerine uygulanabilir ve bir parça seçmenize olanak tanır <Строки> , karakter numarasıyla başlayarak <НачальнаяПозиция> (bir satırdaki karakterler 1'den başlayarak numaralandırılır) ve uzunluk <Длина> karakterler. Fonksiyon hesaplamasının sonucu değişken uzunluklu bir dize tipine sahiptir ve eğer uzunluk sınırsız olarak kabul edilecektir. <Строка> sınırsız uzunluk ve parametreye sahiptir <Длина> sabit değildir veya 1024'ten büyük değildir.

Eğer dizenin uzunluğu ikinci parametrede belirtilenden daha azsa, işlev boş bir dize döndürecektir.

Dikkat! Sınırsız uzunluktaki dizeleri sınırlı uzunluktaki dizelere dönüştürmek için SUBSTRING() işlevinin kullanılması önerilmez. Bunun yerine EXPRESS() cast operatörünü kullanmak daha iyidir.

İşlev Benzer

Bir dize niteliğinin belirli kriterleri karşıladığından emin olmamız gerekiyorsa onu karşılaştırırız:

Karşı Tarafları SEÇİN Dizinden AS Sütun 1 Adı Karşı Taraflar Karşı Taraflar NEREDE Karşı Taraflar Ad = "Gazprom"

Peki ya daha incelikli bir karşılaştırmaya ihtiyacınız varsa? Sadece eşitlik veya eşitsizlik değil, belirli bir kalıba benzerlik mi? SIMILAR işlevi tam da bunun için yaratıldı.

LIKE — Bir dizenin bir kalıba benzerliğini kontrol etmek için kullanılan operatör. SQL'deki LIKE'ın benzeri.

SIMILAR operatörü, solunda belirtilen ifadenin değerini, sağında belirtilen model dizesiyle karşılaştırmanıza olanak tanır. İfadenin değeri string türünde olmalıdır. İfadenin değeri kalıpla eşleşiyorsa operatörün sonucu DOĞRU, aksi halde YANLIŞ olacaktır.

Şablon dizesindeki aşağıdaki karakterler hizmet karakterleridir ve dize karakterinden farklı bir anlama sahiptirler:

  • % (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. Numaralandırma, aralığın uçları da dahil olmak üzere aralığa dahil edilen rastgele bir karakter anlamına gelen a-z gibi aralıklar içerebilir;
  • [^...] (köşeli parantez içinde bir olumsuzluk işareti ve ardından bir veya daha fazla karakter): olumsuzluk işaretinin ardından listelenenler dışındaki herhangi bir tek karakter.

Bunun dışındaki herhangi bir sembol kendini ifade eder ve herhangi bir ek yük taşımaz. Listelenen karakterlerden birinin kendisi olarak yazılması gerekiyorsa, önüne şu karakter yazılmalıdır:<Спецсимвол>. Kendim<Спецсимвол>(herhangi bir uygun karakter), ÖZEL KARAKTER anahtar sözcüğünden sonra aynı ifadede tanımlanır.