1s proqramlaşdırmada sətir sırası. Simlərlə işləmək üçün yeni funksiyalar

31.10.2021

hamıya salam
Bu gün icra sənədini çap edərkən sənəd prefiksini göstərməməyimi istədilər, problemi aşağıdakı kimi həll etdim.

StrReplace(Nömrə, Lev(Nömrə, 3), "" );

Sintaksis köməkçisinə baxanda onu o qədər bəyəndim ki, haqqında yazmaq istədim 1C: Enterprise-də sətirlərlə işləmək.

1C-də sətir primitiv məlumat növünə aiddir.

1C yardımına baxsanız, String növünün aşağıdakı təsvirini görəcəyik:
Dəyərlər bu tipdən ixtiyari uzunluqda Unicode sətrini ehtiva edir.
Əgər simlər haqqında öz sözlərinizdən istifadə etsəniz, işləyəcək. Sətir həmişə dırnaqlarla əhatə olunmuş müxtəlif simvollardan ibarət sabitdir.

Xəttin təyin edilməsi
Salamlama = "Salam Sərnişin";

Çoxxətli sətirlər tipik konfiqurasiyalarən çox şaquli ayırıcı “|” istifadə edərək yaradılır:
String = "Çoxxətli
|simli
|yazmaq
|mətn";

Sətir daxilindəki dırnaq işarəsi qoşa dırnaqlarla müəyyən edilir.
String = ""Mətn dırnaq içərisində"";

Sətirlər üzərində çoxlu əməliyyatlar var (sətir daxilində axtarış, birincilərin müəyyən edilməsi və s.), Sintaksis köməkçisinə baxmaq daha yaxşıdır.
Sintaksis Köməkçisi - Daxili dilin ümumi təsviri -> daxili funksiyalar -> sətirlərlə işləmək üçün funksiyalar.

Simlərlə işləmək üçün funksiyalar

Burada sətirlərlə işləmək üçün funksiyaların qısa xülasəsini verəcəyəm:

VReg(<Строка>) — Funksiya sətirdəki bütün simvolları böyük hərflərə çevirir.

Simvol Kodu(<Строка>, <НомерСимвола>) – Funksiya c mövqeyində ötürülən sətirdə yerləşən simvolun kodunu alır müəyyən edilmiş nömrə.

Aslan(<Строка>, <ЧислоСимволов>) – Funksiya sətrin ilk sol simvollarını seçir.

tap(<Строка>, <ПодстрокаПоиска>) — Funksiya mənbə sətirində alt sətir kimi axtarış sətirinin baş verməsini tapır.

NReg(<Строка>) — Funksiya sətirdəki bütün simvolları kiçik hərflərə çevirir.

sağ(<Строка>, <ЧислоСимволов>) Bu funksiya Sol funksiyalarından onunla fərqlənir ki, o, sətirin sağından sonuncu simvolları seçir.

EmptyString(<Строка>) — Funksiya sətirdə əhəmiyyətli simvolların olub-olmadığını yoxlayır.

Simvol(<КодСимвола>) — Funksiya simvol kodunu simvolu ehtiva edən sətirə çevirir.

abbrL(<Строка>) — Funksiya birincinin solunda olan əhəmiyyətsiz simvolları kəsir mənalı simvol sırada.

abbrLP(<Строка>) — Funksiya sətirdəki birinci əhəmiyyətli simvolun solunda qeyri-əhəmiyyətli simvolları və sətirdəki son əhəmiyyətli simvolun sağında boşluqları kəsir.

abbr(<Строка>) — Funksiya sətirdəki son əhəmiyyətli simvolun sağındakı əhəmiyyətsiz simvolları kəsir.

çərşənbə(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) — Funksiya simvoldan başlayaraq simvollar sətirini seçir<НачальныйНомер>, ümumi sayı<ЧислоСимволов>.

StrLength(<Строка>) — Funksiya sətirdəki simvolların sayını alır.

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) — Funksiya mənbə sətirində axtarış alt sətirinin bütün baş vermələrini tapır və onu əvəzedici alt sətirlə əvəz edir.

StrGetString(<Строка>, <НомерСтроки>) - Funksiya nömrəyə görə çoxsətirli sətir alır.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) — Funksiya mənbə sətirində axtarış alt sətirinin baş vermə sayını hesablayır.

StrNumberRow(<Строка>) — Funksiya çoxsətirli sətirdəki sətirlərin sayını hesablayır. Çoxsətirli sətirdə sətirlər yeni sətirlərlə ayrılır.

