Các hàm mới để làm việc với chuỗi. Các hàm mới để làm việc với chuỗi Các hàm chuỗi 1c

  • 17.03.2024

Chuỗi là một trong các kiểu dữ liệu nguyên thủy trong hệ thống 1C:Enterprise 8. Biến có kiểu này. đường kẻ chứa văn bản.

Nhập giá trị biến đường kẻđược đặt trong dấu ngoặc kép. Một số biến thuộc loại này có thể được thêm vào.

Per1 = "Từ 1" ;
Per2 = "Từ 2" ;
Per3 = Per1 + " " + Per2;

Sau cùng Per3 sẽ có nghĩa là " Lời 1 Lời 2”.

Ngoài ra, hệ thống 1C:Enterprise 8 còn cung cấp các chức năng làm việc với chuỗi. Chúng ta hãy nhìn vào những cái chính:

EnterString(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — Hàm này được thiết kế để hiển thị một hộp thoại trong đó người dùng có thể chỉ định giá trị của một biến thuộc loại Đường kẻ. Tham số <Строка> là bắt buộc và chứa tên của biến mà chuỗi đã nhập sẽ được ghi vào. Tham số <Подсказка> tùy chọn - đây là tiêu đề của hộp thoại. Tham số <Длина> tùy chọn, hiển thị độ dài tối đa của chuỗi đầu vào. Mặc định là 0, có nghĩa là độ dài không giới hạn. Tham số <Многострочность> không bắt buộc. Xác định chế độ nhập văn bản nhiều dòng: True—nhập văn bản nhiều dòng với dấu phân cách dòng; Sai - nhập một chuỗi đơn giản.

Bạn có thể nhập một chuỗi nếu bạn biết mã ký tự bằng Unicode:

Biểu tượng(<КодСимвола>) — mã được nhập dưới dạng số.

Chữ= Ký hiệu(1103) ;

// TÔI

Ngoài ra còn có một chức năng nghịch đảo cho phép bạn tìm ra mã của ký hiệu.<Строка>, <НомерСимвола>) — Mã ký hiệu(

trả về số Unicode của ký tự được chỉ định dưới dạng số.

Chức năng chuyển đổi trường hợp văn bản:<Строка>) VReg(

- Chuyển tất cả các ký tự trong chuỗi thành chữ hoa.<Строка>) NReg(

- Chuyển tất cả các ký tự trong chuỗi thành chữ thường.<Строка>) TReg(

— chuyển đổi tất cả các ký tự trong chuỗi thành kiểu chữ tiêu đề. Nghĩa là, các chữ cái đầu tiên trong tất cả các từ được chuyển thành chữ hoa và các chữ cái còn lại được chuyển thành chữ thường.

Các hàm tìm kiếm và thay thế các ký tự trong chuỗi:<Строка>, <ПодстрокаПоиска>) Tìm thấy(

— tìm số ký tự xuất hiện của chuỗi con tìm kiếm. Ví dụ:

Tìm ("Chuỗi" , "oka" );<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 StrFind(— tìm số ký tự xuất hiện của chuỗi con tìm kiếm, số lần xuất hiện được chỉ định trong tham số tương ứng. Trong trường hợp này, việc tìm kiếm bắt đầu bằng ký tự có số được chỉ định trong tham số

Vị trí ban đầu. Có thể tìm kiếm từ đầu hoặc cuối chuỗi. Ví dụ: Số lần xuất hiện số 4 = Str Tìm (

"Khả năng phòng thủ"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) , "về", Hướng tìm kiếm. Từ Bắt đầu, 1, 4);

// 7

StrReplace(<Строка>) – kiểm tra chuỗi xem có ký tự quan trọng không. Nếu không có ký tự quan trọng hoặc không có ký tự nào thì giá trị sẽ được trả về ĐÚNG VẬY. Nếu không thì - Nói dối.

Số lần xuất hiện(<Строка>, <ПодстрокаПоиска>) – Tính số lần xuất hiện của chuỗi con tìm kiếm trong chuỗi nguồn.

Số lần xuất hiện ( "Học, học nữa và học nữa", "học" , "" ) ; // 3

StrTemplate(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — thay thế các tham số thành một chuỗi theo số. Dòng phải chứa các dấu thay thế có dạng: “%1..%N”. Đánh số điểm đánh dấu bắt đầu từ 1. Nếu giá trị tham số Không xác định, một chuỗi trống được thay thế.

StrTemplate ( "Tham số 1 = %1, Tham số 2 = %2", "1" , "2" ) ; // Tham số 1= 1, Tham số 2 = 2

Hàm chuyển đổi chuỗi:

Một con sư tử(<Строка>, <ЧислоСимволов>) – trả về ký tự đầu tiên của chuỗi.

Phải(<Строка>, <ЧислоСимволов>) – trả về ký tự cuối cùng của chuỗi.

Thứ Tư(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – trả về một chuỗi có độ dài<ЧислоСимволов>, bắt đầu từ ký hiệu<НачальныйНомер>.

AbbrL(<Строка>) cắt các ký tự không có ý nghĩa ở bên trái ký tự có ý nghĩa đầu tiên trong chuỗi.

Viết tắt(<Строка>) — cắt bỏ các ký tự không quan trọng ở bên phải ký tự quan trọng cuối cùng trong dòng.

AbbrLP(<Строка>) – cắt bỏ các ký tự không quan trọng ở bên trái ký tự quan trọng đầu tiên trong dòng và bên phải ký tự quan trọng cuối cùng trong dòng.

StrGetString(<Строка>, <НомерСтроки>) – Lấy một chuỗi nhiều dòng theo số.

Các tính năng khác:

Chiều dài(<Строка>) – trả về số ký tự trong chuỗi.

StrNumberRow(<Строка>) – trả về số dòng trong một chuỗi nhiều dòng. Một dòng được coi là mới nếu nó được phân cách với dòng trước đó bằng ký tự dòng mới.

StrSo sánh(<Строка1>, <Строка2> ) – so sánh hai chuỗi không phân biệt chữ hoa chữ thường. Một hàm hoạt động tương tự như một đối tượng So sánh các giá trị. Trả về:

  • 1 - nếu dòng đầu tiên lớn hơn dòng thứ hai
  • -1 - nếu dòng thứ hai lớn hơn dòng đầu tiên
  • 0 - nếu các chuỗi bằng nhau

StrCompare("Dòng đầu tiên", "Dòng thứ hai" );

// 1

Ghi chú từ Qua tấm kính nhìn

18/08/2014 Các hàm mới để làm việc với chuỗi

Được triển khai trong phiên bản 8.3.6.1977.

Bạn có thể thực hiện tất cả các hành động thực hiện các chức năng mới trước đó. Sử dụng các thuật toán phức tạp ít nhiều được viết bằng ngôn ngữ tích hợp. Do đó, các chức năng mới không cung cấp cho bạn bất kỳ khả năng mới nào về cơ bản. Tuy nhiên, chúng cho phép bạn giảm số lượng mã và làm cho mã đơn giản và dễ hiểu hơn. Ngoài ra, chúng cho phép bạn tăng tốc độ thực hiện các hành động. Tất nhiên, vì các chức năng được triển khai trong nền tảng hoạt động nhanh hơn một thuật toán tương tự được viết bằng ngôn ngữ tích hợp.

Hàm định dạng StrTemplate()

Hàm này thay thế các tham số thành một chuỗi. Nhu cầu chuyển đổi như vậy thường phát sinh, chẳng hạn như khi hiển thị các thông báo cảnh báo. Cú pháp của hàm này như sau:

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

<Шаблон>- đây là chuỗi mà bạn cần thay thế các biểu diễn tham số.

<Значение1> , ... <Значение10>- đây là các tham số (tối đa là mười), các biểu diễn của chúng phải được thay thế thành chuỗi.

Để chỉ ra một vị trí cụ thể trong mẫu mà bạn muốn thực hiện thay thế, bạn cần sử dụng các điểm đánh dấu như %1, ... %10. Số lượng điểm đánh dấu liên quan đến mẫu và số lượng tham số chứa giá trị phải khớp nhau.

Ví dụ: kết quả của việc thực thi một toán tử như vậy:

sẽ có một dòng:

Lỗi dữ liệu ở dòng 2 (Yêu cầu loại ngày)

Hàm làm việc với chuỗi StrCompare()

Hàm này so sánh hai chuỗi theo cách không phân biệt chữ hoa chữ thường. Ví dụ như thế này:

Bạn có thể thực hiện hành động tương tự trước đó bằng cách sử dụng đối tượng So sánh các giá trị:

Tuy nhiên, việc sử dụng tính năng mới có vẻ dễ dàng hơn. Và bên cạnh đó, một chức năng, trái ngược với một đối tượng So sánh các giá trị, hoạt động trong cả máy khách mỏng và máy khách web.

Các hàm làm việc với chuỗi StrStartsWith(), StrEndsAt()

Các hàm này xác định xem một chuỗi bắt đầu bằng một chuỗi con được chỉ định hay một chuỗi kết thúc bằng một chuỗi con được chỉ định. Thuật toán cho các chức năng này không khó triển khai bằng ngôn ngữ nhúng, nhưng sự hiện diện của chúng cho phép bạn viết mã sạch hơn và dễ hiểu hơn. Và họ làm việc nhanh hơn.

Ví dụ, thật thuận tiện khi sử dụng chúng trong toán tử Nếu như:

Các hàm làm việc với chuỗi StrDivide(), StrConnect()

Các hàm này chia chuỗi thành các phần bằng cách sử dụng dấu phân cách được chỉ định. Hoặc ngược lại, họ kết hợp nhiều dòng thành một, chèn dấu phân cách đã chọn vào giữa chúng. Chúng thuận tiện cho việc tạo hoặc phân tích nhật ký và tạp chí công nghệ. Ví dụ: bạn có thể dễ dàng phân tích mục nhập nhật ký công nghệ thành các phần phù hợp để phân tích thêm:

Hàm làm việc với chuỗi StrFind()

Thay vì chức năng cũ Tìm thấy() Chúng tôi đã triển khai một chức năng mới có các khả năng bổ sung:

  • Tìm kiếm theo các hướng khác nhau (từ đầu, từ cuối);
  • Tìm kiếm từ một vị trí được chỉ định;
  • Tìm kiếm sự xuất hiện với một số được chỉ định (thứ hai, thứ ba, v.v.).

Trên thực tế, nó nhân đôi khả năng của chức năng cũ. Điều này được thực hiện để duy trì khả năng tương thích với các mô-đun được biên dịch trong các phiên bản cũ hơn. Chức năng cũ Tìm thấy() Khuyến cáo không nên sử dụng lại.

Dưới đây là một ví dụ sử dụng khả năng tìm kiếm mới. Tìm kiếm ngược rất hữu ích khi bạn cần phần cuối của chuỗi chính thức, chẳng hạn như tên tệp đầy đủ trong URL. Và việc tìm kiếm từ một vị trí được chỉ định sẽ giúp ích trong trường hợp bạn cần tìm kiếm trong một đoạn đã biết chứ không phải trong toàn bộ chuỗi.

Các khả năng cơ bản của ngôn ngữ lập trình thường bao gồm làm việc với số và chuỗi. Thông thường, những khả năng này được mã hóa cứng vào mã trình biên dịch (hoặc các lớp “cơ sở” của ngôn ngữ lập trình được triển khai).

Trong 1C, khả năng làm việc với chuỗi được lập trình trong chính nền tảng. Hôm nay chúng ta sẽ xem xét các tính năng làm việc với chuỗi 1C trong các chương trình bằng ngôn ngữ 1C tích hợp.

Giá trị dòng 1C

1. Hãy bắt đầu với cách đơn giản nhất. Tạo một biến và gán một giá trị chuỗi không đổi cho biến đó trông như thế này trong 1C:

Biến = "Xin chào thế giới!";

Nếu bạn cần chỉ định ký tự trích dẫn trong giá trị chuỗi 1C không đổi thì bạn cần nhân đôi nó “”

Biến = "Xin chào thế giới"!;

2. Ngắt dòng 1C có thể được xác định cùng lúc theo hai cách. Đầu tiên là sử dụng ký hiệu |

Biến = "Xin chào,
| thế giới! ";

Thứ hai là sử dụng bảng liệt kê hệ thống Ký hiệu. Nó cho phép bạn thêm cả ngắt dòng 1C và các ký tự không in khác, chẳng hạn như TAB.

Biến = "Xin chào" + Symbols.PS + "hòa bình!";

3. Cấu hình trong 1C có thể được phát triển không chỉ cho một ngôn ngữ (tiếng Nga, tiếng Anh hoặc ngôn ngữ khác) - mà còn cho nhiều ngôn ngữ đồng thời. Trong trường hợp này, ngôn ngữ hiện đang sử dụng sẽ được chọn ở cuối cửa sổ 1C.

Danh sách các ngôn ngữ nằm trong cửa sổ cấu hình ở nhánh General/Languages. Mỗi ngôn ngữ có một mã định danh ngắn như ru hoặc tiếng anh.

Rõ ràng là khi lập trình cấu hình như vậy, các dòng 1C cũng có thể đa ngôn ngữ. Để làm điều này, có thể tạo một đường 1C như vậy bằng cách chỉ định thông qua; tùy chọn theo mã định danh ngôn ngữ:

Variable = "ru=""Xin chào thế giới! ""; en=""Xin chào thế giới! """;

Nếu bạn sử dụng dòng 1C được hình thành theo cách này như thường lệ thì nó sẽ giống như những gì được viết trong đó. Để hệ thống chia thành hai tùy chọn và sử dụng tùy chọn mong muốn, bạn cần sử dụng hàm НStr():

// đúng cho cấu hình song ngữ
Báo cáo(NStr(Biến));

Đạo cụ có đường loại 1C

Thuộc tính là một trường trong thư mục/tài liệu 1C. Nó khác với một biến trong chương trình bằng ngôn ngữ 1C ở chỗ đối với thuộc tính, loại của nó được chỉ định chính xác (số, chuỗi 1C, v.v.). Nếu bạn cần nhớ lại đạo cụ là gì, hãy xem bài học tiếp theo.

Nếu bạn chỉ định loại thuộc tính - dòng 1C, thì bạn phải chỉ định thêm các tham số.

Các dòng 1C có độ dài không giới hạn (được biểu thị bằng độ dài = 0) và độ dài giới hạn, cho biết số lượng ký tự chính xác. Các hàng 1C có độ dài không giới hạn được lưu trữ trong một bảng SQL riêng biệt, do đó việc sử dụng chúng sẽ kém hiệu quả hơn so với các hàng bị giới hạn.

Đó là lý do tại sao việc sử dụng chuỗi 1C có độ dài không giới hạn có những hạn chế - không thể sử dụng chúng ở mọi nơi. Ví dụ: nó không được phép làm số tài liệu, mã tham chiếu hoặc phép đo.

Làm việc với chuỗi 1C

Có một số chức năng tích hợp sẵn của nền tảng 1C để làm việc với chuỗi.

  • AbbrLP (“Thật đáng kinh ngạc, nhưng có thật!”)
    Loại bỏ khoảng trắng thừa khỏi dòng 1C. Cũng có thể được sử dụng để chuyển đổi bất kỳ loại nào thành chuỗi 1C (ví dụ: số).
  • Biến = "Vasya" + AbbrLP(" plus") + "Olya"; // sẽ có "Vasya cộng với Olya"
    Một ví dụ về tính tổng một số giá trị chuỗi 1C. Kết quả sẽ là một dòng 1C.
  • Biến = Lev("Âm nhạc", 2); // sẽ là "Mu"
    Biến = Trung bình("Âm nhạc", 2, 2); // sẽ có "mối đe dọa"
    Biến = Quyền("Âm nhạc", 2); // sẽ có "ka"
    Nhiều tùy chọn khác nhau để lấy chuỗi con từ chuỗi 1C.
  • Biến = Find("Âm nhạc", "zy"); // sẽ có 3
    Tìm kiếm chuỗi con trong chuỗi 1C, bắt đầu bằng ký tự 1.
  • Biến = StrLength("Âm nhạc"); // sẽ có 6
    Trả về số ký tự trong dòng 1C.
  • Report("Xin chào") //trong cửa sổ tin nhắn ở cuối cửa sổ 1C
    Alert("Xin chào") //hộp thoại bật lên
    Status("Xin chào") //trong dòng hiển thị trạng thái ở phía dưới bên trái
    .

Đưa đối tượng lên dòng 1C

Như bạn đã biết, định dạng phổ biến nhất để trao đổi thông tin có cấu trúc hiện nay là XML. Ngay cả phiên bản mới nhất của MS Office Word và Excel cũng lưu tệp ở định dạng này (docx và xlsx, tương ứng, thay đổi phần mở rộng thành zip, mở trong trình lưu trữ).

Nền tảng 1C để trao đổi dữ liệu cung cấp một số tùy chọn, tùy chọn chính cũng là XML.

1. Phương pháp đơn giản nhất là sử dụng hàm Abbreviation() hoặc String(). Bạn có thể sử dụng hàm REPRESENTATION() trong phần thân yêu cầu. Kết quả hành động của chúng là như nhau - chúng tạo ra một chuỗi biểu diễn bất kỳ đối tượng 1C nào cho người dùng.

Đối với một thư mục theo mặc định, đây sẽ là tên của nó. Đối với một tài liệu – ​​tên tài liệu, số và ngày.

2. Bất kỳ đối tượng 1C nào (có hạn chế) đều có thể được chuyển đổi sang XML và ngược lại. Quá trình chuyển đổi được gọi là tuần tự hóa.

StringViewXml = XMLString(Value); // lấy XML từ giá trị 1C
Value1C = XMLValue(Type("DirectoryLink.Nomenclature"),TypeStringXml); //lấy giá trị 1C từ chuỗi XML, bạn phải chỉ định loại 1C cần nhận

3. Nền tảng 1C có cách riêng để chuyển đổi bất kỳ đối tượng 1C nào thành chuỗi. Nó đã di chuyển từ phiên bản 1C 7.7. Định dạng này không được các chương trình khác hiểu, nhưng 1C khác hiểu nó, điều này giúp dễ dàng sử dụng nó để trao đổi giữa các cơ sở dữ liệu 1C.

Hàng = ValueInRowInt(Value1C); //lấy chuỗi 1C từ giá trị 1C
ValueVFile("C:\MyFile.txt", Value1C); // một tùy chọn khác, chúng tôi nhận được một tệp có chuỗi đã lưu từ giá trị 1C
Value1C = ValueFromStringInt(Chuỗi); //trở lại từ dòng 1C
Value1C = ValueFile("C:\MyFile.txt"); //trở lại từ tập tin

Chỉnh sửa dòng 1C trên biểu mẫu

Ngoài việc làm việc với chuỗi 1C trong chương trình bằng ngôn ngữ 1C, tất nhiên tôi muốn người dùng có thể chỉnh sửa chúng. Có một số khả năng cho việc này:

1. Cách dễ nhất là yêu cầu nhập dòng 1C theo yêu cầu. Phương pháp này được sử dụng khi dạy lập trình 1C; trong cuộc sống nó ít được sử dụng hơn nhiều (nhưng nó vẫn được sử dụng!).

Biến = "";
Row = EnterValue(Biến, "Nhập tên đầy đủ");

2. Để hiển thị chi tiết về đối tượng 1C (thư mục/tài liệu) hoặc chi tiết biểu mẫu (xem), trường đầu vào thường được sử dụng nhất. Đây là công cụ phổ biến nhất trong 1C để người dùng làm việc với các trường chỉnh sửa.

3. Khả năng của trường đầu vào có thể được mở rộng (xem thuộc tính của trường đầu vào, nhấp chuột phải vào trường đó để biết thêm chi tiết):

  • Hộp kiểm Chế độ chỉnh sửa nhiều dòng
  • Hộp kiểm chỉnh sửa nâng cao (khả dụng nếu hộp kiểm trước đó được chọn)
  • Hộp kiểm Chế độ mật khẩu (xem).

4. Nếu tất cả các khả năng của trường đầu vào không đủ đối với bạn, thì có một trình chỉnh sửa tích hợp sẵn. Để thêm nó vào biểu mẫu, bạn cần thêm Trường Tài liệu Văn bản vào menu Điều khiển Biểu mẫu/Chèn. Trong thuộc tính của nó, bạn có thể chỉ định chế độ hoạt động của nó – thuộc tính Tiện ích mở rộng.

Trường tài liệu văn bản không thể được liên kết trực tiếp với dữ liệu. Cần phải viết một hàm trong trình xử lý sự kiện OnOpen() của biểu mẫu (xem):

Các phần tử biểu mẫu.ElementNameTextDocumentField.SetText(StringValue); // ở đây ValueString là văn bản nhận được, ví dụ: từ thuộc tính

Và trong trình xử lý lưu - ví dụ: trong nút Lưu - thêm lưu:

ValueString = FormElements.ElementNameTextDocumentField.GetText(); //ValueDòng ở đây là thuộc tính nơi chúng ta lưu giá trị

5. Trong phiên bản 1C 8.2.11, trong các biểu mẫu được quản lý, một tùy chọn mới đã xuất hiện để thể hiện dòng 1C - trường Tài liệu được định dạng.


Tương tự như trường của tài liệu văn bản, bạn phải đặt trường khi mở và ghi lại khi tự lưu bằng chương trình.

  • Trong đối tượng 1C có biểu mẫu mà chúng tôi đang tạo (thư mục, tài liệu, xử lý, v.v.) - thêm một thuộc tính với loại Lưu trữ giá trị
  • Trong hàm OnReadOnServer() chúng ta đặt văn bản từ thuộc tính

    // ở đây Thuộc tính là thuộc tính được thêm vào của đối tượng 1C
    // ở đây FormattedDocument là tên trường trên biểu mẫu để chỉnh sửa
    &Trên máy chủ

    FormattedDocument = CurrentObject.Props.Get();
    Kết thúc thủ tục

  • Trong hàm BeforeWritingOnServer() hoặc sử dụng nút, chúng ta sẽ viết văn bản từ trường

    &Trên máy chủ
    Quy trình khi ReadingOnServer(CurrentObject)
    CurrentObject.Props = NewValueStorage(FormattedDocument);
    Kết thúc thủ tục

Các hàng trong 1C 8.3 trong ngôn ngữ tích hợp 1C biểu thị các giá trị thuộc loại nguyên thủy Đường kẻ. Các giá trị thuộc loại này chứa một chuỗi Unicode có độ dài tùy ý. Biến kiểu chuỗi là một tập hợp các ký tự được đặt trong dấu ngoặc kép.

Ví dụ 1. Hãy tạo một biến chuỗi có văn bản.

StringVariable = "Xin chào thế giới!";

Hàm làm việc với chuỗi trong 1s 8.3

Phần này sẽ cung cấp các chức năng chính cho phép bạn thay đổi các dòng trong 1c hoặc phân tích thông tin chứa trong đó.

Độ dài đường

Chiều dài(<Строка>) . Trả về số ký tự chứa trong chuỗi được truyền dưới dạng tham số.

Ví dụ 2. Đếm số ký tự trong dòng “Hello world!”

String = "Xin chào thế giới!"; NumberofCharacters = StrLength(Chuỗi); Báo cáo(SốKý tự);

Kết quả thực thi đoạn mã này sẽ hiển thị số ký tự trong dòng: 11.

viết tắt

AbbrL(<Строка>) . Cắt bớt các ký tự không có ý nghĩa ở bên trái ký tự có ý nghĩa đầu tiên trong chuỗi.
Những nhân vật phụ:

  • không gian;
  • không gian không phá vỡ;
  • lập bảng;
  • vận chuyển trở lại;
  • dịch dòng;
  • bản dịch của mẫu (trang).

Ví dụ 3. Xóa tất cả khoảng trắng ở phía bên trái của dòng "world!" và thêm dòng “Xin chào” vào đó.

String = Chữ viết tắt("thế giới!"); Chuỗi = "Xin chào"+Chuỗi; Báo cáo(Chuỗi);

Kết quả thực thi đoạn mã này sẽ hiển thị dòng “Hello world!” trên màn hình.

Viết tắt

Viết tắt(<Строка>) . Cắt bớt các ký tự không có ý nghĩa ở bên phải ký tự có ý nghĩa đầu tiên trong chuỗi.

Ví dụ 4. Hình thành từ dòng “Xin chào” và “hòa bình!” cụm từ "Xin chào thế giới!"

Line = Viết tắt("Xin chào ")+" "+ Viết tắt(" world!"); Báo cáo(Chuỗi);

AbbrLP

AbbrLP(<Строка>) . Cắt bớt các ký tự không có ý nghĩa ở bên phải ký tự có ý nghĩa đầu tiên trong chuỗi và cũng cắt các ký tự không có ý nghĩa ở bên trái ký tự có ý nghĩa đầu tiên trong chuỗi. Chức năng này được sử dụng thường xuyên hơn hai chức năng trước vì nó phổ biến hơn.

Ví dụ 5. Loại bỏ các ký tự không có ý nghĩa ở bên trái và bên phải trong tên đối tác.

Đối tác = Thư mục đối tác.Tìm theo chi tiết("TIN", "0777121211"); AccountObject = Account.GetObject(); CounterpartyObject.Name = AbbrLP(CounterpartyObject.Name); AccountObject.Write();

một con sư tử

Một con sư tử(<Строка>, <ЧислоСимволов>) . Lấy các ký tự đầu tiên của chuỗi, số lượng ký tự được chỉ định trong tham số Số lượng ký tự.

Ví dụ 6. Hãy để trong cấu trúc Người lao động chứa tên đầu tiên, họ và tên đệm của nhân viên. Nhận một chuỗi có họ và tên viết tắt.

NameInitial = Lev(Employee.Name, 1); Từ viết tắt của người bảo trợ = Leo(Nhân viên. Người bảo trợ, 1); Họ và tên = Nhân viên.Họ + " " + Tên ban đầu + "."

+ Chữ viết tắt ở giữa + ".";

Phải(<Строка>, <ЧислоСимволов>) Phải Số lượng ký tự.. Lấy các ký tự cuối cùng của chuỗi, số lượng ký tự được chỉ định trong tham số

Nếu số lượng ký tự được chỉ định vượt quá độ dài của chuỗi thì toàn bộ chuỗi sẽ được trả về. Ví dụ 7. Viết ngày ở định dạng “yyyymmdd” vào cuối biến chuỗi, lấy chuỗi có ngày đó và chuyển thành kiểu.

ngày

String = "Ngày hiện tại: 20170910"; StringDate = Quyền(Chuỗi, 8); Ngày = Ngày (StringDate);

Thứ Tư(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) Thứ Tư Đường kẻ. Lấy một chuỗi con từ chuỗi được truyền dưới dạng tham số , bắt đầu từ ký tự có số được chỉ định trong tham số Số ban đầu Số lượng ký tự. và độ dài được truyền vào tham số , bắt đầu từ ký tự có số được chỉ định trong tham số Việc đánh số ký tự trên một dòng bắt đầu từ 1. Nếu trong tham số một giá trị nhỏ hơn hoặc bằng 0 được chỉ định thì tham số sẽ lấy giá trị 1. Nếu tham số Số lượng ký tự

không được chỉ định thì các ký tự cho đến cuối dòng sẽ được chọn.

Ví dụ 8. Biến chuỗi bắt đầu từ vị trí thứ chín chứa mã vùng, bạn lấy mã đó và viết thành một dòng riêng.

String = "Khu vực: 99 Moscow"; Vùng = Trung bình(Chuỗi, 9, 2);

Tìm ("Chuỗi" , "oka" );<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) TrangTìm

  • Đường kẻ. Tìm kiếm một chuỗi con được chỉ định trong một chuỗi, trả về số vị trí của ký tự đầu tiên của chuỗi con tìm thấy. Chúng ta hãy xem các tham số của chức năng này:
  • . Chuỗi nguồn; Tìm kiếm chuỗi con
  • . Tìm kiếm chuỗi con; Hướng tìm kiếm
    • . Chỉ định hướng tìm kiếm chuỗi con trong chuỗi. Có thể nhận các giá trị:;
    • Hướng tìm kiếm.Từ đầu;
  • Hướng tìm kiếm.End. Chỉ định vị trí trong chuỗi nơi bắt đầu tìm kiếm;
  • Số lần xuất hiện. Chỉ định số lần xuất hiện của chuỗi con được tìm kiếm trong chuỗi nguồn.

Ví dụ 9. Trong dòng “Xin chào thế giới!” Xác định vị trí xuất hiện cuối cùng của ký tự "và".

Vị tríNumber = StrFind("Xin chào thế giới!", "và", Search Direction.End); Báo cáo(Số vị trí);

Kết quả của việc thực thi mã này sẽ hiển thị số lần xuất hiện cuối cùng của ký hiệu “và”: 9.

VReg

Chức năng chuyển đổi trường hợp văn bản:<Строка>) . Chuyển đổi tất cả các ký tự trong chuỗi được chỉ định trong 1s8 thành chữ hoa.

Ví dụ 10: Chuyển đổi chuỗi "hello world!" Đến trường hợp trên.

StringVreg = VReg("xin chào thế giới!"); Báo cáo(StringVreg);

Kết quả thực thi đoạn mã này sẽ hiển thị dòng “HELLO WORLD!”

NReg

- Chuyển tất cả các ký tự trong chuỗi thành chữ hoa.<Строка>) . Chuyển đổi tất cả các ký tự trong chuỗi được chỉ định ở dạng 1s8 thành chữ thường.

