1c ลบพื้นที่ที่ไม่แตกหักออก วิธีลบช่องว่าง

คำถามที่พบบ่อยหรือแพลตฟอร์ม 8 สำหรับหุ่นจำลอง

ตัดสินโดยฟอรัมที่อุทิศให้กับหัวข้อ 1C โปรแกรมเมอร์ที่พบแพลตฟอร์ม 1C v 8 เป็นครั้งแรกหรือกำลังจะย้ายจาก 7.7 มักจะมีคำถามเดียวกัน ที่นี่ฉันตัดสินใจที่จะรวบรวมสิ่งที่พบบ่อยที่สุดในความคิดของฉัน...

ใน:จะลบช่องว่างในหมายเลข 12,600.00 ได้อย่างไร?
เกี่ยวกับ:สิ่งสำคัญคือต้องเข้าใจว่าไม่ใช่อักขระช่องว่างที่ใช้ในที่นี้ แต่เรียกว่า " พื้นที่ไม่ทำลาย" เช่น นี้ การก่อสร้าง:

StrReplace(หมายเลขตัวแปร," ","");

จะไม่ทำงาน มีสองตัวเลือกในการแก้ปัญหา โดยระบุ Symbols.NPP แทนการเว้นวรรค หรือใช้ฟังก์ชัน Format()

StrReplace(VariableNumber,Characters.NPP,""); // ตัวเลือกที่ 1
รูปแบบ(หมายเลขตัวแปร,"HG="); // ตัวเลือกที่ 2

ใน:วิธีการตั้งค่าเงื่อนไขในการสืบค้นเพื่อให้รวมเฉพาะเอกสารบางประเภทไว้ในการเลือกผลลัพธ์?
เกี่ยวกับ:ซึ่งสามารถทำได้โดยใช้ตัวดำเนินการภาษาคิวรี REF ซึ่งช่วยให้คุณตรวจสอบว่าค่าของนิพจน์ที่ระบุทางด้านซ้ายเป็นการอ้างอิงถึงตารางที่ระบุทางด้านขวาหรือไม่ ลองดูตัวอย่างเลือกจากการลงทะเบียนการสะสมการขายบริการเฉพาะบันทึกที่นายทะเบียนเป็นเอกสารการขายสินค้าและบริการ:

