Internet Windows Android
Kengaytirish

1s 8 satrdan bo'sh joylarni olib tashlang. Iplarni bir-biri bilan solishtirish

Ko'pincha 1C 8.2 va 8.3 dan ma'lumotlarni yuklash va tushirishda raqamlarda ma'lumotlarni normal qayta ishlashga to'sqinlik qiladigan bo'shliqlar mavjud. Bu muammoning yechimi juda oddiy.

Bo'shliqlarning qanday turlarini ko'rib chiqing.

Bo'shliqlar ikki xil bo'lishi mumkin:

  • buzilmaydigan bo'shliq;
  • "muntazam" bo'shliq.

Buzilmaydigan bo'shliqlarni olib tashlash

StringRepresentation = String(Raqam); // tizim "10 000" o'zgaruvchisiga yozadi

Raqam formati funksiyasi orqali 1C-da bunday bo'shliqlarni olib tashlash juda oddiy:

Raqam = Format (10000, "CH=");

StringRepresentation = String(Raqam); // tizim "10000" o'zgaruvchisiga yozadi

Format satrida guruhlashni bo'sh qiymatga o'rnatamiz (siz "0" ni ham yozishingiz mumkin).

Agar ma'lumotlar turi allaqachon "string" bo'lsa, quyidagi usuldan foydalanish mumkin:

StringRepresentation = StrReplace(String(StringRepresentation), Belgilar.NPP, ""); // StringRepresentation o'zgaruvchisi "10 000" edi, "10000" bo'ldi

Ya'ni, biz shunchaki satrdagi uzilmaydigan bo'shliqni (Symbols.NPP) bo'sh qiymat bilan almashtirdik.

Oddiy bo'shliqlar

Ipdagi oddiy bo'shliqni olib tashlash, armutni otish kabi osondir. Buning uchun quyidagi funktsiyani bajarish kifoya:

StringRepresentation = StrReplace(String(StringRepresentation), " ", ""); // "10 000" "10 000" ga aylandi

Misol avvalgi usulga o'xshaydi. Biroq, Symbols.npp o'rniga biz bitta bo'shliqli satrdan foydalanamiz.