Ví dụ 11: Chuyển đổi chuỗi "HELLO WORLD!" sang chữ thường.

StringNreg = NReg("XIN CHÀO THẾ GIỚI!"); Báo cáo(StringVreg);

Kết quả thực thi đoạn mã này sẽ hiển thị dòng “hello world!”

Treg

- Chuyển tất cả các ký tự trong chuỗi thành chữ thường.<Строка>) . Chuyển đổi một chuỗi như sau: ký tự đầu tiên của mỗi từ được chuyển thành chữ hoa, các ký tự còn lại của từ được chuyển thành chữ thường.

Ví dụ 12: Viết hoa chữ cái đầu tiên của các từ trong dòng “hello world!”

StringTreg = TReg("xin chào thế giới!"); Báo cáo(StringTreg);

Kết quả thực thi đoạn mã này sẽ hiển thị dòng “Hello World!”

Biểu tượng

Biểu tượng(<КодСимвола>) . Nhận một ký tự bằng mã Unicod của nó.

Ví dụ 13. Thêm trái và phải vào dòng “Hello World!” biểu tượng ★

StringWithStars = Ký hiệu("9733")+"Xin chào thế giới!"+Biểu tượng("9733"); Báo cáo(StringWithStars);

Kết quả thực thi đoạn mã này sẽ hiển thị dòng “★Hello World!★”

