სტრიქონებთან მუშაობის ფუნქციები 1s 8. სტრიქონებთან მუშაობის ახალი ფუნქციები

1C შეკითხვებში სტრინგებთან მუშაობის რამდენიმე მექანიზმი არსებობს. პირველ რიგში, ხაზების დამატება შეიძლება. მეორეც, შეგიძლიათ აიღოთ ქვესტრიქონი სტრიქონიდან. მესამე, სტრიქონების შედარება შესაძლებელია, მათ შორის ნიმუშის მიხედვით. ეს არის ალბათ ყველაფერი, რისი გაკეთებაც შესაძლებელია სიმებით.

სიმებიანი დამატება

მოთხოვნაში რიგების დასამატებლად გამოიყენება "+" ოპერაცია. თქვენ შეგიძლიათ დაამატოთ მხოლოდ შეზღუდული სიგრძის სტრიქონები.

აირჩიეთ "სახელი:"

ქვესტრიქონის ფუნქცია

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

Environment() ფუნქციის ანალოგი ობიექტის მოდელიდან. Substring() ფუნქცია შეიძლება გამოყენებულ იქნას სტრიქონების მონაცემებზე და საშუალებას გაძლევთ აირჩიოთ ფრაგმენტი <Строки> , დაწყებული სიმბოლოს ნომრით <НачальнаяПозиция> (სტრიქონის სიმბოლოები დანომრილია 1-დან) და სიგრძე <Длина> პერსონაჟები. ფუნქციის გამოთვლის შედეგს აქვს ცვლადი სიგრძის სტრიქონის ტიპი და სიგრძე ჩაითვლება შეუზღუდავად, თუ <Строка> აქვს შეუზღუდავი სიგრძე და პარამეტრი <Длина> არ არის მუდმივი ან 1024-ზე მეტი.

თუ სტრიქონის სიგრძე ნაკლებია, ვიდრე მითითებულია მეორე პარამეტრში, მაშინ ფუნქცია დააბრუნებს ცარიელ სტრიქონს.

ყურადღება! SUBSTRING() ფუნქციის გამოყენება შეუზღუდავი სიგრძის სტრიქონების შეზღუდული სიგრძის სტრიქონებში გადასაყვანად არ არის რეკომენდებული. ამის ნაცვლად, უმჯობესია გამოიყენოთ cast ოპერატორი EXPRESS().

ფუნქცია მსგავსი

თუ ჩვენ უნდა დავრწმუნდეთ, რომ სიმებიანი ატრიბუტი აკმაყოფილებს გარკვეულ კრიტერიუმებს, ჩვენ ვადარებთ მას:

SELECT Counterparties დასახელება AS სვეტი 1 FROM Counterparties AS Counterparties.

მაგრამ რა მოხდება, თუ უფრო დახვეწილი შედარება გჭირდებათ? არა მხოლოდ თანასწორობა ან უთანასწორობა, არამედ გარკვეული ნიმუშის მსგავსება? ზუსტად ამისთვის შეიქმნა SIMILAR ფუნქცია.

LIKE - ოპერატორი, რომელიც ამოწმებს სტრიქონს ნიმუშთან მსგავსებაზე. LIKE-ის ანალოგი SQL-ში.

SIMILAR ოპერატორი საშუალებას გაძლევთ შეადაროთ მის მარცხნივ მითითებული გამოხატვის მნიშვნელობა მარჯვნივ მითითებულ შაბლონის სტრიქონთან. გამოხატვის მნიშვნელობა უნდა იყოს string ტიპის. თუ გამოხატვის მნიშვნელობა ემთხვევა შაბლონს, ოპერატორის შედეგი იქნება TRUE, წინააღმდეგ შემთხვევაში იქნება FALSE.

ნიმუშის სტრიქონში შემდეგი სიმბოლოები არის სერვისის სიმბოლოები და აქვთ სტრიქონის სიმბოლოსგან განსხვავებული მნიშვნელობა:

  • % (პროცენტი): თანმიმდევრობა, რომელიც შეიცავს ნებისმიერი რაოდენობის თვითნებურ სიმბოლოებს;
  • _ (ხაზგასმით): ერთი თვითნებური სიმბოლო;
  • [...] (ერთი ან მეტი სიმბოლო კვადრატულ ფრჩხილებში): ნებისმიერი სიმბოლო, რომელიც ჩამოთვლილია კვადრატულ ფრჩხილებში. ჩამოთვლა შეიძლება შეიცავდეს დიაპაზონებს, მაგალითად a-z, რაც ნიშნავს თვითნებურ სიმბოლოს, რომელიც შედის დიაპაზონში, დიაპაზონის ბოლოების ჩათვლით;
  • [^...] (კვადრატულ ფრჩხილებში უარყოფის ნიშანი, რომელსაც მოჰყვება ერთი ან მეტი სიმბოლო): ნებისმიერი ცალკეული სიმბოლო, გარდა იმ სიმბოლოებისა, რომლებიც ჩამოთვლილია უარყოფის ნიშნის შემდეგ.

