Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Lajme
  • Hiqni hapësirat shtesë 1s. Heqja e hapësirave që nuk prishen

Hiqni hapësirat shtesë 1s. Heqja e hapësirave që nuk prishen

FAQ ose platforma 8 për dummies.

Duke gjykuar nga forumet kushtuar 1C, programuesit që takuan për herë të parë platformën 1C v 8 ose kalimin nga 7.7 shpesh kanë të njëjtat pyetje. Këtu vendosa të mbledh më të zakonshmet, për mendimin tim ...

NË: Si të hiqni një hapësirë ​​në numrin 12,600.00?
RRETH:Është e rëndësishme të kuptohet se nuk është karakteri hapësinor që përdoret këtu, por e ashtuquajtura "hapësirë ​​jo e prishur", pra, për shembull, ndërtimi i mëposhtëm:

StrReplace(Numri i ndryshueshëm", ","");

nuk punon. Ekzistojnë dy opsione për zgjidhjen e problemit, ose specifikoni Symbols.NPP për zëvendësim në vend të një hapësire, ose duke përdorur funksionin Format ().

StrReplace(VariableNumber, Symbols.NPP,""); // Opsioni i parë
Format(Numri i ndryshueshëm,"CH="); // Opsioni i dytë

NË: Si të vendosni një kusht në një pyetje në mënyrë të tillë që vetëm dokumentet e një lloji të caktuar të përfshihen në përzgjedhjen që rezulton?
RRETH: Kjo mund të bëhet duke përdorur operatorin e gjuhës së pyetjes REFERENCE, i cili ju lejon të kontrolloni nëse vlera e shprehjes së specifikuar në të majtë të saj është një referencë për tabelën e specifikuar në të djathtë. Merrni një shembull, zgjidhni nga regjistri i akumulimit Realizimi i shërbimeve vetëm ato regjistrime për të cilat regjistruesi është dokumenti Realizimi i mallrave dhe shërbimeve:

Kërkesë=Kërkesë e re("
|ZGJIDH
| Zbatimi i Shërbimeve.
| Zbatimi i Shërbimeve.Shuma
| NGA
| Regjistri i Akumulimit Zbatimi i Shërbimeve AS Zbatimi i Shërbimeve
| KU
| Dokumenti LINK i Regjistruesit. Shitjet e Mallrave dhe Shërbimeve");

NË: Si të transferoni dokumente/drejtori të caktuara midis konfigurimeve identike?
RRETH: Kjo mund të bëhet me ndihmën e përpunimit të mostrës UploadUploadDataXML.epf të ofruar në disqet ITS.

NË: Si të transferoni të dhëna midis konfigurimeve të ndryshme (ose nga 7.7 në 8)?
RRETH: Opsioni më i mirë, për mendimin tim, është përdorimi i konfigurimit tipik "Konvertimi i të dhënave", i cili ofrohet në disqet ITS, ka gjithashtu disa artikuj që përshkruajnë përdorimin e këtij konfigurimi.

NË: Si të shtoni një varg të caktuar në një fushë të llojit jo-string në një pyetje, për shembull, SELECT Realizimi i Mallrave të Shërbimeve. Shuma + "fshij."?
RRETH: Në asnjë mënyrë. Konvertimi i tipit nuk është i mundur në një pyetje. Konstruksioni i gjuhës së pyetjes EXPRESS është mashtrues për disa, por ai vetëm hedh një vlerë të një tipi të përbërë në një nga llojet e përbërësve të asaj vlere dhe nuk e konverton në asnjë mënyrë llojin, kështu që nuk është i zbatueshëm në këtë situatë.

NË: Si të vendosni një kusht në një pyetje në një fushë me llojin e vargut me gjatësi të pakufizuar, për shembull, zgjidhni të gjitha dokumentet me një koment të caktuar?
RRETH: Për ta bërë këtë, duhet të kufizoni gjatësinë e fushës duke përdorur operatorin e gjuhës së pyetjes EXPRESS. Për shembull:

Kërkesë=Kërkesë e re("
|ZGJIDH
| Realizimi i mallrave dhe sherbimeve.Lidhja
| NGA
| Dokumenti.Shitja e Mallrave/Shërbimeve SI Realizimi i Mallrave/Shërbimeve
| KU
| EXPRESS(ImplementationProductsServices.Koment AS STRING(100)) = &Koment");

NË: A ka një analog të funksionit 7.7 CatalogIB() në v 8?
RRETH: Jo, pasi një funksion i tillë nuk do të kishte kuptim për një mënyrë funksionimi klient-server. Sidoqoftë, për mënyrën e funksionimit të skedarit, mund të merrni direktorinë e infobazës duke përdorur ndërtimin e mëposhtëm:

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

NË: Si të shkëputni një nyje nga një infobazë e shpërndarë?
RRETH: Me konstruktin e mëposhtëm:

Planet e Shkëmbimit.SetMainNode(I Padefinuar);

Ose ekzekutoni konfiguruesin me parametrin e linjës së komandës /ResetMasterNode (nuk përdoret për versionet bazë).

NË: Si të merrni emrin e dokumentit (analog me metodën 7.7 View())?
RRETH: Me ndihmën e meta të dhënave. Për shembull:

NË: Si të zgjidhni dokumente të të gjitha llojeve me një pyetje?
RRETH: Përdorimi i meta të dhënave dhe aftësia për të kombinuar pyetjet NË:

Kërkesë=Kërkesë e re;
Tekst="";
Për çdo dokument nga Metadata.Dokumentet Loop
Text=Tekst+"ZGJIDH Lidhjen NGA Dokumenti."+Dokumenti.Emri+"BASHKOHU";
Cikli i Fundit;
Query.Text=Lev(Text, StrLength(Text)-StrLength("UNITE"));
Përzgjedhja=Pyetësi.Ekzekuto().Zgjidh();

NË: Si të ndërpritet ekzekutimi i një raporti/përpunimi?
RRETH: Me operatorin UserInterruptHandle(), rekomandohet përdorimi i tij brenda sytheve. Kur përdoruesi shtyp kombinimin e tastit Ctrl+Break, ekzekutimi ndërpritet dhe shfaqet një mesazh përkatës. Për shembull:

Ndërsa Selection.Next() Loop
HandlingUserInterrupt();

Cikli i Fundit;

NË: Formulari ka një TableField me llojin ValueTree dhe grupin e vetive Tree. Pse nuk shfaqet Pema e vlerës?
RRETH:Është gjithashtu e nevojshme të vendoset vetia DisplayHierarchy për njërën nga kolonat.

NË: Si të përdorni detyrat e planifikuara në modalitetin e skedarit të bazës së informacionit?
RRETH: Ndryshe nga mënyra klient-server, në modalitetin e skedarit, zhvilluesi është përgjegjës për zbatimin e nisjes automatike të detyrave të planifikuara. Për të zbatuar fillimin automatik të punëve, ju nevojitet një mbajtës i pritjes që kontrollon periodikisht për punë "të vonuara" dhe i nis ato. Rekomandohet shumë të përdorni një seancë të veçantë për këtë. Shembull:

Procedura e kontrollit të detyrës ().
ExecuteProcessingJobs();
Përfundimi i procedurës
ConnectWaitingHandler ("CheckingTasks",3);

NË: Si të merrni një grup nga një varg i kufizuar?
RRETH: Si shembull, unë do të jap versionin tim të një funksioni që funksionon "në të dy drejtimet", d.m.th. kur kalon një varg të kufizuar, formon një varg dhe kur kalon një varg, formon një varg të kufizuar prej tij.

Funksioni StringArray (Vlera e vlerës, ndarës)
Nëse TypeValue(Value)=Type("String") Pastaj
MnStr=StrReplace(Vlera, Separator, Simbolet.PS);
Array=Array i ri;
Për n=1 Sipas ciklit StrNumri i rreshtave (MnStr).
Array.Add(StrGetString(MnStr,n));
Cikli i Fundit;
Array e kthimit;
ElseIf TypeValue(Value)=Type("Array") Pastaj
String="";
Për çdo element nga cikli i vlerës
String=String+?(String"",Ndarës,"")+Element;
Cikli i Fundit;
Vargu i Kthimit;
Përndryshe
Kthimi i Papërcaktuar;
FundNëse;
Funksionet e Fundit

NË: Si të aktivizoni aftësinë për të bërë ndryshime në konfigurues në një konfigurim tipik?
RRETH: Meqenëse konfigurimet tipike mbështeten (që lejon përditësimet automatike), si parazgjedhje, aftësia për të bërë ndryshime në konfigurim është e çaktivizuar. Për të aktivizuar këtë veçori, zgjidhni artikullin e menysë "Konfigurimi > Mbështetja > Cilësimet e mbështetjes" në konfigurues dhe klikoni butonin "Aktivizo aftësinë për të ndryshuar" në dritaren që hapet.

NË: Si të vendosni një fjalëkalim për përpunim/konfigurim?
RRETH: Në 1C v 8, fjalëkalimet mund të vendosen vetëm në modulet e objekteve. Për të vendosur një fjalëkalim, duhet të hapni modulin e objektit dhe të zgjidhni artikullin e menysë "Tekst > Vendos fjalëkalimin". Është gjithashtu e mundur të sigurohet konfigurimi pa kodin burimor të moduleve të objektit (konfigurimi "Konfigurimi > Dorëzimi i konfigurimit > Cilësimet e dorëzimit"). Dua të vërej se për momentin, asnjë nga këto metoda nuk është një mbrojtje e besueshme kundër shikimit të kodit burimor të modulit.

NË: Pse kërkimi për një dokument nuk funksionon duke përdorur FindByNumber(<Номер документа>)?
RRETH: Duhet mbajtur mend se nëse është vendosur numërimi periodik për këtë lloj dokumentesh në konfigurues, përveç numrit të dokumentit, është e nevojshme të tregohet data e intervalit si parametër i dytë. Përndryshe, do të kërkohet një dokument me një datë të zbrazët, i cili padyshim nuk do të çojë në rezultatin e dëshiruar.

NË: Në 1C 8.1, nëse duhet të lidheni me një aplikacion tashmë të ekzekutuar për korrigjimin (Konfiguruesi > Korrigjimi > Lidhja), artikujt e disponueshëm të korrigjimit janë bosh. Cila eshte arsyeja?
RRETH: Fakti është se për aplikacionin që do të korrigjojmë, duhet të aktivizoni në mënyrë të qartë korrigjimin. Menyja e mjeteve > Opsionet > skeda e Sistemit > Flamuri i aktivizuar i korrigjimit.

NË: Si të renditni rreshtat e një liste dinamike (për shembull, Lista Directory ose DocumentList)?
RRETH: Kjo mund të bëhet duke përdorur Report Builder, për shembull:

Ndërtues=Ndërtues i raportit të ri;
Builder.DataSource=NewDataSourceDescription(Lista e Dokumenteve);
Zgjedhja=Ndërtuesi.Rezultati.Zgjidh();
Ndërsa Selection.Next() Loop
Raporti (Përzgjedhja. Lidhje);
Cikli i Fundit;

Shënim: përzgjedhja do të përfshijë rreshta në përputhje me përzgjedhjen e vendosur aktualisht.

NË: Si të kontrolloni vlerat e vetive të objekteve të meta të dhënave? Për shembull, lloji i hierarkisë së drejtorisë ose mënyra e regjistrimit të regjistrit, apo frekuenca e numrit të dokumentit?
RRETH: Të gjitha këto veti janë veti të numëruara të objekteve të meta të dhënave. Ju gjithashtu mund të merrni vlera të këtij lloji përmes meta të dhënave. Shembuj:

// Shembulli 1. Pamja e Hierarkisë së Kërkimit
If Metadata.Catalogs[CatalogName].HierarchyView = Metadata.ObjectProperties.HierarchyView.HierarchyGroupsAndItems Pastaj...
// Shembulli 2. RegisterWriteMode
Nëse Metadata.InformationRegisters[RegisterName].RegisterWriteMode = Metadata.ObjectProperties.RegisterWriteMode.RegisterSubordinate Pastaj...
// Shembulli 3. Numri periodik i dokumentit
Nëse Metadata.Dokumentet[Emri i Dokumentit].Numri Periodiciteti = Metadata.ObjectProperties.Numri i Dokumentit Periodiciteti.Jo Periodike Pastaj...

NË: Si të zbatohet një kuti kontrolli me tre gjendje në pemën e vlerave?
RRETH: Le të shqyrtojmë deklaratën e problemit në më shumë detaje. Formulari ka një fushë tabele, burimi i të dhënave të së cilës është një pemë vlerash. Një nga kolonat përmban një kontroll të kutisë së kontrollit. Është e nevojshme që ajo të mund të marrë tre gjendje "On", "Off" dhe "I papërcaktuar". Në këtë rast, shteti është "I papërcaktuar" ose i ashtuquajturi "flamur gri", d.m.th. pjesërisht e zgjedhur, vendos nëse jo të gjitha rreshtat e varur kanë të njëjtën gjendje flamuri. Gjithashtu, nëse një rresht ka rreshta të varur, atëherë kur flamuri i tij ndryshohet, flamujt e të gjitha rreshtave të varur duhet të ndryshohen në përputhje me rrethanat.
Së pari, le të shtojmë kolonën tonë të kutisë së kontrollit në pemën e vlerës:

Tree.Columns.Add("Mark",NewTypeDescription("Numër"));
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=E vërtetë;

Së dyti, kur ndryshoni flamurin, duhet të vendosni vlerat e duhura në rreshtat vartëse dhe të kontrolloni vlerën e flamurit në "rreshtin prind":

Procedura TreeOn Changing a Flag (element, kolonë)
CurrentRow=Elementi.Rreshti aktual;
Nëse CurrentLine.Mark=2 Atëherë
CurrentLine.Mark=0;
FundNëse;
SettingFlags (Rreshti aktual, Rreshti aktual.Mark);
Ndërsa CurrentRow.ParentUndefined Loop
CurrentRow.Parent.Label=?(SetForAll(CurrentRow),CurrentRow.Label,2);
CurrentRow=Rreshti aktual.Prindër;
Cikli i Fundit;
Përfundimi i procedurës

Këtu, procedura SetFlags() vendos në mënyrë rekursive flamujt në nënrendet:

Procedura SetFlags (Rreshti aktual, Vlera)
Për çdo faqe të CurrentRow.Rreshtave Loop
PageMark=Vlera;
SetFlags (Pg,Pg.Mark);
Cikli i Fundit;
Përfundimi i procedurës

Dhe funksioni SetForAll() kontrollon nëse e njëjta vlerë është vendosur për të gjitha rreshtat në nivelin aktual:

Funksioni SetForAll(String)
Për çdo faqe të rreshtit.Parent.Rresht
Nëse Page.MarkString.Mark Pastaj
kthej false;
FundNëse;
Cikli i Fundit;
kthehu i vërtetë;
Funksionet e Fundit

NË: Si të zbatohet renditja sipas atributeve në formën e listës?
RRETH: Nëse atributi është i një tipi primitiv, atëherë mjafton të vendoset vetia e atributit "Index" në "Index" ose "Index me shtesë. porositja” (nuk disponohet për atributet e llojit ValueStorage). Nëse atributi është i një lloji referimi, atëherë është e nevojshme që në mënyrë eksplicite të mundësohet renditja për të. Për shembull:

ElementUE=Form Elements.DirectoryList.Order Settings.Find("Atributi1");
Nëse ElementUE është i papërcaktuar atëherë
ItemUE.Availability=true;
FundNëse;

Ndodh shpesh që gjatë ngarkimit dhe shkarkimit të të dhënave nga 1C 8.2 dhe 8.3, të ketë hapësira në numra që pengojnë që të dhënat të përpunohen normalisht. Zgjidhja e këtij problemi është shumë e thjeshtë.

Konsideroni se cilat janë llojet e boshllëqeve.

Hapësirat mund të jenë të dy llojeve:

  • hapësirë ​​që nuk prishet;
  • hapësirë ​​"e rregullt".

Heqja e hapësirave që nuk prishen

StringRepresentation = String(Number); // sistemi do të shkruajë në variablin "10 000"

Heqja e hapësirave të tilla në 1C është shumë e thjeshtë përmes funksionit të formatit të numrave:

Numri = Formati (10000, "CH=");

StringRepresentation = String(Number); // sistemi do të shkruajë në variablin "10000"

Ne vendosëm grupimin në vargun e formatit në një vlerë boshe (mund të shkruani gjithashtu "0").

Nëse lloji i të dhënave është tashmë "string", atëherë mund të përdoret metoda e mëposhtme:

StringRepresentation = StrReplace(String(StringRepresentation), Karakteret.NPP, ""); // ndryshorja StringRepresentation ishte "10 000", u bë "10000"

Kjo do të thotë, ne thjesht zëvendësuam hapësirën pa ndërprerje (Symbols.NPP) në varg me një vlerë boshe.

Hapësira të rregullta

Heqja e një hapësire të rregullt në një varg është po aq e lehtë sa të grisësh dardha. Mjafton të ekzekutoni funksionin e mëposhtëm:

StringRepresentation = StrReplace(String(StringRepresentation), " ", ""); // "10,000" u bë "10,000"

Shembulli është i ngjashëm me metodën e mëparshme. Megjithatë, në vend të Symbols.npp, ne përdorim një varg me një hapësirë.

Nëse po filloni të mësoni programimin 1C, ju rekomandojmë kursin tonë falas (mos harroni abonohuni në youtube - Videot e reja publikohen rregullisht.

Lloji String gjendet në të gjitha gjuhët e programimit. Është primitiv, dhe në 1C ka shumë funksione për të punuar me të. Në këtë artikull, ne do të shqyrtojmë në detaje mënyrat e ndryshme për të punuar me llojet e vargjeve në 1C 8.3 dhe 8.2 duke përdorur shembuj.

Linjë

Për të kthyer një variabël të çdo lloji në një varg, ekziston një funksion me të njëjtin emër "String()". Parametri i hyrjes do të jetë vetë ndryshorja, paraqitja e vargut të së cilës duhet të merret.

String (False) // kthen "Jo"
String(12345) // kthen "12 345"
String(Data aktuale()) //"21.07.2017 11:55:36"

Është e mundur të konvertohen në një varg jo vetëm lloje primitive, por edhe të tjerë, për shembull, elementë të drejtorive dhe dokumenteve.

Shkurtuar LP, Shkurtuar L, Shkurtuar P

Parametrat hyrës të këtyre funksioneve janë një variabël e llojit të vargut. Funksionet heqin karaktere të parëndësishme (hapësira, kthime të karrocave, etj.): nga ana e majtë dhe e djathtë, respektivisht vetëm nga ana e majtë dhe vetëm nga e djathta.

abbrl("Hapësirat në të dyja anët do të hiqen") // "Hapësirat në të dyja anët do të hiqen"
abbr("Hapësirat në të dyja anët do të hiqen") // "Hapësirat në të majtë do të hiqen"
abbr(" Hapësirat në të dyja anët do të hiqen ") // "Hapësirat në të djathtë do të hiqen"

Leo, djathtas, mes

Këto funksione ju lejojnë të prisni një pjesë të vargut. Funksioni Lion() do të kthejë pjesën e vargut në anën e majtë të gjatësisë së specifikuar. Funksioni "Right()" është i ngjashëm, por prerja bëhet në të djathtë. Funksioni "Wed()" ju lejon të specifikoni numrin e karaktereve nga i cili do të zgjidhet vargu dhe gjatësinë e tij.

Lion("variabla e vargut", 4) // kthen "Stro"
Right("variabla e vargut", 7) // kthen "ndryshore"
avg("variabla e vargut", 2, 5)// kthen "troco"

Fortësia

Funksioni përcakton numrin e karaktereve që përmbahen në një variabël vargu.

StrLength ("Fjala") // rezultati i ekzekutimit do të jetë numri 5

Per te gjetur

Funksioni bën të mundur kërkimin e një pjese të një vargu në një variabël vargu. Vlera e kthyer do të jetë një numër që tregon pozicionin e fillimit të vargut të gjetur. Nëse nuk gjenden ndeshje, zero kthehet.

Vini re se kërkimi është i ndjeshëm ndaj shkronjave të vogla. Nëse ka më shumë se një shfaqje të nënvargut të kërkimit në vargun origjinal, funksioni do të kthejë fillimin e ndodhjes së parë.

Gjeni ("një, dy, një, dy, tre", "dy") // funksioni do të kthejë numrin 6

Linjë bosh

Përdorimi i këtij funksioni ju lejon të përcaktoni nëse një varg është bosh. Karakteret e parëndësishme, si hapësira, kthimi i karrocës dhe të tjera nuk merren parasysh.

EmptyString ("Vasily Ivanovich Pupkin") // funksioni do të kthehet False
EmptyString(" ") // funksioni do të kthehet i vërtetë

VReg, NReg, Treg

Këto funksione janë shumë të dobishme kur krahasohen dhe konvertohen variablat e vargut. "Vreg()" do të kthejë vargun origjinal me shkronja të mëdha, "HReg()" me shkronja të vogla dhe "Treg()" do ta formatojë atë në mënyrë që karakteri i parë i secilës fjalë individuale të shkruhet me shkronja të mëdha dhe të gjithë karakteret pasuese të jenë të vogla.

VReg("DREJTORI I PËRGJITHSHËM") // vlera e kthimit - "DREJTORI I PËRGJITHSHËM"
HReg ("DREJTORI I PËRGJITHSHËM") // vlera e kthimit - "CEO"
Treg ("DREJTORI I PËRGJITHSHËM") // vlera e kthimit - "Drejtori i Përgjithshëm"

StrReplace

Ky funksion është i ngjashëm me zëvendësimin në redaktuesit e tekstit. Kjo ju lejon të zëvendësoni një karakter ose grup karakteresh me një tjetër në variablat e vargut.

StrReplace("e kuqe, e bardhë, e verdhë", ",", ";") // kthen "të kuqe; E bardhë; e verdhe"

StrNumberRows

Funksioni ju lejon të përcaktoni numrin e rreshtave të ndara nga një kthim në një variabël teksti.

Cikli në shembullin e mëposhtëm do të kalojë nëpër tre rrathë sepse funksioni StrNumberRows do të kthejë vlerën 3:

Për ind \u003d 1 nga StrNumber of Lines ("Line1" + Simbols.PS + "String2" + Symbols.PS + "Line3") Loop
<тело цикла>
Cikli i Fundit;

StrGetString

Ky funksion funksionon me tekst me shumë rreshta në të njëjtën mënyrë si ai i mëparshmi. Kjo ju lejon të merrni një varg specifik nga një variabël teksti.

StrGetString("String1" + Symbols.PS + "String2" + Symbols.PS + "String3", 2) // kthen "Line2"

StrNumberOccurrences

Funksioni numëron numrin e shfaqjeve të një karakteri ose nënvargu në vargun e kërkuar.

StrNumberInstallations("a;b;c;d; ", ";") // funksioni do të kthejë numrin 4

Simboli dhe kodi i simboleve

Këto funksione ju lejojnë të merrni një karakter nga kodi i tij Unicode, si dhe të përcaktoni këtë kod nga vetë karakteri.

SymbolCode("A") // funksioni do të kthejë numrin 1 040
SymbolCode(1040) // funksioni do të kthejë "A"

Detyra të shpeshta kur punoni me vargje

Lidhja e vargut

Për të lidhur vargje të shumta (lidhni) thjesht përdorni operatorin e mbledhjes.

"Rreshti 1" + "Rreshti 2" //rezultati i shtimit të dy rreshtave do të jetë "Rreshti 1 Linja 2"

Konvertimi i llojit

Për të kthyer një lloj në një varg, për shembull, një referencë për një element fjalori, një numër etj., mjafton të përdorni funksionin "String ()". Funksionet si "ShortLP()" do të konvertojnë gjithashtu variablat në një varg, por menjëherë me prerje të karaktereve të parëndësishme.

String (1000) // do të kthejë "1000"

Ju lutemi vini re se kur konverton një numër në një varg, programi shtoi automatikisht një hapësirë ​​që ndan një mijë. Për të shmangur këtë, mund të përdorni strukturat e mëposhtme:

StrReplace(String(1000),Characters.NPP,"") // kthen "1000"

String(Format(1000,"CH=")) // do të kthejë "1000"

Citate në një varg

Shumë shpesh do t'ju duhet të përballeni me nevojën për të vendosur thonjëza në një variabël vargu. Mund të jetë ose një tekst kërkese i shkruar në konfigurues, ose thjesht një ndryshore. Për të zgjidhur këtë problem, ju vetëm duhet të vendosni dy karaktere citate.

Header = String("Horns and Hooves LLC is us!") // kthen "Roga and Hooves LLC is ne!"

Shumë linjë, ndërprerje rreshti

Për të krijuar një tekst me shumë rreshta, mjafton të shtoni karaktere të ndërprerjes së rreshtit (Symbols.PS).

MultilineText = "First Line" + Characters.PS + "Second Line"

Si të hiqni hapësirat

Për të hequr hapësirat në të djathtë ose në të majtë, mund të përdorni funksionin "Stretch()" (si dhe "Scrpt()" dhe "ScreenP()"):

StringWithoutSpaces = ShortLP (" Shumë shkronja ") // funksioni do të kthejë vlerën "Shumë shkronja"

Nëse, pas konvertimit të një numri në një varg, duhet të hiqni hapësirat që nuk prishen, përdorni konstruksionin e mëposhtëm:

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

Gjithashtu, programuesit shpesh përdorin konstruksionin e mëposhtëm, i cili ju lejon të hiqni ose zëvendësoni të gjitha hapësirat e një ndryshoreje teksti me një karakter tjetër:

StringWithoutSpaces = StrReplace(" përshëndetje", " ","") // kthen "përshëndetje"

Krahasimi i vargjeve me njëri-tjetrin

Ju mund të krahasoni termat me shenjën e zakonshme të barazimit. Krahasimi është i ndjeshëm ndaj rasteve.

"hello" = "përshëndetje" // do të kthehet false
"Hello" = "Përshëndetje" // do të kthehet e vërtetë
"Hello" = "Mirupafshim" // do të kthehet False

Vargjet në 1C 8.3 në gjuhën e integruar 1c janë vlera të një lloji primitiv Linjë. Vlerat e këtij lloji përmbajnë një varg Unicode me gjatësi arbitrare. Variablat e tipit të vargut janë një grup karakteresh të mbyllura në thonjëza.

Shembulli 1. Le të krijojmë një variabël vargu me tekst.

StringVariable = "Përshëndetje botë!";

Funksionet për të punuar me vargje në 1s 8.3

Ky seksion do të ofrojë funksionet kryesore që ju lejojnë të ndryshoni linjat në 1 ose të analizoni informacionin që përmbahet në to.

Fortësia

Gjatësia e fortë (<Строка>) . Rikthen numrin e karaktereve që përmbahen në vargun e kaluar në parametër.

Shembulli 2. Le të numërojmë numrin e karaktereve në vargun "Përshëndetje botë!".

String = "Përshëndetje botë!"; Numri i Karaktereve = StrLength(String); Raporti (Numri i Personazheve);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e numrit të karaktereve në vargun: 11.

Shkurtuar

Abbr(<Строка>) . Shkurt karakteret jo të rëndësishme në të majtë të karakterit të parë domethënës në një varg.
Personazhe të parëndësishëm:

  • hapësirë;
  • hapësirë ​​që nuk prishet;
  • tabelimi;
  • kthim ngarkese;
  • përkthimi i linjës;
  • përkthimi i formularit (faqes).

Shembulli 3. Hiqni të gjitha hapësirat nga ana e majtë e vargut "paqe!" dhe bashkëngjitni vargun "Hello" në të.

String = abbr ("botë!"); String = "Përshëndetje"+String; Njoftoni (String);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e vargut "Përshëndetje botë!".

Shkurtesa

abbr(<Строка>) . Shkurt karakteret jo të rëndësishme në të djathtë të karakterit të parë domethënës në një varg.

Shembulli 4. Formoni nga vargjet "Përshëndetje" dhe "botë!" fraza "Përshëndetje botë!"

String = abbr("Përshëndetje")+" "+abbr("botë!"); Njoftoni (String);

Shkurtuar LP

Abbrl(<Строка>) . Prit karakteret jo të rëndësishme në të djathtë të karakterit të parë domethënës në varg, gjithashtu shkurton karakteret jo të rëndësishme në të majtë të karakterit të parë domethënës në varg. Ky funksion përdoret më shpesh se dy të mëparshmit, pasi është më i gjithanshëm.

Shembulli 5. Hiqni karakteret e parëndësishme majtas dhe djathtas në emër të palës tjetër.

Kontraktori = Directories.Contractors.FindBy Details("TIN", "0777121211"); ContractorObject = Kontraktor.GetObject(); ContractorObject.Description = Shkurtuar LP(ContractorObject.Description); ContractorObject.Write();

nje luan

Nje luan(<Строка>, <ЧислоСимволов>) . Merr karakteret e para të një vargu, numri i karaktereve specifikohet në parametër Numri i Personazheve.

Shembulli 6. Le të strukturës Punonjës përmbajnë emrin, mbiemrin dhe patronimin e punonjësit. Merrni vargun me mbiemrin dhe inicialet.

InitialName = Luani (Emri i Punonjësit, 1); Fillestar patronimik = Luani (Punonjësi. Patronimik, 1); Emri i plotë = Punonjës.Mbiemri + " " + Fillestar i Emrit + "." + Fillestar patronimik + ".";

Të drejtat

E drejte(<Строка>, <ЧислоСимволов>) . Merr karakteret e fundit të një vargu, numri i karaktereve specifikohet në parametër Numri i Personazheve. Nëse numri i specifikuar i karaktereve tejkalon gjatësinë e vargut, atëherë i gjithë vargu kthehet.

Shembulli 7. Le të shkruhet një datë në fund të një variabli të vargut në formatin “yyyymmdd”, merrni një varg me një datë dhe shndërroni atë në tip datën e.

String = "Data aktuale: 20170910"; StringData = Të drejtat (String, 8); Data = Data (Data e vargut);

e mërkurë

e mërkurë (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Merr një nënvarg nga vargu i kaluar në parametër Linjë, duke u nisur nga karakteri, numri i të cilit është specifikuar në parametër Numri fillestar dhe gjatësia i kalohet parametrit Numri i Personazheve. Numërimi i karaktereve në një varg fillon nga 1. Nëse parametri Numri fillestar specifikohet një vlerë më e vogël ose e barabartë me zero, atëherë parametri merr vlerën 1. Nëse parametri Numri i Personazheve nuk është specifikuar, janë zgjedhur karakteret deri në fund të vargut.

Shembulli 8. Lëreni variablin e vargut të përmbajë kodin e rajonit duke filluar nga pozicioni i nëntë, duhet ta merrni dhe ta shkruani në një rresht të veçantë.

String = "Rajoni: 99 Moskë"; Rajoni = Mesatar (Rresht, 9, 2);

Gjetja e faqes

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Kërkon për nënvargun e specifikuar në një varg, kthen numrin e pozicionit të karakterit të parë të nënvargut të gjetur. Konsideroni parametrat e këtij funksioni:

  • Linjë. Vargu i burimit;
  • SubstringSearch. Nënvargu i dëshiruar;
  • DirectionSearch. Përcakton drejtimin për të kërkuar një nënvarg në një varg. Mund të marrë vlera:
    • Drejtimi i kërkimit.Nga fillimi;
    • Drejtimi i kërkimit.Nga fundi;
  • Pozicioni fillestar. Përcakton pozicionin në vargun ku do të fillojë kërkimi;
  • Numri i hyrjes. Përcakton numrin e dukurive të nënvargut të kërkuar në vargun burimor.

Shembulli 9. Në rreshtin "Përshëndetje botë!" përcaktoni pozicionin e shfaqjes së fundit të karakterit "dhe".

PositionNumber = StrFind("Hello World!", "and", SearchDirection.From End); Njoftoni (Numri i Pozicionit);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e numrit të shfaqjes së fundit të simbolit "dhe" në ekran: 9.

VReg

VReg(<Строка>) . Konverton të gjithë karakteret e vargut të specifikuar në 1s 8 në shkronja të mëdha.

Shembulli 10. Konvertoni vargun "hello world!" me shkronja të mëdha.

StringVreg = Vreg ("përshëndetje botë!"); Raporti (StringVreg);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e vargut "HELLO WORLD!"

HReg

HReg(<Строка>) . Konverton të gjithë karakteret e vargut të specifikuar në 1s 8 në shkronja të vogla.

Shembulli 11. Konvertoni vargun "HELLO WORLD!" me shkronja të vogla.

StringNreg = NReg("HELLO WORLD!"); Raporti (StringVreg);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e vargut "përshëndetje botë!"

Treg

Treg(<Строка>) . Konverton një varg si më poshtë: karakteri i parë i çdo fjale konvertohet në shkronja të mëdha, karakteret e mbetura të fjalës konvertohen në shkronja të vogla.

Shembulli 12. Shkruani shkronjat e para të fjalëve në vargun "hello world!".

StringTreg = TReg ("përshëndetje botë!"); Raporti (StringTreg);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e vargut "Hello World!"

Simboli

Simboli (<КодСимвола>) . Merr një karakter nga kodi i tij Unicode.

Shembulli 13. Shtoni majtas dhe djathtas rreshtit "Hello World!" simboli ★

StringWithStars = Karakter ("9733")+"Përshëndetje Botë!" + Karakter ("9733"); Raporti (StringWithStars);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e vargut "★Hello World!★"

Kodi i simboleve

Kodi i simbolit (<Строка>, <НомерСимвола>) . Merr kodin e karakterit Unicode nga vargu i specifikuar në parametrin e parë, i vendosur në pozicionin e specifikuar në parametrin e dytë.

Shembulli 14. Gjeni kodin e karakterit të fundit në vargun "Hello World!".

String = "Përshëndetje Botë!"; Kodi i Karakterit =Kodi i Karakterit (String, StrLength (String)); Njoftoni (Kodi i Karakterit);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e kodit të simbolit "!" - 33.

Linjë bosh

Linja e zbrazët (<Строка>) . Kontrollon nëse vargu përbëhet vetëm nga karaktere jo të rëndësishme, domethënë nëse është bosh.

Shembulli 15. Kontrolloni nëse vargu është bosh dhe përbëhet nga tre hapësira.

Empty = EmptyString(" "); Raporti (bosh);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e fjalës "Po" (shprehja e vargut të një vlere boolean E vërtetë).

StrReplace

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Gjen të gjitha dukuritë e nënvargut të kërkimit në vargun burimor dhe e zëvendëson atë me nënvargun zëvendësues.

Shembulli 16. Në rreshtin "Hello World!" zëvendësoni fjalën "Botë" me fjalën "Miq".

String = StrReplace("Hello World!", "World", "Friends"); Njoftoni (String);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e vargut "Përshëndetje miq!"

StrNumberRows

Str Numri i linjave(<Строка>) . Ju lejon të numëroni numrin e rreshtave në një varg me shumë rreshta. Për të kaluar në një rresht të ri në 1s 8, përdoret simboli PS(karakteri i furnizimit të linjës).

Shembulli 17. Përcaktoni numrin e rreshtave në tekst:
"Linja e parë
Rreshti i dytë
Linja e tretë"

Number = StrNumber of Lines("Rreshti i parë"+Simbolet.PS +"Rreshti i dytë"+Simbolet.PS +"Rreshti i tretë"); Raporti (Numri);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e numrit të rreshtave në tekst: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Merr një varg në një varg me shumë rreshta sipas numrit të tij. Numërimi i rreshtave fillon nga 1.

Shembulli 18. Merrni rreshtin e fundit në tekst:
"Linja e parë
Rreshti i dytë
Linja e tretë"

Tekst = "Rreshti i parë"+Personazhet.PS +"Rreshti i dytë"+Personazhet.PS +"Rreshti i tretë"; Linja e Fundit = StrGetLine(Tekst, StrNumber i rreshtave(Tekst)); Njoftoni (Rreshti i fundit);

Rezultati i ekzekutimit të këtij kodi do të jetë shfaqja e rreshtit "Rreshti i tretë".

StrNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Rikthen numrin e dukurive të nënvargut të specifikuar në një varg. Funksioni është i ndjeshëm ndaj shkronjave të vogla.

Shembulli 19. Përcaktoni sa herë shkronja “c” hyn në rreshtin “Rreshtat në 1s 8.3 dhe 8.2”, pavarësisht nga rasti i saj.

String = "Linjat në 1s 8.3 dhe 8.2"; Numri i Ndodhive = StrNumri i Ndodhive(Vreg(String), "C"); raporti (numri i dukurive);

Rezultati i ekzekutimit të këtij kodi do të shfaq numrin e dukurive në ekran: 2.

Faqja Fillon Nga

StrBeginsFrom(<Строка>, <СтрокаПоиска>) . Kontrollon nëse vargu i dhënë në parametrin e parë fillon me vargun në parametrin e dytë.

Shembulli 20. Përcaktoni nëse TIN-i i palës tjetër të zgjedhur fillon me numrin 1. Lëreni variablin kundërpalë Kundërpalët.

TIN = Kontraktori.TIN; StartsCUnits = StrStartsC(TIN, "1"); Nëse FillonFROM1 Pastaj //Kodi juaj EndIf;

Faqja përfundon në

StrendsOn(<Строка>, <СтрокаПоиска>) . Kontrollon nëse vargu i kaluar në parametrin e parë përfundon me vargun në parametrin e dytë.

Shembulli 21. Përcaktoni nëse TIN-i i palës tjetër të zgjedhur përfundon me numrin 2. Le të jetë variabli kundërpalë lidhja me elementin e drejtorisë ruhet Kundërpalët.

TIN = Kontraktori.TIN; Përfundon me dy = Str mbaron me (TIN, "2"); Nëse përfundon me dy atëherë //Kodi juaj EndIf;

Ndarja e faqeve

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Ndan një varg në pjesë sipas karaktereve të përcaktuara kufizuese dhe shkruan vargjet që rezultojnë në një grup. Parametri i parë ruan vargun origjinal, parametri i dytë përmban vargun që përmban ndarësin, parametri i tretë tregon nëse vargjet boshe duhet të shkruhen në grup (si parazgjedhje E vërtetë).

Shembulli 22. Supozoni se kemi një varg që përmban numra të ndarë me simbolin ";", merrni një varg numrash nga vargu.

Vargu = "1; 2; 3"; Array = StrSplit(String, ";"); Për Numërim = 0 Nga Array.Sasia() - 1 Përpjekje cikli Array[Numërimi] = Numri(Ablp(Array[Numërimi])); Array përjashtimi[W] = 0; EndTry EndCycle;

Si rezultat i ekzekutimit, do të merret një grup me numra nga 1 në 3.

StrConnect

StrConnect(<Строки>, <Разделитель>) . Konverton një grup vargjesh nga parametri i parë në një varg që përmban të gjithë elementët e grupit duke përdorur ndarësin e specifikuar në parametrin e dytë.

Shembulli 23. Duke përdorur grupin e numrave nga shembulli i mëparshëm, merrni vargun origjinal.

Për Numërimin = 0 Nga Array.Sasia() - 1 Vargu i ciklit[Numërimi] = String(Array[Numërimi]); Cikli i Fundit; String = StrConnect(Array, "; ");

Artikujt kryesorë të lidhur