Mã ký hiệu

Ngoài ra còn có một chức năng nghịch đảo cho phép bạn tìm ra mã của ký hiệu.<Строка>, <НомерСимвола>) . Lấy mã ký tự Unicode từ chuỗi được chỉ định trong tham số đầu tiên, nằm ở vị trí được chỉ định trong tham số thứ hai.

Ví dụ 14. Tìm mã ký tự cuối cùng trong dòng “Hello World!”

String = "Xin chào thế giới!"; Mã ký tự = Mã ký tự(Chuỗi, StrLength(Chuỗi)); Thông báo(Mã ký tự);

Kết quả của việc thực thi mã này sẽ là hiển thị mã ký hiệu “!” - 33.

Dòng trống

StrReplace(<Строка>) . Kiểm tra xem chuỗi có chỉ bao gồm các ký tự không quan trọng hay không, nghĩa là nó có trống hay không.

Ví dụ 15. Kiểm tra xem một chuỗi gồm ba khoảng trắng có trống không.

Trống = EmptyString(" "); Báo cáo(Trống);

Kết quả khi thực thi đoạn mã này sẽ hiển thị chữ “Yes” (một biểu thức chuỗi có giá trị logic ĐÚNG VẬY).

TrangThay thế

"Khả năng phòng thủ"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) . Tìm tất cả các lần xuất hiện của chuỗi con tìm kiếm trong chuỗi nguồn và thay thế nó bằng chuỗi con thay thế.

