1s 8 sebagai operasi string. Fungsi baru untuk bekerja dengan string

BAGIAN 1. METODE (26).

1.1. Metode dasar (10). Independen, dibangun berdasarkan algoritma sederhana mereka sendiri.

Page_Add() (penambahan kanan-kiri dengan karakter tertentu).

Page_Inverse() (inversi - karakter dari kanan ke kiri).

Page_Codes() (kode karakter melalui ”,” dan array dengan kode)

Page_Characters() (rangkaian kode yang dipisahkan oleh ”,” atau dari larik dengan kode)

Page_ReplaceSymbols() (mengganti beberapa karakter dengan karakter lainnya).

String_FromArray() (string dari array fragmen yang dipisahkan oleh pemisah)

Page_FindIn() (mencari substring (termasuk di sebelah kanan) dengan nomor kemunculan tertentu).

Page_FindGr() (Mencari sekelompok karakter yang termasuk dalam kumpulan karakter yang ditentukan)

Page_FindNumber() (Mencari nomor, termasuk di sebelah kanan dengan nomor kemunculan yang ditentukan)

Page_Interpret() (ke dalam array, sesuai dengan sintaks yang telah ditetapkan)

1.2. Metode turunan (12). Sebenarnya, ini adalah penggunaan empat metode algoritma umum (lihat Bagian 2)