Agar siz 1C dasturlashni o'rganishni boshlayotgan bo'lsangiz, biz bepul kursimizni tavsiya qilamiz (unutmang youtube ga obuna bo'ling - Yangi videolar muntazam ravishda chiqariladi.

FAQ yoki dummies uchun platforma 8.

1C ga bag'ishlangan forumlarga ko'ra, 1C v 8 platformasi bilan birinchi marta uchrashgan yoki 7.7 dan o'tgan dasturchilar ko'pincha bir xil savollarga ega. Bu erda men eng keng tarqalganini to'plashga qaror qildim, menimcha ...

V: 12,600.00 raqamidagi bo'sh joyni qanday olib tashlash mumkin?
O: Bu erda fazo belgisi emas, balki "buzilmaydigan bo'shliq" deb ataladigan narsa ekanligini tushunish muhimdir, shuning uchun, masalan, quyidagi qurilish:

StrReplace(VariableNumber," ","");

ishlamaydi. Muammoni hal qilishning ikkita varianti mavjud, bo'sh joy o'rniga Symbols.NPP ni belgilang yoki Format() funksiyasidan foydalaning.

StrReplace(VariableNumber, Symbols.NPP,""); // 1-variant
Format(VariableNumber,"CH="); // 2-variant

V: Olingan tanlovga faqat ma'lum turdagi hujjatlar kiritilishi uchun so'rovda shartni qanday o'rnatish kerak?
O: Buni REFERENCE so'rovlar tili operatori yordamida amalga oshirish mumkin, bu uning chap tomonida ko'rsatilgan ifoda qiymati o'ngda ko'rsatilgan jadvalga havola ekanligini tekshirish imkonini beradi. Misolni ko'rib chiqing, jamlanma registridan "Xizmatlarni realizatsiya qilish" ro'yxatidan faqat ro'yxatga oluvchi "Tovar va xizmatlarni realizatsiya qilish" hujjati bo'lgan yozuvlarni tanlang:

So'rov=Yangi so'rov("
|TANLASH
| Xizmatlarni amalga oshirish.Registrator,
| Xizmatlarni amalga oshirish Miqdori
| FROM
| Jamg'arma registri.Xizmatlarni amalga oshirish AS Xizmatlarni amalga oshirish
|QAYERDA
| Registrator LINK Document. Tovar va xizmatlarni sotish");

V: Ayrim hujjatlarni/kataloglarni bir xil konfiguratsiyalar o'rtasida qanday o'tkazish mumkin?
O: Buni ITS disklarida taqdim etilgan UploadUploadDataXML.epf ni qayta ishlash namunasi yordamida amalga oshirish mumkin.

V: Turli xil konfiguratsiyalar (yoki 7,7 dan 8 gacha) o'rtasida ma'lumotlarni qanday uzatish mumkin?
O: Eng yaxshi variant, menimcha, ITS disklarida taqdim etiladigan odatiy "Ma'lumotlarni aylantirish" konfiguratsiyasidan foydalanish, shuningdek, ushbu konfiguratsiyadan foydalanishni tavsiflovchi bir nechta maqolalar mavjud.

V: So'rovda qator bo'lmagan turdagi maydonga ma'lum bir satrni qanday qo'shish mumkin, masalan, SELECT Realization of Services.Miqdori + "rub."?
O: Bo'lishi mumkin emas. So'rovda turni o'zgartirish mumkin emas. EXPRESS so'rovlar tili konstruktsiyasi ba'zilar uchun noto'g'ri, lekin u faqat kompozit turdagi qiymatni ushbu qiymatning komponent turlaridan biriga beradi va hech qanday tarzda turni o'zgartirmaydi, shuning uchun bu vaziyatda qo'llanilmaydi.

V: Cheksiz uzunlikdagi satr turiga ega bo'lgan maydonda so'rovda shartni qanday o'rnatish mumkin, masalan, ma'lum bir izohli barcha hujjatlarni tanlang?
O: Buning uchun EXPRESS so'rovlar tili operatori yordamida maydon uzunligini cheklash kerak. Masalan:

So'rov=Yangi so'rov("
|TANLASH
| Tovar va xizmatlarni realizatsiya qilish
| FROM
| Hujjat.Tovar/xizmatlarni sotish QANDAY Tovar/xizmatlarni realizatsiya qilish
|QAYERDA
| EXPRESS(ImplementationProductsServices.Comment AS STRING(100)) = &Izoh");

V: v 8 da 7.7 CatalogIB() funksiyasining analogi bormi?
O: Yo'q, chunki bunday funktsiya mijoz-server ish rejimi uchun mantiqiy emas. Biroq, faylning ishlash rejimi uchun siz quyidagi konstruktsiyadan foydalangan holda ma'lumot bazasi katalogini olishingiz mumkin:

DirectoryIB=NSstr(InfobaseConnectionString(),"Fayl");

V: Tarqalgan ma'lumotlar bazasidan tugunni qanday ajratish mumkin?
O: Quyidagi konstruksiya bilan:

Exchange Plans.SetMainNode(Aniqlanmagan);

Yoki konfiguratorni /ResetMasterNode buyruq qatori parametri bilan ishga tushiring (asosiy versiyalar uchun ishlatilmaydi).

V: Hujjat nomini qanday olish mumkin (7.7 View() usuliga o'xshash)?
O: Metadata yordamida. Masalan:

V: Bitta so'rov bilan barcha turdagi hujjatlarni qanday tanlash mumkin?
O: Metadatadan foydalanish va so'rovlarni birlashtirish qobiliyati V:

So'rov=Yangi so'rov;
Matn="";
Metadata.Documents Loop dan har bir hujjat uchun
Text=Text+"Hujjatdan havolani TANLASH."+Hujjat.Name+"Qo'shilish";
EndCycle;
Query.Text=Lev(Matn, StrLength(Matn)-StrLength("UNITE"));
Tanlash=Query.Execute().Select();

V: Hisobot/qayta ishlashning bajarilishini qanday to'xtatish mumkin?
O: UserInterruptHandle() operatori bilan uni sikl ichida ishlatish tavsiya etiladi. Foydalanuvchi Ctrl+Break tugmalar birikmasini bosganda, bajarilish to'xtatiladi va tegishli xabar ko'rsatiladi. Masalan:

While Selection.Next() tsikli
HandlingUserInterrupt();

EndCycle;

V: Shaklda ValueTree turi va Tree xossalari to'plamiga ega TableField mavjud. Nima uchun qiymat daraxti ko'rsatilmaydi?
O: Bundan tashqari, ustunlardan biri uchun DisplayHierarchy xususiyatini o'rnatish kerak.

V: Ma'lumot bazasi fayl rejimida rejalashtirilgan vazifalardan qanday foydalanish kerak?
O: Mijoz-server rejimidan farqli o'laroq, fayl rejimida ishlab chiquvchi rejalashtirilgan vazifalarni avtomatik ishga tushirish uchun javobgardir. Vazifalarni avtomatik ishga tushirishni amalga oshirish uchun sizga vaqti-vaqti bilan "kechiktirilgan" vazifalarni tekshirib, ularni ishga tushiradigan kutish moslamasi kerak bo'ladi. Buning uchun alohida seansdan foydalanish tavsiya etiladi. Misol:

Task Check() protsedurasi
ExecuteProcessingJobs();
EndProcedure
ConnectWaitingHandler("Tekshiruv vazifalari",3);

V: Ajratilgan satrdan massivni qanday olish mumkin?
O: Misol tariqasida, men "ikkala yo'nalishda" ishlaydigan funktsiyaning versiyasini beraman, ya'ni. ajratilgan satrni o'tkazishda massivni, massivni o'tkazishda esa undan ajratilgan qatorni hosil qiladi.

Funktsiya StringArray(qiymat qiymati, ajratuvchi)
Agar TypeValue(Value)=Type("String") bo'lsa
MnStr=StrReplace(Qiymat, Separator, Symbols.PS);
Massiv=Yangi massiv;
n=1 uchun Qatorlar soni (MnStr) sikli bo'yicha
Array.Add(StrGetString(MnStr,n));
EndCycle;
Qaytish massivi;
ElseIf TypeValue(Value)=Type("Masiv") Keyin
String="";
Qiymat tsiklidan har bir element uchun
String=String+?(String"",Separator,"")+Element;
EndCycle;
Qaytish satri;
Aks holda
Qaytish aniqlanmagan;
EndIf;
EndFunctions

V: Oddiy konfiguratsiyada konfiguratorga o'zgartirishlar kiritish imkoniyatini qanday yoqish mumkin?
O: Odatdagi konfiguratsiyalar qo'llab-quvvatlanganligi sababli (avtomatik yangilanishlarga imkon beradi), sukut bo'yicha konfiguratsiyaga o'zgartirishlar kiritish imkoniyati o'chirib qo'yilgan. Ushbu xususiyatni yoqish uchun konfiguratorda "Konfiguratsiya > Qo'llab-quvvatlash > Qo'llab-quvvatlash sozlamalari" menyusini tanlang va ochilgan oynada "O'zgartirish imkoniyatini yoqish" tugmasini bosing.

V: Qayta ishlash/konfiguratsiya uchun parolni qanday o'rnatish mumkin?
O: 1C v 8 da parollar faqat ob'ekt modullarida o'rnatilishi mumkin. Parolni o'rnatish uchun siz ob'ekt modulini ochishingiz va "Matn > Parolni o'rnatish" menyu bandini tanlashingiz kerak. Shuningdek, konfiguratsiyani ob'ekt modullarining manba kodisiz ta'minlash mumkin (konfiguratsiya "Konfiguratsiya > Konfiguratsiyani yetkazib berish > Yetkazib berish sozlamalari"). Shuni ta'kidlashni istardimki, hozirgi vaqtda ushbu usullarning hech biri modulning manba kodini ko'rishdan ishonchli himoya emas.

V: Nima uchun hujjatni qidirish FindByNumber() yordamida ishlamaydi.<Номер документа>)?
O: Shuni esda tutish kerakki, agar konfiguratorda ushbu turdagi hujjatlar uchun davriy raqamlash o'rnatilgan bo'lsa, hujjat raqamiga qo'shimcha ravishda, ikkinchi parametr sifatida intervalning sanasini ko'rsatish kerak. Aks holda, bo'sh sanaga ega hujjat qidiriladi, bu aniq natijaga olib kelmaydi.

V: 1C 8.1 da, nosozliklarni tuzatish uchun allaqachon ishlayotgan dasturga ulanishingiz kerak bo'lsa (Konfigurator > Nosozliklarni tuzatish > Ulanish), mavjud disk raskadrovka elementlari bo'sh. Sababi nima?
O: Haqiqat shundaki, biz disk raskadrovka qilmoqchi bo'lgan dastur uchun siz disk raskadrovkani aniq yoqishingiz kerak. Asboblar menyusi > Variantlar > Tizim yorlig'i > Nosozliklarni tuzatish yoqilgan bayroq.

V: Dinamik ro'yxat satrlarini qanday saralash mumkin (masalan, DirectoryList yoki DocumentList)?
O: Buni Report Builder yordamida amalga oshirish mumkin, masalan:

Builder=Yangi hisobot tuzuvchisi;
Builder.DataSource=NewDataSourceDescription(DocumentList);
Tanlash=Builder.Result.Select();
While Selection.Next() tsikli
Hisobot (Tanlash. Havola);
EndCycle;

Eslatma: tanlov hozirda o'rnatilgan tanlovga muvofiq qatorlarni o'z ichiga oladi.

V: Metadata ob'ektlarining xususiyat qiymatlarini qanday tekshirish mumkin? Masalan, katalog ierarxiyasi turi yoki registrga kirish rejimi yoki hujjat raqamining chastotasi?
O: Bu xususiyatlarning barchasi metadata ob'ektlarining sanab o'tilgan xususiyatlaridir. Ushbu turdagi qiymatlarni metadata orqali ham olishingiz mumkin. Misollar:

// 1-misol. Ierarxiya ko'rinishini qidirish
Agar Metadata.Catalogs[CatalogName].HierarchyView = Metadata.ObjectProperties.HierarchyView.HierarchyGroupsAndItems Keyin...
// 2-misol. RegisterWriteMode
Agar Metadata.InformationRegisters[RegisterName].RegisterWriteMode = Metadata.ObjectProperties.RegisterWriteMode.RegisterSubordinate keyin...
// Misol 3. Davriy hujjat raqami
Agar Metadata.Documents[DocumentName].Raqam davriyligi = Metadata.ObjectProperties.DocumentNumber davriyligi.Davriy bo'lmaganda...

V: Qiymatlar daraxtida uchta holatga ega bo'lgan katakchani qanday qo'llash mumkin?
O: Keling, muammo bayonotini batafsil ko'rib chiqaylik. Shaklda ma'lumotlar manbai qiymatlar daraxti bo'lgan jadval maydoni mavjud. Ustunlardan birida belgilash katakchasi boshqaruvi mavjud. Buning uchun "On", "Off" va "Noaniq" uchta holatni olishi kerak. Bunday holda, davlat "Aniqlanmagan" yoki "kulrang bayroq" deb ataladi, ya'ni. qisman tanlangan, agar barcha bo'ysunuvchi qatorlar bir xil bayroq holatiga ega bo'lmasa, o'rnatiladi. Bundan tashqari, agar qatorda bo'ysunuvchi qatorlar bo'lsa, uning bayrog'i o'zgartirilganda, barcha bo'ysunuvchi qatorlarning bayroqlari mos ravishda o'zgartirilishi kerak.
Birinchidan, qiymatlar daraxtiga tasdiqlash qutisi ustunini qo'shamiz:

Tree.Columns.Add("Mark",NewTypeDescription("Raqam"));
FormElements.Tree.CreateColumns();
TreeColumns=FormElements.Tree.Columns;
TreeColumns.Mark.FlagData="Mark";
TreeColumns.Mark.SetControlItem(Type("Checkbox"));
TreeColumns.Mark.EditMode=EditModeColumns.Immediate
enno;
TreeColumns.Tag.ThreeFlagStates=To'g'ri;

Ikkinchidan, bayroqni o'zgartirganda, siz bo'ysunuvchi qatorlarda tegishli qiymatlarni o'rnatishingiz va "ota-ona" qatoridagi bayroqning qiymatini nazorat qilishingiz kerak:

TreeOnBayroqni o'zgartirish protsedurasi (element, ustun)
CurrentRow=Element.CurrentRow;
Agar CurrentLine.Mark=2 bo'lsa
CurrentLine.Mark=0;
EndIf;
O'rnatish bayroqlari (CurrentRow, CurrentRow.Mark);
While CurrentRow.ParentUndefined Loop
CurrentRow.Parent.Label=?(SetForAll(CurrentRow),CurrentRow.Label,2);
CurrentRow=CurrentRow.Parent;
EndCycle;
EndProcedure

Bu erda SetFlags() protsedurasi pastki qatorlardagi bayroqlarni rekursiv ravishda o'rnatadi:

Protseduralar to'plami bayroqlari (CurrentRow, Value)
CurrentRow.Rows siklining har bir sahifasi uchun
PageMark=Qiymat;
SetFlags(Pg,Pg.Mark);
EndCycle;
EndProcedure

Va SetForAll() funktsiyasi joriy darajadagi barcha satrlar uchun bir xil qiymat o'rnatilganligini tekshiradi:

Funktsiya SetForAll(String)
Row.Parent.Row Loopning har bir sahifasi uchun
Agar Page.MarkString.Mark Keyin
yolg'onni qaytarish;
EndIf;
EndCycle;
haqiqatni qaytarish;
EndFunctions

V: Ro'yxat shaklida atribut bo'yicha saralashni qanday amalga oshirish kerak?
O: Agar atribut ibtidoiy turdagi bo'lsa, u holda "Index" atributining xususiyatini "Index" yoki "Indeks" ga qo'shimcha ravishda belgilash kifoya. buyurtma berish” (ValueStorage tipidagi atributlar uchun mavjud emas). Agar atribut mos yozuvlar turiga tegishli bo'lsa, u uchun saralashni aniq yoqish kerak. Masalan:

ElementUE=Form Elements.DirectoryList.Order Settings.Find("Atribut1");
Agar ElementUE aniqlanmagan bo'lsa
ItemUE.Availability=true;
EndIf;

O'rnatilgan 1c tilidagi 1C 8.3 dagi satrlar ibtidoiy turdagi qiymatlardir. Chiziq. Ushbu turdagi qiymatlar ixtiyoriy uzunlikdagi Unicode qatorini o'z ichiga oladi. String tipidagi oʻzgaruvchilar qoʻshtirnoq ichiga olingan belgilar toʻplamidir.

1-misol. Matnli satr o'zgaruvchisini yaratamiz.

StringVariable = "Salom dunyo!";

1s da satrlar bilan ishlash funksiyalari 8.3

Ushbu bo'lim 1 soniyada satrlarni o'zgartirish yoki ulardagi ma'lumotlarni tahlil qilish imkonini beruvchi asosiy funktsiyalarni taqdim etadi.

StrLength

StrLength(<Строка>) . Parametrda uzatilgan qatordagi belgilar sonini qaytaradi.

2-misol. “Salom dunyo!” qatoridagi belgilar sonini hisoblaymiz.

String = "Salom dunyo!"; Belgilar soni = StrLength(String); Hisobot (belgilar soni);

Ushbu kodni bajarish natijasida qatordagi belgilar soni ko'rsatiladi: 11.

Qisqartirilgan

qisqartma(<Строка>) . Satrdagi birinchi muhim belgining chap tomonidagi ahamiyatsiz belgilarni qisqartiradi.
Ahamiyatsiz belgilar:

  • bo'sh joy;
  • buzilmaydigan bo'shliq;
  • jadval tuzish;
  • vagonni qaytarish;
  • satr tarjimasi;
  • shaklning tarjimasi (sahifa).

Misol 3. "Tinchlik!" qatorining chap tomonidagi barcha bo'shliqlarni olib tashlang. va unga "Salom" qatorini qo'shing.

String = abbr("dunyo!"); String = "Salom"+String; Xabar berish (String);

Ushbu kodning bajarilishi natijasi "Salom dunyo!" qatorining ekrani bo'ladi.

Qisqartirish

abbr(<Строка>) . Satrdagi birinchi muhim belgining o'ng tomonidagi ahamiyatsiz belgilarni kesadi.

4-misol. “Salom” va “dunyo!” qatorlaridan shakl. ibora "Salom dunyo!"

String = abbr("Salom")+" "+abbr("dunyo!"); Xabar berish (String);

Qisqartirilgan LP

Abbrl(<Строка>) . Satrdagi birinchi muhim belgining o'ng tomonidagi ahamiyatsiz belgilarni, shuningdek, satrdagi birinchi muhim belgining chap tomonidagi ahamiyatsiz belgilarni qisqartiradi. Bu funksiya oldingi ikkitasiga qaraganda tez-tez ishlatiladi, chunki u ko'p qirrali.

Misol 5. Kontragent nomidagi chap va o'ngdagi ahamiyatsiz belgilarni olib tashlang.

Pudratchi = Directories.Contractors.FindBy Details("TIN", "0777121211"); ContractorObject = Contractor.GetObject(); ContractorObject.Description = Qisqartirilgan LP(ContractorObject.Description); ContractorObject.Write();

sher

sher(<Строка>, <ЧислоСимволов>) . Satrning birinchi belgilarini oladi, belgilar soni parametrda ko'rsatilgan Belgilar soni.

Misol 6. Tuzilishi bo'lsin Xodim xodimning familiyasi, ismi va otasining ismini o'z ichiga oladi. Familiya va bosh harflar bilan qatorni oling.

InitialName = Sher(Ishchining ismi, 1); Ota ismining bosh harfi = Arslon (Xodim.Otasining ismi, 1); To'liq ism = Xodim.Familiya + " " + Ismning bosh harfi + "." + Ota ismining bosh harfi + ".";

Huquqlar

To'g'ri(<Строка>, <ЧислоСимволов>) . Satrning oxirgi belgilarini oladi, belgilar soni parametrda ko'rsatilgan Belgilar soni. Belgilangan belgilar soni satr uzunligidan oshsa, butun satr qaytariladi.

7-misol. “yyyymmdd” formatidagi satr o‘zgaruvchisi oxiriga sana yozilsin, sana ko‘rsatilgan qatorni oling va uni tipga aylantiring. sana.

String = "Joriy sana: 20170910"; StringData = Huquqlar (String, 8); Sana = Sana (StringDate);

chorshanba

chorshanba(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Parametrda uzatilgan satrdan pastki qatorni oladi Chiziq, parametrda raqami ko'rsatilgan belgidan boshlab Dastlabki raqam va parametrga o'tgan uzunlik Belgilar soni. Satrdagi belgilarni raqamlash 1 dan boshlanadi. Agar parametr Dastlabki raqam noldan kichik yoki teng qiymat ko'rsatilgan bo'lsa, u holda parametr qiymatni oladi 1. Agar parametr Belgilar soni belgilanmagan, satr oxirigacha bo'lgan belgilar tanlanadi.

Misol 8. Satr o'zgaruvchisi to'qqizinchi pozitsiyadan boshlab mintaqa kodini o'z ichiga oladi, siz uni olishingiz va uni alohida qatorga yozishingiz kerak.

String = "Region: 99 Moskva"; Hudud = Oʻrtacha(Qator, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Satrda ko'rsatilgan pastki qatorni qidiradi, topilgan pastki satrning birinchi belgisining pozitsiya raqamini qaytaradi. Ushbu funktsiyaning parametrlarini ko'rib chiqing:

  • Chiziq. Manba qatori;
  • SubstringSearch. Istalgan pastki qator;
  • Yo'nalish qidiruvi. Satrdagi pastki qatorni qidirish yo'nalishini belgilaydi. Qiymatlarni qabul qilishi mumkin:
    • Qidiruv yoʻnalishi. boshidan;
    • Yo'nalishni izlang. Oxiridan;
  • Boshlanish pozitsiyasi. Qidiruvni boshlash uchun satrdagi pozitsiyani belgilaydi;
  • Kirish raqami. Manba qatorida qidirilayotgan pastki qatorning takrorlanish sonini belgilaydi.

Misol 9. “Salom dunyo!” qatorida. "va" belgisining oxirgi paydo bo'lish o'rnini aniqlang.

PositionNumber = StrFind("Salom Dunyo!", "va", SearchDirection.From End); Xabar berish (lavozim raqami);

Ushbu kodni bajarish natijasi ekranda "va" belgisining oxirgi marta paydo bo'lishi sonining ko'rinishi bo'ladi: 9.

Vreg

VReg(<Строка>) . Belgilangan satrning barcha belgilarini 1s 8 ga katta harfga o'zgartiradi.

10-misol. “Salom dunyo!” qatorini aylantiring. bosh harfga.

StringVreg = Vreg("salom dunyo!"); Hisobot (StringVreg);

Ushbu kodning bajarilishi natijasi "HELLO WORLD!" qatorining ekrani bo'ladi.

HReg

HReg(<Строка>) . Belgilangan satrning barcha belgilarini 1s 8 ga kichik harfga o'zgartiradi.

11-misol. “HELLO WORLD!” qatorini aylantiring. kichik harfga.

StringNreg = NReg("SALOM DUNYO!"); Hisobot (StringVreg);

Ushbu kodning bajarilishi natijasi "salom dunyo!" qatorining ekrani bo'ladi.

TReg

TReg(<Строка>) . Satrni quyidagicha o'zgartiradi: har bir so'zning birinchi belgisi bosh harfga, so'zning qolgan belgilari kichik harfga aylantiriladi.

12-misol. “Salom dunyo!” qatoridagi so‘zlarning bosh harflarini bosh harf bilan yozing.

StringTreg = TReg("salom dunyo!"); Hisobot (StringTreg);

Ushbu kodning bajarilishi natijasi "Salom dunyo!" qatorining ekrani bo'ladi.

Belgi

Belgi(<КодСимвола>) . Unicode kodi bo'yicha belgi oladi.

13-misol. "Salom dunyo!" qatoriga chap va o'ng qo'shing. belgisi ★

StringWithStars = Belgi("9733")+"Salom dunyo!"+Belgi("9733"); Hisobot (StringWithStars);

Ushbu kodning bajarilishi natijasi "★Salom Dunyo!★" qatorining ekrani bo'ladi.

SymbolCode

SymbolCode(<Строка>, <НомерСимвола>) . Unicode belgilar kodini ikkinchi parametrda ko'rsatilgan pozitsiyada joylashgan birinchi parametrda ko'rsatilgan satrdan oladi.

14-misol. “Salom Dunyo!” qatoridagi oxirgi belgi kodini toping.

String = "Salom dunyo!"; CharacterCode =CharacterCode(String, StrLength(String)); Xabar berish (belgilar kodi);

Ushbu kodning bajarilishi natijasi "!" belgisi kodining ekrani bo'ladi. - 33.

Bo'sh qator

bo'sh qator (<Строка>) . Satr faqat ahamiyatsiz belgilardan iboratligini, ya'ni bo'shligini tekshiradi.

Misol 15. Satr bo'sh yoki uchta bo'sh joydan iboratligini tekshiring.

Empty = EmptyString(" "); Hisobot (bo'sh);

Ushbu kodning bajarilishi natijasi "Ha" so'zining ekrani bo'ladi (boolean qiymatning satr ifodasi To'g'ri).

StrReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Manba satrida qidiruv satrining barcha takrorlanishini topadi va uni almashtiriladigan pastki qator bilan almashtiradi.

Misol 16. “Salom dunyo!” qatorida. “Dunyo” so‘zi “Do‘stlar” so‘zi bilan almashtirilsin.

String = StrReplace("Salom Dunyo!", "Dunyo", "Do'stlar"); Xabar berish (String);

Ushbu kodning bajarilishi natijasi "Salom do'stlar!" qatorining ekrani bo'ladi.

StrNumberRows

StrNumber of Lines(<Строка>) . Ko'p qatorli satrlar sonini hisoblash imkonini beradi. 1s 8da yangi qatorga o'tish uchun belgidan foydalaniladi PS(satr tasmasi belgisi).

17-misol. Matndagi qatorlar sonini aniqlang:
"Birinchi qator
Ikkinchi qator
Uchinchi qator"

Raqam = StrNumber of Lines("Birinchi qator"+Symbols.PS +"Ikkinchi qator"+Symbols.PS +"Uchinchi qator"); Hisobot (raqam);

Ushbu kodni bajarish natijasi matndagi qatorlar sonining ko'rinishi bo'ladi: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Ko'p qatorli satrni raqami bo'yicha oladi. Qator raqamlash 1 dan boshlanadi.

18-misol. Matndagi oxirgi qatorni oling:
"Birinchi qator
Ikkinchi qator
Uchinchi qator"

Matn = "Birinchi qator"+Belgilar.PS +"Ikkinchi qator"+Belgilar.PS +"Uchinchi qator"; LastLine = StrGetLine(Matn, StrStrNumber of Lines(Matn)); Xabar berish (oxirgi qator);

Ushbu kodni bajarish natijasi "Uchinchi qator" qatorining ko'rinishi bo'ladi.

StrNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Satrda belgilangan pastki qatorning takrorlanish sonini qaytaradi. Funktsiya katta-kichik harflarga sezgir.

19-misol. “c” harfi “1s 8.3 va 8.2-dagi chiziqlar” qatoriga uning holatidan qatʼiy nazar necha marta kirishini aniqlang.

String = "1s 8.3 va 8.2 qatorlar"; Hodisalar soni = StrRumber soni(Vreg(String), "C"); hisobot (hodisalar soni);

Ushbu kodni bajarish natijasi ekranda sodir bo'lgan holatlar sonini ko'rsatadi: 2.

PageBeginsFrom

StrBeginsFrom(<Строка>, <СтрокаПоиска>) . Birinchi parametrda berilgan satr ikkinchi parametrdagi satr bilan boshlanishini tekshiradi.

Misol 20. Tanlangan kontragentning TIN 1 raqamidan boshlanishini aniqlang. O'zgaruvchi bo'lsin. kontragent Qarama-qarshi tomonlar.

TIN = Pudratchi TIN; StartsCUnits = StrStartsC(TIN, "1"); Agar StartsFROM1 Unda //Sizning kodingiz EndIf;

Sahifa tugaydi

StrEndsOn(<Строка>, <СтрокаПоиска>) . Birinchi parametrda o'tkazilgan satr ikkinchi parametrdagi satr bilan tugashini tekshiradi.

Misol 21. Tanlangan kontragentning TIN 2 raqami bilan tugaydimi yoki yo'qligini aniqlang. O'zgaruvchi bo'lsin. kontragent katalog elementiga havola saqlanadi Qarama-qarshi tomonlar.

TIN = Pudratchi TIN; Ikki bilan tugaydi = Str bilan tugaydi (TIN, "2"); Agar ikkita bilan tugasa //Kodingiz EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Belgilangan ajratuvchi belgilar bo'yicha satrni qismlarga ajratadi va olingan qatorlarni massivga yozadi. Birinchi parametr asl satrni saqlaydi, ikkinchi parametr chegaralovchini o'z ichiga olgan qatorni o'z ichiga oladi, uchinchi parametr massivga bo'sh satrlar yozilishi kerakligini ko'rsatadi (sukut bo'yicha To'g'ri).

22-misol. Faraz qilaylik, bizda “;” belgisi bilan ajratilgan raqamlardan iborat qator bor, qatordan raqamlar massivini oling.

String = "1; 2; 3"; Massiv = StrSplit(String, ";"); Hisob uchun = 0 Array.Quantity() bo'yicha - 1 sikl urinish massivi[Count] = Raqam(Ablp(Array[Count])); Istisno massivi[W] = 0; EndTry EndCycle;

Bajarish natijasida 1 dan 3 gacha raqamlarga ega massiv olinadi.

StrConnect

StrConnect(<Строки>, <Разделитель>) . Birinchi parametrdagi satrlar massivini ikkinchi parametrda ko'rsatilgan chegaralovchi yordamida massivning barcha elementlarini o'z ichiga olgan qatorga aylantiradi.

Misol 23. Oldingi misoldagi raqamlar massividan foydalanib, asl qatorni oling.

Hisob uchun = 0 Array.Quantity() bo'yicha - 1 Loop Array[Count] = String(Array[Count]); EndCycle; String = StrConnect(Masiv, ";");

String turi barcha dasturlash tillarida uchraydi. Bu ibtidoiy va 1C da u bilan ishlash uchun juda ko'p funktsiyalar mavjud. Ushbu maqolada biz misollar yordamida 1C 8.3 va 8.2 da string turlari bilan ishlashning turli usullarini batafsil ko'rib chiqamiz.

Chiziq

Har qanday turdagi o'zgaruvchini satrga aylantirish uchun bir xil nomdagi "String ()" funksiyasi mavjud. Kirish parametri o'zgaruvchining o'zi bo'ladi, uning satr tasviri olinadi.

String(False) // "Yo'q"ni qaytaradi
String (12345) // "12 345" ni qaytaradi
String(CurrentDate()) //"21.07.2017 11:55:36"

Satrga faqat ibtidoiy turlarni emas, balki boshqa, masalan, katalog va hujjatlarning elementlarini ham aylantirish mumkin.

Qisqartirilgan LP, qisqartirilgan L, qisqartirilgan P

Bu funksiyalarning kirish parametrlari qator tipidagi o‘zgaruvchidir. Funktsiyalar ahamiyatsiz belgilarni (bo'shliqlar, karetaning qaytishi va boshqalar) olib tashlaydi: chap va o'ng tomondan, faqat chap tomondan va faqat o'ngdan.

abbrl("Ikkala tomondagi bo'shliqlar o'chiriladi") // "Ikkala tomondagi bo'shliqlar o'chiriladi"
abbr("Ikkala tomondagi bo'shliqlar o'chiriladi") // "Chapdagi bo'shliqlar o'chiriladi"
abbr(" Ikkala tomondagi bo'shliqlar o'chiriladi ") // "O'ngdagi bo'shliqlar o'chiriladi"

Arslon, o'ng, o'rta

Bu funksiyalar qatorning bir qismini kesish imkonini beradi. Lion() funksiyasi belgilangan uzunlikdagi satrning chap tomonidagi qismini qaytaradi. "O'ng ()" funktsiyasi shunga o'xshash, ammo kesish o'ngda amalga oshiriladi. "Wed()" funksiyasi qator tanlanadigan belgilar raqamini va uning uzunligini belgilash imkonini beradi.

Lion("String o'zgaruvchisi", 4) // "Stro" ni qaytaradi
Right("String o'zgaruvchisi", 7) // "o'zgaruvchi"ni qaytaradi
avg("String o'zgaruvchisi", 2, 5)// "troko" ni qaytaradi

StrLength

Funktsiya satr o'zgaruvchisi tarkibidagi belgilar sonini aniqlaydi.

StrLength("Word") // bajarilish natijasi 5 raqami bo'ladi

Toping

Funktsiya satr o'zgaruvchisida satrning bir qismini qidirish imkonini beradi. Qaytish qiymati topilgan satr boshining o'rnini ko'rsatadigan raqam bo'ladi. Hech qanday moslik topilmasa, nol qaytariladi.

Qidiruv katta-kichik harflarga sezgir ekanligini unutmang. Agar asl satrda qidiruv satrining bir nechta takrorlanishi bo'lsa, funktsiya birinchi takrorlanishning boshlanishini qaytaradi.

Find("bir, ikki, bir, ikki, uch", "ikki") // funksiya 6 raqamini qaytaradi

Bo'sh qator

Ushbu funktsiyadan foydalanish satr bo'sh yoki yo'qligini aniqlash imkonini beradi. Bo'sh joy, karetaning qaytishi va boshqalar kabi ahamiyatsiz belgilar hisobga olinmaydi.

EmptyString("Vasiliy Ivanovich Qovoq") // funksiya False qiymatini qaytaradi
EmptyString(" ") // funksiya True qaytaradi

VReg, NReg, TReg

Bu funksiyalar qator o‘zgaruvchilarni solishtirish va konvertatsiya qilishda juda foydali. "Vreg()" asl satrni katta harf bilan, "HReg()" kichik harfda va "TReg()" uni har bir alohida so'zning birinchi belgisi bosh harf bilan, keyingi barcha belgilar esa kichik harf bilan yozilishi uchun formatlaydi.

VReg("GENERAL DIRECTOR") // qaytariladigan qiymat - "GENERAL DIRECTOR"
HReg("GENERAL DIRECTOR") // qaytariladigan qiymat - "CEO"
TReg("GENERAL DIRECTOR") // qaytariladigan qiymat - "Bosh direktor"

StrReplace

Bu funksiya matn muharrirlarida almashtirishga o'xshaydi. U qator oʻzgaruvchilarda bir belgi yoki belgilar toʻplamini boshqasiga almashtirish imkonini beradi.

StrReplace("qizil, oq, sariq", ",", ";") // "qizil"ni qaytaradi; Oq; sariq"

StrNumberRows

Funktsiya matn o'zgaruvchisida karetaning qaytishi bilan ajratilgan qatorlar sonini aniqlash imkonini beradi.

Quyidagi misoldagi tsikl uchta aylanadan o'tadi, chunki StrNumberRows funktsiyasi 3 qiymatini qaytaradi:

Ind \u003d 1 uchun StrNumber of Lines ("Line1" + Symbols.PS + "String2" + Symbols.PS + "Line3") Loop
<тело цикла>
EndCycle;

StrGetString

Bu funksiya ko'p qatorli matn bilan xuddi oldingisi kabi ishlaydi. Bu matn o'zgaruvchisidan ma'lum bir qatorni olish imkonini beradi.

StrGetString("String1" + Symbols.PS + "String2" + Symbols.PS + "String3", 2) // "2-qator" ni qaytaradi

StrNumberOccurrences

Funktsiya qidirilayotgan satrda belgi yoki pastki qatorning takrorlanish sonini hisoblaydi.

StrNumberInstallations("a;b;c;d; ", ";") // funksiya 4 raqamini qaytaradi

Symbol va SymbolCode

Bu funksiyalar belgini uning Unicode kodi bo'yicha olish, shuningdek, ushbu kodni belgining o'zi bilan aniqlash imkonini beradi.

SymbolCode("A") // funksiya 1 040 raqamini qaytaradi
SymbolCode (1040) // funktsiya "A" ni qaytaradi

Satrlar bilan ishlashda tez-tez bajariladigan vazifalar

Satrlarni birlashtirish

Bir nechta satrlarni birlashtirish (birlashtirish) uchun qo'shish operatoridan foydalaning.

"1-qator" + "2-qator" //ikkita qatorni qo'shish natijasi "1-qator 2-qator" bo'ladi.

Konvertatsiya turi

Turni satrga, masalan, lug‘at elementiga, raqamga va hokazolarga havolani aylantirish uchun “String ()” funksiyasidan foydalanish kifoya. "ShortLp()" kabi funktsiyalar ham o'zgaruvchilarni satrga aylantiradi, lekin darhol ahamiyatsiz belgilarni kesib tashlaydi.

String (1000) // "1000" ni qaytaradi

E'tibor bering, raqamni satrga o'zgartirganda, dastur avtomatik ravishda mingni ajratib turadigan bo'sh joy qo'shadi. Bunga yo'l qo'ymaslik uchun siz quyidagi tuzilmalardan foydalanishingiz mumkin:

StrReplace(String(1000),Characters.NPP,"") // "1000"ni qaytaradi

String(Format(1000,"CH=")) // "1000"ni qaytaradi

Satrdagi iqtiboslar

Ko'pincha siz satr o'zgaruvchisiga tirnoq qo'yish zarurati bilan shug'ullanishingiz kerak bo'ladi. Bu konfiguratorda yozilgan so'rov matni yoki shunchaki o'zgaruvchi bo'lishi mumkin. Ushbu muammoni hal qilish uchun siz ikkita tirnoq belgisini o'rnatishingiz kerak.

Header = String("Horns and Hooves LLC - bu biz!") // "Roga and Hooves LLC - biz!"

Ko'p qatorli, qator uzilishi

Ko'p qatorli matn yaratish uchun unga satrlarni ajratish belgilarini (Symbols.PS) qo'shish kifoya.

MultilineText = "Birinchi qator" + Belgilar.PS + "Ikkinchi qator"

Bo'shliqlarni qanday olib tashlash mumkin

O'ng yoki chapdagi bo'shliqlarni olib tashlash uchun siz "StretchLp()" (shuningdek, "Scrpt()" va "ScreenP()" funksiyasidan foydalanishingiz mumkin:

StringWithoutSpaces = ShortLP(" Ko'p harf ") // funktsiya "Ko'p harf" qiymatini qaytaradi

Agar raqamni satrga aylantirgandan so'ng, siz uzilmaydigan bo'shliqlarni olib tashlashingiz kerak bo'lsa, quyidagi konstruktsiyadan foydalaning:

StringWithoutSpaces = StrReplace(String(99999),Characters.NPP,"") // "99999"ni qaytaradi

Bundan tashqari, dasturchilar ko'pincha matn o'zgaruvchisining barcha bo'shliqlarini olib tashlash yoki boshqa belgi bilan almashtirish imkonini beruvchi quyidagi konstruktsiyadan foydalanadilar:

StringWithoutSpaces = StrReplace(" salom", " " ,"") // "salom"ni qaytaradi

Iplarni bir-biri bilan solishtirish

Siz atamalarni odatdagi tenglik belgisi bilan solishtirishingiz mumkin. Taqqoslash katta-kichik harflarga sezgir.

"salom" = "salom" // yolg'onni qaytaradi
"Salom" = "Salom" // "To'g'ri" ni qaytaradi
"Salom" = "Alvido" // False qiymatini qaytaradi