TReg(<Строка>) — Funksiya sətri başlıq hərfinə çevirir. Bu o deməkdir ki, hər sözün birinci simvolu başlıq hərfinə və ya simvol üçün başlıq hərfi göstərilməyibsə, böyük hərfə çevrilir. Qalan simvollar kiçik hərflərə çevrilir.

Dönüşüm növləri
Məlumat növlərinin açıq şəkildə çevrilməsi üçün, çevrilmənin baş verdiyi məlumat növü ilə eyni adlı funksiyalar mövcuddur: String(<Значение>)

StringFromNumbers = String(Nömrə);

Bütün bu funksiyalar Sintaksis Assistant-da ətraflı təsvir edilmişdir, mən məqalədə Sintaksis köməkçisinin təcrübəsiz bir proqramçıya necə kömək edə biləcəyini təsvir etdim.

Simlərlə işləmək üçün nümunələr

Ədədin sətri və arxaya çevrilməsi.

İlin simli təsvirini əldə etmək üçün Format funksiyasından istifadə edin.

İl = Format(CurrentDate(), "DF=yyyy") // İl = "2012"

Qrup ayırıcı simvolu (qırılmayan boşluq) daxil etmədən nömrəni sətirə çevirmək üçün NG=0 parametri ilə Format funksiyasından istifadə etməlisiniz:

Nömrə = 2012 Xətt = Format(Nömrə, "NH=0" );

//String = "2012"

Sətir Boşluq yoxdur.

Baxış Şüşəsindən Qeydlər

18/08/2014 Sətirlərlə işləmək üçün yeni funksiyalar

8.3.6.1977 versiyasında həyata keçirilmişdir.

Daha əvvəl yeni funksiyaları yerinə yetirən bütün hərəkətləri yerinə yetirə bilərdiniz. Daxili dildə yazılmış az və ya çox mürəkkəb alqoritmlərdən istifadə. Buna görə də, yeni funksiyalar sizə heç bir prinsipial olaraq yeni imkanlar vermir. Bununla belə, onlar kodun miqdarını azaltmağa və kodu daha sadə və başa düşülən etməyə imkan verir. Bundan əlavə, onlar hərəkətlərin icrasını sürətləndirməyə imkan verir. Çünki platformada həyata keçirilən funksiyalar, təbii ki, daxili dildə yazılmış oxşar alqoritmdən daha sürətli işləyir.

Formatlaşdırma funksiyası StrTemplate()

Bu funksiya parametrləri sətirdə əvəz edir. Belə bir çevrilmə ehtiyacı, məsələn, xəbərdarlıq mesajlarını göstərərkən tez-tez yaranır. Bu funksiyanın sintaksisi aşağıdakı kimidir:

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

<Шаблон>- bu, parametr təmsillərini əvəz etməli olduğunuz sətirdir.

<Значение1> , ... <Значение10>- bunlar parametrlərdir (maksimum on), onların təmsilləri sətirdə əvəz edilməlidir.

Əvəzetməni yerinə yetirmək istədiyiniz şablonda konkret yeri göstərmək üçün %1, ... %10 kimi markerlərdən istifadə etməlisiniz. Şablonda iştirak edən markerlərin sayı və dəyərləri ehtiva edən parametrlərin sayı uyğun olmalıdır.

Məsələn, belə bir operatorun icrasının nəticəsi:

bir xətt olacaq:

2-ci sətirdə məlumat xətası (Tarix növü tələb olunur)

StrCompare() sətirləri ilə işləmə funksiyası

Bu funksiya iki sətri böyük hərflərə həssas olmayan şəkildə müqayisə edir. Məsələn, bu kimi:

Eyni hərəkəti obyektdən istifadə edərək əvvəllər yerinə yetirə bilərsiniz Dəyərlərin Müqayisəsi:

Bununla belə, yeni funksiyadan istifadə daha asan görünür. Və bundan əlavə, bir obyektdən fərqli olaraq bir funksiya Dəyərlərin Müqayisəsi, işləyir nazik müştəri, və veb müştəridə.

StrStartsWith(), StrEndsAt() sətirləri ilə işləmək üçün funksiyalar

Bu funksiyalar sətrin müəyyən bir alt sətirlə başlamasını və ya sətirin müəyyən bir alt sətirlə bitməsini müəyyən edir. Bu funksiyaların alqoritmini daxili dildə həyata keçirmək çətin deyil, lakin onların mövcudluğu daha təmiz və daha başa düşülən kod yazmağa imkan verir. Və daha sürətli işləyirlər.

Məsələn, operatorda onlardan istifadə etmək rahatdır Əgər:

StrDivide(), StrConnect() sətirləri ilə işləmək üçün funksiyalar