Ví dụ 16. Trong dòng “Xin chào thế giới!” thay từ “Hòa bình” bằng từ “Những người bạn”.

String = StrReplace("Xin chào thế giới!", "Thế giới", "Bạn bè"); Báo cáo(Chuỗi);

Kết quả thực thi đoạn mã này sẽ hiển thị dòng “Xin chào các bạn!”

Số dòngDòng

StrNumberRow(<Строка>) . Cho phép bạn đếm số dòng trong một chuỗi nhiều dòng. Để sang dòng mới trong 1 giây 8, hãy sử dụng ký hiệu Tái bút(ký tự dòng mới).

Ví dụ 17. Xác định số dòng trong văn bản:
"Dòng đầu tiên
Dòng thứ hai
Dòng thứ ba"

Number = StrNumberString("Dòng đầu tiên"+Characters.PS +"Dòng thứ hai"+Symbols.PS +"Dòng thứ ba"); Số báo cáo);

Kết quả thực thi đoạn mã này sẽ hiển thị số dòng trong văn bản: 3

StrGetChuỗi

StrGetString(<Строка>, <НомерСтроки>) . Lấy một dòng trong chuỗi nhiều dòng theo số của nó. Đánh số dòng bắt đầu từ 1.

Ví dụ 18. Lấy dòng cuối cùng trong văn bản:
"Dòng đầu tiên
Dòng thứ hai
Dòng thứ ba"