ნებისმიერი სხვა სიმბოლო ნიშნავს თავის თავს და არ ატარებს რაიმე დამატებით დატვირთვას. თუ ჩამოთვლილი სიმბოლოებიდან ერთ-ერთი უნდა დაიწეროს როგორც თავად, მაშინ მას წინ უნდა უძღოდეს<Спецсимвол>. მე თვითონ<Спецсимвол>(ნებისმიერი შესაფერისი სიმბოლო) განისაზღვრება იმავე განცხადებაში SPECIAL CHARACTER საკვანძო სიტყვის შემდეგ.

განხორციელებული ვერსია 8.3.6.1977.

ჩვენ გავაფართოვეთ ფუნქციების ნაკრები, რომელიც შექმნილია სტრინგებთან მუშაობისთვის. ჩვენ ეს გავაკეთეთ იმისათვის, რომ მოგაწოდოთ უფრო მოწინავე ინსტრუმენტები სტრიქონების მონაცემების გასაანალიზებლად. ახალი ფუნქციები მოსახერხებელი და გამოსადეგი იქნება ტექსტის ანალიზის ტექნოლოგიურ ამოცანებში. ტექსტის ანალიზთან დაკავშირებულ ამოცანებში, რომელიც შეიცავს მონაცემებს ფორმატირებულ ფორმაში. ეს შეიძლება იყოს აღჭურვილობიდან მიღებული ზოგიერთი ფაილის ანალიზი, ან, მაგალითად, ტექნოლოგიური ჟურნალის ანალიზი.

თქვენ შეგეძლოთ შეასრულოთ ყველა ის მოქმედება, რომელიც ადრე ასრულებდა ახალ ფუნქციებს. ჩაშენებულ ენაზე დაწერილი მეტ-ნაკლებად რთული ალგორითმების გამოყენება. ამიტომ, ახალი ფუნქციები არ მოგცემთ რაიმე ფუნდამენტურად ახალ შესაძლებლობებს. თუმცა, ისინი საშუალებას გაძლევთ შეამციროთ კოდის რაოდენობა და გახადოთ კოდი უფრო მარტივი და გასაგები. გარდა ამისა, ისინი საშუალებას გაძლევთ დააჩქაროთ მოქმედებების შესრულება. რადგან პლატფორმაში განხორციელებული ფუნქციები, რა თქმა უნდა, უფრო სწრაფად მუშაობს, ვიდრე ჩაშენებულ ენაზე დაწერილი მსგავსი ალგორითმი.

ფორმატირების ფუნქცია StrTemplate()

ეს ფუნქცია ანაცვლებს პარამეტრებს სტრიქონში. ასეთი კონვერტაციის საჭიროება ხშირად ჩნდება, მაგალითად, გამაფრთხილებელი შეტყობინებების ჩვენებისას. ამ ფუნქციის სინტაქსი ასეთია:

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

<Шаблон>- ეს არის სტრიქონი, რომელშიც თქვენ უნდა შეცვალოთ პარამეტრების წარმოდგენები.

<Значение1> , ... <Значение10>- ეს არის პარამეტრები (მაქსიმუმ ათი), რომელთა წარმოდგენები უნდა შეიცვალოს სტრიქონში.

შაბლონში კონკრეტული ადგილის მითითებისთვის, სადაც გსურთ ჩანაცვლების შესრულება, უნდა გამოიყენოთ მარკერები, როგორიცაა %1, ... %10. შაბლონში ჩართული მარკერების რაოდენობა და მნიშვნელობების შემცველი პარამეტრების რაოდენობა უნდა ემთხვეოდეს.

მაგალითად, ასეთი ოპერატორის შესრულების შედეგი:

იქნება ხაზი:

მონაცემთა შეცდომა მე-2 სტრიქონზე (საჭიროა თარიღის ტიპი)

სტრიქონებთან მუშაობის ფუნქცია StrCompare()

ეს ფუნქცია ადარებს ორ სტრიქონს რეგისტრის მნიშვნელობის გარეშე. მაგალითად, ასე:

თქვენ შეგიძლიათ იგივე ქმედება ადრე შეასრულოთ Value Comparison ობიექტის გამოყენებით:

თუმცა, ახალი ფუნქციის გამოყენება უფრო ადვილია. გარდა ამისა, ფუნქცია, Value Comparison ობიექტისგან განსხვავებით, მუშაობს როგორც თხელი კლიენტში, ასევე ვებ კლიენტში.

სტრიქონებთან მუშაობის ფუნქციები StrStartsWith(), StrEndsAt()

