การเพิ่มสตริง 1 วินาที ฟังก์ชั่นใหม่สำหรับการทำงานกับสตริง

มีกลไกบางอย่างในการทำงานกับสตริงในการสืบค้น 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);
    สิ้นสุดขั้นตอน



กำลังโหลด...
สูงสุด