Bu funksiyalar müəyyən bir ayırıcıdan istifadə edərək sətri hissələrə ayırır. Və ya əksinə, seçilmiş ayırıcını aralarına daxil edərək bir neçə sətir birləşdirir. Onlar jurnallar və texnoloji jurnallar yaratmaq və ya təhlil etmək üçün əlverişlidir. Məsələn, texnoloji jurnal girişini sonrakı təhlil üçün uyğun hissələrə asanlıqla təhlil edə bilərsiniz:

StrFind() sətirləri ilə işləmək funksiyası

Köhnə funksiyanın yerinə Tap() həyata keçirdik yeni xüsusiyyət, əlavə xüsusiyyətlərə malikdir:

  • Müxtəlif istiqamətlərdə axtarış (əvvəldən, axırdan);
  • Müəyyən bir mövqedən axtarış;
  • Müəyyən edilmiş nömrə ilə hadisəni axtarın (ikinci, üçüncü və s.).

Əslində, köhnə funksiyanın imkanlarını təkrarlayır. Bu, köhnə versiyalarda tərtib edilmiş modullarla uyğunluğu qorumaq üçün edilir. Köhnə funksiya Tap() Yenidən istifadə edilməməsi tövsiyə olunur.

Aşağıda yeni axtarış imkanlarından istifadə nümunəsi verilmişdir. Ters axtarış sizə URL-də tam fayl adı kimi rəsmiləşdirilmiş sətirin son hissəsi lazım olduqda faydalıdır. Və müəyyən bir mövqedən axtarış, bütün sətirdə deyil, məlum fraqmentdə axtarış etməyiniz lazım olduğu hallarda kömək edir.

Proqramlaşdırma dilinin əsas imkanlarına adətən rəqəmlər və sətirlərlə işləmə daxildir. Tipik olaraq, bu imkanlar kompilyator koduna daxil edilir (və ya proqramlaşdırma dilinin "əsas" sinifləri tətbiq olunur).

1C-də simlərlə işləmək bacarığı platformanın özündə proqramlaşdırılıb. Bu gün biz daxili 1C dilində proqramlarda 1C sətirləri ilə işləmək xüsusiyyətlərinə baxacağıq.

Xəttin dəyəri 1C

1. Ən sadəindən başlayaq. Dəyişən yaratmaq və ona sabit sətir dəyəri təyin etmək 1C-də belə görünür:

Dəyişən = "Salam, dünya!";

Sabit 1C sətir dəyərində sitat simvolu təyin etməlisinizsə, onu ikiqat artırmalısınız ""

Dəyişən = "Salam, dünya"!;

2. 1C xəttinin kəsilməsi bir anda iki şəkildə təyin edilə bilər. Birincisi | simvolundan istifadə edir

Dəyişən = "Salam,
| dünya! ";

İkincisi, Symbols sistem nömrələməsindən istifadə edir. O, həm 1C sətir fasilələrini, həm də TAB kimi digər çap olunmayan simvolları əlavə etməyə imkan verir.

Dəyişən = "Salam" + Simvollar.PS + "sülh!";

3. 1C-də konfiqurasiyalar yalnız bir dil (rus, ingilis və ya digər) üçün deyil, eyni zamanda bir neçə dil üçün də hazırlana bilər. Bu halda, hazırda istifadə olunan dil 1C pəncərəsinin aşağı hissəsində seçilir.

Dillərin siyahısı Ümumi/Dillər bölməsindəki konfiqurasiya pəncərəsində yerləşir. kimi hər bir dilin qısa identifikatoru var ru və ya az.

Aydındır ki, belə bir konfiqurasiyanı proqramlaşdırarkən 1C xətləri də çoxdilli ola bilər. Bunun üçün vasitəsilə qeyd etməklə belə 1C xətti yaratmaq olar; dil identifikatoruna görə seçimlər:

Dəyişən = "ru=""Salam, dünya! ""; en=""Salam, dünya! """;

Həmişə olduğu kimi bu şəkildə formalaşan 1C xəttini istifadə etsəniz, onda yazılanlar olacaq. Sistemin onu iki varianta bölməsi və istədiyinizi istifadə etməsi üçün НStr() funksiyasından istifadə etməlisiniz:

//ikidilli konfiqurasiyalar üçün düzgündür
Hesabat(NStr(Dəyişən));

1C tipli rekvizitlər

Atribut 1C kataloqunda/sənədində bir sahədir. O, 1C dilindəki proqramdakı dəyişəndən onunla fərqlənir ki, atribut üçün onun növü dəqiq göstərilib (nömrə, 1C sətri və s.). Dəstəyin nə olduğuna dair yaddaşınızı təzələmək lazımdırsa, dərsə baxın.

