Piezīmes no caur skatīšanās stiklu

18.08.2014 Jaunas funkcijas darbam ar stīgām

Ieviests versijā 8.3.6.1977.

Mēs esam paplašinājuši funkciju kopu, kas paredzēta darbam ar virknēm. Mēs to darījām, lai sniegtu jums sarežģītākus rīkus virkņu datu parsēšanai. Jaunās funkcijas būs ērtas un noderīgas teksta analīzes tehnoloģiskajos uzdevumos. Uzdevumos, kas saistīti ar teksta parsēšanu, kas satur datus formatētā formā. Tā varētu būt dažu no iekārtas saņemto failu analīze vai, piemēram, tehnoloģiskā žurnāla analīze.

Iepriekš jūs varētu veikt visas darbības, kas veic jaunas funkcijas. Izmantojot vairāk vai mazāk sarežģītus algoritmus, kas rakstīti iebūvētajā valodā. Tāpēc jaunas funkcijas nedod jums nekādas principiāli jaunas iespējas. Tomēr tie ļauj samazināt koda daudzumu un padarīt kodu vienkāršāku un saprotamāku. Turklāt tie ļauj paātrināt darbību izpildi. Jo platformā realizētās funkcijas, protams, darbojas ātrāk nekā līdzīgs algoritms, kas rakstīts iebūvētajā valodā.

Formatēšanas funkcija StrTemplate()

Šī funkcija aizstāj parametrus virknē. Šādas pārveidošanas nepieciešamība bieži rodas, piemēram, parādot brīdinājuma ziņojumus. Šīs funkcijas sintakse ir šāda:

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

<Шаблон>- šī ir virkne, kurā jāaizstāj parametru attēlojumi.

<Значение1> , ... <Значение10>- tie ir parametri (maksimums desmit), kuru attēlojumi ir jāaizvieto virknē.

Lai norādītu noteiktu vietu veidnē, kur vēlaties veikt aizstāšanu, jums ir jāizmanto tādi marķieri kā %1, ... %10. Veidnē iesaistīto marķieru skaitam un parametru skaitam, kas satur vērtības, ir jāsakrīt.

Piemēram, šāda operatora izpildes rezultāts:

būs rinda:

Datu kļūda 2. rindiņā (nepieciešams datuma veids)

Funkcija darbam ar virknēm StrCompare()

Šī funkcija salīdzina divas virknes bez reģistrjutības. Piemēram, šādi:

Jūs varētu veikt to pašu darbību agrāk, izmantojot objektu Vērtību salīdzinājums:

Tomēr jaunās funkcijas izmantošana šķiet vienkāršāka. Un turklāt funkcija, nevis objekts Vērtību salīdzinājums, darbojas gan plānā klientā, gan tīmekļa klientā.

Funkcijas darbam ar virknēm StrStartsWith(), StrEndsAt()

Šīs funkcijas nosaka, vai virkne sākas ar noteiktu apakšvirkni vai virkne beidzas ar noteiktu apakšvirkni. Šo funkciju algoritmu nav grūti ieviest iegultā valodā, taču to klātbūtne ļauj rakstīt tīrāku un saprotamāku kodu. Un viņi strādā ātrāk.

Piemēram, ir ērti tos izmantot operatorā Ja:

Funkcijas darbam ar virknēm StrDivide(), StrConnect()

Šīs funkcijas sadala virkni daļās, izmantojot noteiktu atdalītāju. Vai otrādi, tās apvieno vairākas rindas vienā, ievietojot starp tām atlasīto atdalītāju. Tie ir ērti, lai izveidotu vai analizētu žurnālus un tehnoloģiskos žurnālus. Piemēram, varat viegli parsēt tehnoloģiskā žurnāla ierakstu daļās, kas piemērotas turpmākai analīzei:

Funkcija darbam ar virknēm StrFind()

Vecās funkcijas vietā Atrast () Mēs esam ieviesuši jaunu funkciju, kurai ir papildu iespējas:

  • Meklēt dažādos virzienos (no sākuma, no beigām);
  • Meklēt no noteiktas pozīcijas;
  • Meklējiet notikumu ar noteiktu numuru (otrais, trešais utt.).

Faktiski tas dublē vecās funkcijas iespējas. Tas tiek darīts, lai saglabātu saderību ar moduļiem, kas apkopoti vecākās versijās. Vecā funkcija Atrast () Ieteicams nelietot atkārtoti.

Tālāk ir sniegts piemērs jauno meklēšanas iespēju izmantošanai. Apgrieztā meklēšana ir noderīga, ja nepieciešama formalizētas virknes pēdējā daļa, piemēram, pilns faila nosaukums URL. Un meklēšana no noteiktas pozīcijas palīdz gadījumos, kad jāmeklē zināmā fragmentā, nevis visā rindā.

1C 8.3 rindas iebūvētajā valodā 1C ir primitīva tipa vērtības Līnija. Šāda veida vērtības satur patvaļīga garuma unikoda virkni. Virknes tipa mainīgie ir rakstzīmju kopa, kas ievietota pēdiņās.

Piemērs 1. Izveidosim virknes mainīgo ar tekstu.

StringVariable = "Sveika pasaule!";

Funkcijas darbam ar stīgām 1s 8.3