คำขอ=คำขอใหม่("
|เลือก
- การดำเนินการบริการนายทะเบียน
- การขายบริการ
|จาก
- การลงทะเบียนการสะสม การดำเนินการบริการ วิธีการใช้งานบริการ
|ที่ไหน
- เอกสาร LINK นายทะเบียนการขายสินค้าและบริการ");

ใน:จะถ่ายโอนเอกสาร/สมุดอ้างอิงบางอย่างระหว่างการกำหนดค่าที่เหมือนกันได้อย่างไร
เกี่ยวกับ:ซึ่งสามารถทำได้โดยใช้การประมวลผลมาตรฐาน UploadLoadDataXML.epf ซึ่งจัดมาให้บนดิสก์ ITS

ใน:จะถ่ายโอนข้อมูลระหว่างการกำหนดค่าที่แตกต่างกัน (หรือจาก 7.7 ถึง 8) ได้อย่างไร?
เกี่ยวกับ: ตัวเลือกที่ดีที่สุดในความคิดของฉันคือการใช้การกำหนดค่า "การแปลงข้อมูล" มาตรฐานซึ่งให้มาในดิสก์ ITS นอกจากนี้ยังมีบทความหลายบทความที่อธิบายการใช้การกำหนดค่านี้

ใน:ฉันจะเพิ่มสตริงเฉพาะลงในฟิลด์ประเภทที่ไม่ใช่สตริงในการสืบค้น เช่น SELECT Sales of Goods and Services ได้อย่างไร
เกี่ยวกับ:ไม่มีทาง. ไม่สามารถแปลงประเภทได้ในแบบสอบถาม บางคนเข้าใจผิดจากโครงสร้างภาษาคิวรี EXPRESS แต่เพียงแปลงค่าของประเภทคอมโพสิตเป็นประเภทใดประเภทหนึ่งที่ประกอบขึ้นเป็นค่าและไม่มีทางแปลงประเภทนั้น ดังนั้นจึงใช้ไม่ได้ในสถานการณ์นี้

ใน:ฉันจะกำหนดเงื่อนไขในการสืบค้นบนฟิลด์ที่มีประเภทสตริงที่มีความยาวไม่จำกัด เช่น เลือกเอกสารทั้งหมดที่มีความคิดเห็นเฉพาะได้อย่างไร
เกี่ยวกับ:ในการดำเนินการนี้ คุณจะต้องจำกัดความยาวของฟิลด์โดยใช้ตัวดำเนินการภาษาคิวรี EXPRESS ตัวอย่างเช่น:

คำขอ=คำขอใหม่("
|เลือก
- ลิงค์การขายสินค้าและบริการ
|จาก
- เอกสารการขายสินค้าและบริการวิธีการขายสินค้าและบริการ
|ที่ไหน
- EXPRESS(SalesProductsServices.Comment AS ROW(100)) = &ความคิดเห็น");

ใน:มีฟังก์ชันอะนาล็อก 7.7 CatalogIB() ใน v 8 หรือไม่
เกี่ยวกับ:ไม่ เนื่องจากฟังก์ชันดังกล่าวไม่สมเหตุสมผลสำหรับโหมดการทำงานของไคลเอ็นต์-เซิร์ฟเวอร์ อย่างไรก็ตาม สำหรับโหมดการทำงานไฟล์ สามารถรับไดเร็กทอรีได้ ฐานข้อมูลโดยใช้โครงสร้างดังต่อไปนี้:

CatalogIB=NStr(InformationBaseConnectionString(),"ไฟล์");

ใน:จะตัดการเชื่อมต่อโหนดจากฐานข้อมูลแบบกระจายได้อย่างไร
เกี่ยวกับ:โดยใช้โครงสร้างดังต่อไปนี้:

ExchangePlans.SetMainNode(ไม่ได้กำหนด);

หรือเรียกใช้ตัวกำหนดค่าด้วยพารามิเตอร์ บรรทัดคำสั่ง/ResetMasterNode (สำหรับ รุ่นพื้นฐานไม่ได้ใช้)

ใน:วิธีรับชื่อเอกสาร (คล้ายกับวิธี 7.7 View())
เกี่ยวกับ:การใช้ข้อมูลเมตา ตัวอย่างเช่น:

ใน:จะเลือกเอกสารทุกประเภทในแบบสอบถามเดียวได้อย่างไร
เกี่ยวกับ:การใช้ข้อมูลเมตาและความสามารถในการรวมแบบสอบถาม ใน:

คำขอ=คำขอใหม่;
ข้อความ = "";
สำหรับแต่ละเอกสารจาก Metadata รอบเอกสาร
Text=ข้อความ+"เลือกลิงก์จากเอกสาร"+Document.Name+"MERGE";
สิ้นสุดรอบ;
Query.Text=ซ้าย(ข้อความ,StrLength(ข้อความ)-StrLength(" รวม "));
เลือก=Query.Run().เลือก();

ใน:จะขัดขวางการรายงาน/การประมวลผลได้อย่างไร?
เกี่ยวกับ:แนะนำให้ใช้ตัวดำเนินการ UserInterrupt Handling() ภายในลูป เมื่อผู้ใช้กดคีย์ผสม Ctrl+Break การดำเนินการจะถูกขัดจังหวะและข้อความที่เกี่ยวข้องจะปรากฏขึ้น ตัวอย่างเช่น:

ในขณะที่ Select.Next() วนซ้ำ
UserInterruptHandling ();

สิ้นสุดรอบ;

ใน:แบบฟอร์มมี TableField พร้อมด้วยประเภท ValueTree และชุดคุณสมบัติ Tree เหตุใด Value Tree จึงไม่แสดง?
เกี่ยวกับ:นอกจากนี้ คุณต้องตั้งค่าคุณสมบัติลำดับชั้นการแสดงผลสำหรับคอลัมน์ใดคอลัมน์หนึ่ง

ใน:วิธีการใช้งานงานประจำค่ะ โหมดไฟล์งานฐานข้อมูล?
เกี่ยวกับ:ต่างจากไคลเอนต์เซิร์ฟเวอร์ ในโหมดไฟล์ ความรับผิดชอบในการดำเนินการ เริ่มต้นอัตโนมัติงานด้านกฎระเบียบได้รับมอบหมายให้กับนักพัฒนา หากต้องการเริ่มงานอัตโนมัติ คุณต้องมี Waiting Handler ซึ่งจะตรวจสอบงานที่ "เกินกำหนด" เป็นระยะและเริ่มทำงาน ขอแนะนำอย่างยิ่งให้คุณใช้เซสชันแยกต่างหากสำหรับสิ่งนี้ ตัวอย่าง:

ขั้นตอน CheckTasks()
RunTaskProcessing();
สิ้นสุดขั้นตอน
ConnectWaitingHandler("การตรวจสอบงาน",3);

ใน:วิธีรับอาร์เรย์จากสตริงที่มีตัวคั่น
เกี่ยวกับ:ตามตัวอย่าง ฉันจะให้เวอร์ชันของฟังก์ชันที่ทำงาน "ในทั้งสองทิศทาง" เช่น เมื่อส่งผ่านสตริงที่มีตัวคั่น มันจะสร้างอาร์เรย์ และเมื่อส่งผ่านอาร์เรย์ มันจะสร้างสตริงที่มีตัวคั่นจากนั้น

ฟังก์ชั่น StringArray (ค่า, ตัวคั่น)
ถ้า TypeValue(Value)=Type("String") แล้ว
MnStr = StrReplace (ค่า ตัวคั่น ตัวอักษร PS);
อาร์เรย์=อาร์เรย์ใหม่;
สำหรับ n=1 ตามรอบ StrNumber Of Rows(MnStr)
Array.Add(StrGetString(MnStr,n));
สิ้นสุดรอบ;
กลับอาร์เรย์;
ElseIfTypeValue(Value)=Type("Array") จากนั้น
เส้น = "";
สำหรับแต่ละองค์ประกอบของวงจรคุณค่า
String=String+?(String"",Separator,"")+องค์ประกอบ;
สิ้นสุดรอบ;
ส่งคืนสตริง;
มิฉะนั้น
กลับไม่ได้กำหนด;
สิ้นสุดถ้า;
EndFunction

ใน:จะเปิดใช้งานความสามารถในการเปลี่ยนแปลงในตัวกำหนดค่าในการกำหนดค่ามาตรฐานได้อย่างไร
เกี่ยวกับ:เพราะ การกำหนดค่าทั่วไปได้รับการสนับสนุน (ซึ่งอนุญาต โหมดอัตโนมัติ update) จากนั้นตามค่าเริ่มต้น ความสามารถในการเปลี่ยนแปลงการกำหนดค่าจะถูกปิดใช้งาน หากต้องการเปิดใช้งานคุณสมบัตินี้ คุณจะต้องเลือกรายการเมนู “การกำหนดค่า > การสนับสนุน > การตั้งค่าการสนับสนุน” ในตัวกำหนดค่า และในหน้าต่างที่เปิดขึ้น ให้คลิกปุ่ม “เปิดใช้งานความสามารถในการเปลี่ยนแปลง”

ใน:จะตั้งรหัสผ่านการประมวลผล/กำหนดค่าได้อย่างไร?
เกี่ยวกับ:ใน 1C v 8 รหัสผ่านสามารถตั้งค่าได้บนโมดูลวัตถุเท่านั้น ในการตั้งรหัสผ่าน คุณต้องเปิดโมดูลวัตถุและเลือกรายการเมนู “ข้อความ > ตั้งรหัสผ่าน” นอกจากนี้ยังสามารถจัดเตรียมการกำหนดค่าโดยไม่มีซอร์สโค้ดของโมดูลออบเจ็กต์ได้ (กำหนดค่าใน "การกำหนดค่า > การจัดส่งการกำหนดค่า > การตั้งค่าการจัดส่ง") ฉันอยากจะทราบว่าเมื่อ ในขณะนี้ไม่มีวิธีการเหล่านี้เลย การป้องกันที่เชื่อถือได้จากการดู ข้อความต้นฉบับโมดูล

ใน:เหตุใดจึงไม่ค้นหาเอกสารโดยใช้วิธี FindByNumber (<Номер документа>)?
เกี่ยวกับ:ต้องจำไว้ว่าหากตั้งค่าการกำหนดหมายเลขเป็นระยะสำหรับเอกสารประเภทนี้ในตัวกำหนดค่า นอกเหนือจากหมายเลขเอกสารแล้ว คุณต้องระบุวันที่ช่วงเวลาเป็นพารามิเตอร์ที่สอง มิฉะนั้นจะดำเนินการค้นหาเอกสารที่มีวันที่ว่างเปล่าซึ่งเห็นได้ชัดว่าจะไม่นำไปสู่ผลลัพธ์ที่ต้องการ

ใน:ใน 1C 8.1 หากคุณต้องการเชื่อมต่อกับแอปพลิเคชันที่รันอยู่แล้วสำหรับการดีบัก (Configurator > Debugging > Connection) รายการการดีบักที่มีอยู่จะว่างเปล่า สาเหตุคืออะไร?
เกี่ยวกับ:ประเด็นก็คือสำหรับแอปพลิเคชันที่เรากำลังจะทำการดีบัก เราจำเป็นต้องอนุญาตการดีบักอย่างชัดเจน เมนูเครื่องมือ > ตัวเลือก > แท็บระบบ > ตั้งค่าสถานะ "เปิดใช้งานการดีบัก"

ใน:วิธีจัดระเบียบการวนซ้ำบนสตริง รายการแบบไดนามิก(เช่น DirectoryList หรือ DocumentList)?
เกี่ยวกับ:ซึ่งสามารถทำได้โดยใช้เครื่องมือสร้างรายงาน ตัวอย่างเช่น:

ตัวสร้าง=ตัวสร้างรายงานใหม่;
Builder.DataSource=NewDataSourceDescription(DocumentList);
Selection=Builder.Result.Select();
ในขณะที่ Select.Next() วนซ้ำ
รายงาน(Selection.Link);
สิ้นสุดรอบ;

หมายเหตุ: การเลือกจะรวมแถวตามการเลือกที่เลือกในปัจจุบัน

ใน:จะตรวจสอบค่าคุณสมบัติของวัตถุเมตาดาต้าได้อย่างไร? ตัวอย่างเช่น ประเภทของลำดับชั้นไดเร็กทอรีหรือโหมดการบันทึกรีจิสเตอร์ หรือความถี่ของหมายเลขเอกสาร
เกี่ยวกับ:คุณสมบัติทั้งหมดเหล่านี้เป็นคุณสมบัติที่สามารถนับได้ของออบเจ็กต์ข้อมูลเมตา คุณยังสามารถรับค่าประเภทนี้ผ่านข้อมูลเมตาได้ ตัวอย่าง:

// ตัวอย่างที่ 1. ประเภทของลำดับชั้นของไดเร็กทอรี
ถ้า Metadata.Directories[Directory Name].Hierarchy View = Metadata.Object Properties.Hierarchy View.Hierarchy of Groups and Elements จากนั้น...
// ตัวอย่างที่ 2 โหมด RegisterRecord
ถ้า Metadata.InformationRegisters[RegisterName].RegisterRecordMode = Metadata.ObjectProperties.RegisterRecordMode.Submission toRegistrar จากนั้น...
// ตัวอย่างที่ 3 ระยะเวลาของหมายเลขเอกสาร
ถ้า Metadata.Documents[DocumentName].PeriodicityNumbers = Metadata.ObjectProperties.PeriodicityDocumentNumbers.Non-เป็นระยะ จากนั้น...

ใน:จะใช้ช่องทำเครื่องหมายที่มีสามสถานะในแผนผังค่าได้อย่างไร
เกี่ยวกับ:ให้เราพิจารณาการกำหนดปัญหาโดยละเอียด แบบฟอร์มมีช่องตาราง ซึ่งเป็นแหล่งข้อมูลที่เป็นแผนผังค่า ในคอลัมน์ใดคอลัมน์หนึ่งจะมีองค์ประกอบควบคุม "ช่องทำเครื่องหมาย" จำเป็นต้องยอมรับสถานะได้สามสถานะ: "เปิด", "ปิด" และ "ไม่ได้กำหนด" ในกรณีนี้สถานะคือ "ไม่ได้กำหนด" หรือที่เรียกว่า "ธงสีเทา" เช่น เลือกบางส่วนจะถูกตั้งค่าหากแถวรองทั้งหมดไม่มีสถานะช่องทำเครื่องหมายเหมือนกัน นอกจากนี้ หากแถวมีแถวรอง เมื่อแฟล็กมีการเปลี่ยนแปลง แฟล็กของแถวรองทั้งหมดควรเปลี่ยนตามนั้น
ขั้นแรก ให้เพิ่มคอลัมน์ช่องทำเครื่องหมายของเราไปที่แผนผังค่า:

Tree.Columns.Add("ทำเครื่องหมาย", คำอธิบายประเภทใหม่ ("หมายเลข"));
FormElements.Tree.CreateColumns();
TreeColumns=FormElements.Tree.Columns;
TreeColumns.Mark.FlagData = "เครื่องหมาย";
TreeColumns.Mark.SetControlElement(ประเภท("ช่องทำเครื่องหมาย"));
Tree Columns.Mark.EditMode=EditModeColumns.Directly
อย่างแน่นอน;
TreeColumns.Mark.ThreeStatesFlag=จริง;

ประการที่สองเมื่อเปลี่ยนช่องทำเครื่องหมายคุณจะต้องตั้งค่าที่สอดคล้องกันในแถวรองและควบคุมค่าของช่องทำเครื่องหมายใน "แถวหลัก":

ขั้นตอน TreeWhenChangingFlag (องค์ประกอบ, คอลัมน์)
CurrentRow=องค์ประกอบปัจจุบันแถว;
ถ้า CurrentLine.Mark=2 แล้ว
CurrentLine.มาร์ค=0;
สิ้นสุดถ้า;
SettingFlags (CurrentRow, CurrentRow.Mark);
ในขณะที่ CurrentRow.Parent วนซ้ำไม่ได้กำหนด
CurrentRow.Parent.Mark=?(SetForAll(CurrentRow),CurrentRow.Mark, 2);
CurrentRow = CurrentRow.Parent;
สิ้นสุดรอบ;
สิ้นสุดขั้นตอน

ที่นี่ ขั้นตอน SetFlags() จะตั้งค่าช่องทำเครื่องหมายในแถวรองแบบวนซ้ำ:

ขั้นตอนการตั้งค่าแฟล็ก (แถวปัจจุบัน, ค่า)
สำหรับแต่ละหน้าจากวงจร CurrentRow.Rows
เพจมาร์ค=มูลค่า;
SetChecks (หน้า, PageMark);
สิ้นสุดรอบ;
สิ้นสุดขั้นตอน

และฟังก์ชัน SetForAll() จะตรวจสอบว่ามีการตั้งค่าเดียวกันสำหรับแถวทั้งหมดในระดับปัจจุบันหรือไม่:

ฟังก์ชั่น SetForAll (สตริง)
สำหรับแต่ละหน้าของ Row.Parent.Rows Cycle
ถ้า Page.MarkLine.Mark แล้ว
กลับเท็จ;
สิ้นสุดถ้า;
สิ้นสุดรอบ;
กลับเป็นจริง;
EndFunction

ใน:ฉันจะใช้การเรียงลำดับตามคุณลักษณะของฉันเองในแบบฟอร์มรายการได้อย่างไร
เกี่ยวกับ:หากแอตทริบิวต์เป็นประเภทดั้งเดิม ก็เพียงพอที่จะตั้งค่าคุณสมบัติของแอตทริบิวต์ "ดัชนี" เป็นค่า "ดัชนี" หรือ "ดัชนีเพิ่มเติม การสั่งซื้อ" (ไม่มีให้บริการสำหรับแอตทริบิวต์ประเภทการจัดเก็บค่า) หากแอตทริบิวต์เป็นประเภทการอ้างอิง คุณต้องอนุญาตให้มีการจัดเรียงอย่างชัดเจน ตัวอย่างเช่น:

องค์ประกอบ UP=องค์ประกอบแบบฟอร์ม.DirectoryList.Order Settings.Find("Props1");
หากไม่ได้กำหนดองค์ประกอบ UP แล้ว
ElementUP.Availability=จริง;
สิ้นสุดถ้า;

ประเภทสตริงพบได้ในทุกภาษาการเขียนโปรแกรม มันเป็นแบบดั้งเดิมและใน 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) // ส่งคืน "troco"

StrLength

ฟังก์ชันกำหนดจำนวนอักขระที่มีอยู่ในตัวแปรสตริง

StrLength("Word") // ผลลัพธ์ของการดำเนินการจะเป็นหมายเลข 5

หา

ฟังก์ชันนี้ทำให้สามารถค้นหาส่วนหนึ่งของสตริงในตัวแปรสตริงได้ ค่าที่ส่งคืนจะเป็นตัวเลขที่แสดงตำแหน่งของจุดเริ่มต้นของสตริงที่พบ หากไม่พบรายการที่ตรงกัน ระบบจะส่งคืนศูนย์

โปรดทราบว่าการค้นหาจะคำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ หากมีสตริงย่อยการค้นหามากกว่าหนึ่งรายการในสตริงต้นฉบับ ฟังก์ชันจะส่งคืนจุดเริ่มต้นของการเกิดขึ้นครั้งแรก

Find("one, two, one, two, three", "two") // ฟังก์ชันจะคืนค่าตัวเลข 6

EmptyString

การใช้ฟังก์ชันนี้ช่วยให้คุณสามารถระบุได้ว่าสตริงว่างเปล่าหรือไม่ อักขระรอง เช่น ช่องว่าง การขึ้นบรรทัดใหม่ และอื่นๆ จะไม่ถูกนำมาพิจารณา

EmptyString("Pupkin Vasily Ivanovich") // ฟังก์ชันจะคืนค่าเป็นเท็จ
EmptyString(" ") // ฟังก์ชันจะส่งคืนค่า True

VReg, NReg, TReg

ฟังก์ชันเหล่านี้มีประโยชน์มากเมื่อเปรียบเทียบและแปลงตัวแปรสตริง "Reg()" จะส่งกลับสตริงต้นฉบับเป็นตัวพิมพ์ใหญ่ "HPreg()" เป็นตัวพิมพ์เล็ก และ "TReg()" จะจัดรูปแบบเพื่อให้อักขระตัวแรกของแต่ละคำเป็น c ตัวพิมพ์ใหญ่และอันที่ตามมาทั้งหมดด้วยอันเล็ก

VReg("ผู้อำนวยการทั่วไป") // ค่าส่งคืน - "ผู้อำนวยการทั่วไป"
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;g; ", ";") // ฟังก์ชันจะคืนค่าตัวเลข 4

สัญลักษณ์และรหัสสัญลักษณ์

ฟังก์ชันเหล่านี้ช่วยให้คุณรับอักขระด้วยโค้ดในการเข้ารหัส Unicode รวมถึงกำหนดโค้ดนี้ด้วยอักขระด้วย

SymbolCode("A") // ฟังก์ชันจะคืนค่าตัวเลข 1,040
CharacterCode(1040) // ฟังก์ชันจะส่งกลับ “A”

งานทั่วไปเมื่อทำงานกับสตริง

การต่อสายอักขระ

หากต้องการรวมหลายสตริง (เพื่อทำการต่อข้อมูล) ก็เพียงพอแล้วที่จะใช้ตัวดำเนินการบวก

“บรรทัดที่ 1″ + “บรรทัดที่ 2″ //ผลลัพธ์ของการเพิ่มสองบรรทัดจะเป็น “บรรทัดที่ 1 บรรทัดที่ 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 8.3 ในภาษา 1C ในตัวเป็นค่าของประเภทดั้งเดิม เส้น- ค่านิยม ประเภทนี้มีสตริง Unicode ที่มีความยาวตามต้องการ ตัวแปรประเภทสตริงคือชุดอักขระที่อยู่ในเครื่องหมายคำพูด

ตัวอย่างที่ 1 มาสร้างตัวแปรสตริงพร้อมข้อความกันดีกว่า

StringVariable = "สวัสดีชาวโลก!";

ฟังก์ชั่นสำหรับการทำงานกับสตริงใน 1s 8.3

ส่วนนี้จะมีฟังก์ชันหลักที่ช่วยให้คุณสามารถเปลี่ยนบรรทัดใน 1c หรือวิเคราะห์ข้อมูลที่อยู่ในนั้นได้

StrLength

Strความยาว(<Строка>) - ส่งกลับจำนวนอักขระที่มีอยู่ในสตริงที่ส่งผ่านเป็นพารามิเตอร์

ตัวอย่างที่ 2 ลองนับจำนวนอักขระในบรรทัด “Hello world!”

String = "สวัสดีชาวโลก!"; NumberofCharacters = StrLength (สตริง); รายงาน (อักขระตัวเลข);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงจำนวนอักขระในบรรทัด: 11

อักษรย่อL

ชื่อย่อL(<Строка>) - ตัดอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในสตริง
ตัวละครรอง:

  • ช่องว่าง;
  • พื้นที่ไม่แตกหัก
  • การจัดตาราง;
  • การคืนรถ;
  • ฟีดบรรทัด;
  • การแปลแบบฟอร์ม (หน้า)

ตัวอย่างที่ 3 ลบช่องว่างทั้งหมดออกจากด้านซ้ายของบรรทัด "world!" และเพิ่มบรรทัด "สวัสดี" ลงไป

String = ตัวย่อ ("โลก!"); สตริง = "สวัสดี"+สตริง; รายงาน (สตริง);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "Hello world!" บนหน้าจอ

ย่อ

อักษรย่อ(<Строка>) - ตัดอักขระที่ไม่มีนัยสำคัญไปทางด้านขวาของอักขระสำคัญตัวแรกในสตริง

ตัวอย่างที่ 4 แบบฟอร์มจากบรรทัด "สวัสดี" และ "สันติภาพ!" วลี “สวัสดีชาวโลก!”

Line = ตัวย่อ ("Hello ")+" "+ ตัวย่อ (" world!"); รายงาน (สตริง);

ชื่อย่อLP

อักษรย่อLP(<Строка>) - ตัดอักขระที่ไม่มีนัยสำคัญทางด้านขวาของอักขระสำคัญตัวแรกในสตริง และยังตัดแต่งอักขระที่ไม่มีนัยสำคัญทางด้านซ้ายของอักขระสำคัญตัวแรกในสตริงด้วย ฟังก์ชันนี้ใช้บ่อยกว่าสองฟังก์ชันก่อนหน้าเนื่องจากเป็นสากลมากกว่า

ตัวอย่างที่ 5 ลบอักขระที่ไม่มีนัยสำคัญทางซ้ายและขวาในชื่อของคู่สัญญา

คู่สัญญา = ไดเรกทอรี คู่สัญญาค้นหาตามรายละเอียด ("TIN", "0777121211"); AccountObject = บัญชี GetObject(); CounterpartyObject.Name = AbbrLP (CounterpartyObject.Name); AccountObject.เขียน();

สิงโต

สิงโต(<Строка>, <ЧислоСимволов>) - รับอักขระตัวแรกของสตริง โดยระบุจำนวนอักขระในพารามิเตอร์ จำนวนอักขระ

ตัวอย่างที่ 6. ให้ในโครงสร้าง พนักงานประกอบด้วยชื่อ นามสกุล และนามสกุลของพนักงาน รับสตริงที่มีนามสกุลและชื่อย่อ

NameInitial = Lev (ชื่อพนักงาน, 1); ชื่อย่อของผู้อุปถัมภ์ = ราศีสิงห์(พนักงาน. ชื่อผู้อุปถัมภ์, 1); FullName = Employee.LastName + " " + ชื่อเริ่มต้น + "."

+ ชื่อกลาง + "";

ขวา<Строка>, <ЧислоСимволов>) ขวา( จำนวนอักขระ- รับอักขระตัวสุดท้ายของสตริง ซึ่งเป็นจำนวนอักขระที่ระบุในพารามิเตอร์

หากจำนวนอักขระที่ระบุเกินความยาวของสตริง ระบบจะส่งคืนสตริงทั้งหมด ตัวอย่างที่ 7 ให้เขียนวันที่ในรูปแบบ “yyyymmdd” ต่อท้ายตัวแปรสตริง รับสตริงพร้อมวันที่แล้วแปลงเป็นประเภท.

วันที่ สตริง = "วันที่ปัจจุบัน

: 20170910"; StringDate = สิทธิ์ (สตริง, 8); วันที่ = วันที่ (StringDate);

วันพุธ<Строка>, <НачальныйНомер>, <ЧислоСимволов>) วันพุธ( เส้น- รับสตริงย่อยจากสตริงที่ส่งผ่านเป็นพารามิเตอร์ โดยเริ่มจากอักขระที่ระบุหมายเลขไว้ในพารามิเตอร์หมายเลขเริ่มต้น จำนวนอักขระและความยาวที่ส่งผ่านไปยังพารามิเตอร์ โดยเริ่มจากอักขระที่ระบุหมายเลขไว้ในพารามิเตอร์การกำหนดหมายเลขอักขระในบรรทัดเริ่มต้นจาก 1 หากอยู่ในพารามิเตอร์ ระบุค่าน้อยกว่าหรือเท่ากับศูนย์ ดังนั้นพารามิเตอร์จะใช้ค่า 1 หากพารามิเตอร์จำนวนอักขระ

ไม่ได้ระบุ จะเลือกอักขระจนถึงท้ายบรรทัด

ตัวอย่างที่ 8 ให้ตัวแปรสตริงที่เริ่มต้นจากตำแหน่งที่เก้ามีรหัสภูมิภาค คุณควรรับมันและเขียนเป็นบรรทัดแยกกัน

String = "ภูมิภาค: 99 มอสโก"; ภูมิภาค = เฉลี่ย (สตริง, 9, 2);

ค้นหาหน้า<Строка>, <ПодстрокаПоиска>, <НаправлениеПоиска>, <НачальнаяПозиция>, <НомерВхождения>) Strค้นหา(

  • เส้น- ค้นหาสตริงย่อยที่ระบุในสตริง โดยส่งคืนหมายเลขตำแหน่งของอักขระตัวแรกของสตริงย่อยที่พบ ลองดูที่พารามิเตอร์ของฟังก์ชันนี้:
  • - สตริงต้นทาง;ค้นหาสตริงย่อย
  • - ค้นหาสตริงย่อยทิศทางการค้นหา
    • - ระบุทิศทางในการค้นหาสตริงย่อยในสตริง สามารถรับค่า:;
    • ค้นหาทิศทางตั้งแต่เริ่มต้น;
  • ค้นหา ทิศทางสิ้นสุด- ระบุตำแหน่งในสตริงที่การค้นหาเริ่มต้น
  • จำนวนที่เกิดขึ้น- ระบุหมายเลขที่เกิดขึ้นของสตริงย่อยที่ค้นหาในสตริงต้นทาง

ตัวอย่างที่ 9 ในบรรทัด “Hello world!” กำหนดตำแหน่งของอักขระ "และ" ที่ปรากฏครั้งสุดท้าย

PositionNumber = StrFind("สวัสดีชาวโลก!", "และ", ค้นหาทิศทางสิ้นสุด); รายงาน(หมายเลขตำแหน่ง);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงจำนวนครั้งล่าสุดของสัญลักษณ์ "และ": 9

VReg

VReg(<Строка>) - แปลงอักขระทั้งหมดในสตริงที่ระบุใน 1s8 เป็นตัวพิมพ์ใหญ่

ตัวอย่างที่ 10: แปลงสตริง "hello world!" เป็นตัวพิมพ์ใหญ่

StringVreg = VReg("สวัสดีชาวโลก!"); รายงาน (StringVreg);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "HELLO WORLD!"

นเร็ก

NREG(<Строка>) - แปลงอักขระทั้งหมดของสตริงที่ระบุใน 1s 8 เป็นตัวพิมพ์เล็ก

ตัวอย่างที่ 11: แปลงสตริง "HELLO WORLD!" เป็นตัวพิมพ์เล็ก

StringNreg = NReg("สวัสดีชาวโลก!"); รายงาน (StringVreg);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "hello world!"

เทร็ก

เทรก(<Строка>) - แปลงสตริงดังต่อไปนี้: อักขระตัวแรกของแต่ละคำจะถูกแปลงเป็นตัวพิมพ์ใหญ่ อักขระที่เหลือของคำจะถูกแปลงเป็นตัวพิมพ์เล็ก

ตัวอย่างที่ 12 ทำ พิมพ์ใหญ่ก่อนตัวอักษรในบรรทัด "สวัสดีชาวโลก!"

StringTreg = TReg("สวัสดีชาวโลก!"); รายงาน (StringTreg);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "Hello World!"

เครื่องหมาย

เครื่องหมาย(<КодСимвола>) - รับอักขระด้วยรหัส Unicod

ตัวอย่างที่ 13 เพิ่มด้านซ้ายและขวาในบรรทัด “Hello World!” สัญลักษณ์ ★

StringWithStars = สัญลักษณ์("9733")+"สวัสดีชาวโลก!"+สัญลักษณ์("9733"); รายงาน (StringWithStars);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด “★Hello World!★”

รหัสสัญลักษณ์

รหัสสัญลักษณ์(<Строка>, <НомерСимвола>) - รับโค้ดอักขระ Unicode จากสตริงที่ระบุในพารามิเตอร์แรก ซึ่งอยู่ที่ตำแหน่งที่ระบุในพารามิเตอร์ตัวที่สอง

ตัวอย่างที่ 14 ค้นหารหัสของอักขระตัวสุดท้ายในบรรทัด “Hello World!”

String = "สวัสดีชาวโลก!"; CharacterCode = CharacterCode (สตริง, StrLength (สตริง)); แจ้ง (รหัสตัวละคร);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงโค้ดสัญลักษณ์ “!” - 33.

EmptyString

สตริงว่าง(<Строка>) - ตรวจสอบว่าสตริงประกอบด้วยอักขระที่ไม่มีนัยสำคัญเท่านั้นหรือไม่ กล่าวคือ ว่างเปล่าหรือไม่

ตัวอย่างที่ 15 ตรวจสอบว่าสตริงที่ประกอบด้วยช่องว่างสามช่องว่างเปล่าหรือไม่

ว่างเปล่า = EmptyString(" "); รายงาน(ว่าง);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงคำว่า "ใช่" (นิพจน์สตริงของค่าตรรกะ จริง).

แทนที่หน้า

Strแทนที่(<Строка>, <ПодстрокаПоиска>, <ПодстрокаЗамены>) - ค้นหาสตริงย่อยการค้นหาที่เกิดขึ้นทั้งหมดในสตริงต้นทาง และแทนที่ด้วยสตริงย่อยการแทนที่

ตัวอย่างที่ 16 ในบรรทัด “Hello World!” แทนที่คำว่า "สันติภาพ" ด้วยคำว่า "เพื่อน"

String = StrReplace("สวัสดีชาวโลก!", "โลก", "เพื่อน"); รายงาน (สตริง);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "Hello Friends!"

StrNumberLines

StrNumberRow(<Строка>) - ช่วยให้คุณนับจำนวนบรรทัดในสตริงหลายบรรทัด หากต้องการขึ้นบรรทัดใหม่ใน 1 วินาที 8 ให้ใช้สัญลักษณ์ ป.ล(อักขระขึ้นบรรทัดใหม่)

ตัวอย่างที่ 17 กำหนดจำนวนบรรทัดในข้อความ:
“บรรทัดแรก
บรรทัดที่สอง
บรรทัดที่สาม”

Number = StrNumberString("บรรทัดแรก"+Characters.PS +"บรรทัดที่สอง"+Symbols.PS +"บรรทัดที่สาม"); รายงาน(หมายเลข);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงจำนวนบรรทัดในข้อความ: 3

StrGetString

StrGetString(<Строка>, <НомерСтроки>) - รับค่าบรรทัดในสตริงหลายบรรทัดตามหมายเลข การกำหนดหมายเลขบรรทัดเริ่มต้นจาก 1

ตัวอย่างที่ 18 รับบรรทัดสุดท้ายในข้อความ:
“บรรทัดแรก
บรรทัดที่สอง
บรรทัดที่สาม”

ข้อความ = "บรรทัดแรก" + สัญลักษณ์ PS + "บรรทัดที่สอง" + สัญลักษณ์ LastRow = StrGetRow(ข้อความ, StrNumberLines(ข้อความ)); รายงาน(บรรทัดสุดท้าย);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงบรรทัด "บรรทัดที่สาม"

จำนวนหน้าที่เกิดขึ้น

StrNumber เกิดขึ้น(<Строка>, <ПодстрокаПоиска>) - ส่งกลับจำนวนครั้งของสตริงย่อยที่ระบุในสตริง ฟังก์ชันนี้คำนึงถึงขนาดตัวพิมพ์

ตัวอย่างที่ 19 พิจารณาว่าตัวอักษร "c" ปรากฏในบรรทัด "บรรทัดใน 1 วินาที 8.3 และ 8.2" กี่ครั้งโดยไม่คำนึงถึงกรณี

Line = "เส้นใน 1 วินาที 8.3 และ 8.2"; NumberOccurrences = StrNumberOccurrences (Vreg (สตริง), "C"); รายงาน(จำนวนครั้ง);

ผลลัพธ์ของการรันโค้ดนี้จะแสดงจำนวนครั้งที่เกิดขึ้น: 2.

เพจเริ่มต้นด้วย

StrStartsด้วย(<Строка>, <СтрокаПоиска>) - ตรวจสอบว่าสตริงที่ส่งผ่านในพารามิเตอร์แรกเริ่มต้นด้วยสตริงในพารามิเตอร์ตัวที่สองหรือไม่

ตัวอย่างที่ 20 ตรวจสอบว่า TIN ของคู่สัญญาที่เลือกเริ่มต้นด้วยหมายเลข 1 หรือไม่ ให้ในตัวแปร คู่สัญญา คู่สัญญา.

TIN = คู่สัญญา TIN; StartsUNits = StrStartsWith(TIN, "1"); ถ้าเริ่มต้นด้วยหน่วยแล้ว // รหัสของคุณ EndIf;

หน้าสิ้นสุดเปิด

StrEndsด้วย(<Строка>, <СтрокаПоиска>) - ตรวจสอบว่าสตริงที่ส่งผ่านในพารามิเตอร์แรกลงท้ายด้วยสตริงในพารามิเตอร์ตัวที่สองหรือไม่

ตัวอย่างที่ 21 ตรวจสอบว่า TIN ของคู่สัญญาที่เลือกลงท้ายด้วยหมายเลข 2 หรือไม่ ให้ในตัวแปร คู่สัญญาการอ้างอิงถึงองค์ประกอบไดเร็กทอรีจะถูกเก็บไว้ คู่สัญญา.

TIN = คู่สัญญา TIN; EndsWithTwo = StrEndsWith(TIN, "2"); ถ้า EndsInTwo แล้ว // รหัสของคุณ EndIf;

การแยกหน้า

สตริไดไวด์(<Строка>, <Разделитель>, <ВключатьПустые>) - แยกสตริงออกเป็นส่วนๆ โดยใช้อักขระตัวคั่นที่ระบุ และเขียนสตริงผลลัพธ์ลงในอาร์เรย์ พารามิเตอร์ตัวแรกเก็บสตริงต้นฉบับ พารามิเตอร์ตัวที่สองเก็บสตริงที่มีตัวคั่น พารามิเตอร์ตัวที่สามระบุว่าควรเขียนลงในอาร์เรย์หรือไม่ เส้นว่าง(ค่าเริ่มต้น จริง).

ตัวอย่างที่ 22. ให้เรามีสตริงที่มีตัวเลขคั่นด้วยสัญลักษณ์ “;” จะได้อาร์เรย์ของตัวเลขจากสตริง

สตริง = "1; 2; 3"; Array = StrDivide(สตริง, ";"); สำหรับการนับ = 0 โดย Array.Quantity() - 1 รอบความพยายาม Array[Count] = Number(AbbrLP(Array[Count]));

อาร์เรย์ข้อยกเว้น [Sch] = 0;

สิ้นสุดความพยายามEndCycle;

จากผลของการดำเนินการ จะได้อาร์เรย์ที่มีตัวเลขตั้งแต่ 1 ถึง 3<Строки>, <Разделитель>) เพจคอนเน็ค