Atributun növünü - 1C sətirini göstərsəniz, əlavə olaraq parametrləri göstərməlisiniz.

1C xətləri simvolların dəqiq sayını göstərən qeyri-məhdud uzunluqda (uzunluq = 0 kimi göstərilir) və məhdud uzunluqda olur. Sərhədsiz uzunluqda olan 1C xətləri ayrıca saxlanılır SQL cədvəli, buna görə də onların istifadəsi məhdud olduğundan daha az məhsuldardır.

Buna görə də qeyri-məhdud uzunluqda olan 1C sətirlərinin istifadəsi öz məhdudiyyətlərinə malikdir - onları hər yerdə istifadə etmək mümkün deyil. Məsələn, sənəd nömrəsi, istinad kodu və ya ölçü kimi icazə verilmir.

1C strings ilə işləmək

Simlərlə işləmək üçün 1C platformasının bir neçə daxili funksiyası var.

  • AbbrLP ("İnanılmaz, lakin doğru!")
    1C sətirindən çıxarır əlavə boşluqlar. İstənilən növləri 1C sətirinə çevirmək üçün də istifadə edilə bilər (məsələn, rəqəmlər).
  • Dəyişən = "Vasya" + AbbrLP(" plus") + "Olya"; //"Vasya plus Olya" olacaq
    Bir neçə 1C sətir dəyərinin cəmlənməsi nümunəsi. Nəticə bir xətt 1C olacaq.
  • Dəyişən = Lev("Musiqi", 2); //"Mu" olacaq
    Dəyişən = Orta("Musiqi", 2, 2); //"təhdid" olacaq
    Dəyişən = Hüquqlar("Musiqi", 2); //"ka" olacaq
    1C sətirindən alt sətir əldə etmək üçün müxtəlif variantlar.
  • Dəyişən = Tap("Musiqi", "zy"); //3 olacaq
    1C sətirində 1 simvolundan başlayaraq alt sətir axtarın.
  • Dəyişən = StrLength("Musiqi"); //6 olacaq
    1C sətirindəki simvolların sayını qaytarır.
  • Report("Salam") //1C pəncərəsinin altındakı mesaj pəncərəsində
    Alert("Salam") // popup dialoqu
    Status("Salam") //aşağı solda status ekranında
    .

Obyektlərin 1C sətirinə gətirilməsi

Bildiyiniz kimi, hazırda strukturlaşdırılmış məlumat mübadiləsi üçün ən populyar format XML-dir. Hətta son versiya MS Office Word və Excel faylları bu formatda saxlayır (müvafiq olaraq docx və xlsx uzantısını zip-ə dəyişir, arxivçidə açın).

Məlumat mübadiləsi üçün 1C platforması bir neçə variant təqdim edir, bunlardan da əsası XML-dir.

1. Ən sadə üsul Abbreviation() və ya String() funksiyasından istifadə etməkdir. Siz sorğu orqanında TƏKLİF () funksiyasından istifadə edə bilərsiniz. Onların hərəkətlərinin nəticəsi eynidir - onlar istifadəçi üçün istənilən 1C obyektinin simli təsvirini yaradırlar.

Varsayılan olaraq kataloq üçün bu onun adı olacaq. Sənəd üçün - sənədin adı, nömrəsi və tarixi.

2. İstənilən 1C obyekti (məhdudiyyətlərlə) XML-ə və əksinə çevrilə bilər. Dönüşüm prosesi serializasiya adlanır.

StringViewXml = XMLString(Dəyər); //1C dəyərindən XML əldə edin
Value1C = XMLValue(Növ("DirectoryLink.Nomenklatura"),TypeStringXml); //XML sətirindən 1C dəyərini alın, qəbul edilməli olan 1C tipini göstərməlisiniz

3. İstənilən 1C obyektini sətirə çevirmək üçün 1C platformasının öz yolu var. 1C 7.7 versiyasından köçdü. Bu format digər proqramlar tərəfindən başa düşülmür, lakin digər 1C bunu başa düşür, bu da onu 1C verilənlər bazası arasında mübadilə üçün istifadə etməyi asanlaşdırır.

Sıra = ValueInRowInt(Value1C); //1C dəyərindən 1C sətirini əldə edin
ValueVFile("C:\MyFile.txt", Value1C); //başqa bir seçim, biz 1C dəyərindən saxlanmış sətirlə fayl alırıq
Value1C = ValueFromStringInt(String); //1C-dən geriyə
Value1C = ValueFile("C:\MyFile.txt"); //fayldan geri