Šajā sadaļā tiks sniegtas galvenās funkcijas, kas ļauj mainīt rindiņas 1c vai analizēt tajās ietverto informāciju.

Stiprums

Stiprums(<Строка>) . Atgriež rakstzīmju skaitu, kas ietverts virknē, kas nodota kā parametrs.

2. piemērs. Saskaitīsim rakstzīmju skaitu rindā “Sveika pasaule!”

String = "Sveika pasaule!"; Rakstzīmju skaits = StrongLength(String); Pārskats (rakstzīmju skaits);

Šī koda izpildes rezultāts būs rakstzīmju skaita displejs rindā: 11.

AbbrL

AbbrL(<Строка>) . Apgriež nenozīmīgās rakstzīmes pa kreisi no pirmās zīmīgās rakstzīmes virknē.
Nelielas rakstzīmes:

  • telpa;
  • neplīstoša telpa;
  • tabulēšana;
  • rakstatgriezes;
  • rindu tulkošana;
  • veidlapas (lapas) tulkojums.

3. piemērs. Noņemiet visas atstarpes no rindas "world!" un pievienojiet tai rindiņu “Sveiki”.

String = saīsinājums("pasaule!"); String = "Sveiki"+String; Report(String);

Šī koda izpildes rezultāts būs rindas “Sveika pasaule!” parādīšanās ekrānā.

Saīsināts

Abbr(<Строка>) . Apgriež nenozīmīgās rakstzīmes pa labi no pirmās zīmīgās rakstzīmes virknē.

Piemērs 4. Veidlapa no rindām "Sveiks" un "miers!" frāze "Sveika pasaule!"

Rinda = saīsinājums("Sveiki ")+" "+ Saīsinājums(" pasaule!"); Report(String);

AbbrLP

AbbrLP(<Строка>) . Apgriež nenozīmīgās rakstzīmes pa labi no pirmās zīmīgās rakstzīmes virknē, kā arī apgriež nesvarīgās rakstzīmes pa kreisi no pirmās zīmīgās rakstzīmes virknē. Šī funkcija tiek izmantota biežāk nekā divas iepriekšējās, jo tā ir universālāka.

5. piemērs. Darījuma partnera vārda kreisajā un labajā pusē noņemiet nenozīmīgas rakstzīmes.

Darījuma partneris = Directories. Atrast pēc detaļas ("TIN", "0777121211"); AccountObject = Account.GetObject(); Darījuma partnera objekts.Nosaukums = AbbrLP(Darījuma partnera objekts.Nosaukums); AccountObject.Write();

lauva

lauva (<Строка>, <ЧислоСимволов>) . Iegūst pirmās virknes rakstzīmes, rakstzīmju skaits ir norādīts parametrā Rakstzīmju skaits.

Piemērs 6. Ielaidiet struktūru Darbinieks satur darbinieka vārdu, uzvārdu un uzvārdu. Iegūstiet virkni ar uzvārdu un iniciāļiem.

VārdsSākotnējais = Lev(Darbinieka.Vārds, 1); Patronimiskais iniciālis = Lauva(Darbinieks. Patronīms, 1); FullName = Darbinieks.Uzvārds + " " + Vārda sākums + "." + Vidējais iniciālis + ".";

Pa labi

Pa labi(<Строка>, <ЧислоСимволов>) . Iegūst virknes pēdējās rakstzīmes, parametrā norādīto rakstzīmju skaitu Rakstzīmju skaits. Ja norādītais rakstzīmju skaits pārsniedz virknes garumu, tiek atgriezta visa virkne.

7. piemērs. Ļaujiet virknes mainīgā beigās ierakstīt datumu formātā “ggggmmdd”, iegūstiet virkni ar datumu un pārveidojiet to par tipu datums.

String = "Pašreizējais datums: 20170910"; StringDate = Tiesības (virkne, 8); Datums = Date(StringDate);

trešdiena

trešdiena (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) . Iegūst apakšvirkni no virknes, kas nodota kā parametrs Līnija, sākot no rakstzīmes, kuras numurs ir norādīts parametrā InitialNumber un parametrā ievadītais garums Rakstzīmju skaits. Rakstzīmju numerācija rindā sākas no 1. Ja parametrā InitialNumber ir norādīta vērtība, kas ir mazāka vai vienāda ar nulli, tad parametrs iegūst vērtību 1. Ja parametrs Rakstzīmju skaits nav norādīts, tad tiek atlasītas rakstzīmes līdz rindas beigām.

Piemērs 8. Ļaujiet virknes mainīgajam, sākot no devītās pozīcijas, satur reģiona kodu, jums tas jāiegūst un jāieraksta atsevišķā rindā.

String = "Reģions: 99 Maskava"; Reģions = vid.(virkne, 9, 2);

PageFind

StrFind(<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) . Virknē meklē noteiktu apakšvirkni, atgriežot atrastās apakšvirknes pirmās rakstzīmes pozīcijas numuru. Apskatīsim šīs funkcijas parametrus:

  • Līnija. Avota virkne;
  • Meklēt apakšvirkni. Meklēt apakšvirkni;
  • Meklēšanas virziens. Norāda virzienu, lai virknē meklētu apakšvirkni. Var ņemt vērtības:
    • Meklēšanas virziens. No sākuma;
    • Meklēt. Beigu virziens;
  • Sākotnējā pozīcija. Norāda pozīciju virknē, kurā sākas meklēšana;
  • SkaitsAtgadījumu. Norāda meklētās apakšvirknes gadījuma numuru avota virknē.