ეს ფუნქციები განსაზღვრავს, იწყება თუ არა სტრიქონი მითითებული ქვესტრინგით თუ სტრიქონი მთავრდება მითითებული ქვესტრიქონით. ამ ფუნქციების ალგორითმი არ არის რთული განსახორციელებელი ჩაშენებულ ენაზე, მაგრამ მათი არსებობა საშუალებას გაძლევთ დაწეროთ უფრო სუფთა და გასაგები კოდი. და ისინი უფრო სწრაფად მუშაობენ.

მაგალითად, ისინი მოსახერხებელია If განაცხადის გამოყენებაში:

სტრიქონებთან მუშაობის ფუნქციები StrDivide(), StrConnect()

ეს ფუნქციები ყოფს სტრიქონს ნაწილებად განსაზღვრული დელიმიტერის გამოყენებით. ან პირიქით, ისინი აერთიანებენ რამდენიმე ხაზს ერთში, მათ შორის შერჩეული გამყოფის ჩასმა. ისინი მოსახერხებელია ჟურნალებისა და ტექნოლოგიური ჟურნალების შესაქმნელად ან ანალიზისთვის. მაგალითად, თქვენ შეგიძლიათ მარტივად გააანალიზოთ ტექნოლოგიური ჟურნალის ჩანაწერი შემდგომი ანალიზისთვის შესაფერის ნაწილებად:

სტრიქონებთან მუშაობის ფუნქცია StrFind()

ძველი Find() ფუნქციის ნაცვლად, ჩვენ განვახორციელეთ ახალი ფუნქცია, რომელსაც აქვს დამატებითი შესაძლებლობები:

  • ძიება სხვადასხვა მიმართულებით (თავიდან, ბოლოდან);
  • ძიება მითითებული პოზიციიდან;
  • მოძებნეთ მოვლენა მითითებული ნომრით (მეორე, მესამე და ა.შ.).

სინამდვილეში, ის იმეორებს ძველი ფუნქციის შესაძლებლობებს. ეს კეთდება ძველ ვერსიებში შედგენილ მოდულებთან თავსებადობის შესანარჩუნებლად. რეკომენდირებულია აღარ გამოიყენოთ ძველი Find() ფუნქცია.

ქვემოთ მოცემულია მაგალითი ახალი საძიებო შესაძლებლობების გამოყენებით. საპირისპირო ძიება სასარგებლოა, როდესაც გჭირდებათ ფორმალიზებული სტრიქონის ბოლო ნაწილი, როგორიცაა ფაილის სრული სახელი URL-ში. და მითითებული პოზიციიდან ძიება დაგეხმარებათ იმ შემთხვევებში, როდესაც საჭიროა მოძებნოთ ცნობილ ფრაგმენტში და არა მთელ ხაზში.

სტრიქონი არის მონაცემთა ერთ-ერთი პრიმიტიული ტიპი 1C: Enterprise 8 სისტემებში ხაზიშეიცავს ტექსტს.

აკრიფეთ ცვლადი მნიშვნელობები ხაზიჩასმულია ორმაგ ბრჭყალებში. ამ ტიპის რამდენიმე ცვლადის დამატება შეიძლება.

Per1 = "სიტყვა 1" ;
Per2 = "სიტყვა 2" ;
Per3 = Per1 + " " + Per2;

საბოლოოდ პერ3ნიშნავს " სიტყვა 1 სიტყვა 2″.

გარდა ამისა, 1C: Enterprise 8 სისტემები უზრუნველყოფენ სტრინგებთან მუშაობის ფუნქციებს. მოდით შევხედოთ მთავარებს:

EnterString (<Строка>, <Подсказка>, <Длина>, <Многострочность>) — ფუნქცია შექმნილია დიალოგური ფანჯრის გამოსაჩენად, რომელშიც მომხმარებელს შეუძლია მიუთითოს ტიპის ცვლადის მნიშვნელობა ხაზი. Პარამეტრი <Строка> აუცილებელია და შეიცავს ცვლადის სახელს, რომელშიც ჩაიწერება შეყვანილი სტრიქონი. Პარამეტრი <Подсказка> სურვილისამებრ - ეს არის დიალოგური ფანჯრის სათაური. Პარამეტრი <Длина> სურვილისამებრ, აჩვენებს შეყვანის სტრიქონის მაქსიმალურ სიგრძეს. ნაგულისხმევი არის ნულოვანი, რაც ნიშნავს შეუზღუდავ სიგრძეს. Პარამეტრი <Многострочность> სურვილისამებრ. განსაზღვრავს ტექსტის შეყვანის მრავალსტრიქონულ რეჟიმს: True-მრავალხაზოვანი ტექსტის შეყვანა ხაზების გამყოფებით; False - შეიყვანეთ მარტივი სტრიქონი.

თქვენ შეგიძლიათ შეიყვანოთ სტრიქონი, თუ იცით სიმბოლოების კოდი Unicode-ში:

სიმბოლო (<КодСимвола>) — კოდი შეყვანილია როგორც ნომერი.