Text = "Dòng đầu tiên" + Ký hiệu PS + "Dòng thứ hai" + Ký hiệu PS + "Dòng thứ ba"; LastRow = StrGetRow(Văn bản, StrNumberLines(Văn bản)); Báo cáo (Dòng cuối);

Kết quả của việc thực thi mã này sẽ là hiển thị dòng “Dòng thứ ba”.

Số trangSố lần xuất hiện

Số lần xuất hiện(<Строка>, <ПодстрокаПоиска>) . Trả về số lần xuất hiện của chuỗi con đã chỉ định trong một chuỗi. Chức năng này có phân biệt chữ hoa chữ thường.

Ví dụ 19. Xác định số lần chữ “c” xuất hiện trong dòng “Các dòng trong 1s 8.3 và 8.2”, bất kể nó viết kiểu gì.

Line = "Các dòng trong 1s 8.3 và 8.2"; NumberOccurrences = StrNumberOccurrences(Vreg(String), "With"); Báo cáo(Số lần xuất hiện);

Kết quả thực thi đoạn mã này sẽ hiển thị số lần xuất hiện: 2.

TrangBắt đầuVới

StrStartsWith(<Строка>, <СтрокаПоиска>) . Kiểm tra xem chuỗi được truyền trong tham số đầu tiên có bắt đầu bằng chuỗi trong tham số thứ hai hay không.