9. piemērs. Rindā “Sveika pasaule!” Nosakiet rakstzīmes "un" pēdējās parādīšanās vietu.

PositionNumber = StrFind("Sveika pasaule!", "un", SearchDirection.End); Atskaite(pozīcijas numurs);

Šī koda izpildes rezultātā tiks parādīts simbola “un” pēdējā gadījuma numurs: 9.

VReg

VReg(<Строка>) . Pārvērš visas rakstzīmes norādītajā virknē 1s8 par lielajiem burtiem.

10. piemērs: pārveidojiet virkni "sveika pasaule!" uz lielajiem burtiem.

StringVreg = VReg("sveika pasaule!"); Report(StringVreg);

Šī koda izpildes rezultāts būs rindas "HELLO WORLD!"

NReg

NReg(<Строка>) . Pārvērš visas norādītās virknes rakstzīmes 1s 8 uz mazajiem burtiem.

11. piemērs: pārveidojiet virkni "HELLO WORLD!" uz mazajiem burtiem.

StringNreg = NReg("SVEIKA PASAULE!"); Report(StringVreg);

Šī koda izpildes rezultāts būs rindas "sveika pasaule!"

Treg

TReg(<Строка>) . Virkni pārvērš šādi: katra vārda pirmā rakstzīme tiek pārvērsta par lielajiem burtiem, pārējās vārda rakstzīmes tiek pārveidotas par mazajiem burtiem.

12. piemērs: ievadiet lielos vārdus rindā “sveika pasaule!”

StringTreg = TReg("sveika pasaule!"); Pārskats(StringTreg);

Šī koda izpildes rezultāts būs rindas "Sveika pasaule!"

Simbols

Simbols(<КодСимвола>) . Iegūst rakstzīmi pēc tā Unicod koda.

13. piemērs. Rindai “Sveika pasaule!” pievienojiet kreiso un labo pusi. simbols ★

StringWithStars = Simbols("9733")+"Sveika pasaule!"+Simbols("9733"); Report(StringWithStars);

Šī koda izpildes rezultātā tiks parādīta rinda “★Sveika pasaule!★”

Simbola kods

SymbolCode(<Строка>, <НомерСимвола>) . Iegūst Unikoda rakstzīmju kodu no pirmajā parametrā norādītās virknes, kas atrodas otrajā parametrā norādītajā pozīcijā.

14. piemērs. Noskaidrojiet pēdējās rakstzīmes kodu rindā “Sveika pasaule!”

String = "Sveika pasaule!"; Rakstzīmju kods = rakstzīmju kods(virkne, garums(virkne)); Paziņot (rakstzīmju kods);

Šī koda izpildes rezultātā tiks parādīts simbola kods “!” - 33.

Tukša rinda

Tukša rinda (<Строка>) . Pārbauda, ​​vai virkne sastāv tikai no nenozīmīgām rakstzīmēm, tas ir, vai tā ir tukša.

15. piemērs. Pārbaudiet, vai virkne, kas sastāv no trim atstarpēm, ir tukša.

Tukšs = EmptyString(" "); Pārskats (Tukšs);

Šī koda izpildes rezultāts būs vārds “Jā” (loģiskās vērtības virknes izteiksme Taisnība).

Lapas aizstāšana

StrReplace(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Atrod visus meklēšanas apakšvirknes gadījumus avota virknē un aizstāj to ar aizstājošo apakšvirkni.

16. piemērs. Rindā “Sveika pasaule!” aizstāt vārdu “Miers” ar vārdu “Draugi”.

String = StrReplace("Sveika pasaule!", "Pasaule", "Draugi"); Report(String);

Šī koda izpildes rezultāts būs rindas "Sveiki draugi!"

StrNumberLines

StrNumberRow(<Строка>) . Ļauj saskaitīt rindu skaitu vairāku rindiņu virknē. Lai pārietu uz jaunu rindu 1s 8, izmantojiet simbolu PS(jaunrindas rakstzīme).

17. piemērs. Nosakiet rindiņu skaitu tekstā:
"Pirmā līnija
Otrā rinda
Trešā rinda"

Skaitlis = StrNumberString("Pirmā rinda"+rakstzīmes.PS +"Otrā rinda"+Simboli.PS +"Trešā rinda"); Ziņojums(Numurs);

Šī koda izpildes rezultāts būs teksta rindiņu skaita parādīšana: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) . Iegūst rindu daudzrindu virknē pēc tās numura. Līniju numerācija sākas no 1.

18. piemērs. Iegūstiet teksta pēdējo rindiņu:
"Pirmā līnija
Otrā rinda
Trešā rinda"

Teksts = "Pirmā rinda" + Simboli + "Otrā rinda" + "Trešā rinda"; LastRow = StrGetRow(Teksts, StrNumberLines(Teksts)); Atskaite(LastLine);

Šī koda izpildes rezultāts būs rindas “Trešā rinda” displejs.

PageNumberOccurrences

StrNumberOccurrences(<Строка>, <ПодстрокаПоиска>) . Atgriež norādītās apakšvirknes gadījumu skaitu virknē. Funkcija ir reģistrjutīga.