Formada 1C sətirlərinin redaktə edilməsi

1C dilində proqramda 1C sətirləri ilə işləməkdən əlavə, əlbəttə ki, istifadəçinin onları redaktə edə bilməsini istərdim. Bunun üçün bir neçə imkan var:

1. Ən asan yol, tələb əsasında 1C xəttinin daxil olmasını tələb etməkdir. Bu üsul 1C proqramlaşdırmasını öyrədərkən istifadə olunur; həyatda daha az istifadə olunur (lakin istifadə olunur!).

Dəyişən = "";
Satır = EnterValue(Dəyişən, "Tam adı daxil edin");

2. 1C obyektinin (kataloq/sənəd) və ya forma təfərrüatlarının (bax) təfərrüatlarını göstərmək üçün ən çox giriş sahəsindən istifadə olunur. Bu, istifadəçinin redaktə sahələri ilə işləməsi üçün 1C-də ən çox yayılmış vasitədir.

3. Daxiletmə sahəsinin imkanları genişləndirilə bilər (giriş sahəsinin xüsusiyyətlərinə baxın, üzərinə sağ vurun, daha ətraflı):

  • Yoxlama qutusu Multiline redaktə rejimi
  • Qabaqcıl redaktə qeyd xanası (əvvəlki onay qutusu seçildikdə mövcuddur)
  • Checkbox Parol rejimi (bax).

4. Əgər giriş sahəsinin bütün imkanları sizə kifayət etmirsə, orada quraşdırılmış redaktor var. Onu forma əlavə etmək üçün Forma/Daxil et idarəetmə menyusuna Alan əlavə etməlisiniz mətn sənədi. Onun xassələrində onun iş rejimini – Genişləndirmə xüsusiyyətini təyin edə bilərsiniz.

Mətn sənədi sahəsi birbaşa məlumatlarla əlaqələndirilə bilməz. Formanın OnOpen() hadisə idarəedicisində funksiya yazmaq lazımdır (bax):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //burada ValueString, məsələn, atributdan alınan mətndir

Və saxlama işləyicisində - məsələn, Saxla düyməsində - qənaət əlavə edin:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Dəyər Buradakı xətt dəyəri saxladığımız atributdur

5. 1C 8.2.11 versiyasında, in nəzarət formaları, meydana çıxdı yeni fürsət 1C xətti təmsili – Formatlaşdırılmış sənəd sahəsi.


Mətn sənədinin sahəsinə bənzər olaraq, onu açarkən onu təyin etməli və proqramdan istifadə edərək özünüz saxlayarkən onu yazmalısınız.

  • Formasını yaratdığımız 1C obyektində (kataloq, sənəd, emal və s.) - Dəyər Saxlama növü ilə bir atribut əlavə edin
  • OnReadOnServer() funksiyasında biz mətni atributdan təyin edirik

    //burada Atribut 1C obyektinin əlavə atributudur
    //burada FormattedDocument redaktə üçün formada sahənin adıdır
    &OnServer

    FormattedDocument = CurrentObject.Attributes.Get();
    Prosedurun Sonu

  • BeforeWritingOnServer() funksiyasında və ya düymədən istifadə etməklə biz mətni sahədən yazacağıq

    &OnServer
    ReadingOnServer (CurrentObject) zamanı prosedur
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Prosedurun Sonu

Sətir 1C: Müəssisə 8 sistemlərindəki ibtidai məlumat növlərindən biridir xətt mətn ehtiva edir.

Dəyişən dəyərləri yazın xətt qoşa dırnaq içərisindədir. Bu tip bir neçə dəyişən əlavə edilə bilər.

Per1 = "Söz 1" ;
Per2 = "Söz 2" ;
Per3 = Per1 + " " + Per2;

Sonda Per3 demək olacaq" Word 1 Word 2″.

Bundan əlavə, 1C: Enterprise 8 sistemləri sətirlərlə işləmək üçün funksiyaları təmin edir. Əsas olanlara nəzər salaq:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — funksiya istifadəçinin dəyəri təyin edə biləcəyi dialoq qutusunu göstərmək üçün nəzərdə tutulmuşdur dəyişən növü Xətt. Parametr <Строка> tələb olunur və daxil edilmiş sətirin yazılacağı dəyişənin adını ehtiva edir. Parametr <Подсказка> isteğe bağlı - bu, dialoq qutusunun başlığıdır. Parametr <Длина> isteğe bağlı, giriş sətirinin maksimum uzunluğunu göstərir. Defolt sıfıra bərabərdir, bu məhdudiyyətsiz uzunluq deməkdir. Parametr <Многострочность> isteğe bağlıdır. Çoxsətirli mətn daxiletmə rejimini müəyyən edir: True—sətir ayırıcıları ilə çoxsətirli mətn daxiletmə; Yanlış - sadə sətir daxil edin.