Ví dụ 20. Xác định xem TIN của đối tác được chọn có bắt đầu bằng số 1 hay không. Đặt biến đối tác Đối tác.

TIN = Đối tác.TIN; StartsUNits = StrStartsWith(TIN, "1"); Nếu bắt đầu bằng đơn vị thì //Mã của bạn EndIf;

TrangKết thúcTrên

StrEndsWith(<Строка>, <СтрокаПоиска>) . Kiểm tra xem chuỗi được truyền trong tham số đầu tiên có kết thúc bằng chuỗi trong tham số thứ hai hay không.

Ví dụ 21. Xác định xem TIN của đối tác được chọn có kết thúc bằng số 2 hay không. Đặt biến đối tác một tham chiếu đến một thành phần thư mục được lưu trữ Đối tác.

TIN = Đối tác.TIN; EndsWithTwo = StrEndsWith(TIN, "2"); If EndsInTwo Then // Mã của bạn EndIf;

Tách trang

StrChia(<Строка>, <Разделитель>, <ВключатьПустые>) . Tách một chuỗi thành các phần bằng cách sử dụng các ký tự phân cách đã chỉ định và ghi các chuỗi kết quả vào một mảng. Tham số đầu tiên lưu trữ chuỗi nguồn, tham số thứ hai chứa chuỗi chứa dấu phân cách và tham số thứ ba cho biết liệu các chuỗi trống có nên được ghi vào mảng hay không (theo mặc định ĐÚNG VẬY).