19. piemērs. Nosakiet, cik reižu burts “c” parādās rindā “Lines in 1s 8.3 and 8.2” neatkarīgi no tā reģistra.

Line = "Līnijas 1s 8.3 un 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "C"); Ziņojums(Atradumu skaits);

Šī koda izpildes rezultāts būs gadījumu skaita displejs: 2.

LapaStartsAr

StrStartsWith(<Строка>, <СтрокаПоиска>) . Pārbauda, ​​vai pirmajā parametrā nodotā ​​virkne sākas ar otrā parametra virkni.

20. piemērs. Nosakiet, vai izvēlētā darījuma partnera TIN sākas ar skaitli 1. Ievadiet mainīgo Darījuma partneris Darījuma partneri.

TIN = darījuma partneris.TIN; StartsUNits = StrStartsWith(TIN, "1"); If Sākas ar vienībām Then //Jūsu kods EndIf;

PageEndsOn

StrEndsWith(<Строка>, <СтрокаПоиска>) . Pārbauda, ​​vai pirmajā parametrā nodotā ​​virkne beidzas ar otrā parametra virkni.

21. piemērs. Nosakiet, vai izvēlētā darījuma partnera TIN beidzas ar skaitli 2. Ievadiet mainīgo Darījuma partneris tiek saglabāta atsauce uz direktorija elementu Darījuma partneri.

TIN = darījuma partneris.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then //Jūsu kods EndIf;

PageSplit

StrDivide(<Строка>, <Разделитель>, <ВключатьПустые>) . Sadala virkni daļās, izmantojot norādītās norobežotāja rakstzīmes, un ieraksta iegūtās virknes masīvā. Pirmais parametrs saglabā avota virkni, otrais satur virkni ar atdalītāju, trešais norāda, vai masīvā ir jāieraksta tukšas virknes (pēc noklusējuma Taisnība).

22. piemērs. Iegūsim virkni, kurā ir skaitļi, kas atdalīti ar simbolu “;”, iegūstam no virknes skaitļu masīvu.

Virkne = "1; 2; 3"; Masīvs = StrDivide(virkne, ";"); Skaits = 0 pēc masīva.Daudzums() - 1 cikla mēģinājums Masīvs[Skaits] = Skaitlis(AbbrLP(Masīvs[Skaits])); Izņēmuma masīvs[Sch] = 0; EndAttemptsEndCycle;

Izpildes rezultātā tiks iegūts masīvs ar skaitļiem no 1 līdz 3.

PageConnect

StrConnect(<Строки>, <Разделитель>) . Pārvērš virkņu masīvu no pirmā parametra par virkni, kurā ir visi masīva elementi, kas atdalīti ar otrajā parametrā norādīto atdalītāju.

23. piemērs. Izmantojot skaitļu masīvu no iepriekšējā piemēra, iegūstiet sākotnējo virkni.

Kontam = 0 pēc masīva.Daudzums() - 1 cikls Masīvs[Act] = String(Masīvs[Akts]); EndCycle; Rinda = StrConnect(masīvs, "; ");

Programmēšanas valodas pamatiespējas parasti ietver darbu ar cipariem un virknēm. Parasti šīs funkcijas tiek iekodētas kompilatora kodā (vai tiek ieviestas programmēšanas valodas “bāzes” klases).

1C versijā iespēja strādāt ar stīgām ir ieprogrammēta pašā platformā. Šodien mēs aplūkosim iespējas strādāt ar 1C virknēm programmās iebūvētajā 1C valodā.

Līnijas vērtība 1C

1. Sāksim ar vienkāršāko. Mainīgā izveidošana un nemainīgas virknes vērtības piešķiršana 1C izskatās šādi:

Mainīgais = "Sveika, pasaule!";

Ja jums ir jānorāda citāta rakstzīme nemainīgā 1C virknes vērtībā, tā ir jādubulto “”

Mainīgais = "Sveika, pasaule"!;

2. Līnijas pārtraukumu 1C var norādīt uzreiz divos veidos. Pirmais izmanto simbolu |

Mainīgais = "Sveiki!
| pasaule! ";

Otrais ir simbolu sistēmas uzskaitījuma izmantošana. Tas ļauj pievienot gan 1C rindiņas pārtraukumus, gan citas nedrukājamas rakstzīmes, piemēram, TAB.

Mainīgais = "Sveiki" + Symbols.PS + "miers!";

3. 1C konfigurācijas var izstrādāt ne tikai vienai valodai (krievu, angļu vai citai), bet vienlaikus vairākām valodām. Šajā gadījumā 1C loga apakšā tiek atlasīta pašlaik izmantotā valoda.

Valodu saraksts atrodas konfigurācijas logā sadaļā Vispārīgi/valodas. Katrai valodai ir īss identifikators, piemēram, ru vai eng.

Ir skaidrs, ka, programmējot šādu konfigurāciju, 1C līnijas var būt arī daudzvalodu. Lai to izdarītu, ir iespējams izveidot šādu 1C līniju, norādot cauri; opcijas pēc valodas identifikatora:

Mainīgais = "ru=""Sveika, pasaule! ""; en=""Sveika, pasaule! """;

Ja jūs izmantojat šādā veidā izveidoto 1C līniju kā parasti, tad tas būs tas, kas tajā ir rakstīts. Lai sistēma to sadalītu divās opcijās un izmantotu vēlamo, jums jāizmanto funkcija НStr():

