มีกลไกบางอย่างในการทำงานกับสตริงในการสืบค้น 1C ขั้นแรก สามารถเพิ่มบรรทัดได้ ประการที่สอง คุณสามารถใช้สตริงย่อยจากสตริงได้ ประการที่สาม สามารถเปรียบเทียบสตริงได้ รวมถึงตามรูปแบบด้วย นั่นอาจเป็นทั้งหมดที่สามารถทำได้ด้วยสตริง
การเพิ่มสตริง
หากต้องการเพิ่มแถวในการสืบค้น จะใช้การดำเนินการ "+" คุณสามารถเพิ่มได้เฉพาะสตริงที่มีความยาวจำกัดเท่านั้น
เลือก "ชื่อ: " + คู่สัญญา ชื่อ AS คอลัมน์ 1 จากไดเร็กทอรี คู่สัญญา AS คู่สัญญา โดยที่ลิงก์ = &ลิงก์
ฟังก์ชันสตริงย่อย
สตริงย่อย(<Строка>, <НачальнаяПозиция>, <Длина>)
อะนาล็อกของฟังก์ชัน Environment() จากโมเดลออบเจ็กต์ สามารถใช้ฟังก์ชัน Substring() กับข้อมูลสตริงและอนุญาตให้คุณเลือกส่วนย่อยได้ <Строки> เริ่มต้นด้วยหมายเลขตัวอักษร <НачальнаяПозиция> (อักขระในบรรทัดจะมีหมายเลขเริ่มต้นจาก 1) และความยาว <Длина> ตัวอักษร ผลลัพธ์ของการคำนวณฟังก์ชันมีประเภทสตริงที่มีความยาวผันแปรได้ และหากความยาวจะถือว่าไม่จำกัด <Строка> มีความยาวและพารามิเตอร์ไม่จำกัด <Длина> ไม่เป็นค่าคงที่หรือมากกว่า 1024
หากความยาวของสตริงน้อยกว่าที่ระบุในพารามิเตอร์ตัวที่สอง ฟังก์ชันจะส่งกลับสตริงว่าง
ความสนใจ!ไม่แนะนำให้ใช้ฟังก์ชัน SUBSTRING() เพื่อแปลงสตริงที่มีความยาวไม่จำกัดเป็นสตริงที่มีความยาวจำกัด ควรใช้ตัวดำเนินการคาสต์ EXPRESS() แทน
ฟังก์ชั่นที่คล้ายกัน
หากเราต้องการให้แน่ใจว่าแอตทริบิวต์สตริงตรงตามเกณฑ์ที่กำหนด เราจะเปรียบเทียบ:
เลือกคู่สัญญา ตั้งชื่อ AS คอลัมน์ 1 จาก ไดเรกทอรี AS คู่สัญญา โดยที่ ชื่อคู่สัญญา = "Gazprom"
แต่ถ้าคุณต้องการการเปรียบเทียบที่ละเอียดกว่านี้ล่ะ? ไม่ใช่แค่ความเสมอภาคหรือความไม่เท่าเทียมกันเท่านั้น แต่ยังมีความคล้ายคลึงกับรูปแบบบางอย่างด้วย? นี่คือสิ่งที่ฟังก์ชัน SIMILAR ถูกสร้างขึ้นมาเพื่อสิ่งนี้
LIKE - ตัวดำเนินการสำหรับตรวจสอบสตริงเพื่อความคล้ายคลึงกับรูปแบบ อะนาล็อกของ LIKE ใน SQL
ตัวดำเนินการ SIMILAR ช่วยให้คุณสามารถเปรียบเทียบค่าของนิพจน์ที่ระบุทางด้านซ้ายกับสตริงรูปแบบที่ระบุทางด้านขวา ค่าของนิพจน์จะต้องเป็นประเภทสตริง หากค่าของนิพจน์ตรงกับรูปแบบ ผลลัพธ์ของตัวดำเนินการจะเป็น TRUE มิฉะนั้นจะเป็น FALSE
อักขระต่อไปนี้ในสตริงรูปแบบเป็นอักขระบริการและมีความหมายแตกต่างจากอักขระสตริง:
- % (เปอร์เซ็นต์): ลำดับที่มีอักขระตามจำนวนเท่าใดก็ได้
- _ (ขีดล่าง): อักขระหนึ่งตัว;
- […] (อักขระหนึ่งตัวขึ้นไปในวงเล็บเหลี่ยม): อักขระเดี่ยวใด ๆ ที่อยู่ในวงเล็บเหลี่ยม การแจงนับอาจมีช่วง เช่น a-z ซึ่งหมายถึงอักขระใดๆ ที่รวมอยู่ในช่วง รวมถึงจุดสิ้นสุดของช่วงด้วย
- [^...] (ในวงเล็บเหลี่ยม เครื่องหมายลบตามด้วยอักขระหนึ่งตัวขึ้นไป): อักขระเดี่ยวใดๆ นอกเหนือจากที่แสดงอยู่หลังเครื่องหมายปฏิเสธ
สัญลักษณ์อื่นใดหมายถึงตัวมันเองและไม่มีภาระเพิ่มเติมใดๆ หากจำเป็นต้องเขียนอักขระตัวใดตัวหนึ่งในรายการด้วยตัวมันเอง จะต้องนำหน้าด้วย<Спецсимвол>- ตัวฉันเอง<Спецсимвол>(สัญลักษณ์ใด ๆ ที่เหมาะสม) ถูกกำหนดไว้ในข้อความเดียวกันหลังจากนั้น คำหลักสัญลักษณ์พิเศษ
บันทึกจาก มองผ่านกระจก18/08/2014 ฟังก์ชั่นใหม่สำหรับการทำงานกับสตริง
ใช้งานในเวอร์ชัน 8.3.6.1977
เราได้ขยายชุดฟังก์ชันที่ออกแบบมาเพื่อทำงานกับสตริง เราทำสิ่งนี้เพื่อให้คุณมีเครื่องมือขั้นสูงเพิ่มเติมสำหรับการแยกวิเคราะห์ข้อมูลสตริง ฟังก์ชั่นใหม่จะสะดวกและมีประโยชน์ในงานเทคโนโลยีของการวิเคราะห์ข้อความ ในงานที่เกี่ยวข้องกับการแยกวิเคราะห์ข้อความที่มีข้อมูลในรูปแบบที่จัดรูปแบบ นี่อาจเป็นการวิเคราะห์ไฟล์บางไฟล์ที่ได้รับจากอุปกรณ์ หรือ ตัวอย่างเช่น การวิเคราะห์บันทึกทางเทคโนโลยี
คุณสามารถดำเนินการทั้งหมดที่เคยใช้ฟังก์ชันใหม่มาก่อนได้ การใช้อัลกอริธึมที่ซับซ้อนไม่มากก็น้อยที่เขียนด้วยภาษาในตัว ดังนั้นฟังก์ชันใหม่ไม่ได้ให้ความสามารถใหม่ขั้นพื้นฐานแก่คุณ อย่างไรก็ตาม ช่วยให้คุณสามารถลดจำนวนโค้ดและทำให้โค้ดง่ายขึ้นและเข้าใจได้มากขึ้น นอกจากนี้ยังช่วยให้คุณเร่งความเร็วในการดำเนินการได้อีกด้วย เพราะแน่นอนว่าฟังก์ชั่นที่นำมาใช้ในแพลตฟอร์มนั้นทำงานได้เร็วกว่าอัลกอริทึมที่คล้ายกันซึ่งเขียนด้วยภาษาในตัว
ฟังก์ชันการจัดรูปแบบ StrTemplate()
ฟังก์ชันนี้จะแทนที่พารามิเตอร์เป็นสตริง ความจำเป็นในการแปลงดังกล่าวมักเกิดขึ้น เช่น เมื่อแสดงข้อความเตือน ไวยากรณ์สำหรับฟังก์ชันนี้เป็นดังนี้:
Strเทมเพลต(<Шаблон>, <Значение1-Значение10>)
<Шаблон>- นี่คือสตริงที่คุณต้องการแทนที่การแสดงพารามิเตอร์
<Значение1> , ... <Значение10>- นี่คือพารามิเตอร์ (สูงสุดสิบ) ซึ่งจะต้องแทนที่การแทนค่าในสตริง
หากต้องการระบุตำแหน่งเฉพาะในเทมเพลตที่คุณต้องการดำเนินการทดแทน คุณต้องใช้เครื่องหมาย เช่น %1, ... %10 จำนวนเครื่องหมายที่เกี่ยวข้องกับเทมเพลตและจำนวนพารามิเตอร์ที่มีค่าต้องตรงกัน
ตัวอย่างเช่น ผลลัพธ์ของการดำเนินการตัวดำเนินการดังกล่าว:
จะมีบรรทัด:
ข้อผิดพลาดของข้อมูลในบรรทัด 2 (ต้องระบุประเภทวันที่)
ฟังก์ชันสำหรับการทำงานกับสตริง StrCompare()
ฟังก์ชันนี้เปรียบเทียบสองสตริงในลักษณะที่ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ ตัวอย่างเช่นเช่นนี้:
คุณสามารถดำเนินการเดียวกันก่อนหน้านี้ได้โดยใช้ออบเจ็กต์ การเปรียบเทียบค่า:
อย่างไรก็ตาม การใช้ฟีเจอร์ใหม่จะดูง่ายขึ้น และนอกเหนือจากนี้ ฟังก์ชัน ซึ่งตรงข้ามกับวัตถุ การเปรียบเทียบค่า, ทำงานใน ไคลเอนต์แบบบางและในเว็บไคลเอ็นต์
ฟังก์ชันสำหรับการทำงานกับสตริง StrStartsWith(), StrEndsAt()
ฟังก์ชันเหล่านี้จะกำหนดว่าสตริงเริ่มต้นด้วยสตริงย่อยที่ระบุ หรือสตริงลงท้ายด้วยสตริงย่อยที่ระบุหรือไม่ อัลกอริธึมสำหรับฟังก์ชั่นเหล่านี้ไม่ใช่เรื่องยากที่จะนำไปใช้ในภาษาฝังตัว แต่การมีอยู่ของพวกมันทำให้คุณสามารถเขียนโค้ดที่สะอาดตาและเข้าใจได้มากขึ้น และพวกมันทำงานเร็วขึ้น
ตัวอย่างเช่นสะดวกในการใช้งานในตัวดำเนินการ ถ้า:
ฟังก์ชั่นสำหรับการทำงานกับสตริง StrDivide(), StrConnect()
ฟังก์ชันเหล่านี้แบ่งสตริงออกเป็นส่วนๆ โดยใช้ตัวคั่นที่ระบุ หรือในทางกลับกัน จะรวมหลายบรรทัดเป็นหนึ่งเดียว โดยแทรกตัวคั่นที่เลือกไว้ระหว่างบรรทัดเหล่านั้น สะดวกสำหรับการสร้างหรือวิเคราะห์บันทึกและวารสารเทคโนโลยี ตัวอย่างเช่น คุณสามารถแยกวิเคราะห์รายการบันทึกทางเทคโนโลยีออกเป็นส่วนๆ ที่เหมาะสมสำหรับการวิเคราะห์เพิ่มเติมได้อย่างง่ายดาย:
ฟังก์ชันสำหรับการทำงานกับสตริง StrFind()
แทนฟังก์ชั่นแบบเก่า หา()เราดำเนินการ คุณลักษณะใหม่ซึ่งมีคุณสมบัติเพิ่มเติม:
- ค้นหาในทิศทางต่างๆ (ตั้งแต่ต้นจนจบ)
- ค้นหาจากตำแหน่งที่ระบุ
- การหาเรื่องเกิดขึ้นด้วย หมายเลขที่ระบุ(ที่สอง สาม ฯลฯ)
ในความเป็นจริง มันซ้ำซ้อนความสามารถของฟังก์ชันเก่า สิ่งนี้ทำเพื่อรักษาความเข้ากันได้กับโมดูลที่คอมไพล์ในเวอร์ชันเก่า ฟังก์ชั่นเก่า หา()ขอแนะนำว่าอย่าใช้อีก
ด้านล่างนี้เป็นตัวอย่างการใช้ความสามารถในการค้นหาใหม่ การค้นหาแบบย้อนกลับมีประโยชน์เมื่อคุณต้องการส่วนสุดท้ายของสตริงที่เป็นทางการ เช่น ชื่อไฟล์แบบเต็มใน URL และการค้นหาจากตำแหน่งที่ระบุจะช่วยในกรณีที่คุณต้องการค้นหาในส่วนที่รู้จัก ไม่ใช่ในทั้งบรรทัด
ประเภทสตริงพบได้ในทุกภาษาการเขียนโปรแกรม มันเป็นแบบดั้งเดิมและใน 1C มีฟังก์ชั่นมากมายสำหรับการทำงานกับมัน ในบทความนี้เราจะมาดูรายละเอียดกัน วิธีต่างๆการทำงานกับประเภทสตริงใน 1C 8.3 และ 8.2 โดยใช้ตัวอย่าง
เส้น
ในการแปลงตัวแปรประเภทใดๆ ให้เป็นสตริง จะมีฟังก์ชันชื่อเดียวกันคือ “String()” พารามิเตอร์อินพุตจะเป็นตัวแปรเอง ซึ่งจะต้องได้รับการแสดงสตริง
String(False) // ส่งคืน "ไม่"
String(12345) // ส่งกลับ "12,345"
String(CurrentDate()) //"07/21/2017 11:55:36″
เป็นไปได้ที่จะแปลงไม่เพียงแต่ประเภทดั้งเดิมเป็นสตริงเท่านั้น แต่ยังแปลงประเภทอื่น ๆ ได้ด้วย เช่น องค์ประกอบของไดเร็กทอรีและเอกสาร
ซกร์แอลพี, ซ็อกร์ล, ซ็อกร์พี
พารามิเตอร์อินพุตของฟังก์ชันเหล่านี้เป็นตัวแปรประเภทสตริง ฟังก์ชันจะลบอักขระที่ไม่มีนัยสำคัญ (ช่องว่าง การขึ้นบรรทัดใหม่ ฯลฯ): จากด้านซ้ายและด้านขวา เฉพาะจากด้านซ้าย และจากด้านขวาเท่านั้น ตามลำดับ
อักษรย่อ(" Spaces will be removal onทั้งสองด้าน ") // "Spaces will beเอาออกทั้งสองด้าน"
ตัวย่อ(" ช่องว่างทั้งสองด้านจะถูกลบออก ") // " ช่องว่างด้านซ้ายจะถูกลบออก "
ตัวย่อ(" ช่องว่างทั้งสองด้านจะถูกลบออก ") // " ช่องว่างทางด้านขวาจะถูกลบออก"
ลีโอ ขวา ปานกลาง
ฟังก์ชันเหล่านี้ช่วยให้คุณสามารถตัดส่วนของสตริงได้ ฟังก์ชัน "Left()" จะส่งคืนส่วนของสตริงจากด้านซ้ายของความยาวที่ระบุ ฟังก์ชัน "Right()" คล้ายกัน แต่จะครอบตัดจากด้านขวา ฟังก์ชัน “Avg()” ช่วยให้คุณระบุจำนวนอักขระที่จะเลือกบรรทัดและความยาวของบรรทัดได้
Lev("ตัวแปรสตริง", 4) // ส่งกลับ "Str"
Right("ตัวแปรสตริง", 7) // ส่งกลับ "ตัวแปร"
ปานกลาง ("ตัวแปรสตริง", 2, 5) // ส่งคืน "troko"
StrLength
ฟังก์ชันกำหนดจำนวนอักขระที่มีอยู่ในตัวแปรสตริง
StrLength("Word") // ผลลัพธ์ของการดำเนินการจะเป็นหมายเลข 5
หา
ฟังก์ชันนี้ทำให้สามารถค้นหาส่วนหนึ่งของสตริงในตัวแปรสตริงได้ ค่าที่ส่งคืนจะเป็นตัวเลขที่แสดงตำแหน่งของจุดเริ่มต้นของสตริงที่พบ หากไม่พบรายการที่ตรงกัน ระบบจะส่งคืนศูนย์
โปรดทราบว่าการค้นหาจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ หากมีสตริงย่อยการค้นหามากกว่าหนึ่งรายการในสตริงต้นฉบับ ฟังก์ชันจะส่งคืนจุดเริ่มต้นของการเกิดขึ้นครั้งแรก
Find("one, two, one, two, three", "two") // ฟังก์ชันจะคืนค่าตัวเลข 6
EmptyString
การใช้ฟังก์ชันนี้ช่วยให้คุณสามารถระบุได้ว่าสตริงว่างเปล่าหรือไม่ อักขระรอง เช่น ช่องว่าง การขึ้นบรรทัดใหม่ และอื่นๆ จะไม่ถูกนำมาพิจารณา
EmptyString("Pupkin Vasily Ivanovich") // ฟังก์ชันจะคืนค่าเป็นเท็จ
EmptyString(" ") // ฟังก์ชันจะส่งกลับค่า True
VReg, NReg, TReg
ฟังก์ชันเหล่านี้มีประโยชน์มากเมื่อเปรียบเทียบและแปลงตัวแปรสตริง "Vreg()" จะส่งคืนสตริงต้นฉบับเป็นตัวพิมพ์ใหญ่ "HPreg()" เป็นตัวพิมพ์เล็ก และ "TReg()" จะจัดรูปแบบเพื่อให้อักขระตัวแรกของแต่ละคำเป็นตัวพิมพ์ใหญ่ และอักขระที่ตามมาทั้งหมดจะเป็นตัวพิมพ์ใหญ่
VReg("ผู้อำนวยการทั่วไป") // ค่าส่งคืน - "CEO DIRECTOR"
NReg("CEO DIRECTOR") // ส่งคืนค่า - "CEO"
TREG("CEO DIRECTOR") // ค่าตอบแทน – “ผู้อำนวยการทั่วไป”
แทนที่หน้า
ฟังก์ชันนี้คล้ายคลึงกับการแทนที่ใน โปรแกรมแก้ไขข้อความ- อนุญาตให้คุณแทนที่อักขระตัวหนึ่งหรือชุดอักขระด้วยอักขระตัวอื่นในตัวแปรสตริง
StrReplace("แดง ขาว เหลือง", ","", ";") // ส่งกลับ "สีแดง; สีขาว; สีเหลือง"
StrNumberLines
ฟังก์ชันนี้ช่วยให้คุณกำหนดจำนวนบรรทัดที่คั่นด้วยการขึ้นบรรทัดใหม่ในตัวแปรข้อความ
การวนซ้ำในตัวอย่างด้านล่างจะผ่านไปสามรอบเนื่องจากฟังก์ชัน LineNumberRow จะส่งกลับค่า 3:
สำหรับ ind = 1 โดย StrNumber of Strings ("Line1" + Symbols.PS + "Line2" + Symbols.PS + "Line3")
<тело цикла>
สิ้นสุดรอบ;
StrGetString
ฟังก์ชันนี้ทำงานกับข้อความหลายบรรทัดในลักษณะเดียวกับข้อความก่อนหน้า ช่วยให้คุณได้รับสตริงเฉพาะจากตัวแปรข้อความ
StrGetString("String1" + ตัวละคร.PS + "String2" + ตัวละคร.PS + "String3", 2) // ส่งคืน "String2"
จำนวนหน้าที่เกิดขึ้น
ฟังก์ชันนับจำนวนครั้งของอักขระหรือสตริงย่อยในสตริงการค้นหา
StrNumberAttachments("a;b;c;d; ", ";") // ฟังก์ชันจะคืนค่าตัวเลข 4
สัญลักษณ์และรหัสสัญลักษณ์
ฟังก์ชันเหล่านี้ช่วยให้คุณรับอักขระด้วยโค้ดในการเข้ารหัส Unicode รวมถึงกำหนดโค้ดนี้ด้วยอักขระด้วย
SymbolCode("A") // ฟังก์ชันจะคืนค่าตัวเลข 1,040
CharacterCode(1040) // ฟังก์ชันจะส่งกลับ “A”
งานทั่วไปเมื่อทำงานกับสตริง
การต่อสายอักขระ
หากต้องการรวมหลายสตริง (เพื่อทำการต่อข้อมูล) ก็เพียงพอแล้วที่จะใช้ตัวดำเนินการบวก
“Line 1″ + “Line 2″ //ผลลัพธ์ของการเพิ่มสองบรรทัดจะเป็น “Line 1 Line 2”
การแปลงประเภท
หากต้องการแปลงประเภทเป็นสตริง เช่น ลิงก์ไปยังองค์ประกอบไดเร็กทอรี ตัวเลข ฯลฯ การใช้ฟังก์ชัน "String()" ก็เพียงพอแล้ว ฟังก์ชันเช่น “ScrLP()” จะแปลงตัวแปรให้เป็นสตริงด้วย แต่จะตัดอักขระที่ไม่มีนัยสำคัญออกทันที
สตริง (1,000) // ส่งกลับ "1,000"
โปรดทราบว่าเมื่อแปลงตัวเลขเป็นสตริง โปรแกรมจะเพิ่มช่องว่างเพื่อแยกหลักพันโดยอัตโนมัติ เพื่อหลีกเลี่ยงปัญหานี้ คุณสามารถใช้โครงสร้างต่อไปนี้:
StrReplace(String(1000),Characters.NPP,"") // ส่งคืน "1,000"
String(Format(1000,"HG=")) // ส่งคืน "1,000"
เครื่องหมายคำพูดในสตริง
บ่อยครั้งคุณจะต้องจัดการกับความจำเป็นในการระบุเครื่องหมายคำพูดในตัวแปรสตริง นี่อาจเป็นข้อความคำขอที่เขียนในตัวกำหนดค่าหรือเพียงตัวแปรก็ได้ เพื่อแก้ไขปัญหานี้ คุณเพียงแค่ต้องตั้งเครื่องหมายคำพูดสองอัน
Header = String("Horns and Hooves LLC - นั่นคือพวกเรา!") // จะกลับมา "Horns and Hooves LLC - นั่นคือพวกเรา!"
หลายบรรทัด, ตัวแบ่งบรรทัด
หากต้องการสร้างข้อความหลายบรรทัด เพียงเพิ่มตัวแบ่งบรรทัด (Symbols.PS) ลงไป
MultilineText = “บรรทัดแรก” + Symbols.PS + “บรรทัดที่สอง”
วิธีลบช่องว่าง
หากต้องการลบช่องว่างทางขวาหรือซ้าย คุณสามารถใช้ฟังก์ชัน “ScrAP()” (เช่นเดียวกับ “ScrL()” และ “ScrP()”):
StringNoSpaces = Abbreviation(" Many ตัวอักษร ") // ฟังก์ชันจะส่งกลับค่า "Many ตัวอักษร"
หลังจากแปลงตัวเลขเป็นสตริงแล้ว หากจำเป็นต้องลบช่องว่างที่ไม่แยกออก ให้ใช้โครงสร้างต่อไปนี้:
StringNoSpaces = StrReplace(String(99999),Characters.NPP,"") // ส่งคืน "99999"
โปรแกรมเมอร์มักใช้โครงสร้างต่อไปนี้ซึ่งช่วยให้คุณสามารถลบหรือแทนที่ด้วยอักขระอื่นทุกช่องว่างในตัวแปรข้อความ:
StringNoSpaces = StrReplace("hello", "") // ส่งคืน "hello"
การเปรียบเทียบสตริงระหว่างกัน
คุณสามารถเปรียบเทียบคำศัพท์กับเครื่องหมายเท่ากับปกติได้ การเปรียบเทียบจะคำนึงถึงขนาดตัวพิมพ์
"Hello" = "hello" // คืนค่าเป็นเท็จ
"Hello" = "Hello" // คืนค่า True
"สวัสดี" = "ลาก่อน" // จะกลับมาเป็นเท็จ
สตริงเป็นหนึ่งในประเภทข้อมูลดั้งเดิมในระบบ 1C:Enterprise 8 เส้นมีข้อความ
พิมพ์ค่าตัวแปร เส้นอยู่ในเครื่องหมายคำพูดคู่ หลายตัวแปร ประเภทนี้สามารถพับได้
Per1 = "คำ 1" ;
Per2 = "คำ 2" ;
Per3 = Per1 + " " + Per2;
ในที่สุด ต่อ3จะหมายถึง " คำ 1 คำ 2″.
นอกจากนี้ ระบบ 1C:Enterprise 8 ยังมีฟังก์ชันสำหรับการทำงานกับสตริง ลองดูที่หลัก:
ใส่สตริง(<Строка>, <Подсказка>, <Длина>, <Многострочность>) — ฟังก์ชันนี้ได้รับการออกแบบให้แสดงกล่องโต้ตอบซึ่งผู้ใช้สามารถระบุค่าของตัวแปรประเภทได้ เส้น- พารามิเตอร์ <Строка> จำเป็นต้องมีและมีชื่อของตัวแปรที่จะใช้เขียนสตริงที่ป้อน พารามิเตอร์ <Подсказка> ทางเลือก - นี่คือชื่อของกล่องโต้ตอบ พารามิเตอร์ <Длина> เป็นทางเลือก แสดงความยาวสูงสุดของสตริงอินพุต ค่าเริ่มต้นเป็นศูนย์ ซึ่งหมายถึงความยาวไม่จำกัด พารามิเตอร์ <Многострочность> ไม่จำเป็น. กำหนดโหมดป้อนข้อความหลายบรรทัด: จริง—ป้อนข้อความหลายบรรทัดพร้อมตัวคั่นบรรทัด เท็จ - ป้อนสตริงแบบง่าย
คุณสามารถป้อนสตริงได้หากคุณทราบรหัสอักขระใน Unicode:
เครื่องหมาย(<КодСимвола>) — รหัสถูกป้อนเป็นตัวเลข
ตัวอักษร= สัญลักษณ์ (1103) ;
// ฉัน ก็มีเช่นกันฟังก์ชันผกผัน
ทำให้คุณสามารถค้นหารหัสของตัวละครได้<Строка>, <НомерСимвола>) — รหัสสัญลักษณ์(
ส่งกลับหมายเลข Unicode ของอักขระที่ระบุเป็นตัวเลข
ฟังก์ชันการแปลงตัวพิมพ์ข้อความ:<Строка>) VReg(
— แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์ใหญ่<Строка>) NREG(
— แปลงอักขระทั้งหมดในสตริงเป็นตัวพิมพ์เล็ก<Строка>) เทรก(
— แปลงอักขระทั้งหมดในสตริงให้เป็นตัวพิมพ์ชื่อเรื่อง นั่นคือตัวอักษรตัวแรกในทุกคำจะถูกแปลงเป็นตัวพิมพ์ใหญ่ และตัวอักษรที่เหลือจะถูกแปลงเป็นตัวพิมพ์เล็ก
ฟังก์ชั่นสำหรับการค้นหาและแทนที่อักขระในสตริง:<Строка>, <ПодстрокаПоиска>) หา(
— ค้นหาหมายเลขอักขระของการเกิดขึ้นของสตริงย่อยการค้นหา ตัวอย่างเช่น:
ค้นหา ("สตริง" , "โอเค" ) ;<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) // 4 Strค้นหา(— ค้นหาหมายเลขอักขระของการเกิดขึ้นของสตริงย่อยการค้นหา หมายเลขการเกิดขึ้นจะถูกระบุในพารามิเตอร์ที่เกี่ยวข้อง ในกรณีนี้ การค้นหาจะเริ่มต้นด้วยอักขระที่ระบุหมายเลขไว้ในพารามิเตอร์
ตำแหน่งเริ่มต้น ค้นหาได้จากจุดเริ่มต้นหรือจุดสิ้นสุดของสตริง ตัวอย่างเช่น:จำนวนที่ 4 เกิดขึ้น = Str ค้นหา (
"การป้องกัน"<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) , "เกี่ยวกับ" ,ทิศทางการค้นหา ตั้งแต่เริ่มต้น 1, 4);
// 7
Strแทนที่(<Строка>) – ค้นหาสตริงย่อยการค้นหาที่เกิดขึ้นทั้งหมดในสตริงต้นทางและแทนที่ด้วยสตริงย่อยการแทนที่ StrReplace ("สตริง" , "โอเค" , "" ) ;// หน้าหนังสือ สตริงว่าง(.
– ตรวจสอบสตริงเพื่อหาอักขระที่มีนัยสำคัญ หากไม่มีอักขระที่มีนัยสำคัญหรือไม่มีอักขระเลย ระบบจะส่งกลับค่า<Строка>, <ПодстрокаПоиска>) จริง
- มิฉะนั้น - โกหก StrNumber เกิดขึ้น(
Strเทมเพลต(<Строка>, <ЗначениеПодстановки1>…<ЗначениеПодстановкиN> — – คำนวณจำนวนครั้งของสตริงย่อยการค้นหาในสตริงต้นทาง StrNumber เกิดขึ้น ("เรียนรู้ ศึกษา และศึกษาอีกครั้ง"
, "ศึกษา" , "" ) ; // 3 แทนที่พารามิเตอร์เป็นสตริงตามตัวเลข บรรทัดจะต้องมีเครื่องหมายทดแทนในรูปแบบ: “%1..%N” การกำหนดหมายเลขเครื่องหมายเริ่มต้นจาก 1 หากค่าพารามิเตอร์, "1" , "2" ) ; ไม่ได้กำหนด
สตริงว่างจะถูกแทนที่
เทมเพลต Str (<Строка>, <ЧислоСимволов>) "พารามิเตอร์ 1 = %1, พารามิเตอร์ 2 = %2"
// พารามิเตอร์ 1= 1, พารามิเตอร์ 2 = 2<Строка>, <ЧислоСимволов>) ฟังก์ชั่นการแปลงสตริง:
สิงโต(<Строка>, <НачальныйНомер>, <ЧислоСимволов>) – ส่งคืนอักขระตัวแรกของสตริง<ЧислоСимволов>ขวา(<НачальныйНомер>.
– ส่งคืนอักขระตัวสุดท้ายของสตริง<Строка>) —วันพุธ(
– ส่งคืนสตริงที่มีความยาว<Строка>) โดยเริ่มจากสัญลักษณ์
ชื่อย่อL(<Строка>) – ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในบรรทัดและทางด้านขวาของอักขระสำคัญตัวสุดท้ายในบรรทัด
StrGetString(<Строка>, <НомерСтроки>) – รับสตริงหลายบรรทัดตามหมายเลข
คุณสมบัติอื่นๆ:
Strความยาว(<Строка>) – ส่งกลับจำนวนอักขระในสตริง
StrNumberRow(<Строка>) – ส่งกลับจำนวนบรรทัดในสตริงหลายบรรทัด บรรทัดจะถือว่าใหม่หากแยกจากบรรทัดก่อนหน้าด้วยอักขระขึ้นบรรทัดใหม่
Strเปรียบเทียบ(<Строка1>, <Строка2> ) – เปรียบเทียบสองสายในลักษณะที่ไม่คำนึงถึงขนาดตัวพิมพ์ ฟังก์ชั่นทำงานเหมือนกับวัตถุ การเปรียบเทียบค่า- ผลตอบแทน:
- 1 - ถ้าบรรทัดแรกมากกว่าบรรทัดที่สอง
- -1 - ถ้าบรรทัดที่สองมากกว่าบรรทัดแรก
- 0 - ถ้าสตริงเท่ากัน
StrCompare("บรรทัดแรก" , "บรรทัดที่สอง" ) ;
// 1
ความสามารถพื้นฐานของภาษาโปรแกรมมักจะรวมถึงการทำงานกับตัวเลขและสตริง โดยปกติแล้วคุณสมบัติเหล่านี้จะถูกฮาร์ดโค้ดลงในโค้ดคอมไพเลอร์ (หรือมีการใช้คลาส "ฐาน" ของภาษาการเขียนโปรแกรม)
ใน 1C ความสามารถในการทำงานกับสตริงนั้นถูกตั้งโปรแกรมไว้ในแพลตฟอร์มนั้นเอง วันนี้เราจะมาดูคุณสมบัติของการทำงานกับสตริง 1C ในโปรแกรมในภาษา 1C ในตัว
ค่าเส้น 1C
1. เริ่มจากสิ่งที่ง่ายที่สุดกันก่อน การสร้างตัวแปรและการกำหนดค่าสตริงคงที่ให้มีลักษณะเช่นนี้ใน 1C:
ตัวแปร = "สวัสดีชาวโลก!";
หากคุณต้องการระบุอักขระเครื่องหมายคำพูดในค่าสตริง 1C คงที่ คุณจะต้องเพิ่มเป็นสองเท่า “”
ตัวแปร = "สวัสดีชาวโลก"!;
2. สามารถระบุตัวแบ่งบรรทัด 1C ได้สองวิธีในคราวเดียว อันแรกใช้สัญลักษณ์ |
ตัวแปร = "สวัสดี
- โลก! -
ประการที่สองคือการใช้การแจงนับระบบสัญลักษณ์ อนุญาตให้คุณเพิ่มทั้งตัวแบ่งบรรทัด 1C และอักขระที่ไม่พิมพ์อื่นๆ เช่น TAB
ตัวแปร = "สวัสดี" + Symbols.PS + "สันติภาพ!";
3. การกำหนดค่าใน 1C สามารถพัฒนาได้ไม่เพียง แต่สำหรับภาษาเดียว (รัสเซีย, อังกฤษหรืออื่น ๆ ) - แต่พร้อมกันสำหรับหลายภาษา ในกรณีนี้ ภาษาที่ใช้อยู่จะถูกเลือกที่ด้านล่างของหน้าต่าง 1C รายการภาษาจะอยู่ในหน้าต่างการกำหนดค่าในสาขาทั่วไป/ภาษา แต่ละภาษาจะมีตัวระบุแบบสั้น เช่นรุ หรือ.
อังกฤษ
เป็นที่ชัดเจนว่าเมื่อเขียนโปรแกรมการกำหนดค่าดังกล่าว บรรทัด 1C ก็สามารถพูดได้หลายภาษาเช่นกัน ในการดำเนินการนี้ คุณสามารถสร้างบรรทัด 1C ดังกล่าวได้โดยระบุผ่าน ตัวเลือกตามตัวระบุภาษา:
หากคุณใช้เส้น 1C ที่สร้างในลักษณะนี้ตามปกติ มันจะเป็นสิ่งที่เขียนไว้ เพื่อให้ระบบแยกออกเป็นสองตัวเลือกและใช้ตัวเลือกที่ต้องการ คุณต้องใช้ฟังก์ชัน НStr():
//แก้ไขสำหรับการกำหนดค่าสองภาษา
รายงาน (NStr (ตัวแปร));
อุปกรณ์ประกอบฉากแบบเส้น 1C
แอ็ตทริบิวต์คือฟิลด์ในไดเร็กทอรี/เอกสาร 1C มันแตกต่างจากตัวแปรในโปรแกรมในภาษา 1C โดยมีการระบุประเภทของแอตทริบิวต์อย่างชัดเจน (หมายเลข, สตริง 1C ฯลฯ ) หากคุณต้องการทบทวนความทรงจำเกี่ยวกับอุปกรณ์ประกอบฉาก โปรดดูบทเรียนใน
หากคุณระบุประเภทของแอตทริบิวต์ - บรรทัด 1C คุณต้องระบุพารามิเตอร์เพิ่มเติม
บรรทัด 1C มีความยาวไม่จำกัด (ระบุเป็นความยาว = 0) และความยาวจำกัด โดยระบุจำนวนอักขระที่แน่นอน เส้น 1C ที่มีความยาวไม่จำกัดจะถูกเก็บไว้ในแยกต่างหาก ตาราง SQLดังนั้นการใช้งานจึงมีประสิทธิผลน้อยกว่าที่จำกัด
นั่นคือเหตุผลที่การใช้สตริง 1C ที่มีความยาวไม่จำกัดจึงมีข้อจำกัด - ไม่สามารถใช้งานได้ทุกที่ ตัวอย่างเช่น ไม่อนุญาตให้เป็นหมายเลขเอกสาร รหัสอ้างอิง หรือการวัด
การทำงานกับสตริง 1C
มีฟังก์ชันในตัวหลายอย่างของแพลตฟอร์ม 1C สำหรับการทำงานกับสตริง
- AbbrLP (“เหลือเชื่อ แต่จริง!”)
ลบออกจากบรรทัด 1C ช่องว่างเพิ่มเติม- ยังสามารถใช้เพื่อแปลงประเภทใดๆ ให้เป็นสตริง 1C (เช่น ตัวเลข) - ตัวแปร = "วาสยา" + AbbrLP(" บวก") + "โอลิยา"; //จะมี "วาสยาบวกโอลิยา"
ตัวอย่างการรวมค่าสตริง 1C หลายค่า ผลลัพธ์จะเป็นหนึ่งบรรทัด 1C - ตัวแปร = เลฟ("ดนตรี", 2); //จะเป็น "มู"
ตัวแปร = ปานกลาง("ดนตรี", 2, 2); //จะมี "ภัยคุกคาม"
ตัวแปร = สิทธิ์("ดนตรี", 2); //จะมี "คะ"
ตัวเลือกต่างๆ สำหรับการรับสตริงย่อยจากสตริง 1C - ตัวแปร = ค้นหา ("เพลง", "zy"); //จะมี 3
ค้นหาสตริงย่อยในสตริง 1C โดยเริ่มต้นด้วยอักขระ 1 - ตัวแปร = StrLength("ดนตรี"); //จะมี 6
ส่งกลับจำนวนอักขระในบรรทัด 1C - รายงาน("สวัสดี") //ในหน้าต่างข้อความที่ด้านล่างของหน้าต่าง 1C
Alert("Hello") //กล่องโต้ตอบป๊อปอัป
Status("Hello") //ในบรรทัดแสดงสถานะที่ด้านซ้ายล่าง
.
นำวัตถุมาที่เส้น 1C
ดังที่คุณทราบ รูปแบบที่นิยมที่สุดในการแลกเปลี่ยนข้อมูลที่มีโครงสร้างในปัจจุบันคือ XML สม่ำเสมอ เวอร์ชันล่าสุดนางสาว ออฟฟิศเวิร์ดและ Excel บันทึกไฟล์ในรูปแบบนี้ (docx และ xlsx ตามลำดับ เปลี่ยนนามสกุลเป็น zip เปิดใน archiver)
แพลตฟอร์ม 1C สำหรับการแลกเปลี่ยนข้อมูลมีหลายตัวเลือก โดยตัวเลือกหลักคือ XML
1. วิธีที่ง่ายที่สุดคือการใช้ฟังก์ชัน Abbreviation() หรือ String() คุณสามารถใช้ฟังก์ชัน REPRESENTATION() ในเนื้อหาคำขอได้ ผลลัพธ์ของการกระทำจะเหมือนกัน - พวกเขาสร้างการแสดงสตริงของวัตถุ 1C ใด ๆ สำหรับผู้ใช้
สำหรับไดเร็กทอรีตามค่าเริ่มต้น นี่จะเป็นชื่อไดเร็กทอรี สำหรับเอกสาร – ชื่อเอกสาร หมายเลข และวันที่
2. วัตถุ 1C ใด ๆ (มีข้อจำกัด) สามารถแปลงเป็น XML และในทางกลับกัน กระบวนการแปลงเรียกว่าการทำให้เป็นอนุกรม
StringViewXml = XMLString(ค่า); //รับ 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 (สตริง); // กลับจากบรรทัด 1C
Value1C = ValueFile("C:\MyFile.txt"); //กลับจากไฟล์
การแก้ไขบรรทัด 1C บนแบบฟอร์ม
นอกจากการทำงานกับสตริง 1C ในโปรแกรมในภาษา 1C แล้ว แน่นอนว่าฉันต้องการให้ผู้ใช้สามารถแก้ไขได้ มีความเป็นไปได้หลายประการสำหรับสิ่งนี้:
1. วิธีที่ง่ายที่สุดคือการขอเข้าสาย 1C ตามความต้องการ วิธีนี้ใช้ในการสอนการเขียนโปรแกรม 1C ในชีวิตนั้นมีการใช้น้อยกว่ามาก (แต่ใช้!)
ตัวแปร = "";
Row = EnterValue(ตัวแปร, "ป้อนชื่อเต็ม");
2. ในการแสดงรายละเอียดของวัตถุ 1C (ไดเร็กทอรี/เอกสาร) หรือรายละเอียดแบบฟอร์ม (ดู) ช่องป้อนข้อมูลมักใช้บ่อยที่สุด นี่เป็นเครื่องมือทั่วไปใน 1C สำหรับผู้ใช้เพื่อทำงานกับฟิลด์แก้ไข
3. สามารถขยายขีดความสามารถของช่องป้อนข้อมูลได้ (ดูคุณสมบัติของช่องป้อนข้อมูล คลิกขวารายละเอียดเพิ่มเติม):
- ช่องทำเครื่องหมายโหมดแก้ไขหลายบรรทัด
- ช่องทำเครื่องหมายการแก้ไขขั้นสูง (ใช้ได้หากทำเครื่องหมายในช่องก่อนหน้า)
- โหมดรหัสผ่านช่องทำเครื่องหมาย (ดู)
4. หากความสามารถทั้งหมดของช่องป้อนข้อมูลไม่เพียงพอสำหรับคุณ แสดงว่ามีตัวแก้ไขในตัว หากต้องการเพิ่มลงในแบบฟอร์ม คุณต้องเพิ่มฟิลด์ลงในเมนูควบคุมแบบฟอร์ม/แทรก เอกสารข้อความ- ในคุณสมบัติ คุณสามารถระบุโหมดการทำงานได้ – คุณสมบัติส่วนขยาย
ช่องเอกสารข้อความไม่สามารถเชื่อมโยงกับข้อมูลได้โดยตรง มีความจำเป็นต้องเขียนฟังก์ชันในตัวจัดการเหตุการณ์ OnOpen() ของแบบฟอร์ม (ดู):
องค์ประกอบของแบบฟอร์ม ElementNameTextDocumentField.SetText (ValueString); //ในที่นี้ ValueString คือข้อความที่ได้รับ เช่น จากแอตทริบิวต์
และในตัวจัดการบันทึก - ตัวอย่างเช่นในปุ่มบันทึก - ให้เพิ่มการบันทึก:
ValueString = FormElements.ElementNameTextDocumentField.GetText(); //Valueบรรทัดที่นี่คือแอตทริบิวต์ที่เราบันทึกค่า
5. ใน 1C เวอร์ชัน 8.2.11 นิ้ว แบบฟอร์มควบคุม, ปรากฏขึ้น โอกาสใหม่การแสดงบรรทัด 1C – ฟิลด์เอกสารที่จัดรูปแบบ
คล้ายกับช่องของเอกสารข้อความ คุณต้องตั้งค่าเมื่อเปิดและจดบันทึกเมื่อบันทึกด้วยตนเองโดยใช้โปรแกรม
- ในวัตถุ 1C ที่เรากำลังสร้างแบบฟอร์ม (ไดเร็กทอรี เอกสาร การประมวลผล ฯลฯ) - เพิ่มแอตทริบิวต์ด้วยประเภท Value Storage
- ในฟังก์ชัน OnReadOnServer() เราตั้งค่าข้อความจากแอตทริบิวต์
// ที่นี่ Attribute คือแอตทริบิวต์ที่เพิ่มของวัตถุ 1C
//ที่นี่ FormattedDocument คือชื่อของฟิลด์ในแบบฟอร์มที่จะแก้ไข
&บนเซิร์ฟเวอร์
FormattedDocument = CurrentObject.Attributes.Get();
สิ้นสุดขั้นตอน - ในฟังก์ชัน BeforeWritingOnServer() หรือใช้ปุ่ม เราจะเขียนข้อความจากฟิลด์
&บนเซิร์ฟเวอร์
ขั้นตอนเมื่อ ReadOnServer(CurrentObject)
CurrentObject.Props = NewValueStorage (FormattedDocument);
สิ้นสุดขั้นตอน