Ví dụ 22. Ta có một chuỗi chứa các số cách nhau bằng dấu “;”, lấy một dãy số từ chuỗi.

Chuỗi = "1; 2; 3"; Mảng = StrDivide(Chuỗi, ";"); Đối với Count = 0 By Array.Quantity() - 1 lần thử chu kỳ Mảng[Count] = Number(AbbrLP(Array[Count]));

Mảng ngoại lệ[Sch] = 0;

EndAttemptsEndCycle;

Kết quả thực thi sẽ thu được một mảng có số từ 1 đến 3.<Строки>, <Разделитель>) TrangKết nối

StrConnect(

. Chuyển đổi mảng chuỗi từ tham số đầu tiên thành chuỗi chứa tất cả các phần tử của mảng được phân tách bằng dấu phân cách được chỉ định trong tham số thứ hai.

Ví dụ 23. Sử dụng dãy số ở ví dụ trước, lấy chuỗi gốc.

Đối với Tài khoản = 0 Theo Array.Quantity() - 1 Mảng chu kỳ[Act] = String(Array[Act]); Chu kỳ cuối; Hàng = StrConnect(Mảng, "; ");

Có một số cơ chế để làm việc với chuỗi trong truy vấn 1C. Đầu tiên, các dòng có thể được thêm vào. Thứ hai, bạn có thể lấy một chuỗi con từ một chuỗi. Thứ ba, các chuỗi có thể được so sánh, kể cả theo mẫu. Đó có lẽ là tất cả những gì có thể làm được với chuỗi.

Phép cộng chuỗi

Để thêm hàng vào truy vấn, thao tác “+” được sử dụng. Bạn chỉ có thể thêm các chuỗi có độ dài giới hạn.

CHỌN "Tên: " + Tên đối tác NHƯ Cột 1 TỪ Thư mục. Đối tác NHƯ Đối tác Ở ĐÂU Liên kết = &Liên kết.<Строка>, <НачальнаяПозиция>, <Длина>)