//labots divvalodu konfigurācijām
Report(NStr(Mainīgs));

Balsti ar līniju tipu 1C

Atribūts ir lauks 1C direktorijā/dokumentā. Tas atšķiras no mainīgā programmā 1C valodā ar to, ka atribūtam ir precīzi norādīts tā veids (skaitlis, 1C virkne utt.). Ja jums ir jāatsvaidzina atmiņa par to, kas ir rekvizīts, skatieties nodarbību.

Ja norādāt atribūta veidu - rinda 1C, tad papildus jānorāda parametri.

1C rindiņām ir neierobežots garums (norādīts kā garums = 0) un ierobežots garums, norādot precīzu rakstzīmju skaitu. 1C neierobežota garuma rindas tiek glabātas atsevišķā SQL tabulā, tāpēc to izmantošana ir mazāk produktīva nekā ierobežotas.

Tāpēc neierobežota garuma 1C stīgu izmantošanai ir savi ierobežojumi - tās nav iespējams izmantot visur. Piemēram, tas nav atļauts kā dokumenta numurs, atsauces kods vai mērījums.

Darbs ar 1C stīgām

1C platformā ir vairākas iebūvētas funkcijas darbam ar stīgām.

  • AbbrLP (“Neticami, bet patiesi!”)
    Noņem papildu atstarpes no 1C līnijas. Var izmantot arī, lai pārvērstu jebkādus veidus par 1C virkni (piemēram, skaitļiem).
  • Mainīgais = "Vasya" + AbbrLP(" plus") + "Olya"; //būs "Vasya plus Olya"
    Piemērs vairāku 1C virkņu vērtību summēšanai. Rezultāts būs viena rinda 1C.
  • Mainīgais = Lev("Mūzika", 2); //būs "Mu"
    Mainīgais = Vidējs ("Mūzika", 2, 2); //būs "draudi"
    Mainīgais = Tiesības ("Mūzika", 2); //būs "ka"
    Dažādas iespējas apakšvirknes iegūšanai no 1C virknes.
  • Mainīgais = Find("Mūzika", "zy"); //būs 3
    Meklējiet apakšvirkni virknē 1C, sākot ar rakstzīmi 1.
  • Mainīgais = StrLength("Mūzika"); //būs 6
    Atgriež rakstzīmju skaitu 1C rindā.
  • Report("Sveiki") //ziņojuma logā 1C loga apakšā
    Alert("Sveiki") //uznirstošais dialoglodziņš
    Statuss("Sveiki") //statusa displeja rindiņā apakšējā kreisajā stūrī
    .

Objektu ievietošana rindā 1C

Kā zināms, šobrīd populārākais strukturētas informācijas apmaiņas formāts ir XML. Pat jaunākā MS Office Word un Excel versija saglabā failus šajā formātā (attiecīgi docx un xlsx maina paplašinājumu uz zip, atver arhivētājā).

1C platforma datu apmaiņai nodrošina vairākas iespējas, no kurām galvenā ir arī XML.

1. Vienkāršākā metode ir izmantot funkciju Abreviation() vai String(). Pieprasījuma pamattekstā varat izmantot funkciju REPRESENTATION(). Viņu darbības rezultāts ir vienāds - viņi lietotājam ģenerē jebkura 1C objekta virknes attēlojumu.

Direktorijai pēc noklusējuma tas būs tā nosaukums. Dokumentam – dokumenta nosaukums, numurs un datums.

2. Jebkuru 1C objektu (ar ierobežojumiem) var konvertēt uz XML un otrādi. Konversijas procesu sauc par serializāciju.

StringViewXml = XMLString(Vērtība); //iegūstiet XML no 1C vērtības
Vērtība1C = XMLVvērtība(Tips("DirectoryLink.Nomenclature"),TypeStringXml); //iegūstiet 1C vērtību no XML virknes, jums jānorāda 1C veids, kas jāsaņem

3. 1C platformai ir savs veids, kā pārvērst jebkuru 1C objektu virknē. Tas tika migrēts no versijas 1C 7.7. Šo formātu nesaprot citas programmas, bet citi 1C to saprot, kas ļauj to ērti izmantot apmaiņai starp 1C datu bāzēm.

Rinda = ValueInRowInt(Vērtība1C); //iegūstiet virkni 1C no vērtības 1C
ValueVFile("C:\MyFile.txt", Value1C); //cita iespēja, mēs iegūstam failu ar saglabātu virkni no 1C vērtības
Value1C = ValueFromStringInt(String); //atpakaļ no 1C līnijas
Value1C = ValueFile("C:\MyFile.txt"); //atpakaļ no faila

1C līniju rediģēšana veidlapā

Papildus darbam ar 1C virknēm programmā 1C valodā, protams, es vēlētos, lai lietotājs varētu tās rediģēt. Tam ir vairākas iespējas:

1. Vienkāršākais veids ir pieprasīt 1C līnijas ievadi pēc pieprasījuma. Šo metodi izmanto, mācot 1C programmēšanu, dzīvē tā tiek izmantota daudz retāk (bet tiek izmantota!).

Mainīgais = "";
Rinda = EnterValue(Mainīgs, "Ievadiet pilno nosaukumu");