ასო= Symbol(1103) ;

// ᲛᲔ

ასევე არსებობს ინვერსიული ფუნქცია, რომელიც საშუალებას გაძლევთ გაიგოთ სიმბოლოს კოდი.<Строка>, <НомерСимвола>) — სიმბოლური კოდი (

აბრუნებს მითითებული სიმბოლოს უნიკოდის ნომერს რიცხვად.

ტექსტის შემთხვევის კონვერტაციის ფუნქციები:<Строка>) VReg(

— სტრიქონის ყველა სიმბოლოს გარდაქმნის დიდ ასოებში.<Строка>) NReg(

— სტრიქონის ყველა სიმბოლოს გარდაქმნის მცირე რეგისტრში.<Строка>) Treg(

— გარდაქმნის სტრიქონში არსებულ ყველა სიმბოლოს სათაურში. ანუ, ყველა სიტყვის პირველი ასო გარდაიქმნება ზევით, ხოლო დარჩენილი ასოები – მცირე.

სიმბოლოების ძებნისა და ჩანაცვლების ფუნქციები სტრიქონში:<Строка>, <ПодстрокаПоиска>) იპოვე(

— პოულობს საძიებო ქვესტრიქონის გამოჩენის სიმბოლოს ნომერს. Მაგალითად:

იპოვე ("სტრიქონი" , "ოკა" );<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 StrFind (— პოულობს საძიებო ქვესტრიქონის გაჩენის სიმბოლოს ნომერს, კლების ნომერი მითითებულია შესაბამის პარამეტრში. ამ შემთხვევაში ძიება იწყება სიმბოლოთი, რომლის ნომერიც მითითებულია პარამეტრში

საწყისი პოზიცია. ძიება შესაძლებელია სტრიქონის დასაწყისიდან ან ბოლოდან. Მაგალითად: Number4 Occurrences = Str Find (

"თავდაცვითობა"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) , "დაახლოებით" ,ძებნის მიმართულება. დასაწყისიდან, 1, 4);

// 7

StrReplace (<Строка>) – პოულობს საძიებო ქვესტრიქონის ყველა შემთხვევას წყაროს სტრიქონში და ანაცვლებს მას შემცვლელი ქვესტრიქონით. StrReplace ("სტრიქონი", "ოკა", "");// გვერდი ცარიელი ხაზი (.

– ამოწმებს სტრიქონს მნიშვნელოვანი სიმბოლოებისთვის. თუ არ არის მნიშვნელოვანი სიმბოლოები, ან საერთოდ არ არის სიმბოლოები, მაშინ მნიშვნელობა ბრუნდება<Строка>, <ПодстрокаПоиска>) მართალია