StrConnect(

- แปลงอาร์เรย์ของสตริงจากพารามิเตอร์แรกเป็นสตริงที่มีองค์ประกอบทั้งหมดของอาร์เรย์คั่นด้วยตัวคั่นที่ระบุในพารามิเตอร์ตัวที่สอง

ตัวอย่างที่ 23 ใช้อาร์เรย์ของตัวเลขจากตัวอย่างก่อนหน้านี้ รับสตริงดั้งเดิม

สำหรับบัญชี = 0 โดย Array.Quantity() - 1 Cycle Array[Act] = String(Array[Act]); สิ้นสุดรอบ; แถว = StrConnect(อาร์เรย์, "; ");

มันมักจะเกิดขึ้นว่าเมื่อทำการโหลดและยกเลิกการโหลดข้อมูลจาก 1C 8.2 และ 8.3 จะมีช่องว่างในตัวเลขที่รบกวนการประมวลผลข้อมูลตามปกติ วิธีแก้ปัญหานี้ง่ายมาก

  • พื้นที่ไม่แตกหัก
  • มาดูกันว่ามีช่องว่างประเภทใดบ้าง

ช่องว่างสามารถมีได้สองประเภท:

พื้นที่ "ปกติ"

การขจัดช่องว่างที่ไม่ทำลาย

StringRepresentation = สตริง (หมายเลข); // ระบบจะเขียน "10,000" ให้กับตัวแปร

มันง่ายมากที่จะลบช่องว่างดังกล่าวใน 1C โดยใช้ฟังก์ชันรูปแบบตัวเลข:

ตัวเลข = รูปแบบ (10,000, “NH=”);

StringRepresentation = สตริง (หมายเลข); // ระบบจะเขียน "10,000" ให้กับตัวแปร

เราตั้งค่าการจัดกลุ่มในรูปแบบสตริงเป็นค่าว่าง (คุณสามารถเขียน "0") ได้

หากชนิดข้อมูลเป็น "สตริง" อยู่แล้ว ก็สามารถใช้วิธีการต่อไปนี้ได้:

StringRepresentation = StrReplace (สตริง (StringRepresentation), ตัวละคร NPP, ""); // ในตัวแปร StringRepresentation คือ "10,000" ตอนนี้เป็น "10,000"

นั่นคือเราเพียงแค่แทนที่ช่องว่างที่ไม่แยก (Characters.NPP) ในบรรทัดด้วยค่าว่าง

ช่องว่างปกติ

การลบช่องว่างปกติในแถวนั้นทำได้ง่ายเหมือนกับการปอกเปลือกลูกแพร์ การทำหน้าที่ต่อไปนี้ก็เพียงพอแล้ว:

StringRepresentation = StrReplace (สตริง (StringRepresentation), " ", ""); // "10,000" กลายเป็น "10,000" ตัวอย่างจะคล้ายกับวิธีก่อนหน้า อย่างไรก็ตาม แทนที่จะเป็นตัวละคร NPP เราใช้สตริงที่มีช่องว่างเดียว หากคุณกำลังเริ่มเรียนรู้การเขียนโปรแกรม 1C เราขอแนะนำหลักสูตรฟรีของเรา (อย่าลืม



2024 wisemotors.ru. วิธีนี้ทำงานอย่างไร. เหล็ก. การทำเหมืองแร่ สกุลเงินดิจิทัล