2. Lai parādītu informāciju par 1C objektu (direktoriju/dokumentu) vai veidlapas detaļas (sk.), visbiežāk tiek izmantots ievades lauks. Šis ir visizplatītākais rīks 1C, lai lietotājs varētu strādāt ar rediģēšanas laukiem.

3. Ievades lauka iespējas var paplašināt (skatīt ievades lauka rekvizītus, ar peles labo pogu noklikšķiniet uz tā, sīkāk):

  • Izvēles rūtiņa Daudzrindu rediģēšanas režīms
  • Papildu rediģēšanas izvēles rūtiņa (pieejama, ja ir atzīmēta iepriekšējā izvēles rūtiņa)
  • Izvēles rūtiņa Paroles režīms (sk.).

4. Ja ar visām ievades lauka iespējām jums nepietiek, ir iebūvēts redaktors. Lai to pievienotu formai, izvēlnē Form/Insert Control ir jāpievieno teksta dokumenta lauks. Tā rekvizītos var norādīt tā darbības režīmu – rekvizītu Extension.

Teksta dokumenta lauku nevar saistīt tieši ar datiem. Formas OnOpen() notikumu apdarinātājā ir jāieraksta funkcija (sk.):

Veidlapas elementi.ElementaNosaukumsTekstsDokumenta lauks.SetText(StringValue); //šeit ValueString ir teksts, kas saņemts, piemēram, no atribūta

Un saglabāšanas apstrādātājā - piemēram, pogā Saglabāt - pievienojiet saglabāšanu:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //VērtībaŠeit ir atribūts, kurā mēs saglabājam vērtību

5. 1C versijā 8.2.11 pārvaldītajās formās ir parādījusies jauna opcija 1C līnijas attēlošanai - lauks Formatēts dokuments.


Līdzīgi kā teksta dokumenta laukā, tas ir jāiestata to atverot un jāpieraksta, kad pats to saglabā, izmantojot programmu.

  • 1C objektā, kura formu mēs veidojam (direktorijs, dokuments, apstrāde utt.) - pievienojiet atribūtu ar vērtību krātuves veidu
  • Funkcijā OnReadOnServer() mēs iestatām tekstu no atribūta

    //šeit atribūts ir 1C objekta pievienotais atribūts
    //šeit FormattedDocument ir rediģējamās veidlapas lauka nosaukums
    &Serverī

    FormattedDocument = CurrentObject.Attributes.Get();
    Procedūras beigas

  • Funkcijā BeforeWritingOnServer() vai izmantojot pogu, mēs ierakstīsim tekstu no lauka

    &Serverī
    Procedūra lasīšanas laikā serverī (pašreizējais objekts)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Procedūras beigas

1. DAĻA. METODES (26).

1.1. Pamatmetodes (10). Neatkarīgi, balstīti uz saviem vienkāršiem algoritmiem.

Page_Add() (labās un kreisās puses pievienošana ar norādītajām rakstzīmēm).

Page_Inverse () (inversija - rakstzīmes no labās uz kreiso).

Page_Codes() (rakstzīmju kodi līdz "," un masīvs ar kodiem)

Page_Characters() (kodu virkne, kas atdalīta ar "," vai no masīva ar kodiem)

Page_ReplaceSymbols() (dažu rakstzīmju aizstāšana ar citām).

String_FromArray() (virkne no fragmentu masīva, kas atdalīts ar atdalītāju)

Page_FindIn() (meklējiet apakšvirkni (tostarp labajā pusē) ar noteiktu gadījuma numuru).

Page_FindGr() (Meklēt rakstzīmju grupu, kas iekļauta norādītajā rakstzīmju kopā)

Page_FindNumber() (meklējiet numuru, tostarp labajā pusē ar norādīto gadījuma numuru)

Page_Interpret() (masīvā saskaņā ar noteikto sintaksi)

1.2. Atvasinātās metodes (12). Faktiski tas ir četru vispārinātu algoritmu metožu izmantošana (sk. 2. daļu)