. წინააღმდეგ შემთხვევაში - ტყუილი StrNumberOccurrences(

StrTemplate (<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — – ითვლის საძიებო ქვესტრიქონის შემთხვევების რაოდენობას წყაროს სტრიქონში. StrNumberOccurrences ("ისწავლე, ისწავლე და ისევ ისწავლე"

, "სწავლა" , "" ) ; // 3 ანაცვლებს პარამეტრებს სტრიქონში რიცხვით. ხაზი უნდა შეიცავდეს ფორმის შემცვლელ მარკერებს: „%1..%N“. მარკერის ნუმერაცია იწყება 1-დან. თუ პარამეტრის მნიშვნელობა, "1" , "2" ) ; Განუსაზღვრელი

სიმებიანი კონვერტაციის ფუნქციები:

Ლომი(<Строка>, <ЧислоСимволов>) – აბრუნებს სტრიქონის პირველ სიმბოლოებს.

მარჯვენა (<Строка>, <ЧислоСимволов>) – აბრუნებს სტრიქონის ბოლო სიმბოლოებს.

ოთხშაბათი (<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – აბრუნებს სიგრძის სტრიქონს<ЧислоСимволов>სიმბოლოდან დაწყებული<НачальныйНомер>.

AbbrL(<Строка>) წყვეტს არამნიშვნელოვან სიმბოლოებს სტრიქონის პირველი მნიშვნელოვანი სიმბოლოს მარცხნივ.

Abbr(<Строка>) — წყვეტს უმნიშვნელო სიმბოლოებს ხაზის ბოლო მნიშვნელოვანი სიმბოლოს მარჯვნივ.

AbbrLP(<Строка>) – წყვეტს უმნიშვნელო სიმბოლოებს სტრიქონის პირველი მნიშვნელოვანი სიმბოლოს მარცხნივ და სტრიქონში ბოლო მნიშვნელოვანი სიმბოლოს მარჯვნივ.

StrGetString (<Строка>, <НомерСтроки>) – იღებს მრავალხაზოვან სტრიქონს რიცხვის მიხედვით.

სხვა მახასიათებლები:

სიძლიერის სიგრძე (<Строка>) – აბრუნებს სტრიქონში სიმბოლოების რაოდენობას.

StrNumberRow(<Строка>) – აბრუნებს მრავალხაზოვანი სტრიქონში ხაზების რაოდენობას. სტრიქონი ახალად ითვლება, თუ იგი წინადან გამოყოფილია ახალი ხაზის სიმბოლოთი.

StrCompare(<Строка1>, <Строка2> ) – ადარებს ორ სტრიქონს რეგისტრის მნიშვნელობის გარეშე. ფუნქცია მუშაობს როგორც ობიექტი ღირებულებების შედარება. აბრუნებს:

  • 1 - თუ პირველი ხაზი მეორეზე მეტია
  • -1 - თუ მეორე ხაზი პირველზე მეტია
  • 0 - თუ სტრიქონები ტოლია

StrCompare("პირველი ხაზი", "მეორე ხაზი");

// 1

როგორც მაგალითი იმისა, თუ როგორ მუშაობს 1C სტრიქონებთან მუშაობის ფუნქციები, გვინდა შევქმნათ ტექსტის ავტომატური ანალიზი. ჩვენ ავიღებთ ტექსტს ფაილიდან. ანალიზის შედეგი მომხმარებლისთვის ნაჩვენებია ნებისმიერი ფორმით.

ჩვენ უნდა შევქმნათ გარე დამმუშავებელი, რომელიც მოგვცემს საშუალებას ავირჩიოთ ტექსტური ფაილი და გავუშვათ ანალიზატორი.

ტექსტის ანალიზი 1C - ფორმა და ღილაკები

მაშ ასე, შევქმნათ გარე დამუშავება: კონფიგურატორი/ფაილი/ახალი/გარე დამუშავება.

ფორმის დამატება. ფორმაზე უნდა განვათავსოთ ტექსტური ფაილის შერჩევის ველი და ანალიზის ღილაკი.

ტექსტის ანალიზი 1C - სქელი კლიენტი

მოდით მოვათავსოთ ფორმაზე ჩვეულებრივი ტექსტური ველი. ხაზის სიგრძე შეუზღუდავია, რადგან ფაილისკენ მიმავალი გზა (დირექტორის სახელები) შეიძლება იყოს მნიშვნელოვანი.

იმისათვის, რომ მომხმარებელს არ მოუწიოს ფაილის სახელის შეყვანა, მაგრამ შეძლოს მისი არჩევა, ველში ჩავრთავთ შერჩევის ღილაკს.

მოდით შევცვალოთ ველის სახელი "FileName", ასოცირებული ფორმის ატრიბუტის სახელი ავტომატურად შეიცვლება იგივე.

როგორც ღილაკი, ჩვენ გამოვიყენებთ პლატფორმის მიერ ავტომატურად დამატებულ ღილაკს „გაშვება“ (და მას უკვე აქვს დაკავშირებული დამმუშავებელი - მოსახერხებელი).

ტექსტის ანალიზი 1C - თხელი კლიენტი

თხელი კლიენტში ჩვენ დამოუკიდებლად შევქმნით "FileName" ფორმის ატრიბუტს. მოდით გადავიტანოთ რეკვიზიტები ფორმაზე. ფორმის ელემენტის თვისებებში ჩვენ ასევე გავააქტიურებთ არჩევის ღილაკს.

როგორც ღილაკი, ჩვენ შევქმნით "Run" ბრძანებას, მივანიჭებთ მას დამუშავებას და გადავიტანეთ ფორმაზე.

პირველი, რაც უნდა გავაკეთოთ არის შერჩევის ღილაკის დაწკაპუნების დამუშავება - ფაილის შერჩევის დიალოგის ჩვენება დაწკაპუნებისას.

მოდით გადავიდეთ ფორმაზე ჩვენი ტექსტური ველის თვისებებზე (სქელ კლიენტში - მაუსის მარცხენა ღილაკით პირდაპირ ველზე, თხელ კლიენტში - სიაში ველის სახელზე) და მივუთითოთ მოვლენის დამმუშავებელი. ღონისძიება "შერჩევის დაწყება".

დამმუშავებლის ფუნქციის შიგნით, რომელსაც 1C შექმნის მინიჭებისას, ჩვენ დავწერთ მარტივ კოდს:

ახლა ჩვენ გვაქვს ფაილის სახელი. ჩვენ უნდა "მივიღოთ" მისი შინაარსი და გამოვიძახოთ ტექსტის ანალიზი.

ჩვენ უკვე გვაქვს Run ღილაკის დამმუშავებელი. სქელ კლიენტში ღილაკი და მისი დამმუშავებელი ავტომატურად შეიქმნა 1C კონფიგურატორის მიერ. თინ კლიენტში ჩვენ ხელით დავამატეთ.

მოდით დავამატოთ კოდი დამმუშავებელს, რომელიც კითხულობს ფაილს სტრიქონში:

რაც შეეხება ფაილის დაშიფვრას. თუ თქვენ შექმნით TextReading() ობიექტს კოდირების მითითების პარამეტრის გარეშე, 1C შეეცდება დამოუკიდებლად განსაზღვროს კოდირება (ბიტის ორდერის ნიშნის გამოყენებით - BOM, ან განიხილავს მის ANSI კოდირებას).

თქვენ შეგიძლიათ პირდაპირ მიუთითოთ სასურველი კოდირება, მაგალითად ასე:
File = New ReadText(FileName, "UTF-8"); //შეცვალეთ სასურველი კოდირების სახელი

ასე რომ, შედეგად მივიღეთ:

  • ტექსტის სტრიქონი წაკითხული ფაილიდან ცვლადში "ტექსტი"
  • პროცედურა, რომელშიც ჩვენ გავაანალიზებთ მიღებულ სტრიქონს ცვლადიდან, სახელწოდებით "TextAnalysis()", 1C სტრიქონის ფუნქციების გამოყენებით.

პროგრამირების ენის ძირითადი შესაძლებლობები ჩვეულებრივ მოიცავს რიცხვებთან და სტრიქონებთან მუშაობას. როგორც წესი, ეს შესაძლებლობები მყარი კოდირებულია კომპილერის კოდში (ან დანერგილია პროგრამირების ენის „ბაზისური“ კლასები).

1C-ში, სტრინგებთან მუშაობის შესაძლებლობა დაპროგრამებულია თავად პლატფორმაში. დღეს ჩვენ გადავხედავთ 1C სტრიქონებთან მუშაობის მახასიათებლებს პროგრამებში ჩაშენებულ 1C ენაზე.

ხაზის მნიშვნელობა 1C

1. დავიწყოთ უმარტივესით. ცვლადის შექმნა და მისთვის მუდმივი სტრიქონის მნიშვნელობის მინიჭება ასე გამოიყურება 1C-ში:

ცვლადი = "გამარჯობა, სამყარო!";

თუ თქვენ გჭირდებათ ციტატის სიმბოლოს მითითება მუდმივი 1C სტრიქონის მნიშვნელობაში, მაშინ უნდა გააორმაგოთ იგი ""

ცვლადი = "გამარჯობა, სამყარო"!;

2. ხაზის გაწყვეტა 1C შეიძლება დაზუსტდეს ერთდროულად ორი გზით. პირველი იყენებს სიმბოლოს |

ცვლადი = "გამარჯობა,
| სამყარო! ";

მეორე იყენებს სიმბოლოების სისტემის ჩამოთვლას. ის საშუალებას გაძლევთ დაამატოთ როგორც 1C ხაზის შესვენება, ასევე სხვა არასაბეჭდი სიმბოლოები, როგორიცაა TAB.

ცვლადი = "გამარჯობა" + სიმბოლოები. PS + "მშვიდობა!";

3. 1C-ში კონფიგურაციები შეიძლება განვითარდეს არა მხოლოდ ერთი ენისთვის (რუსული, ინგლისური ან სხვა) - არამედ ერთდროულად რამდენიმე ენისთვის. ამ შემთხვევაში, ამჟამად გამოყენებული ენა არჩეულია 1C ფანჯრის ბოლოში.

ენების სია განთავსებულია კონფიგურაციის ფანჯარაში General/Languages ​​ფილიალში. თითოეულ ენას აქვს მოკლე იდენტიფიკატორი, როგორიცაა ruან ინჟ.

ნათელია, რომ ასეთი კონფიგურაციის დაპროგრამებისას, 1C ხაზები ასევე შეიძლება იყოს მრავალენოვანი. ამისათვის შესაძლებელია ასეთი 1C ხაზის შექმნა მეშვეობით მითითებით; პარამეტრები ენის იდენტიფიკატორის მიხედვით:

Variable = "ru=""გამარჯობა, სამყარო! ""; en=""გამარჯობა, მსოფლიო! """;

თუ იყენებთ ჩვეულებისამებრ ამ გზით ჩამოყალიბებულ 1C ხაზს, მაშინ ის იქნება რაც მასში წერია. იმისათვის, რომ სისტემამ გაიყოს ის ორ ვარიანტად და გამოიყენოს სასურველი, თქვენ უნდა გამოიყენოთ НStr() ფუნქცია:

//სწორია ორენოვანი კონფიგურაციებისთვის
ანგარიში(NStr(ცვლადი));

საყრდენები ხაზის ტიპის 1C

ატრიბუტი არის ველი 1C დირექტორიაში/დოკუმენტში. ის განსხვავდება პროგრამის ცვლადისაგან 1C ენაზე იმით, რომ ატრიბუტისთვის მისი ტიპი ზუსტად არის მითითებული (რიცხვი, 1C სტრიქონი და ა.შ.). თუ გჭირდებათ მეხსიერების განახლება იმის შესახებ, თუ რა არის საყრდენი, უყურეთ გაკვეთილს.

თუ მიუთითებთ ატრიბუტის ტიპს - ხაზი 1C, მაშინ დამატებით უნდა მიუთითოთ პარამეტრები.

1C ხაზები მოდის შეუზღუდავი სიგრძით (მითითებულია, როგორც სიგრძე = 0) და შეზღუდული სიგრძე, რაც მიუთითებს სიმბოლოების ზუსტ რაოდენობაზე. შეუზღუდავი სიგრძის 1C რიგები ინახება ცალკე SQL ცხრილში, ამიტომ მათი გამოყენება ნაკლებად პროდუქტიულია, ვიდრე შეზღუდული.

სწორედ ამიტომ, შეუზღუდავი სიგრძის 1C სტრიქონების გამოყენებას აქვს თავისი შეზღუდვები - მათი გამოყენება ყველგან შეუძლებელია. მაგალითად, დაუშვებელია დოკუმენტის ნომერი, საცნობარო კოდი ან გაზომვა.

მუშაობა 1C სტრიქონებთან

1C პლატფორმის რამდენიმე ჩაშენებული ფუნქციაა სტრინგებთან მუშაობისთვის.

  • AbbrLP ("წარმოუდგენელი, მაგრამ მართალია!")
    შლის დამატებით სივრცეებს ​​1C ხაზიდან. ასევე შეიძლება გამოყენებულ იქნას ნებისმიერი ტიპის 1C სტრიქონზე გადასაყვანად (მაგალითად, რიცხვებში).
  • ცვლადი = "ვასია" + AbbrLP(" პლუს") + "ოლია"; //იქნება "ვასია პლუს ოლია"
    რამდენიმე 1C სტრიქონის მნიშვნელობის შეჯამების მაგალითი. შედეგი იქნება ერთი ხაზი 1C.
  • ცვლადი = Lev("მუსიკა", 2); //იქნება "მუ"
    ცვლადი = საშუალო ("მუსიკა", 2, 2); //იქნება "საფრთხე"
    ცვლადი = უფლებები ("მუსიკა", 2); //იქნება "კა"
    1C სტრიქონიდან ქვესტრიქონის მიღების სხვადასხვა ვარიანტები.
  • ცვლადი = Find("მუსიკა", "zy"); //იქნება 3
    მოძებნეთ ქვესტრიქონი 1C სტრიქონში, დაწყებული სიმბოლო 1-ით.
  • ცვლადი = StrLength ("მუსიკა"); //იქნება 6
    აბრუნებს სიმბოლოების რაოდენობას 1C ხაზში.
  • მოხსენება ("გამარჯობა") //შეტყობინებების ფანჯარაში 1C ფანჯრის ბოლოში
    გაფრთხილება ("გამარჯობა") // ამომხტარი დიალოგი
    სტატუსი ("გამარჯობა") // სტატუსის ჩვენების ხაზში ქვედა მარცხენა მხარეს
    .

ობიექტების მიყვანა 1C ხაზამდე

მოგეხსენებათ, სტრუქტურირებული ინფორმაციის გაცვლის ყველაზე პოპულარული ფორმატი ამჟამად არის XML. MS Office Word-ის და Excel-ის უახლესი ვერსიაც კი ინახავს ფაილებს ამ ფორმატში (docx და xlsx, შესაბამისად, შეცვალეთ გაფართოება zip-ზე, გახსენით არქივში).

მონაცემთა გაცვლის 1C პლატფორმა გთავაზობთ რამდენიმე ვარიანტს, რომელთაგან მთავარი ასევე არის XML.

1. უმარტივესი მეთოდია Abbreviation() ან String() ფუნქციის გამოყენება. თქვენ შეგიძლიათ გამოიყენოთ REPRESENTATION() ფუნქცია მოთხოვნის ორგანოში. მათი მოქმედების შედეგი იგივეა - ისინი ქმნიან მომხმარებლისთვის ნებისმიერი 1C ობიექტის სიმებიანი წარმოდგენას.

სტანდარტულად დირექტორიასთვის, ეს იქნება მისი სახელი. დოკუმენტისთვის - დოკუმენტის სახელი, ნომერი და თარიღი.

2. ნებისმიერი 1C ობიექტი (შეზღუდვებით) შეიძლება გადაიზარდოს XML-ში და პირიქით. კონვერტაციის პროცესს სერიალიზაცია ეწოდება.

StringViewXml = XMLString(Value); //მიიღეთ XML 1C მნიშვნელობიდან
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //მიიღეთ 1C მნიშვნელობა XML სტრიქონიდან, უნდა მიუთითოთ 1C ტიპი, რომელიც უნდა მიიღოთ

3. არსებობს 1C პლატფორმის საკუთარი გზა ნებისმიერი 1C ობიექტის სტრინგად გადაქცევისთვის. ის გადავიდა 1C 7.7 ვერსიიდან. ეს ფორმატი არ ესმის სხვა პროგრამებს, მაგრამ სხვა 1C-ს ესმის, რაც აადვილებს მის გამოყენებას 1C მონაცემთა ბაზებს შორის გაცვლისთვის.

მწკრივი = ValueInRowInt(Value1C); //მიიღეთ სტრიქონი 1C 1C მნიშვნელობიდან
ValueVFile ("C:\MyFile.txt", Value1C); //სხვა ვარიანტი, ჩვენ ვიღებთ ფაილს შენახული სტრიქონით 1C მნიშვნელობიდან
Value1C = ValueFromStringInt(String); //უკან 1C ხაზიდან
Value1C = ValueFile ("C:\MyFile.txt"); //უკან ფაილიდან

ფორმაზე 1C ხაზების რედაქტირება

1C სტრიქონებთან მუშაობის გარდა პროგრამაში 1C ენაზე, რა თქმა უნდა, მსურს მომხმარებელმა შეძლოს მათი რედაქტირება. ამისათვის რამდენიმე შესაძლებლობა არსებობს:

1. უმარტივესი გზაა მოთხოვნაზე 1C ხაზის შეყვანა. ეს მეთოდი გამოიყენება 1C პროგრამირების სწავლებისას, იგი გამოიყენება ბევრად უფრო იშვიათად (მაგრამ გამოიყენება!).

ცვლადი = "";
Row = EnterValue (ცვლადი, "Enter Full Name");

2. 1C ობიექტის (დირექტორია/დოკუმენტი) ან ფორმის დეტალების საჩვენებლად (იხ.) ყველაზე ხშირად გამოიყენება შეყვანის ველი. ეს არის ყველაზე გავრცელებული ინსტრუმენტი 1C-ში მომხმარებლისთვის რედაქტირების ველებთან მუშაობისთვის.

3. შეყვანის ველის შესაძლებლობები შეიძლება გაფართოვდეს (იხილეთ შეყვანის ველის თვისებები, დააწკაპუნეთ მასზე მარჯვენა ღილაკით, მეტი დეტალი):

  • მონიშვნის ველი მრავალხაზოვანი რედაქტირების რეჟიმი
  • გაფართოებული რედაქტირების ჩამრთველი (ხელმისაწვდომია, თუ წინა მოსანიშნი ველი მონიშნულია)
  • მონიშვნის ველი პაროლის რეჟიმი (იხ.).

4. თუ შეყვანის ველის ყველა შესაძლებლობა არ არის საკმარისი თქვენთვის, არის ჩაშენებული რედაქტორი. ფორმაში დასამატებლად, თქვენ უნდა დაამატოთ ტექსტური დოკუმენტის ველი Form/Insert Control მენიუში. მის თვისებებში შეგიძლიათ მიუთითოთ მისი მუშაობის რეჟიმი - გაფართოების თვისება.

ტექსტური დოკუმენტის ველი არ შეიძლება პირდაპირ იყოს დაკავშირებული მონაცემებთან. აუცილებელია ფუნქციის ჩაწერა ფორმის OnOpen() მოვლენის დამმუშავებელში (იხ.):

Form Elements.ElementNameTextDocumentField.SetText(StringValue); //აქ ValueString არის ტექსტი მიღებული, მაგალითად, ატრიბუტიდან

და შენახვის დამმუშავებელში - მაგალითად, Save ღილაკში - დაამატეთ შენახვა:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Value ხაზი აქ არის ატრიბუტი, სადაც ჩვენ ვინახავთ მნიშვნელობას

5. 1C ვერსიაში 8.2.11, მართულ ფორმებში, გამოჩნდა ახალი ვარიანტი 1C ხაზის წარმოსადგენად - ფორმატირებული დოკუმენტის ველი.


ტექსტური დოკუმენტის ველის მსგავსად, თქვენ უნდა დააყენოთ ის გახსნისას და ჩაწეროთ პროგრამის გამოყენებით მისი შენახვისას.

  • 1C ობიექტში, რომლის ფორმასაც ვქმნით (ცნობარი, დოკუმენტი, დამუშავება და ა.შ.) - დაამატეთ ატრიბუტი Value Storage ტიპის.
  • OnReadOnServer() ფუნქციაში ჩვენ ვაყენებთ ტექსტს ატრიბუტიდან

    //აქ ატრიბუტი არის 1C ობიექტის დამატებული ატრიბუტი
    //აქ FormattedDocument არის რედაქტირებისთვის ფორმის ველის სახელი
    &სერვერზე

    FormattedDocument = CurrentObject.Attributes.Get();
    დასრულების პროცედურა

  • BeforeWritingOnServer() ფუნქციაში ან ღილაკის გამოყენებით ჩვენ დავწერთ ტექსტს ველიდან

    &სერვერზე
    პროცედურა სერვერზე წაკითხვისას (CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    დასრულების პროცედურა