1s 8.2 bir satırdaki karakterin seri numarası. Dizelerle çalışmak için yeni işlevler. Biçimlendirme işlevi StrTemplate()

BÖLÜM 1. YÖNTEMLER (26).

1.1. Temel yöntemler (10). Bağımsız, kendi basit algoritmaları üzerine inşa edilmiş.

Page_Add() (belirtilen karakterlerle sağ-sol ekleme).

Page_Inverse () (ters çevirme - sağdan sola karakterler).

Page_Codes() (”” aracılığıyla karakter kodları ve kodları içeren bir dizi)

Page_Characters() (”” ile ayrılmış bir kod dizisi veya kod içeren bir diziden)

Page_ReplaceSymbols() (bazı karakterleri diğerleriyle değiştirmek).

String_FromArray() (bir ayırıcıyla ayrılmış parça dizisinden gelen dize)

Page_FindIn() (belirtilen oluşum numarasına sahip bir alt dizeyi arayın (sağdaki dahil).

Page_FindGr() (Belirtilen karakter setinde yer alan bir karakter grubunu arayın)

Page_FindNumber() (Sağdaki dahil olmak üzere bir numara arayın. belirtilen sayı olaylar)

Page_Interpret() (yerleşik sözdizimine göre bir diziye)

1.2. Türev yöntemler (12). Aslında bu, dört genelleştirilmiş algoritma yönteminin kullanımıdır (bkz. Bölüm 2)

Page_Number() (satırın başından ve sonundan itibaren sayısal olmayan karakterlerden “korkmayın”.

Page_Find() (belirtilen oluşum numarasına sahip bir alt dizeyi arayın (büyük/küçük harfe duyarlı olmayan ve sağdaki dahil).

Page_Replace() (arama (büyük/küçük harfe duyarlı olmayan ve sağ el dahil) ve sınırlayıcı alt dizelerini değiştirin).

String_Piece() (sınırlayıcının belirtilen oluşumları arasındaki bir dize parçası (sol veya sağ)).

Page_ReplacePiece() (kaynak dizedeki "yığın"ı belirtilen dizeyle değiştirir).

Page_ВArray() (ayırıcının belirtilen oluşumları arasında (sağdaki ve büyük/küçük harf olmayanlar dahil).

Page_TransferBySyllables() ("Hardly" alt dizelerine kısa çizgiyle bölünmüş).

Page_MoveByWords() (“Yumuşakça” alt dizelerine bölünmüş)

Page_Cut() (belirtilen uzunluktaki alt dizilere “kes”)

Str_Shorten() (soldaki "kısaltılmış" karakter grubunu "yedek dize" ile değiştirin

Page_Abbreviation() (sağdaki "küçültülmüş" karakter grubunu "değiştirme dizesi" ile değiştirin

Str_ShortenS() (“kısaltılmış” karakter grubunun ortasını “yedek dize” ile değiştirin

Page_Extend (belirtilen karakter sayısını artırarak belirli bir uzunluğa genişletme)

1.3. Ayrıntılı yöntemler (3). Ayrıntılı bilgi içeren bir tabloya aktarılarak bir satırın "kesilmesi".

Page_vTableIn() (iç içe sınırlayıcılar sistemine göre tabloya).

Page_vTableGr (çok seviyeli filtreye göre tabloya).

Page_inTableNumbers (aralarında sayılar ve parçalar bulunan bir tabloda).

BÖLÜM 2. GENELLEŞTİRİLMİŞ YÖNTEMLER-ALGORİMLER (3).

Page_Occurrence() (“Bul” ve “Değiştir” yöntemleri).

Page_Fragments() (yöntemler “Piece”,”ReplacePiece,”InArray”,”inTableIn”).

Page_Abcr() ("AbcrL", "AbcrP", "AbcrS", "Genişlet" yöntemleri.

Page_Split() (“Hecelere Göre Taşı”, “Kelimelere Göre Taşı”, “Kes”) yöntemleri.

BÖLÜM 3. EVRENSEL İŞLEV.

Bu, izin veren bir tür koşullu programlama arayüzüdür.

bir dizeye aynı anda birkaç yöntem uygulayın. Olarak uygulandı

yedi parametreli işlevler ("Demo" bu işlev üzerine kurulmuştur):

Sayfa_(Yöntemler, Alt Yöntemler, Giriş, Param1, Param2, Uzunluk_Number_Konum, Ek Çıkış)

Seçenekler:

- “Yöntemler” - birkaç “birleşik” ve/veya bir “özel” yöntem

(tek karakterli kodlar veya adlar, "," aracılığıyla mümkündür)

- “Alt yöntemler” - birkaç “birleşik” ve/veya “özel” seçenek

“özel” yöntem (tek karakterli kodlar veya adlar);

- “Giriş” - Dizge veya Dizi veya Değer Tablosu;

- “Param1” - arama dizesi, ikameler, ayırıcılar, filtreler;

- “Param2” - yedek dize veya karakterler;

- “Length_Number_Position” -Number, Numbers'ı bir ayırıcı veya Numbers'lı bir dizi aracılığıyla;

- “Ek Çıkış” - Sayı veya Dize veya Dizi veya Değer Tablosu;

Alt yöntemlerin adları ve/veya tek karakterli kodları ve ayrıca

(Length_Number_Position) her durumda olabilir ve ayrılabilir

aşağıdaki sınırlayıcılardan herhangi biri: ”, :;”.

BÖLÜM 4. BAZI ÖRNEKLER.

There areNumbersInLine=(Str_FindNumber(InLine)<>Tanımsız);

Bir satırda sayılar var = (String_FindGr(Inline,"+0123456789")>0);

Latin = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Belirtilen İşaretler Vardır = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

IsNotPrinted=(Str_FindGr(InxStr, Line_Interpret("-l-L-r-R-P-Z-C"))>0);

BÖLÜM 5. SONUÇ.

Mümkün olduğunda hat boyunca tek geçişle yetindim. İkinci geçiş genellikle parçalar halindedir. Yerleşik StrNumberOccurrences() fonksiyonunu kullanmadım.

Yerleşik işlevler kullanılır: Left(), Right(), Middle(), StrLength()

- (hattın konumlandırılması ve bir kısmının alınması “hızlı” olmalıdır).

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;
  • […] (V köşeli parantez 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 sembol) aynı ifadede aşağıdaki şekilde tanımlanır: anahtar kelimeÖZEL SEMBOL.

String türü tüm programlama dillerinde bulunur. İlkeldir ve 1C'de onunla çalışmak için birçok işlev vardır. Bu yazıda daha yakından inceleyeceğiz çeşitli yollarörnekler kullanarak 1C 8.3 ve 8.2'deki dize türleriyle çalışma.

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 temsilinin elde edilmesi gereken 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(CurrentDate()) //"07/21/2017 11:55:36"

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

SokrLP, SokrL, SokrP

Bu işlevlerin giriş parametreleri dize tipinde 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.

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

Aslan, Sağ, Orta

Bu işlevler bir dizenin bir kısmını kırpmanıza olanak tanır. "Left()" işlevi, bir dizenin sol tarafından belirtilen uzunluktaki kısmını döndürür. "Right()" işlevi de benzerdir ancak sağdan kırpılır. “Avg()” fonksiyonu satırın seçileceği karakterin sayısını ve uzunluğunu belirlemenizi sağlar.

Lev("String değişkeni", 4) // "Str" değerini döndürür
Right("Dize değişkeni", 7) // "değişken" değerini döndürür
Medium("String 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 kısmını aramayı mümkün kılar. Dönüş değeri, bulunan dizenin başlangıcının konumunu gösteren bir sayı olacaktır. Eşleşme bulunamazsa sıfır döndürülür.

Lütfen 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.

Bul("bir, iki, bir, iki, üç", "iki") // fonksiyonu 6 sayısını döndürecektir

Boş satır

Bu işlevi kullanmak bir dizenin boş olup olmadığını belirlemenizi sağlar. Boşluk, satırbaşı ve diğerleri gibi küçük karakterler dikkate alınmaz.

EmptyString("Pupkin Vasily Ivanovich") // işlevi False değerini döndürecektir
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, "HPreg()" küçük harfle döndürecek ve "TReg()" onu her bir kelimenin ilk karakteri büyük harfle ve sonraki tüm karakterler büyük harfle yazılacak şekilde biçimlendirecektir.

VReg("GENEL MÜDÜR") // dönüş değeri - "GENEL MÜDÜR"
NReg(“CEO DIRECTOR”) // dönüş değeri – “CEO”
TREG(“CEO DIRECTOR”) // dönüş değeri – “Genel Müdür”

SayfaDeğiştir

Bu işlev, değiştirmeye benzer. metin editörleri. 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ı"

StrNumberLines

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

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

İnd = 1 için StrNumber of Strings ("Satır1" + Semboller.PS + "Satır2" + 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" + Karakterler.PS + "Dize2" + Karakterler.PS + "Dize3", 2) // "Dize2"yi döndür

Sayfa NumarasıOluşum Sayısı

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

StrNumberAttachments("a;b;c;d; ", ";") // işlevi 4 sayısını döndürecektir

Sembol ve Sembol Kodu

Bu işlevler, bir karakteri Unicode kodlamasındaki koduna göre elde etmenize ve bu kodu karakterin kendisine göre belirlemenize olanak tanır.

SembolKodu("A") // fonksiyonu 1.040 sayısını döndürecektir
CharacterCode(1040) // fonksiyon “A” değerini döndürecek

Dizelerle çalışırken ortak görevler

Dizeleri Birleştirme

Birkaç dizeyi birleştirmek (birleştirme işlemini gerçekleştirmek için) toplama operatörünü kullanmak yeterlidir.

“Satır 1” + “Satır 2” //iki satırın eklenmesi sonucu “Satır 1 Satır 2” olacaktır.

Tür Dönüşümü

Bir türü, örneğin bir dizin öğesine bağlantı, bir sayı vb. gibi bir dizeye dönüştürmek için “String()” işlevini kullanmak yeterlidir. “ScrLP()” gibi işlevler de değişkenleri bir dizeye dönüştürecek, ancak hemen önemsiz karakterleri kesecek.

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

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,"HG=")) // "1000" değerini döndürür

Bir dizedeki alıntılar

Çoğu zaman bir dize değişkeninde tırnak işaretleri belirtme ihtiyacıyla uğraşmak zorunda kalacaksınız. Bu, yapılandırıcıda yazılan istek metni veya yalnızca bir değişken olabilir. Bu sorunu çözmek için iki tırnak işareti koymanız yeterlidir.

Header = String("Horns and Hooves LLC - işte biziz!") // şunu döndürecektir: "Horns and Hooves LLC - işte biziz!"

Çok satırlı, satır sonu

Yaratmak için çok satırlı metin Satır sonlarını eklemek yeterlidir (Symbols.PS).

MultilineText = “İlk Satır” + Semboller.PS + “İkinci Satır”

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

Sağdaki veya soldaki boşlukları kaldırmak için “ScrAP()” işlevini (“ScrL()” ve “ScrP()”nin yanı sıra) kullanabilirsiniz:

StringNoSpaces = Kısaltma(" ​​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:

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

Programcılar ayrıca, 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ı da sıklıkla kullanır:

StringNoSpaces = 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" // Yanlış değerini döndürür
"Merhaba" = "Merhaba" // Doğru değerini döndürür
"Merhaba" = "Güle güle" // False değerini döndürecektir

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 Değer Karşılaştırma nesnesini kullanarak gerçekleştirebilirsiniz:

Ancak yeni özelliği kullanmak daha kolay görünüyor. Bunun yanı sıra işlev, Değer Karşılaştırma nesnesinden farklı olarak 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, If deyiminde kullanılmaya uygundurlar:

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 Find() işlevi yerine, uyguladık yeni özellik ek özelliklere sahip olan:

  • 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. Artık eski Find() işlevini kullanmamanız önerilir.

Aşağıda yeni arama yeteneklerinin kullanıldığı bir örnek verilmiştir. Tersine arama, resmileştirilmiş bir dizenin son parçasına ihtiyaç duyduğunuzda kullanışlıdır; örneğin, Ad Soyad URL'deki dosya. 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.

İLE temel yetenekler Programlama dilleri 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 hatları ayrı bir yerde saklanır SQL tablosu dolayısıyla kullanımları sınırlı olmaktan çok 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. Eşit En son sürüm HANIM Ofis kelimesi ve Excel 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 (bkz. giriş alanının özellikleri, sağ tıküzerinde daha fazla ayrıntı var):

  • 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 kontrol menüsüne Alan eklemeniz gerekir. Metin belgesi. Ö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, kontrollü formlar, göründü yeni fırsat 1C satır gösterimi – 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