Hàm chuỗi con <Строки> CHUỖI ĐỆM( <НачальнаяПозиция> Một dạng tương tự của hàm Environment() từ mô hình đối tượng. Hàm Substring() có thể được áp dụng cho dữ liệu chuỗi và cho phép bạn chọn một đoạn <Длина> , bắt đầu bằng số ký tự <Строка> (các ký tự trong một dòng được đánh số bắt đầu từ 1) và độ dài <Длина> nhân vật. Kết quả tính toán của hàm có kiểu chuỗi có độ dài thay đổi và độ dài sẽ được coi là không giới hạn nếu

có chiều dài và tham số không giới hạn

không phải là hằng số hoặc lớn hơn 1024. Nếu độ dài của chuỗi nhỏ hơn được chỉ định trong tham số thứ hai thì hàm sẽ trả về một chuỗi trống.

Chú ý!

Không nên sử dụng hàm SUBSTRING() để chuyển đổi chuỗi có độ dài không giới hạn thành chuỗi có độ dài giới hạn. Thay vào đó, tốt hơn là sử dụng toán tử ép kiểu EXPRESS().

CHỌN Tên đối tác NHƯ Cột 1 TỪ Danh mục Đối tác NHƯ Đối tác Ở ĐÂU Tên đối tác = "Gazprom"

Nhưng nếu bạn cần một sự so sánh tinh tế hơn thì sao? Không chỉ là sự bình đẳng hay bất bình đẳng, mà còn là sự tương đồng với một khuôn mẫu nào đó? Đây chính xác là mục đích mà hàm SIMILAR được tạo ra.

THÍCH - Toán tử để kiểm tra sự giống nhau của một chuỗi với một mẫu. Tương tự như THÍCH trong SQL.

Toán tử SIMILAR cho phép bạn so sánh giá trị của biểu thức được chỉ định ở bên trái của nó với chuỗi mẫu được chỉ định ở bên phải. Giá trị của biểu thức phải là kiểu chuỗi. Nếu giá trị của biểu thức khớp với mẫu thì kết quả của toán tử sẽ là TRUE, nếu không sẽ là FALSE.

Các ký tự sau trong chuỗi mẫu là ký tự dịch vụ và có ý nghĩa khác với ký tự chuỗi:

  • % (phần trăm): một chuỗi chứa bất kỳ số ký tự tùy ý nào;
  • _ (gạch dưới): một ký tự tùy ý;
  • […] (một hoặc nhiều ký tự trong ngoặc vuông): bất kỳ ký tự đơn nào được liệt kê bên trong ngoặc vuông. Bảng liệt kê có thể chứa các phạm vi, ví dụ a-z, nghĩa là một ký tự tùy ý có trong phạm vi, bao gồm cả các phần cuối của phạm vi;
  • [^...] (trong ngoặc vuông là dấu phủ định, theo sau là một hoặc nhiều ký tự): bất kỳ ký tự đơn nào ngoài các ký tự được liệt kê sau dấu phủ định.

Bất kỳ biểu tượng nào khác đều có nghĩa là chính nó và không mang bất kỳ tải trọng bổ sung nào. Nếu một trong các ký tự được liệt kê cần được viết dưới dạng chính nó thì nó phải được đặt trước bởi<Спецсимвол>. Riêng tôi<Спецсимвол>(bất kỳ ký tự phù hợp nào) được xác định trong cùng một câu lệnh sau từ khóa CHARACTER ĐẶC BIỆT.