Unicode-da simvol kodunu bilirsinizsə, sətir daxil edə bilərsiniz:

Simvol(<КодСимвола>) — kod nömrə kimi daxil edilir.

Hərf= Simvol(1103);

// İ

Simvol Kodu(<Строка>, <НомерСимвола>) — Simvolun kodunu tapmağa imkan verən tərs funksiya da var.

göstərilən simvolun Unicode nömrəsini nömrə kimi qaytarır.

VReg(<Строка>) Mətn registrinin çevrilməsi funksiyaları:

NReg(<Строка>) — Sətirdəki bütün simvolları böyük hərflərə çevirir.

TReg(<Строка>) — Sətirdəki bütün simvolları kiçik hərflərə çevirir.

— sətirdəki bütün simvolları başlıq hərfinə çevirir. Yəni bütün sözlərdə ilk hərflər böyük hərflərə, qalan hərflər isə kiçik hərflərə çevrilir.

tap(<Строка>, <ПодстрокаПоиска>) Sətirdəki simvolların axtarışı və dəyişdirilməsi funksiyaları:

— axtarış alt sətirinin baş verməsinin simvol nömrəsini tapır. Məsələn:

Tap ("String" , "oka" );<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 StrFind(— axtarış alt sətirinin baş verməsinin simvol nömrəsini tapır, baş vermə nömrəsi müvafiq parametrdə göstərilir. Bu halda, axtarış parametrdə nömrəsi göstərilən simvoldan başlayır

İlkin Vəzifə. Axtarış sətirin əvvəlindən və ya sonundan mümkündür. Məsələn: Nömrə 4 Hadisələr = Str Tap (

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) "Müdafiəçilik"

, "haqqında", Axtarış istiqaməti. Başlanğıcdan, 1, 4);

EmptyString(<Строка>) // 7 – mənbə sətirində axtarış alt sətirinin bütün təkrarlarını tapır və onu əvəzedici alt sətirlə əvəz edir. StrReplace ("String" , "oka", "" ); // Səhifə.

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) – əhəmiyyətli simvollar üçün sətri yoxlayır. Əhəmiyyətli simvol yoxdursa və ya ümumiyyətlə simvol yoxdursa, dəyər qaytarılır

Doğrudur . Əks halda - Yalan