Page_Number() (dari awal dan akhir baris, jangan “takut” dengan karakter nonnumerik.

Page_Find() (mencari substring (termasuk peka huruf besar-kecil dan di sebelah kanan) dengan nomor kemunculan tertentu).

Page_Replace() (penelusuran (termasuk peka huruf besar-kecil dan tidak kidal), dan mengganti substring pembatas).

String_Piece() (sepotong string antara kemunculan pembatas yang ditentukan (kiri atau kanan)).

Page_ReplacePiece() (menggantikan “potongan” dalam string sumber dengan string yang ditentukan).

Page_ВArray() (antara kemunculan pemisah yang ditentukan (termasuk yang di sebelah kanan dan tanpa huruf besar-kecil).

Page_TransferBySyllables() (dibagi menjadi substring “Hamply”, dengan tanda hubung).

Page_MoveByWords() (dibagi menjadi substring “Lembut”)

Page_Cut() (“Potong” menjadi substring dengan panjang tertentu)

Str_Shorten() (ganti grup kiri karakter "disingkat" dengan "string pengganti"

Page_Abbreviation() (ganti grup karakter "yang dikurangi" di sebelah kanan dengan "string pengganti"

Str_ShortenS() (ganti di tengah-tengah kelompok karakter yang “dipendekkan” dengan “string pengganti”

Page_Extend (ekspansi ke panjang tertentu dengan menambah jumlah karakter tertentu)

1.3. Metode terperinci (3). "Membedah" garis dengan transfer ke tabel dengan informasi rinci.

Page_vTableIn() (ke dalam tabel sesuai dengan sistem pembatas bersarang).

Page_vTableGr (ke tabel menurut filter multi-level).

Page_inTableNumbers (dalam tabel dengan angka dan fragmen di antaranya).

BAGIAN 2. METODE-ALGORIM UMUM (3).

Page_Occurrence() (metode “Temukan” dan “Ganti”).

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

Page_Abcr() (metode "AbcrL", "AbcrP", "AbcrS", "Perluas".

Page_Split() (metode “Pindahkan Berdasarkan Suku Kata”, “Pindahkan Berdasarkan Kata”, “Potong”).

BAGIAN 3. FUNGSI UNIVERSAL.

Ini adalah semacam antarmuka pemrograman bersyarat yang memungkinkan

menerapkan beberapa metode ke string sekaligus. Diimplementasikan sebagai

fungsi dengan tujuh parameter ("Demo" dibuat berdasarkan fungsi ini):

Halaman_(Metode, Submetode, Input, Param1, Param2, Panjang_Nomor_Posisi, Output Tambahan)

Pilihan:

- "Metode" - beberapa metode "gabungan" dan (atau) satu "eksklusif".

(kode atau nama satu karakter, dapat dilakukan melalui ",")

- "Submetode" - beberapa opsi "gabungan" dan (atau) "eksklusif".

metode “eksklusif” (kode atau nama karakter tunggal);

- "Input" - String, atau Array atau Tabel nilai;

- "Param1" - string pencarian, substitusi, pemisah, filter;

- "Param2" - string atau karakter pengganti;

- “Length_Number_Position” -Nomor, Angka melalui pemisah atau larik dengan Angka;

- “Output Tambahan” - Angka atau String atau Array atau Tabel Nilai;

Nama dan/atau kode satu karakter dari submetode, serta nomor dalam

(Length_Number_Position) bisa dalam hal apa pun dan dipisahkan

salah satu pembatas berikut: ”, :;”.

BAGIAN 4. BEBERAPA CONTOH.

AdaNumbersInLine=(Str_FindNumber(InLine)<>Belum diartikan);

Ada angka dalam satu baris = (String_FindGr(Inline,"+0123456789")>0);

Ada Latin = (Str_FindGr(InStr, Str_Interpret("lL"))>0);

Ada Tanda Tertentu = (Str_NfindGr(VxStr, "+to rogYu.0p9")>0);

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

BAGIAN 5. KESIMPULAN.

Jika memungkinkan, saya puas dengan satu kali melewati garis tersebut. Lintasan kedua biasanya dilakukan dalam beberapa bagian. Saya tidak menggunakan fungsi bawaan StrNumberOccurrences().

Fungsi bawaan yang digunakan: Left(), Right(), Middle(), StrLength()

- (memposisikan dan mendapatkan bagian dari garis harus “cepat”).

Kemampuan dasar bahasa pemrograman biasanya mencakup bekerja dengan angka dan string. Biasanya fitur-fitur ini dikodekan ke dalam kode kompiler (atau kelas “dasar” dari bahasa pemrograman diimplementasikan).

Di 1C, kemampuan untuk bekerja dengan string diprogram di platform itu sendiri. Hari ini kita akan melihat fitur bekerja dengan string 1C dalam program dalam bahasa bawaan 1C.

Nilai garis 1C

1. Mari kita mulai dengan yang paling sederhana. Membuat variabel dan menetapkan nilai string konstan terlihat seperti ini di 1C:

Variabel = "Halo dunia!";

Jika Anda perlu menentukan karakter kutipan dalam nilai string 1C yang konstan, maka Anda perlu menggandakannya “”

Variabel = "Halo dunia"!;

2. Line break 1C dapat ditentukan dengan dua cara sekaligus. Yang pertama menggunakan simbol |

Variabel = "Halo,
| dunia! ";

Yang kedua adalah menggunakan sistem enumerasi Simbol. Ini memungkinkan Anda untuk menambahkan jeda baris 1C dan karakter non-cetak lainnya, seperti TAB.

Variabel = "Halo" + Simbol.PS + "damai!";

3. Konfigurasi dalam 1C dapat dikembangkan tidak hanya untuk satu bahasa (Rusia, Inggris, atau lainnya) - tetapi secara bersamaan untuk beberapa bahasa. Dalam hal ini, bahasa yang digunakan saat ini dipilih di bagian bawah jendela 1C.

Daftar bahasa terletak di jendela konfigurasi di cabang Umum/Bahasa. Setiap bahasa memiliki pengenal singkat seperti ru atau bahasa Inggris.

Jelas bahwa ketika memprogram konfigurasi seperti itu, jalur 1C juga bisa multibahasa. Untuk melakukan ini, Anda dapat membuat garis 1C dengan menentukan melalui; pilihan berdasarkan pengidentifikasi bahasa:

Variabel = "ru=""Halo dunia!"; en=""Halo dunia! """;

Jika menggunakan garis 1C yang dibentuk seperti biasa, maka akan sesuai dengan yang tertulis di dalamnya. Agar sistem dapat membaginya menjadi dua opsi dan menggunakan opsi yang diinginkan, Anda perlu menggunakan fungsi НStr():

//benar untuk konfigurasi bilingual
Laporan(NStr(Variabel));

Alat peraga dengan tipe garis 1C

Atributnya adalah bidang di direktori/dokumen 1C. Ini berbeda dari variabel dalam program dalam bahasa 1C karena tipenya ditunjukkan secara tepat untuk atribut (angka, string 1C, dll.). Jika Anda perlu menyegarkan ingatan Anda tentang apa itu alat peraga, tontonlah pelajaran selanjutnya.

Jika Anda menentukan jenis atribut - baris 1C, maka Anda juga harus menentukan parameternya.

Garis 1C memiliki panjang yang tidak terbatas (ditunjukkan sebagai panjang = 0) dan panjangnya terbatas, yang menunjukkan jumlah karakter yang tepat. Baris 1C dengan panjang tidak terbatas disimpan dalam tabel SQL terpisah, sehingga penggunaannya kurang produktif dibandingkan yang terbatas.

Itulah sebabnya penggunaan string 1C dengan panjang tidak terbatas memiliki keterbatasan - tidak mungkin untuk menggunakannya di mana pun. Misalnya, tidak diperbolehkan sebagai nomor dokumen, kode referensi, atau ukuran.

Bekerja dengan string 1C

Ada beberapa fungsi bawaan platform 1C untuk bekerja dengan string.

  • AbbrLP (“Luar biasa, tapi benar!”)
    Menghapus spasi tambahan dari baris 1C. Dapat juga digunakan untuk mengonversi tipe apa pun menjadi string 1C (misalnya, angka).
  • Variabel = "Vasya" + AbbrLP(" plus") + "Olya"; //akan ada "Vasya plus Olya"
    Contoh menjumlahkan beberapa nilai string 1C. Hasilnya akan menjadi satu baris 1C.
  • Variabel = Lev("Musik", 2); //akan menjadi "Mu"
    Variabel = Sedang("Musik", 2, 2); //akan ada "ancaman"
    Variabel = Hak("Musik", 2); //akan ada "ka"
    Berbagai pilihan untuk mendapatkan substring dari string 1C.
  • Variabel = Temukan("Musik", "zy"); //akan ada 3
    Cari substring di string 1C, dimulai dengan karakter 1.
  • Variabel = StrLength("Musik"); //akan ada 6
    Mengembalikan jumlah karakter di baris 1C.
  • Laporkan("Halo") //di jendela pesan di bagian bawah jendela 1C
    Peringatan("Halo") //dialog munculan
    Status("Halo") //pada baris tampilan status di kiri bawah
    .

Membawa objek ke garis 1C

Seperti yang Anda ketahui, format pertukaran informasi terstruktur yang paling populer saat ini adalah XML. Bahkan versi terbaru MS Office Word dan Excel menyimpan file dalam format ini (masing-masing docx dan xlsx, ubah ekstensinya menjadi zip, buka di pengarsip).

Platform pertukaran data 1C menyediakan beberapa opsi, yang utama juga XML.

1. Cara paling sederhana adalah dengan menggunakan fungsi Singkatan() atau String(). Anda dapat menggunakan fungsi REPRESENTATION() di isi permintaan. Hasil dari tindakan mereka sama - mereka menghasilkan representasi string dari objek 1C apa pun untuk pengguna.

Untuk direktori secara default, ini akan menjadi namanya. Untuk dokumen – nama dokumen, nomor dan tanggal.

2. Objek 1C apa pun (dengan batasan) dapat dikonversi ke XML dan sebaliknya. Proses konversi disebut serialisasi.

StringViewXml = XMLString(Nilai); //dapatkan XML dari nilai 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //mendapatkan nilai 1C dari string XML, Anda harus menentukan tipe 1C yang harus diterima

3. Ada cara platform 1C sendiri untuk mengubah objek 1C menjadi string. Itu bermigrasi dari versi 1C 7.7. Format ini tidak dipahami oleh program lain, tetapi 1C lain memahaminya, sehingga mudah digunakan untuk pertukaran antar database 1C.

Baris = ValueInRowInt(Value1C); //dapatkan string 1C dari nilai 1C
ValueVFile("C:\MyFile.txt", Value1C); //pilihan lain, kita mendapatkan file dengan string yang disimpan dari nilai 1C
Nilai1C = NilaiDariStringInt(String); //kembali dari baris 1C
Value1C = ValueFile("C:\MyFile.txt"); //kembali dari file

Mengedit baris 1C pada formulir

Selain bekerja dengan string 1C dalam program berbahasa 1C, tentunya saya ingin pengguna dapat mengeditnya. Ada beberapa kemungkinan untuk hal ini:

1. Cara termudah adalah dengan meminta masuknya jalur 1C sesuai permintaan. Metode ini digunakan ketika mengajarkan pemrograman 1C, dalam kehidupan nyata metode ini lebih jarang digunakan (tetapi digunakan!).

Variabel = "";
Baris = EnterValue(Variabel, "Masukkan Nama Lengkap");

2. Untuk menampilkan detail objek 1C (direktori/dokumen) atau detail formulir (lihat), kolom input paling sering digunakan. Ini adalah alat paling umum di 1C bagi pengguna untuk bekerja dengan bidang pengeditan.

3. Kemampuan kolom input dapat diperluas (lihat properti kolom input, klik kanan padanya, lebih detail):

  • Mode pengeditan multiline kotak centang
  • Kotak centang pengeditan lanjutan (tersedia jika kotak centang sebelumnya dicentang)
  • Kotak centang Mode kata sandi (lihat).

4. Jika semua kemampuan kolom input tidak cukup untuk Anda, ada editor bawaan. Untuk menambahkannya ke formulir, Anda perlu menambahkan Bidang Dokumen Teks ke menu Kontrol Formulir/Sisipkan. Di propertinya Anda dapat menentukan mode operasinya – properti Ekstensi.

Bidang dokumen teks tidak dapat dikaitkan langsung dengan data. Penting untuk menulis fungsi di event handler OnOpen() dalam bentuk (lihat):

Elemen Formulir.ElementNameTextDocumentField.SetText(StringValue); //di sini ValueString adalah teks yang diterima, misalnya, dari atribut

Dan di pengendali simpanan - misalnya, di tombol Simpan - tambahkan simpanan:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueBaris di sini adalah atribut tempat kita menyimpan nilainya

5. Dalam 1C versi 8.2.11, dalam formulir terkelola, opsi baru untuk mewakili baris 1C telah muncul - bidang Dokumen Terformat.


Mirip dengan bidang dokumen teks, Anda harus mengaturnya saat membukanya dan menuliskannya saat menyimpannya sendiri menggunakan program.

  • Pada objek 1C yang bentuknya kita buat (direktori, dokumen, pemrosesan, dll.) - tambahkan atribut dengan tipe Value Storage
  • Dalam fungsi OnReadOnServer() kita mengatur teks dari atribut

    //di sini Atribut adalah atribut tambahan dari objek 1C
    //di sini FormattedDocument adalah nama field pada formulir untuk diedit
    &Di server

    FormattedDocument = Objek Saat Ini.Atribut.Get();
    Akhir Prosedur

  • Dalam fungsi BeforeWritingOnServer() atau menggunakan tombol, kita akan menulis teks dari kolom

    &Di server
    Prosedur Saat MembacaOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Akhir Prosedur

Tipe String ditemukan di semua bahasa pemrograman. Ini primitif, dan di 1C ada banyak fungsi untuk bekerja dengannya. Pada artikel ini kita akan melihat secara detail berbagai cara bekerja dengan tipe string di 1C 8.3 dan 8.2 menggunakan contoh.

Garis

Untuk mengubah variabel jenis apa pun menjadi string, ada fungsi dengan nama yang sama “String()”. Parameter masukannya adalah variabel itu sendiri, yang representasi stringnya harus diperoleh.

String(Salah) // mengembalikan "Tidak"
String(12345) // mengembalikan "12,345"
String(Tanggal Saat Ini()) //"21/07/2017 11:55:36″

Dimungkinkan untuk mengonversi tidak hanya tipe primitif menjadi string, tetapi juga tipe lain, misalnya, elemen direktori dan dokumen.

SokrLP, SokrL, SokrP

Parameter masukan dari fungsi ini adalah variabel bertipe string. Fungsi tersebut menghapus karakter yang tidak penting (spasi, pengangkutan kembali, dll.): masing-masing dari sisi kiri dan kanan, hanya dari sisi kiri, dan hanya dari kanan.

Singkatan("Spasi akan dihilangkan pada kedua sisi") // "Spasi akan dihilangkan pada kedua sisi"
Singkatan("Spasi di kedua sisi akan dihilangkan") // "Spasi di sebelah kiri akan dihilangkan"
Singkatan("Spasi di kedua sisi akan dihilangkan") // "Spasi di sebelah kanan akan dihilangkan"

Leo, Benar, Sedang

Fungsi-fungsi ini memungkinkan Anda untuk memotong bagian dari sebuah string. Fungsi "Left()" akan mengembalikan bagian string dari sisi kirinya dengan panjang yang ditentukan. Fungsi "Kanan()" serupa, tetapi dipotong dari kanan. Fungsi “Avg()” memungkinkan Anda menentukan jumlah karakter dari mana garis akan dipilih dan panjangnya.

Lev("Variabel string", 4) // mengembalikan "Str"
Kanan("Variabel string", 7) // mengembalikan "variabel"
Sedang("Variabel string", 2, 5) // mengembalikan "troco"

Panjang Str

Fungsi ini menentukan jumlah karakter yang terkandung dalam variabel string.

StrLength("Word") // hasil eksekusinya adalah angka 5

Menemukan

Fungsi ini memungkinkan untuk mencari bagian dari string dalam variabel string. Nilai yang dikembalikan akan berupa angka yang menunjukkan posisi awal string yang ditemukan. Jika tidak ditemukan kecocokan, nol dikembalikan.

Harap diperhatikan bahwa penelusuran peka huruf besar-kecil. Jika ada lebih dari satu kemunculan substring pencarian dalam string asli, fungsi akan mengembalikan awal kemunculan pertama.

Find("one, two, one, two, three", "two") // fungsi akan mengembalikan angka 6

Garis kosong

Menggunakan fungsi ini memungkinkan Anda menentukan apakah suatu string kosong. Karakter kecil seperti spasi, pengangkutan kembali, dan lain-lain tidak diperhitungkan.

BlankString("Pupkin Vasily Ivanovich") // fungsi akan mengembalikan nilai False
BlankString(" ") // fungsi akan mengembalikan nilai Benar

VReg, NReg, TReg

Fungsi-fungsi ini sangat berguna saat membandingkan dan mengonversi variabel string. "Vreg()" akan mengembalikan string asli dalam huruf besar, "HPreg()" dalam huruf kecil, dan "TReg()" akan memformatnya sehingga karakter pertama dari setiap kata menggunakan huruf kapital, dan semua karakter berikutnya menggunakan huruf kapital.

VReg("DIREKTUR UMUM") // nilai yang dikembalikan - "DIREKTUR UMUM"
NReg(“CEO DIRECTOR”) // nilai yang dikembalikan – “CEO”
TREG(“CEO DIRECTOR”) // nilai kembalian – “Direktur Umum”

Ganti Halaman

Fungsi ini dianalogikan dengan penggantian pada editor teks. Hal ini memungkinkan Anda untuk mengganti satu karakter atau kumpulan karakter dengan yang lain dalam variabel string.

StrReplace("merah, putih, kuning", ","", ";") // mengembalikan "merah; putih; kuning"

StrNumberLines

Fungsi ini memungkinkan Anda menentukan jumlah baris yang dipisahkan oleh carriage return dalam variabel teks.

Perulangan pada contoh di bawah ini akan melewati tiga putaran karena fungsi LineNumberRow akan mengembalikan nilai 3:

Untuk ind = 1 dengan StrNumber Strings ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3") Siklus
<тело цикла>
Siklus Akhir;

StrGetString

Fungsi ini bekerja dengan teks multiline dengan cara yang sama seperti yang sebelumnya. Ini memungkinkan Anda mendapatkan string tertentu dari variabel teks.

StrGetString("String1" + Karakter.PS + "String2" + Karakter.PS + "String3", 2) // mengembalikan "String2"

NomorHalamanKejadian

Fungsi ini menghitung jumlah kemunculan karakter atau substring dalam string pencarian.

StrNumberAttachments("a;b;c;d; ", ";") // fungsi akan mengembalikan angka 4

Simbol dan Kode Simbol

Fungsi-fungsi ini memungkinkan Anda memperoleh karakter berdasarkan kodenya dalam pengkodean Unicode, serta menentukan kode ini berdasarkan karakter itu sendiri.

SymbolCode("A") // fungsi akan mengembalikan angka 1.040
CharacterCode(1040) // fungsi akan mengembalikan “A”

Tugas umum saat bekerja dengan string

String Penggabungan

Untuk menggabungkan beberapa string (untuk melakukan penggabungan), cukup menggunakan operator penjumlahan.

“Baris 1″ + “Baris 2″ //hasil penjumlahan dua baris akan menjadi “Baris 1 Baris 2”

Jenis Konversi

Untuk mengubah suatu tipe menjadi string, misalnya link ke elemen direktori, angka, dll., cukup menggunakan fungsi “String()”. Fungsi seperti “ScrLP()” juga akan mengubah variabel menjadi string, tetapi langsung dengan memotong karakter yang tidak penting.

String(1000) // mengembalikan "1.000"

Harap dicatat bahwa saat mengonversi angka menjadi string, program secara otomatis menambahkan spasi yang memisahkan ribuan. Untuk menghindari hal ini, Anda dapat menggunakan konstruksi berikut:

StrReplace(String(1000),Karakter.NPP,"") // mengembalikan "1000"

String(Format(1000,"HG=")) // mengembalikan "1000"

Kutipan dalam sebuah string

Seringkali Anda harus menghadapi kebutuhan untuk menentukan tanda kutip dalam variabel string. Ini bisa berupa teks permintaan yang ditulis di konfigurator, atau hanya sebuah variabel. Untuk mengatasi masalah ini, Anda hanya perlu memberi dua tanda kutip.

Header = String("Horns and Hooves LLC - itu kami!") // akan mengembalikan "Horns and Hooves LLC - itu kami!"

Multi-baris, jeda baris

Untuk membuat teks multi-baris, cukup tambahkan jeda baris (Symbols.PS) ke dalamnya.

MultilineText = “Baris Pertama” + Simbol.PS + “Baris Kedua”

Cara menghilangkan spasi

Untuk menghilangkan spasi di kanan atau kiri, Anda dapat menggunakan fungsi “ScrAP()” (serta “ScrL()” dan “ScrP()”):

StringNoSpaces = Singkatan("Banyak huruf") // fungsi akan mengembalikan nilai "Banyak huruf"

Jika, setelah mengonversi angka menjadi string, Anda perlu menghapus spasi yang tidak dapat terputus, gunakan konstruksi berikut:

StringNoSpaces = StrReplace(String(99999),Karakter.NPP,"") // mengembalikan "99999"

Pemrogram juga sering menggunakan konstruksi berikut, yang memungkinkan Anda menghapus atau mengganti dengan karakter lain semua spasi dalam variabel teks:

StringNoSpaces = StrReplace("halo","") // mengembalikan "halo"

Membandingkan string satu sama lain

Anda dapat membandingkan suku-suku dengan tanda sama dengan biasa. Perbandingannya peka huruf besar-kecil.

"Halo" = "halo" // mengembalikan False
"Halo" = "Halo" // mengembalikan Benar
"Halo" = "Selamat tinggal" // akan mengembalikan False

Ada beberapa mekanisme untuk bekerja dengan string dalam kueri 1C. Pertama, garis bisa ditambahkan. Kedua, Anda dapat mengambil substring dari sebuah string. Ketiga, string dapat dibandingkan, termasuk berdasarkan pola. Mungkin hanya itu yang bisa dilakukan dengan string.

Penambahan string

Untuk menambahkan baris dalam kueri, operasi “+” digunakan. Anda hanya dapat menambahkan string dengan panjang terbatas.

PILIH "Nama: " + Counterparty. Nama SEBAGAI Kolom 1 DARI Direktori. Counterparty SEBAGAI Counterparty WHERE Counterparty. Link = &Link

Fungsi substring

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

Analog fungsi Environment() dari model objek. Fungsi Substring() dapat diterapkan ke data string dan memungkinkan Anda memilih sebuah fragmen <Строки> , dimulai dengan nomor karakter <НачальнаяПозиция> (karakter dalam satu baris diberi nomor mulai dari 1) dan panjangnya <Длина> karakter. Hasil perhitungan fungsi bertipe string dengan panjang variabel, dan panjangnya dianggap tidak terbatas jika <Строка> memiliki panjang dan parameter yang tidak terbatas <Длина> tidak konstan atau lebih besar dari 1024.

Jika panjang string kurang dari yang ditentukan pada parameter kedua, maka fungsi akan mengembalikan string kosong.

Perhatian! Tidak disarankan menggunakan fungsi SUBSTRING() untuk mengonversi string dengan panjang tak terbatas menjadi string dengan panjang terbatas. Sebaliknya, lebih baik menggunakan operator cast EXPRESS().

Fungsi Serupa

Jika kita perlu memastikan bahwa atribut string memenuhi kriteria tertentu, kita membandingkannya:

PILIH Counterparty.Nama SEBAGAI Kolom 1 DARI Direktori.Counterparty SEBAGAI Counterparty WHERE Counterparty.Nama = "Gazprom"

Namun bagaimana jika Anda memerlukan perbandingan yang lebih halus? Bukan sekadar kesetaraan atau ketimpangan, tapi kesamaan pola tertentu? Untuk itulah fungsi SIMILAR diciptakan.

LIKE — Operator untuk memeriksa kesamaan string dengan suatu pola. Analogi LIKE dalam SQL.

Operator SIMILAR memungkinkan Anda membandingkan nilai ekspresi yang ditentukan di sebelah kirinya dengan string pola yang ditentukan di sebelah kanan. Nilai ekspresi harus bertipe string. Jika nilai ekspresi cocok dengan pola, hasil operatornya adalah TRUE, jika tidak, maka FALSE.

Karakter berikut dalam string templat adalah karakter layanan dan memiliki arti berbeda dari karakter string:

  • % (persen): urutan yang berisi sejumlah karakter arbitrer;
  • _ (garis bawah): satu karakter arbitrer;
  • […] (satu atau lebih karakter dalam tanda kurung siku): setiap karakter yang tercantum di dalam tanda kurung siku. Pencacahan dapat berisi rentang, misalnya a-z, yang berarti karakter sembarang yang termasuk dalam rentang tersebut, termasuk ujung rentang;
  • [^...] (dalam tanda kurung siku, tanda negasi diikuti oleh satu atau lebih karakter): setiap karakter selain yang tercantum setelah tanda negasi.

Simbol lainnya berarti dirinya sendiri dan tidak membawa beban tambahan apa pun. Jika salah satu karakter yang tercantum perlu ditulis sendiri, maka harus didahului dengan<Спецсимвол>. Saya sendiri<Спецсимвол>(karakter apa pun yang sesuai) didefinisikan dalam pernyataan yang sama setelah kata kunci KARAKTER KHUSUS.

Diimplementasikan pada versi 8.3.6.1977.

Kami telah memperluas rangkaian fungsi yang dirancang untuk bekerja dengan string. Kami melakukan ini untuk memberi Anda alat yang lebih canggih dalam mengurai data string. Fungsi-fungsi baru ini akan nyaman dan berguna dalam tugas-tugas teknologi analisis teks. Dalam tugas yang berkaitan dengan penguraian teks yang berisi data dalam bentuk yang diformat. Ini bisa berupa analisis beberapa file yang diterima dari peralatan, atau, misalnya, analisis log teknologi.

Anda dapat melakukan semua tindakan yang menjalankan fungsi baru sebelumnya. Menggunakan algoritma yang kurang lebih kompleks yang ditulis dalam bahasa bawaan. Oleh karena itu, fungsi-fungsi baru tidak memberi Anda kemampuan baru yang mendasar. Namun, mereka memungkinkan Anda mengurangi jumlah kode dan membuat kode lebih sederhana dan mudah dipahami. Selain itu, mereka memungkinkan Anda untuk mempercepat pelaksanaan tindakan. Karena fungsi yang diimplementasikan dalam platform tentu saja bekerja lebih cepat dibandingkan algoritma serupa yang ditulis dalam bahasa bawaan.

Fungsi pemformatan StrTemplate()

Fungsi ini menggantikan parameter menjadi string. Kebutuhan akan konversi seperti itu sering kali muncul, misalnya saat menampilkan pesan peringatan. Sintaks untuk fungsi ini adalah sebagai berikut:

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

<Шаблон>- ini adalah string yang Anda perlukan untuk mengganti representasi parameter.

<Значение1> , ... <Значение10>- ini adalah parameter (maksimum sepuluh), yang representasinya harus diganti ke dalam string.

Untuk menunjukkan tempat tertentu di templat tempat Anda ingin melakukan substitusi, Anda perlu menggunakan penanda seperti %1, ... %10. Jumlah penanda yang terlibat dalam templat dan jumlah parameter yang berisi nilai harus cocok.

Misalnya, hasil dari mengeksekusi operator seperti itu:

akan ada garis:

Kesalahan data pada baris 2 (Jenis tanggal diperlukan)

Fungsi untuk bekerja dengan string StrCompare()

Fungsi ini membandingkan dua string dengan cara yang tidak peka huruf besar-kecil. Misalnya seperti ini:

Anda bisa melakukan tindakan yang sama sebelumnya menggunakan objek Perbandingan Nilai:

Namun penggunaan fitur baru terlihat lebih mudah. Selain itu, fungsinya, tidak seperti objek Perbandingan Nilai, berfungsi baik di klien tipis maupun klien web.

Fungsi untuk bekerja dengan string StrStartsWith(), StrEndsAt()

Fungsi-fungsi ini menentukan apakah suatu string dimulai dengan substring tertentu atau apakah suatu string diakhiri dengan substring tertentu. Algoritme untuk fungsi-fungsi ini tidak sulit untuk diterapkan dalam bahasa yang disematkan, tetapi kehadirannya memungkinkan Anda menulis kode yang lebih bersih dan mudah dipahami. Dan mereka bekerja lebih cepat.

Misalnya, mereka mudah digunakan dalam pernyataan If:

Fungsi untuk bekerja dengan string StrDivide(), StrConnect()

Fungsi-fungsi ini membagi string menjadi beberapa bagian menggunakan pembatas yang ditentukan. Atau sebaliknya, mereka menggabungkan beberapa garis menjadi satu, menyisipkan pemisah yang dipilih di antara keduanya. Mereka berguna untuk membuat atau menganalisis log dan jurnal teknologi. Misalnya, Anda dapat dengan mudah mengurai entri log teknologi menjadi beberapa bagian yang sesuai untuk analisis lebih lanjut:

Fungsi untuk bekerja dengan string StrFind()

Daripada menggunakan fungsi Find() yang lama, kami telah mengimplementasikan fungsi baru yang memiliki kemampuan tambahan:

  • Cari ke berbagai arah (dari awal, dari akhir);
  • Cari dari posisi tertentu;
  • Mencari suatu kejadian dengan nomor tertentu (kedua, ketiga, dst).

Faktanya, ini menduplikasi kemampuan fungsi lama. Hal ini dilakukan untuk menjaga kompatibilitas dengan modul yang dikompilasi di versi lama. Disarankan agar Anda tidak lagi menggunakan fungsi Find() yang lama.

Di bawah ini adalah contoh penggunaan kemampuan pencarian baru. Pencarian terbalik berguna ketika Anda memerlukan fragmen terakhir dari string yang diformalkan, seperti nama file lengkap dalam URL. Dan mencari dari posisi tertentu membantu jika Anda perlu mencari di bagian yang diketahui, dan bukan di seluruh baris.