Page_Number() (no rindas sākuma un beigām, nebaidieties no rakstzīmēm, kas nav ciparu.

Page_Find() (meklējiet apakšvirkni (tostarp reģistrjutīgo un labajā pusē) ar noteiktu gadījuma numuru).

Page_Replace() (meklējiet (tostarp reģistrjutīgos un labos) un aizstājiet atdalītāju apakšvirknes).

Str_Piece() (virknes gabals starp norādītajiem norobežotāja gadījumiem (pa kreisi vai pa labi)).

Page_ReplacePiece() (aizstāj “gabals” avota virknē ar norādīto virkni).

Page_ВArray() (starp norādītajiem atdalītāja gadījumiem (ieskaitot tos, kas atrodas labajā pusē un bez reģistra).

Page_TransferBySyllables() (sadalīts apakšvirknēs “Hardly”, ar defisi).

Page_MoveByWords() (sadalīts apakšvirknēs “Softly”)

Page_Cut() (“Izgriezt” noteikta garuma apakšvirknēs)

Str_Shorten() (aizstāt kreiso "saīsināto" rakstzīmju grupu ar "aizvietošanas virkni"

Page_Abbreviation() (labo “samazināto” rakstzīmju grupu aizstājiet ar “aizvietošanas virkni”

Str_ShortenS() (aizstāt “saīsināto” rakstzīmju grupas vidū ar “aizvietošanas virkni”

Page_Extend (paplašināšana līdz noteiktam garumam, palielinot norādīto rakstzīmju skaitu)

1.3. Detalizētas metodes (3). Rindas "sadalīšana" ar pārsūtīšanu uz tabulu ar detalizētu informāciju.

Page_vTableIn() (tabulā saskaņā ar ligzdoto atdalītāju sistēmu).

Page_vTableGr (uz tabulu saskaņā ar daudzlīmeņu filtru).

Page_inTableNumbers (tabulā ar cipariem un fragmentiem starp tiem).

2. DAĻA. VISPĀRĪGĀS METODES — ALGORIMI (3).

Page_Occurrence() (metodes “Atrast” un “Aizstāt”).

Page_Fragments() (metodes “Piece”,”ReplacePiece,”InArray”,”inTableIn”).

Page_Abcr() (metodes "AbcrL", "AbcrP", "AbcrS", "Izvērst".

Page_Split() (metodes “Pārvietot pa zilbēm”, “Pārvietot pēc vārdiem”, “Izgriezt”).

3. DAĻA. UNIVERSĀLĀ FUNKCIJA.

Šis ir sava veida nosacījuma programmēšanas interfeiss, kas ļauj

piemērot virknei vairākas metodes vienlaikus. Īstenots kā

funkcijas ar septiņiem parametriem ("Demo" ir veidota uz šīs funkcijas):

Lapa_(Metodes, Apakšmetodes, Ievade, Param1, Param2, Length_Number_Position, Papildu izvade)

Iespējas:

- “Metodes” - vairākas “kombinētas” un (vai) viena “ekskluzīva” metode

(vienas rakstzīmes kodi vai nosaukumi, iespējams, izmantojot ",")

- "Apakšmetodes" - vairākas "kombinētas" un (vai) "ekskluzīvas" iespējas

“ekskluzīva” metode (viena rakstzīmes kodi vai nosaukumi);

- "Ievade" - virkne, masīvs vai vērtību tabula;

- “Param1” - meklēšanas virkne, aizstāšanas, atdalītāji, filtri;

- "Param2" - aizvietošanas virkne vai rakstzīmes;

- "Length_Number_Position" - Skaitlis, skaitļi, izmantojot atdalītāju vai masīvu ar cipariem;

- "Papildu izvade" - numurs vai virkne, masīvs vai vērtību tabula;

Apakšmetožu nosaukumi un/vai vienas rakstzīmes kodi, kā arī skaitļi

(Length_Number_Position) var būt jebkurā gadījumā un atdalīts

kāds no šiem norobežotājiem: ”, :;”.

4. DAĻA. DAŽI PIEMĒRI.

There areNumbersInLine=(Str_FindNumber(InLine)<>Nenoteikts);

Rindā ir skaitļi = (String_FindGr(Inline,"+0123456789")>0);

Ir latīņu valoda = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Ir norādītas zīmes = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

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

5. DAĻA. SECINĀJUMS.

Kur iespējams, iztiku ar vienu piegājienu pa līniju. Otrais piegājiens parasti ir fragmentāri. Es neizmantoju iebūvēto funkciju StrNumberOccurrences().

Tiek izmantotas iebūvētās funkcijas: Left (), Right (), Middle (), StrLength ()

- (pozicionēšanai un līnijas daļas iegūšanai jābūt “ātrai”).

Ir daži mehānismi darbam ar virknēm 1C vaicājumos. Pirmkārt, rindas var pievienot. Otrkārt, jūs varat ņemt apakšvirkni no virknes. Treškārt, virknes var salīdzināt, tostarp pēc raksta. Tas, iespējams, ir viss, ko var izdarīt ar stīgām.

Stīgu pievienošana

Lai vaicājumam pievienotu rindas, tiek izmantota darbība “+”. Varat pievienot tikai ierobežota garuma virknes.

IZVĒLĒTIES "Nosaukums: " + Darījuma partneris Nosaukums AS 1. sleja FROM Darījuma partneri KUR Saite = &Saite

Apakšvirknes funkcija

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

Funkcijas Environment() analogs no objekta modeļa. Funkciju Apakšstring () var lietot virknes datiem, un tā ļauj atlasīt fragmentu <Строки> , sākot ar rakstzīmes numuru <НачальнаяПозиция> (rakstzīmes rindā ir numurētas, sākot no 1) un garumu <Длина> rakstzīmes. Funkcijas aprēķina rezultātam ir mainīga garuma virknes tips, un garums tiks uzskatīts par neierobežotu, ja <Строка> ir neierobežots garums un parametri <Длина> nav konstante vai lielāka par 1024.

Ja virknes garums ir mazāks nekā norādīts otrajā parametrā, funkcija atgriezīs tukšu virkni.

Uzmanību! Nav ieteicams izmantot funkciju SUBSTRING(), lai neierobežota garuma virknes pārveidotu par ierobežota garuma virknēm. Tā vietā labāk ir izmantot apraides operatoru EXPRESS().

Funkcija līdzīga

Ja mums ir jāpārliecinās, vai virknes atribūts atbilst noteiktiem kritērijiem, mēs to salīdzinām:

IZVĒLĒTIES Darījuma partneri Nosaukums AS 1. sleja FROM Darījuma partneri KUR Nosaukums = "Gazprom".

Bet ko darīt, ja jums ir nepieciešams smalkāks salīdzinājums? Ne tikai vienlīdzība vai nevienlīdzība, bet līdzība ar noteiktu modeli? Tieši šim nolūkam tika izveidota funkcija LĪDZĪGS.

LIKE — operators virknes līdzības ar paraugu pārbaudei. LIKE analogs SQL.

LĪDZĪGS operators ļauj salīdzināt izteiksmes vērtību, kas norādīta pa kreisi no tās, ar raksta virkni, kas norādīta labajā pusē. Izteiksmes vērtībai ir jābūt tipa virknei. Ja izteiksmes vērtība atbilst modelim, operatora rezultāts būs TRUE, pretējā gadījumā tas būs FALSE.

Šīs veidnes virknes rakstzīmes ir pakalpojumu rakstzīmes, un to nozīme atšķiras no virknes rakstzīmes:

  • % (procenti): secība, kas satur jebkādu skaitu patvaļīgu rakstzīmju;
  • _ (pasvītrojums): viena patvaļīga rakstzīme;
  • […] (viena vai vairākas rakstzīmes kvadrātiekavās): jebkura atsevišķa rakstzīme kvadrātiekavās. Uzskaitījums var saturēt diapazonus, piemēram, a–z, kas nozīmē diapazonā iekļautu patvaļīgu rakstzīmi, ieskaitot diapazona galus;
  • [^...] (kvadrātiekavās nolieguma zīme, kam seko viena vai vairākas rakstzīmes): jebkura atsevišķa rakstzīme, kas nav norādīta aiz nolieguma zīmes.

Jebkurš cits simbols nozīmē sevi un nenes nekādu papildu slodzi. Ja kāda no uzskaitītajām rakstzīmēm ir jāraksta kā pati, tad pirms tās ir jāieraksta<Спецсимвол>. Es pats<Спецсимвол>(jebkura piemērota rakstzīme) ir definēts tajā pašā paziņojumā pēc atslēgvārda SPECIAL CHARACTER.

Šis raksts ir pieejams arī šādās valodās: taju

  • Nākamais

    Liels PALDIES par ļoti noderīgo informāciju rakstā. Viss tiek pasniegts ļoti skaidri. Šķiet, ka ir ieguldīts liels darbs, lai analizētu eBay veikala darbību

    • Paldies jums un citiem pastāvīgajiem mana emuāra lasītājiem. Bez jums es nebūtu pietiekami motivēts, lai veltītu daudz laika šīs vietnes uzturēšanai. Manas smadzenes ir strukturētas šādi: man patīk rakt dziļi, sistematizēt izkaisītus datus, izmēģināt lietas, ko neviens iepriekš nav darījis vai skatījies no šī leņķa. Žēl, ka mūsu tautiešiem Krievijas krīzes dēļ nav laika iepirkties eBay. Viņi pērk no Aliexpress no Ķīnas, jo preces tur ir daudz lētākas (bieži vien uz kvalitātes rēķina). Taču tiešsaistes izsoles eBay, Amazon, ETSY viegli dos ķīniešiem priekšrocību zīmolu preču, vintage priekšmetu, ar rokām darinātu priekšmetu un dažādu etnisku preču klāstā.

      • Nākamais

        Jūsu rakstos ir vērtīga jūsu personīgā attieksme un tēmas analīze. Neatsakieties no šī emuāra, es šeit nāku bieži. Tādu mums vajadzētu būt daudz. Atsūti man ziņu e-pastā Nesen saņēmu e-pastu ar piedāvājumu, ka viņi man iemācīs tirgoties Amazon un eBay. Un es atcerējos jūsu detalizētos rakstus par šiem darījumiem. apgabalā Pārlasīju visu vēlreiz un secināju, ka kursi ir blēdība. Es vēl neko neesmu iegādājies eBay. Es neesmu no Krievijas, bet gan no Kazahstānas (Almati). Bet mums arī nav nepieciešami papildu izdevumi. Es novēlu jums veiksmi un palieciet drošībā Āzijā.

  • Ir arī patīkami, ka eBay mēģinājumi rusificēt saskarni lietotājiem no Krievijas un NVS valstīm ir sākuši nest augļus. Galu galā lielākajai daļai bijušās PSRS valstu pilsoņu nav spēcīgu svešvalodu zināšanu. Ne vairāk kā 5% iedzīvotāju runā angļu valodā. Jauniešu vidū tādu ir vairāk. Tāpēc vismaz saskarne ir krievu valodā - tas ir liels palīgs iepirkšanās tiešsaistē šajā tirdzniecības platformā. eBay negāja pa ķīniešu kolēģa Aliexpress ceļu, kur tiek veikta mašīna (ļoti neveikla un nesaprotama, brīžiem smieklu izraisoša) preču aprakstu tulkošana. Es ceru, ka augstākā mākslīgā intelekta attīstības stadijā augstas kvalitātes mašīntulkošana no jebkuras valodas uz jebkuru dažu sekunžu laikā kļūs par realitāti. Pagaidām mums ir šāds (viena eBay pārdevēja profils ar krievu interfeisu, bet apraksts angļu valodā):
    https://uploads.disquscdn.com/images/7a52c9a89108b922159a4fad35de0ab0bee0c8804b9731f56d8a1dc659655d60.png