StrŞablon(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — – Mənbə sətirində axtarış alt sətirinin baş vermə sayını hesablayır. StrNumber Hadisələr ("öyrən, öyrən və yenidən öyrən"

, "öyrənmək", "" ); // 3 parametrləri sətirdə nömrə ilə əvəz edir. Sətirdə “%1..%N” formasının əvəzedici markerləri olmalıdır. Markerin nömrələnməsi 1-dən başlayır. Əgər parametr dəyəri, "1" , "2" ) ; Müəyyən edilməmiş

, boş sətir əvəzlənir.

Aslan(<Строка>, <ЧислоСимволов>) StrŞablon (

sağ(<Строка>, <ЧислоСимволов>) "Parametr 1 = %1, Parametr 2 = %2"

çərşənbə(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) // Parametr 1= 1, Parametr 2 = 2<ЧислоСимволов>Simli çevirmə funksiyaları:<НачальныйНомер>.

abbrL(<Строка>) – sətirin ilk simvollarını qaytarır.

abbr(<Строка>) – sətirin son simvollarını qaytarır.

abbrLP(<Строка>) – uzunluqlu sətri qaytarır

StrGetString(<Строка>, <НомерСтроки>) , simvolundan başlayaraq

sətirdəki ilk əhəmiyyətli simvolun solunda qeyri-əhəmiyyətli simvolları kəsir.

StrLength(<Строка>) — sətirdəki son əhəmiyyətli simvolun sağındakı əhəmiyyətsiz simvolları kəsir.

StrNumberRow(<Строка>) – çoxsətirli sətirdəki sətirlərin sayını qaytarır. Sətir əvvəlkindən yeni sətir simvolu ilə ayrıldıqda yeni sayılır.

StrCompare(<Строка1>, <Строка2> ) – hərflərə həssas olmayan şəkildə iki sətri müqayisə edir. Funksiya obyekt kimi işləyir Dəyərlərin Müqayisəsi. Qaytarır:

  • 1 - birinci sətir ikincidən böyükdürsə
  • -1 - ikinci sətir birincidən böyükdürsə
  • 0 - sətirlər bərabərdirsə

StrCompare("Birinci sətir" , "İkinci sətir" );

// 1 String növü bütün proqramlaşdırma dillərində mövcuddur. Primitivdir və 1C-də onunla işləmək üçün bir çox funksiya var. Bu yazıda biz daha yaxından baxacağıq müxtəlif yollarla

Xətt

misallardan istifadə etməklə 1C 8.3 və 8.2-də sim növləri ilə işləmək.

İstənilən tipli dəyişəni sətirə çevirmək üçün eyni adlı “String()” funksiyası mövcuddur. Giriş parametri dəyişənin özü olacaq, onun sətir təsviri alınmalıdır.
String(False) // "Xeyr" qaytarır
String(12345) // "12,345" qaytarır

String(CurrentDate()) //"21/07/2017 11:55:36"

Yalnız primitiv tipləri deyil, digərlərini, məsələn, kataloq və sənədlərin elementlərini də sətirə çevirmək mümkündür.

SokrLP, SokrL, SokrP

Bu funksiyaların giriş parametrləri sətir tipli dəyişəndir. Funksiyalar əhəmiyyətsiz simvolları (boşluqlar, karetka qayıdışları və s.) silir: müvafiq olaraq sol və sağ tərəfdən, yalnız sol tərəfdən və yalnız sağdan.
Qısaltma(" ​​Boşluqlar hər iki tərəfdən silinəcək ") // "Hər iki tərəfdən boşluqlar silinəcək"
Qısaltma(" ​​Hər iki tərəfdəki boşluqlar silinəcək ") // " Soldakı boşluqlar silinəcək "

Qısaltma(" ​​Hər iki tərəfdəki boşluqlar silinəcək ") // " Sağdakı boşluqlar silinəcək"

Şir, Sağ, Orta

Bu funksiyalar sətrin bir hissəsini kəsməyə imkan verir. "Sol ()" funksiyası sətrin müəyyən edilmiş uzunluğun sol tərəfindən olan hissəsini qaytaracaq. "Right()" funksiyası oxşardır, lakin sağdan kəsilir. “Ort()” funksiyası xəttin seçiləcəyi simvolun sayını və onun uzunluğunu təyin etməyə imkan verir.
Lev("Str dəyişəni", 4) // "Str" qaytarır
Right("String dəyişəni", 7) // "dəyişən"i qaytarır

Medium("String dəyişən", 2, 5) // "troco" qaytarır

StrLength

Funksiya sətir dəyişənində olan simvolların sayını müəyyən edir.

StrLength("Word") // icra nəticəsi 5 rəqəmi olacaq

Tapın

Nəzərə alın ki, axtarış hərflərə həssasdır. Orijinal sətirdə axtarış alt sətirinin birdən çox təkrarlanması varsa, funksiya birinci başlığın başlanğıcını qaytaracaq.

Find("bir, iki, bir, iki, üç", "iki") // funksiyası 6 rəqəmini qaytaracaq

EmptyString

Bu funksiyadan istifadə sətirin boş olub olmadığını müəyyən etməyə imkan verir. Boşluq, karetanın qaytarılması və başqaları kimi kiçik simvollar nəzərə alınmır.

EmptyString("Pupkin Vasili İvanoviç") // funksiyası False dəyərini qaytaracaq
EmptyString(" ") // funksiyası True dəyərini qaytaracaq

VReg, NReg, TReg

Bu funksiyalar simli dəyişənləri müqayisə edərkən və çevirərkən çox faydalıdır. "Vreg()" orijinal sətri böyük hərflə, "HPreg()" kiçik hərflə qaytaracaq və "TReg()" onu elə formatlaşdıracaq ki, hər bir fərdi sözün birinci simvolu böyük hərflə yazılsın və bütün sonrakı simvollar böyük hərflə yazılsın.

VReg("GENERAL DIRECTOR") // qaytarılan dəyər - "GENERAL DIRECTOR"
NReg (“CEO DIRECTOR”) // qaytarılan dəyər – “CEO”
TREG (“CEO DIRECTOR”) // qaytarılan dəyər – “Baş Direktor”

Səhifə dəyişdirin

Bu funksiya in dəyişdirmə funksiyasına bənzəyir mətn redaktorları. O, sətir dəyişənlərində bir simvolu və ya simvol dəstini digəri ilə əvəz etməyə imkan verir.

StrReplace("qırmızı, ağ, sarı", ","", ";") // "qırmızı"nı qaytarır; ağ; sarı"

StrNumberLines

Funksiya mətn dəyişənində daşıma qaytarılması ilə ayrılmış sətirlərin sayını təyin etməyə imkan verir.

Aşağıdakı misaldakı döngə üç dövrədən keçəcək, çünki LineNumberRow funksiyası 3 dəyərini qaytaracaq:

Ind = 1 üçün StrNumber of Str ("Səttir1" + Simvollar.PS + "Sətt2" + Simvollar.PS + "Sətr3") Döngü
<тело цикла>
EndCycle;

StrGetString

Bu funksiya çoxsətirli mətnlə əvvəlki kimi işləyir. Mətn dəyişənindən müəyyən bir sətir əldə etməyə imkan verir.

StrGetString("String1" + Simvollar.PS + "String2" + Simvollar.PS + "String3", 2) // "String2"-ni qaytarın

SəhifəNömrəsi Hadisələr

Funksiya axtarış sətirində simvol və ya alt sətirin baş vermə sayını hesablayır.

StrNumberAttachments("a;b;c;d; ", ";") // funksiya 4 rəqəmini qaytaracaq

Simvol və Simvol Kod

Bu funksiyalar Unicode kodlaşdırmasındakı kodu ilə simvol əldə etməyə, həmçinin bu kodu simvolun özü ilə müəyyən etməyə imkan verir.

SymbolCode("A") // funksiyası 1040 rəqəmini qaytaracaq
CharacterCode(1040) // funksiya “A” qaytaracaq

Simlərlə işləyərkən ümumi tapşırıqlar

Birləşdirən sətirlər

Bir neçə sətri birləşdirmək üçün (birləşdirməni yerinə yetirmək üçün) əlavə operatorundan istifadə etmək kifayətdir.

“1-ci sətir″ + “2-ci sətir” //iki sətir əlavə etməyin nəticəsi “1-ci sətir 2” olacaq

Dönüşüm növü

Tipi sətirə çevirmək üçün, məsələn, kataloq elementinə keçid, nömrə və s., “String()” funksiyasından istifadə etmək kifayətdir. “ScrLP()” kimi funksiyalar da dəyişənləri sətirə çevirəcək, lakin dərhal əhəmiyyətsiz simvolları kəsməklə.

String(1000) // "1000" qaytarır

Nəzərə alın ki, nömrəni sətirə çevirən zaman proqram avtomatik olaraq minləri ayıran boşluq əlavə edir. Bunun qarşısını almaq üçün aşağıdakı konstruksiyalardan istifadə edə bilərsiniz:

StrReplace(String(1000),Characters.NPP,"") // "1000" qaytarır

String(Format(1000,"HG=")) // "1000" qaytarır

Bir sətirdə sitatlar

Çox vaxt siz simli dəyişəndə ​​dırnaq işarələrini təyin etmək ehtiyacı ilə qarşılaşmalı olacaqsınız. Bu ya konfiquratorda yazılmış sorğu mətni, ya da sadəcə dəyişən ola bilər. Bu problemi həll etmək üçün sadəcə iki dırnaq işarəsi qoymalısınız.

Başlıq = String("Horns and Hooves MMC - bu bizik!") // "Horns and Hooves MMC - bu bizik!"

Çox xəttli, sətir kəsilməsi

Çox sətirli mətn yaratmaq üçün ona sətir sonu (Symbols.PS) əlavə etmək kifayətdir.

MultilineText = "Birinci Sətir" + Simvollar.PS + "İkinci Sətir"

Boşluqları necə çıxarmaq olar

Sağ və ya soldakı boşluqları silmək üçün siz “ScrAP()” funksiyasından (həmçinin “ScrL()” və “ScrP()”) istifadə edə bilərsiniz:

StringNoSpaces = Qısaltma(" ​​Çox hərflər ") // funksiya "Bir çox hərf" dəyərini qaytaracaq

Əgər nömrəni sətirə çevirdikdən sonra qırılmayan boşluqları silmək lazımdırsa, aşağıdakı konstruksiyadan istifadə edin:

StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // "99999" qaytarır

Proqramçılar tez-tez mətn dəyişənindəki bütün boşluqları silməyə və ya başqa simvolla əvəz etməyə imkan verən aşağıdakı konstruksiyadan istifadə edirlər:

StringNoSpaces = StrReplace("salam","") // "salam" qaytarır

Simləri bir-biri ilə müqayisə etmək

Şərtləri adi bərabərlik işarəsi ilə müqayisə edə bilərsiniz. Müqayisə böyük hərflərə həssasdır.

"Salam" = "salam" // False qaytarır
"Salam" = "Salam" // Doğrunu qaytarır
"Salam" = "Əlvida" // False qaytarır