ตัวอย่างโค้ดภาษาโปรแกรม 1C วนซ้ำโดยใช้นิพจน์บูลีน

หนังสือเล่มนี้เป็นคำอธิบายของภาษาในตัวของระบบ 1C:Enterprise และมีไว้สำหรับผู้เชี่ยวชาญที่กำหนดค่าระบบเพื่อแก้ไขปัญหาระบบบัญชีอัตโนมัติเฉพาะ

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

วัตถุประสงค์และคำอธิบายโดยย่อของภาษาในตัว

ภาษาในตัวของระบบ 1C: Enterprise มีวัตถุประสงค์เพื่ออธิบายอัลกอริธึม (ในขั้นตอนการพัฒนาการกำหนดค่า) สำหรับการทำงานของงานแอปพลิเคชัน

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

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

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

การสร้างหนังสือ

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

รูปแบบการอธิบายองค์ประกอบทางภาษา

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

แบบแผนและสัญลักษณ์ที่ใช้ในไดอะแกรมไวยากรณ์

สัญลักษณ์ต่อไปนี้ใช้ในไดอะแกรมไวยากรณ์:

แผนภาพไวยากรณ์สำหรับคำอธิบายองค์ประกอบภาษา

รูปแบบคำอธิบายองค์ประกอบภาษาที่ใช้ใน คู่มือเล่มนี้แสดงด้วยแผนภาพไวยากรณ์ด้านล่าง

องค์ประกอบภาษา

คำอธิบายสั้น ๆองค์ประกอบภาษาที่กำหนดทำหน้าที่อะไร

ไวยากรณ์:

องค์ประกอบภาษา(<Параметр1>, <Параметр2>, ...) [AddKeyWord]

ไวยากรณ์ภาษาอังกฤษ:(ในกรณีโครงสร้างภาษา)

คำหลัก(<Параметр1>, <Параметр2>, ...)

คำพ้องความหมายภาษาอังกฤษ:(กรณีระบุวิธีการ หน้าที่ และขั้นตอน)

ตัวเลือก:

<Параметр1>คำอธิบายสั้น ๆ<Параметра1>. <Параметр2>คำอธิบายสั้น ๆ<Параметра2>- [AddKeyWord] คำอธิบายสั้น ๆ ของ AddKeyWord

ส่งคืนค่า:

ประเภทและคำอธิบายโดยย่อของค่าที่ส่งคืน

คำอธิบาย:

คำอธิบายโดยละเอียดเกี่ยวกับสิ่งที่ LanguageElement นำไปใช้

ตัวอย่าง:

· คำอธิบายโดยย่อของตัวอย่าง // แหล่งที่มาตัวอย่าง

ถ้าคุณเขียนใน SI
เป็นง่อยอย่างน้อยสามครั้ง
พวกเขาพูดเกี่ยวกับเรื่องนี้:
"เขาเป็นโปรแกรมเมอร์ที่เจ๋ง!"
(เพลง Fidosh - "Suxxx คืออะไรและ Rulezzz คืออะไร")

คำนำ

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

ในฐานะโปรแกรมเมอร์ที่เลือก 1C ฉันคิดว่าความคิดเห็นนี้ไม่มีมูลความจริง แพลตฟอร์ม 1C นั้นยังห่างไกลจากอุดมคติ แต่ในความคิดของฉัน มันเป็นแพลตฟอร์มที่ดีที่สุดและที่สำคัญที่สุดคือผลิตภัณฑ์ในประเทศ!

และยิ่งกว่านั้น การตัดสินความสามารถของโปรแกรมเมอร์ด้วยภาษาที่เขาเขียนนั้นไม่เพียงพอ

ในบทความนี้ ฉันจะอธิบายข้อดีที่ฉันพบในโปรแกรม บทความนี้เกือบจะกลายเป็นโฆษณา ดังนั้นนี่คือข้อจำกัดความรับผิดชอบ:

  • ฉันไม่มีความสัมพันธ์โดยตรงกับบริษัท 1C
  • บทความนี้ไม่ได้จัดทำขึ้นและเขียนขึ้นตามความสมัครใจเท่านั้น
  • ในบางกรณีก็มีการแสดงความคิดเห็นส่วนตัวซึ่งอาจจะไม่ตรงกัน...;
  • บทความทั้งหมด ยกเว้นบทนำ เป็นของผู้เขียน ความบังเอิญใด ๆ ถือเป็นอุบัติเหตุ
  • เราจะพูดถึงแพลตฟอร์ม 1C Enterprise 8.2 (ปัจจุบันเป็นเวอร์ชัน 8.3 แต่ฉันยังไม่ได้ศึกษา - มีงานมากมายใน 1C 8.2) อย่างไรก็ตาม สิ่งที่กล่าวส่วนใหญ่ใช้ได้กับทั้งแพลตฟอร์ม 8.3 และเวอร์ชันก่อนหน้า และบางส่วนใช้กับเวอร์ชัน 7.7
มาเริ่มกันเลย

เรากำลังพูดถึงเรื่องอะไร?

แพลตฟอร์ม 1C Enterprise 8 คือ:
  • ใช้งานได้สองเวอร์ชัน - ไฟล์และเซิร์ฟเวอร์ (สามลิงก์) - แต่ละเวอร์ชันมีข้อดีและข้อเสียของตัวเอง
  • ระบบบัญชีอิสระที่ติดตั้งและกำหนดค่าได้ง่าย
  • ระบบนิเวศอันทรงพลังสำหรับโปรแกรมเมอร์ที่มีวัตถุและเครื่องมือที่จำเป็นทั้งหมด
  • อินเทอร์เฟซตามหลักสรีรศาสตร์ที่ดี
  • โซลูชันที่ค่อนข้างถูกสำหรับธุรกิจ
  • เครือข่ายแฟรนไชส์ ​​การฝึกอบรมเบื้องต้น
  • ฐานการพัฒนาและความรู้อันทรงพลังที่สะสมมานานหลายปี
  • บางครั้งก็เป็นแพลตฟอร์มที่มีปัญหาสำหรับผู้ดูแลระบบ
  • ไม่ใช่การดำเนินการอัลกอริธึมที่เร็วที่สุด (แม้ว่าจะไม่ใช่ช้าที่สุด) - นี่เป็นการแสดงเนื้อหาข้อมูล (ในกรณีที่เกิดข้อผิดพลาดหมายเลขบรรทัดและเนื้อหาจะถูกระบุ)
  • ไม่มีคลาสในภาษาการเขียนโปรแกรม (การสืบทอด การห่อหุ้ม ความหลากหลาย) ไม่มีฟังก์ชันที่ไม่เปิดเผยตัวตน และคุณสมบัติสมัยใหม่อื่นๆ แต่เพื่อแก้ไขปัญหาส่วนใหญ่ สิ่งนี้ไม่จำเป็น!
ในการจัดการบัญชี แพลตฟอร์มเดียวไม่เพียงพอ แพลตฟอร์มดังกล่าวเป็น "กลไก" ชนิดหนึ่งซึ่งเป็นตัวเชื่อมโยงระดับกลางระหว่างโปรแกรมและฐานข้อมูล โปรแกรมสำหรับ "เครื่องยนต์" นี้เรียกว่าการกำหนดค่า การกำหนดค่าอธิบายโครงสร้างของฐานข้อมูลในรูปแบบของออบเจ็กต์ ข้อความขั้นตอนที่เก็บไว้ในโมดูลแยกกัน (มีหลายโมดูล ทั้งแต่ละออบเจ็กต์และระบบโดยรวมก็มีโมดูลเหล่านั้น และยังมีโมดูลทั่วไปด้วย) แพลตฟอร์มนี้แสดงถึงระดับของนามธรรมซึ่งไม่จำเป็นต้องเข้าถึงฐานข้อมูลโดยตรง และยังช่วยให้คุณเข้าถึงฐานข้อมูลได้อีกด้วย ระบบปฏิบัติการและประเภทฐานข้อมูล

ฐานข้อมูลไฟล์และเซิร์ฟเวอร์

แพลตฟอร์มประกอบด้วยหลายส่วนและสามารถทำงานในเวอร์ชันไฟล์หรือเซิร์ฟเวอร์ได้

ในเวอร์ชันไฟล์ ฐานข้อมูลทั้งหมดจะรวมอยู่ในไฟล์เดียว (โดยมีนามสกุล “1cd”) - แพลตฟอร์มได้รับการติดตั้งบนคอมพิวเตอร์แต่ละเครื่องและอ่าน/เขียนไปยังฐานข้อมูลโดยตรง

ข้อดีของตัวเลือกไฟล์ - ราคาต่ำและความสะดวกในการปรับใช้

จุดด้อย - โครงสร้างไฟล์ "1cd" ถูกปิดไม่ใช่ ระบบแบบครบวงจรโต้ตอบกับฐานข้อมูล ส่งผลให้ใช้งานเมื่อใดได้ยาก จำนวนมากผู้ใช้ (ทดลองใช้กับผู้ใช้มากกว่า 20 ราย - ใช้งานได้) นอกจากนี้ ถ้าขนาดฐานข้อมูลประมาณ 15 GB (หรือมากกว่า) การอัปเดตแบบไดนามิกอาจล้มเหลว การแก้ไขความล้มเหลวดังกล่าวเป็นงานที่ยากและยูทิลิตี้สำหรับการซ่อมแซมฐานข้อมูลไม่ได้ซ่อมแซมอย่างมีประสิทธิภาพเสมอไปและบางครั้งก็ทำให้ฐานข้อมูลพิการด้วยซ้ำ

มีวิธีแก้ไข - ประการแรกคือตั้งค่ารายวัน การสำรองข้อมูลฐานข้อมูล นอกจากนี้ช่างฝีมือไม่เพียงเผยแพร่รูปแบบไฟล์ 1cd เท่านั้น แต่ยังได้พัฒนายูทิลิตี้สำหรับการทำงานกับไฟล์ดังกล่าวและวิธีการต่างๆ ในการแก้ไขปัญหาดังกล่าวอีกด้วย

ในเวอร์ชันเซิร์ฟเวอร์ แพลตฟอร์มสำหรับจัดเก็บฐานข้อมูลใช้เซิร์ฟเวอร์ SQL (โดยปกติคือ MS SQL แต่เริ่มต้นจาก 8.2.14 - คุณสามารถใช้แพลตฟอร์มอื่นได้ เช่น Firebird PostgreSQL, IBM DB2, Oracle Database) และแพลตฟอร์มนั้นเอง ใช้สถาปัตยกรรมสามชั้น:

โค้ดบางส่วนถูกดำเนินการบนไคลเอนต์ บางส่วนบนเซิร์ฟเวอร์ ในกรณีนี้ เฉพาะเซิร์ฟเวอร์เท่านั้นที่โต้ตอบกับฐานข้อมูล ในเวลาเดียวกัน เริ่มตั้งแต่เวอร์ชัน 8.2 นอกเหนือจากโหมดการทำงานมาตรฐานซึ่งเรียกว่าโหมด "ไคลเอ็นต์แบบหนา" แล้ว ยังมีโหมดการทำงานใหม่สองโหมดปรากฏขึ้น - "ไคลเอ็นต์แบบบาง" และ "เว็บไคลเอ็นต์" ก็ปรากฏตัวขึ้นเช่นกัน” แบบฟอร์มที่ได้รับการจัดการ», รูปร่างซึ่งสร้างขึ้นเป็นรูปต้นไม้แห่งธาตุที่เป็นนามธรรม การเขียนโปรแกรมสำหรับแบบฟอร์มที่ได้รับการจัดการและสถาปัตยกรรมสามระดับนั้นยากกว่า แต่สิ่งนี้ช่วยให้คุณสามารถถ่ายโอนภาระเกือบทั้งหมดไปยังเซิร์ฟเวอร์ (นั่นคือคุณสามารถซื้อเซิร์ฟเวอร์ที่ทรงพลังหนึ่งเครื่องและคอมพิวเตอร์สำนักงานที่ถูกที่สุดนับร้อยเครื่อง)

ข้อดีของแพลตฟอร์ม: “สามลิงก์” - การกระจายโหลด, การเปิดกว้างของฐานข้อมูล (อย่างเป็นทางการ บริษัท 1C ปฏิเสธความรับผิดชอบต่อความเสียหายของข้อมูลหาก ฐานข้อมูล SQLมีการเปลี่ยนแปลงยกเว้นโดยใช้แพลตฟอร์มหรือเซิร์ฟเวอร์ แต่จะหยุดคนไม่กี่คน) ไม่มีข้อจำกัด

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

ข้อได้เปรียบทั่วไปคือความอเนกประสงค์ของรหัสการกำหนดค่า: โดยมีข้อยกเว้นบางประการ การกำหนดค่าที่พัฒนาขึ้นสำหรับฐานข้อมูลไฟล์จะทำงานบนฐานข้อมูลเซิร์ฟเวอร์ และในทางกลับกัน ตัวอย่างของข้อยกเว้นคือการส่งค่าที่ไม่แน่นอนไปยังเซิร์ฟเวอร์หรือจากเซิร์ฟเวอร์ไปยังไคลเอนต์ (ในเวอร์ชันไฟล์จะไม่ทำให้เกิดข้อยกเว้น แต่ในเวอร์ชันไคลเอนต์ - เซิร์ฟเวอร์นั้นเป็นสิ่งต้องห้าม)

ข้อดีอีกอย่าง: แพลตฟอร์มได้รับการติดตั้งอย่างง่ายดาย บางอย่างเช่นนี้: "Next-Next-Next-Ok" ไม่จำเป็น การปรับแต่งอย่างละเอียดและการติดตั้งส่วนประกอบใดๆ

สำหรับเวอร์ชันเซิร์ฟเวอร์ มีการตั้งค่าเพิ่มเติมเล็กน้อย แต่ทุกอย่างเสร็จสิ้นในกล่องโต้ตอบการติดตั้ง และคุณไม่จำเป็นต้องป้อนอะไรเลย แยกไฟล์- การติดตั้ง SQL Server อาจจะค่อนข้างยาก เนื่องจาก... ในกรณีนี้ มีการตั้งค่าอื่นๆ อีกมากมาย (และเพื่อปรับแต่ง คุณต้องศึกษาคำแนะนำเพิ่มเติม) แต่สิ่งนี้ใช้ไม่ได้กับปัญหาของแพลตฟอร์ม 1C ยิ่งไปกว่านั้น หากคุณติดตั้ง เช่น เซิร์ฟเวอร์ MS SQL ที่มีการตั้งค่าเริ่มต้นทั้งหมด 1C ก็จะสามารถทำงานได้

มันเป็นมากกว่าการบัญชี

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

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

ระบบนิเวศสำหรับโปรแกรมเมอร์

ให้เราพิจารณาภาษาและแพลตฟอร์ม 1C จากมุมมองของนักพัฒนา:
แบบจำลองวัตถุฐานข้อมูลประการแรก เราไม่ได้ทำงานโดยตรงกับฐานข้อมูล มันไม่จำเป็น. เพื่อความสะดวกของเรา ข้อมูลทั้งหมดจะถูกนำเสนอในรูปแบบของวัตถุที่เชื่อมต่อระหว่างกัน (ไดเร็กทอรี เอกสาร การลงทะเบียนข้อมูล การลงทะเบียนการสะสม ... ) และแพลตฟอร์มจะ "ดึง" ข้อมูลนี้จากฐานข้อมูลโดยอัตโนมัติ
ตัวอย่างเช่น โดยมีเงื่อนไขว่าตัวแปร “องค์ประกอบระบบการตั้งชื่อ” มีการอ้างอิงถึงองค์ประกอบไดเรกทอรี “ระบบการตั้งชื่อ” ไดเรกทอรี “ระบบการตั้งชื่อ” มีแอตทริบิวต์ “ซัพพลายเออร์หลัก” พิมพ์ “Directory.Counterparties” และไดเรกทอรี “คู่สัญญา” มี แอตทริบิวต์ "ชื่อเต็ม" จากนั้นโค้ด:

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

อาจมีข้อผิดพลาดหลายประการ - ระบบสามารถจัดการได้ ข้อแม้เดียวคือระบบไม่ทราบวิธีการเพิ่มประสิทธิภาพการอ้างอิง ดังนั้นคุณควรพยายามย้ายสิ่งเหล่านั้นออกไปนอกลูปทุกประเภท

นอกจากออบเจ็กต์ที่อธิบายข้อมูลแล้ว ยังมีออบเจ็กต์ระบบจำนวนมาก - สำหรับฟังก์ชันที่หลากหลาย ฉันจะเน้นบางส่วน:

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

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

โครงสร้างและ การโต้ตอบ- การจัดเก็บค่าที่จับคู่“ KeyIValue” ในโครงสร้าง “คีย์” คือสตริงที่เป็นไปตามกฎการตั้งชื่อตัวแปรใน 1C (ไม่มีการเว้นวรรค ไม่ได้ขึ้นต้นด้วยตัวเลข ประกอบด้วยเฉพาะตัวอักษร ตัวเลข และขีดล่าง) ตาม - “คีย์” คือค่าใดๆ การค้นหาวัตถุที่เร็วที่สุดเป็นไปตามนั้น (เร็วกว่าในอาร์เรย์และตารางค่าที่จัดทำดัชนีไว้)

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

ต้นไม้แห่งคุณค่า- วัตถุที่แสดงข้อมูลแบบลำดับชั้น ประกอบด้วยคอลัมน์ ชุดของคอลัมน์จะเหมือนกันสำหรับทุกระเบียนในทุกระดับ การลบ/เพิ่มคอลัมน์ในแผนผังค่าทำได้ง่ายเหมือนกับในตารางค่า นอกจากนี้ยังมีเมธอด "SelectRow()" อีกด้วย

อินเทอร์เฟซวัตถุและวัตถุสำหรับการทำงานกับข้อมูลต่างๆ TextDocument, SpreadsheetDocument, เว็บเบราว์เซอร์, ReadFile, WriteFile, ReadZIPFile, WriteZIPFile, ReadXML, WriteXML, HTTPRequest และอ็อบเจ็กต์อื่นๆ อีกมากมาย และตัวปรับแต่งมีความช่วยเหลือในตัวสำหรับทุกสิ่ง วัตถุประสงค์ของวัตถุที่อยู่ในรายการนั้นชัดเจนจากชื่อ และทั้งหมดนี้พร้อมให้ใช้งานบนแพลตฟอร์มทันที

ควรสังเกตว่ามีวัตถุ "ข้อมูลเมตา" แยกต่างหากด้วยความช่วยเหลือซึ่งในภาษาการเขียนโปรแกรมคุณสามารถศึกษาโครงสร้างของข้อมูลตลอดจนแต่ละลิงก์หรือวัตถุสำหรับไดเร็กทอรีเอกสารแผนภูมิของ บัญชี ฯลฯ มีวิธีการ “Metadata()” - ให้คำอธิบายของหนังสืออ้างอิง/เอกสาร/ผังบัญชี/อื่นๆ ในฐานข้อมูล (มีรายละเอียดอะไรบ้าง, ส่วนที่เป็นตาราง, ความยาวของรหัส/หมายเลข ฯลฯ) มักจะสะดวกมาก

และเราควรแยกกล่าวถึงออบเจ็กต์ต่างๆ ด้วย: “Query”, “Query Constructor”, “Query Builder”, “Report Builder”, “Data Layout Schema” ตระกูลนี้ใช้ชุดของวัตถุสำหรับการทำงานกับภาษาคิวรี 1C ที่ทรงพลัง

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

  • การทำงานกับวัตถุการกำหนดค่า 1C แทนตาราง SQL
  • การทำงานกับลิงก์แทนฟิลด์ตัวระบุ SQL
  • รองรับการยกเลิกการอ้างอิง คล้ายกับวิธีการทำในโค้ด
  • การเลือกโดยการรวมในกลุ่ม (สำหรับไดเร็กทอรี)
  • ผลรวมตามลำดับชั้น
  • ตารางชั่วคราวและแบบสอบถามแบบซ้อน (SELECT * FROM (SELECT ...)));
  • ตัวสร้างแบบสอบถามเป็นข้อความค้นหาที่สะดวกตามวัตถุ ปรับให้เหมาะสมโดยอัตโนมัติเพื่อการอ่านอย่างรวดเร็ว ซึ่งสามารถแยกวิเคราะห์ข้อความค้นหา (แยกวิเคราะห์ข้อความค้นหาและสร้างโมเดลออบเจ็กต์จากนั้น)
  • เครื่องมือสร้างรายงานเป็นส่วนเสริมของกลไกการสืบค้น ซึ่งเพิ่มฟังก์ชันการจัดรูปแบบผลลัพธ์อัตโนมัติ รวมถึงการกำหนดค่าการสืบค้นที่ยืดหยุ่นในโหมด "องค์กร" (เช่น โดยผู้ใช้) เป็นผลให้รายงานสากลปรากฏในแพลตฟอร์ม 1C มาตรฐานซึ่งผู้ใช้สามารถกำหนดค่าข้อมูลใดและตามลำดับที่เขาต้องการดูสิ่งที่อยู่ในแถวและสิ่งที่อยู่ในคอลัมน์และรายงานเองก็สร้างตารางผลลัพธ์ ;
  • SKD (Data Composition System) คือรุ่นถัดไปที่รวมฟังก์ชันการทำงานไว้ด้วยกัน รายงานสากลและเสริมด้วยฟังก์ชันบางอย่างในการประมวลผลผลลัพธ์

ภาษาโปรแกรม
ในแง่ของไวยากรณ์ภาษา 1C คล้ายกับ "Russian Pascal" แต่แตกต่างจาก "Pascal" ในเรื่องความเข้มงวดน้อยกว่าและไม่มีโครงสร้างบางอย่าง:

  • ไม่จำเป็นต้องประกาศตัวแปร - คุณสามารถกำหนดค่าเริ่มต้นได้โดยตรงในข้อความโมดูล
  • ไม่มีการพิมพ์ตัวแปรที่เข้มงวด ระบบมีประเภทของค่า แต่ไม่มีกฎการพิมพ์ที่เข้มงวดสำหรับตัวแปร หลังจากโค้ดสองสามบรรทัด ตัวแปรที่เก็บลิงก์สามารถเก็บตัวเลขหรือสตริงได้แล้ว
  • คุณสามารถเพิ่มตัวแปรด้วยค่าได้ ประเภทต่างๆในกรณีนี้ ประเภทของผลลัพธ์จะเหมือนกับประเภทของตัวแปรแรก เช่น:
    เค = “25”+1; // k = “251” ไม่ใช่ 26
  • ตัวแปรที่มีค่าประเภทต่าง ๆ สามารถเปรียบเทียบได้เพื่อความเท่าเทียมกันหรือความไม่เท่าเทียมกัน (แต่ไม่มากหรือน้อยซึ่งจะทำให้เกิดข้อยกเว้น) - โดยธรรมชาติแล้วตัวแปรดังกล่าวจะไม่เท่ากัน
  • มีฟังก์ชันและขั้นตอนต่างๆ อนุญาตให้ใช้การเรียกซ้ำได้ (โดยมีข้อ จำกัด เกี่ยวกับความลึกของการเรียกซ้ำ)
  • เมื่อระบุฟังก์ชันหรือขั้นตอนโดยไม่มีพารามิเตอร์ ยังคงจำเป็นต้องระบุวงเล็บว่างที่ส่วนท้าย: เช่นนี้ ();
  • มีโมดูล: แต่ละไดเร็กทอรีและเอกสารมีหลายโมดูล นอกจากนี้ การลงทะเบียน รายงาน และการประมวลผล และแต่ละแบบฟอร์มมีโมดูล และยังสามารถสร้างโมดูลทั่วไปได้เป็นส่วนหนึ่งของการกำหนดค่า
  • ไม่มีคลาส มรดก การห่อหุ้ม ความหลากหลาย
  • ไม่สามารถส่งฟังก์ชันเป็นข้อมูลอ้างอิงได้ เนื่องจากไม่มีฟังก์ชันที่ไม่ระบุชื่อ
  • ไม่มีการวนซ้ำ (สำหรับ i:=5 downto 1 do) แต่จำเป็นจริงๆ เมื่อลบบันทึก เราทำการเข้าสู่วงจร "ลาก่อน" ที่ยาวขึ้นเล็กน้อย

เครื่องมือ

  • แพลตฟอร์ม 1C มีความสามารถในการอัปโหลดและดาวน์โหลดการกำหนดค่า เปรียบเทียบการกำหนดค่ากับการกำหนดค่าอื่น และดาวน์โหลดการเปลี่ยนแปลงบางส่วน
  • สามารถดาวน์โหลดข้อความโมดูลสำหรับพวกเขาได้ การประมวลผลเป็นชุดและโหลดกลับเข้าสู่การกำหนดค่า
  • หากรองรับการกำหนดค่า (รองรับการกำหนดค่าทั้งหมดตั้งแต่ 1C ในตอนแรก) คุณสามารถสร้างการเปรียบเทียบได้ตลอดเวลาและดูว่ามีอะไรเปลี่ยนแปลงไปบ้าง นักพัฒนาบุคคลที่สามหรือผู้เชี่ยวชาญในพื้นที่
  • นอกจากนี้ยังสามารถอัพโหลด/ดาวน์โหลดฐานข้อมูลทั้งหมด (พร้อมกับข้อมูล)
  • สำหรับงานรวมในคอนฟิกูเรชันเดียว จะใช้ที่เก็บคอนฟิกูเรชัน
  • นอกจากนี้ยังมีกฎหลายข้อสำหรับการเปลี่ยนแปลงการกำหนดค่ามาตรฐาน มีแม้กระทั่งเอกสารจาก 1C ที่อธิบายวิธีการและมาตรฐานสำหรับการเปลี่ยนแปลง การกำหนดค่าทั่วไป(และอื่น ๆ )

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

อินเทอร์เฟซ 1C องค์กร 8.2

บริษัท 1C ให้ความสนใจเป็นพิเศษกับอินเทอร์เฟซของโปรแกรม ก่อนอื่น นี่คือจานสี เธอสวยมาก! หน้าต่างโปรแกรมสามารถจดจำได้แม้จากระยะไกลและหลังจากทำงานมาหลายปี - ไม่ก่อให้เกิดความรู้สึกไม่เป็นมิตรในทางกลับกัน - ฉันต้องการให้โปรแกรมทั้งหมดเจ๋งเหมือนกัน
ในขณะเดียวกัน รูปแบบของแพลตฟอร์มก็เข้มงวดมาก โดยไม่มีความหรูหราหรือความหรูหราอื่นๆ ในขณะเดียวกันก็มีมาก คุณสมบัติที่มีประโยชน์ตัวอย่างเช่น การจดจำขนาดของหน้าต่าง (ขนาดจะถูกจดจำเฉพาะเมื่อผู้ใช้เปลี่ยนเท่านั้น และในขณะเดียวกัน คุณสามารถรีเซ็ตการตั้งค่าผู้ใช้เป็นขนาดและตำแหน่งเริ่มต้นได้ตลอดเวลาโดยการกด Alt+Shift+R ).
อินเทอร์เฟซเว็บไคลเอ็นต์ 8.2 ทำให้เกิดการร้องเรียนจำนวนมาก แต่ดูเหมือนว่าแพลตฟอร์ม 8.3 จะนำอินเทอร์เฟซที่ออกแบบใหม่มาด้วย - "Taxi"

ราคา อุปสงค์และอุปทาน แฟรนไชส์

ข้อได้เปรียบที่ "อร่อย" ที่สุดของแพลตฟอร์ม 1C คือราคา โดยเฉพาะอย่างยิ่งในตอนนี้ ในช่วงวิกฤต ท้ายที่สุดแล้ว 1C ก็เป็นผลิตภัณฑ์ในประเทศของเราโดยสมบูรณ์ และขายให้กับไม้ของเราด้วย โซลูชันดังกล่าวจากผู้ผลิตต่างประเทศจะต้องเสียเงินเป็นจำนวนมาก และใบอนุญาตสำหรับ 1C นั้นค่อนข้างสมเหตุสมผล

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

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

โดยรวมแล้วทุกอย่างดูมีกำไรมาก

“ อร่อย” ประการที่สอง แต่มีแมลงวันอยู่ในครีมบวกกับการมีอยู่ของการกำหนดค่าที่เป็นสากลจาก 1C เองและจากพันธมิตร

เกี่ยวกับความเก่งกาจ

แนวคิดของ "ความเก่งกาจ" ถูกกำหนดโดยครูโรงเรียนคนหนึ่งใน NVP โดยใช้ตัวอย่างของหน้ากากป้องกันแก๊สพิษ: มีหลายแบบสากลที่ป้องกันปัจจัยที่สร้างความเสียหายมากมาย แต่ระดับการป้องกันเป็นค่าเฉลี่ยหรือต่ำกว่าค่าเฉลี่ย และยังมีหน้ากากป้องกันแก๊สพิษแบบพิเศษด้วย ที่ป้องกันการกระแทกเพียงครั้งเดียว แต่มีการป้องกันในระดับสูง จนถึงขณะนี้ฉันยังไม่พบคำจำกัดความที่ชัดเจนกว่านี้
และการกำหนดค่าจาก 1C นั้นเป็นสากล ในทางปฏิบัติ ไม่มีงานใดที่สามารถใช้งานได้อย่างเต็มที่โดยไม่ต้องดัดแปลง อย่างไรก็ตาม 1C สามารถสร้างชุดเครื่องมือสากลที่ครอบคลุมความต้องการของภาคส่วนธุรกิจสมัยใหม่ส่วนใหญ่


ข้อได้เปรียบประการที่สาม (และยังมีแมลงวันอยู่ในครีม) คือเครือข่ายของผู้รับแฟรนไชส์และศูนย์ฝึกอบรมทั้งสำหรับผู้ใช้และสำหรับโปรแกรมเมอร์และผู้ดูแลระบบมือใหม่ เป็นความคิดที่ดี แต่มีคุณภาพปานกลางมากในการนำไปปฏิบัติ อย่างไรก็ตามความแพร่หลายและการตลาดเชิงรุกเป็นสาเหตุหนึ่งที่ทำให้ 1C ได้รับความนิยมอย่างกว้างขวางในประเทศของเรา (และนี่ก็เป็นสาเหตุของการปฏิเสธความอิจฉาและความเกลียดชังด้วย)

บินในครีม

เมื่ออธิบาย 1C ในทุกสีแล้ว คงไม่ยุติธรรมที่จะไม่พูดถึงข้อบกพร่องของมัน แต่มีอยู่:

การเผยแพร่ที่ไม่เสถียร- ทั้งในแพลตฟอร์มและในการกำหนดค่า มีข้อผิดพลาดและข้อบกพร่องจำนวนมาก และนี่คือการเปิดตัวอย่างเป็นทางการ ก่อนที่คุณจะปล่อย รุ่นอย่างเป็นทางการ"เวอร์ชันการประเมินผล" กำลังจะเปิดตัว นอกจากนี้ยังมีข้อเสนอแนะในการส่งคำอธิบายข้อบกพร่องเพื่อให้ได้รับการยอมรับสำหรับการแก้ไข อย่างไรก็ตามเวอร์ชันทดลองอาจไม่ได้รับความนิยมมากนักหรือบริษัท 1C เองก็ไม่มีเวลาประมวลผลจดหมายทั้งหมดภายในวันที่วางจำหน่าย แต่เป็นข้อเท็จจริง ทุกครั้งที่คุณอัปเดตแพลตฟอร์มหรือการกำหนดค่า คุณจะพบกับ "ความประหลาดใจ" ที่ไม่คาดคิดได้มากที่สุด 1C ได้รับการเรียกร้องให้ทดสอบการพัฒนาอย่างละเอียดถี่ถ้วนมากขึ้นหลายครั้งแล้ว

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

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

เมื่อให้บริการ แฟรนไชส์ไม่ต้องจ่ายเงินใดๆ ให้กับบริษัท 1C (ยกเว้นค่าธรรมเนียมสมาชิก) แต่ต้องจ่ายเงินเดือนของพนักงาน รัฐยังต้องใช้เงินกับภาษี - กองทุนบำเหน็จบำนาญและภาษีเงินได้

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

ฉันทราบว่านี่ไม่ใช่ความผิดของนักธุรกิจชาวฝรั่งเศสมากนักเหมือนของบริษัท 1C เธอไม่สนใจเรื่องการสนับสนุนเลย (ฉันไม่ได้พูดถึงโรงเรียนในตอนนี้ แต่เกี่ยวกับความจริงที่ว่าการให้การสนับสนุนควรเป็นประโยชน์ต่อทั้งบริษัทแฟรนไชส์และ 1C)

การสนับสนุนด้านเทคนิคตามความเข้าใจของบริษัท 1C การสนับสนุนทางเทคนิคคือการจัดเตรียมการเข้าถึงส่วน "อัปเดต" สำหรับแพลตฟอร์มและการกำหนดค่า รวมถึงส่วนข้อมูลที่มีคำอธิบายของกลไกและคุณสมบัติบางอย่างของการทำงานของ 1C นอกจากนี้เมื่อคุณสมัครสมาชิกคุณจะได้รับแผ่นดิสก์ที่มีเนื้อหาที่ระบุ นอกจากนี้ยังมีฟอรัม (น้อยมากเมื่อเทียบกับฟอรัมยอดนิยม) ยังมีโอกาสส่งครับ อีเมลถึงบริษัท 1C - แต่ไม่ได้หวังด้วยซ้ำว่าพวกเขาจะตอบ (หรือหุ่นยนต์จะตอบว่า "จดหมายถูกส่งไปยังแผนกพัฒนาแล้ว" ในแง่ของการพัฒนา Yandex.Search และความช่วยเหลือที่สร้างไว้ในตัวปรับแต่งนั้นมีมากกว่ามาก สนับสนุน.

บทส่งท้าย

ฉันเปลี่ยนมาใช้ 1C ในปี 2551 และก่อนหน้านั้นฉันทำงานในบริษัทที่พัฒนาโปรแกรมการบัญชีของตัวเอง (Delphi 5 และ Delphi 7) ก่อนอื่น ฉันได้ทำความคุ้นเคยกับแพลตฟอร์ม 1C Enterprise 7.7 และรู้สึกประทับใจกับความง่ายในการพัฒนารายงาน ในเวลาเดียวกัน เป็นที่ชัดเจนว่ารายงานถูกสร้างขึ้นนานกว่ากลไกที่คล้ายกันใน Delphi มาก แต่นักบัญชีไม่ได้กังวลเกี่ยวกับเรื่องนี้เป็นพิเศษ การรอสักครู่แทนที่จะรอสักครู่ก็ไม่ใช่ปัญหา ในทางตรงกันข้าม คุณสามารถทาเล็บที่นั่น ดื่มชา หรือพูดคุยข่าวสารล่าสุดโดยไม่ต้องหยุดงาน เพราะนักบัญชีส่วนใหญ่ในปัจจุบันนี้เป็นผู้หญิง
อย่างไรก็ตาม อินเทอร์เฟซ 7.7 นั้นมีจำกัดมากและชุดของวัตถุก็แย่มาก ฉันกำลังมองหาทางเลือกอื่น ฉันคุ้นเคยกับส่วนประกอบภายนอก แต่ไม่ได้ใช้งานจริงเพราะ... เจ้านายตัดสินใจว่าถึงเวลาที่เราจะเปลี่ยนไปใช้ 8.1 (ใช่แล้ว 8.2 ยังไม่มี) และในแพลตฟอร์มนี้ในฐานะโปรแกรมเมอร์ ฉันพบทุกสิ่งที่ฉันขาดหายไปก่อนหน้านี้
ปัจจุบันฉันมีอำนาจในหมู่เพื่อนร่วมงานตลอดจนลูกค้าที่มาหาฉันจากแฟรนไชส์ พวกเขาอาจจะไม่ติดต่อกับชาวฝรั่งเศสอีกต่อไป


โดยทั่วไปแล้วฉันค่อนข้างพอใจกับการทำงานในแพลตฟอร์ม 1C Enterprise 8 เหมาะสำหรับการแก้ปัญหาการบัญชีและฐานข้อมูลส่วนใหญ่

แท็ก: เพิ่มแท็ก

ภาษาการเขียนโปรแกรมในตัว 1C:Enterprise- ภาษาการเขียนโปรแกรมที่ใช้ในตระกูลโปรแกรม 1C:Enterprise ภาษานี้เป็นภาษาเฉพาะโดเมนระดับสูงที่คอมไพล์ไว้ล่วงหน้า

สภาพแวดล้อมการดำเนินการภาษาคือ แพลตฟอร์มซอฟต์แวร์"1C: องค์กร" สภาพแวดล้อมการพัฒนาด้วยภาพ (“Configurator”) เป็นส่วนสำคัญของแพ็คเกจซอฟต์แวร์ 1C:Enterprise

ภาษาถิ่นสำหรับแพลตฟอร์ม 1C 7 เวอร์ชัน (7.0, 7.5, 7.7) เข้ากันได้จากล่างขึ้นบนโดยมีข้อยกเว้นเล็กน้อย ภาษาสำหรับแพลตฟอร์ม 1C:7x และ 1C:8x เข้ากันได้กับตัวดำเนินการพื้นฐาน แต่มีความแตกต่างอย่างมากในการทำงานกับออบเจ็กต์แอปพลิเคชัน ซึ่งส่งผลให้การถ่ายโอนรหัสจาก 1C:7x เป็น 1C:8x ไม่สมเหตุสมผล

ภาษา 1C:8 ในตัวมีความคล้ายคลึงกันมากที่สุดในด้านไวยากรณ์กับภาษา Visual Basic

แพลตฟอร์มดังกล่าวมอบชุดคลาสพื้นฐานที่มุ่งเน้นโซลูชันแบบคงที่ งานทั่วไปพื้นที่ใช้งาน:

  • คงที่,
  • ไดเรกทอรี
  • เอกสาร,
  • บันทึกเอกสาร
  • โอนย้าย,
  • รายงาน,
  • กำลังประมวลผล
  • ผังบัญชี ฯลฯ

ขึ้นอยู่กับคลาสพื้นฐาน คุณสามารถสร้างคลาสที่สร้างขึ้นจำนวนเท่าใดก็ได้โดยใช้เครื่องมือการกำหนดค่าแบบวิชวล (ไม่มีความสามารถในการกำหนดคลาสใหม่โดยทางโปรแกรม) อนุญาตให้มีการสืบทอดคลาสที่ชัดเจนเพียงระดับเดียวเท่านั้น โดยทั่วไปแล้ว ออบเจ็กต์ของคลาสที่ได้รับจะเป็นตัวแทนของเร็กคอร์ด (หรือชุดของเร็กคอร์ดบางชุด) ในฐานข้อมูล คลาสดังกล่าวก่อตัวเป็น "แผนผังข้อมูลเมตา" ในแง่ของภาษาการเขียนโปรแกรม 1C ในตัวคลาสดังกล่าวเรียกว่าวัตถุเมตาดาต้า

ประเภทหลักของออบเจ็กต์เมทาดาทา ได้แก่: ไดเร็กทอรี, เอกสาร, รายงาน, การประมวลผล, แผนประเภทลักษณะ, ผังบัญชี, แผนประเภทการคำนวณ, การลงทะเบียนข้อมูล, การลงทะเบียนการสะสม, การลงทะเบียนการคำนวณ, กระบวนการทางธุรกิจ, งาน

รองรับไวยากรณ์คำสั่งภาษารัสเซียและอังกฤษ

โปรเจ็กต์ในภาษา 1C:Enterprise ในตัวเรียกว่าการกำหนดค่า การจัดจำหน่าย (การขาย) และการใช้งานการกำหนดค่าดังกล่าวเป็นกิจกรรมเชิงพาณิชย์หลักของบริษัทพันธมิตร 1C

ชื่อที่ใช้ในการทำงานของภาษา - "1Sik" ("odynesik") - หายไปอย่างรวดเร็วจากแหล่งข้อมูลอย่างเป็นทางการ ตอนนี้ เมื่อกล่าวถึงภาษานี้ในเอกสารที่เป็นลายลักษณ์อักษร คุณต้องเขียน ภาษาโปรแกรม 1C- ปัจจุบันภาษานี้ไม่มีชื่อที่สามารถออกเสียงด้วยวาจาได้ อย่างไรก็ตาม ภาษานี้มักเรียกว่า “ภาษาในตัว” ในบริบทของการสนทนาของ 1C:Enterprise

ภาษาเชิงวัตถุ

มีส่วนประกอบเพิ่มเติมหลายประการที่ขยายคลาสหลัก โดยสามารถเพิ่มและแก้ไขได้อย่างอิสระ ไม่แนะนำให้ใช้โดยบริษัทผู้พัฒนา ซึ่งหมายความว่า 1C และผู้รับแฟรนไชส์ปฏิเสธสิ่งใดเลย การสนับสนุนด้านเทคนิคการกำหนดค่าโดยใช้ส่วนประกอบดังกล่าว

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

ภาษาแพลตฟอร์ม 2C ได้รับการออกแบบโดยมีเป้าหมายเพื่อความต่อเนื่องสูงสุดกับการพัฒนาที่มีอยู่สำหรับ 1C และเป็นส่วนขยายของภาษา 1C พื้นฐาน ด้วยการเขียนคลาสพื้นฐานที่เหมาะสม ภาษา 2C จึงสามารถเข้าใกล้กับทั้ง 1C 7.7 และ 1C 8.0 ได้มากขึ้น แม้ว่า 2C:Platform จะไม่สามารถจัดเตรียมการกำหนดค่าอัตโนมัติ 100% จาก 1C:Enterprise เวอร์ชันหนึ่งหรือเวอร์ชันอื่นได้

1C.Net:องค์กร

เพื่ออำนวยความสะดวกในการใช้งาน 1C.Net:Enterprise จึงมีการจัดเตรียมตัวอย่างมากมาย ซึ่งครอบคลุมเกือบทั้งหมดของเฟรมเวิร์ก .NET รวมถึงตัวอย่างของการรวมการควบคุม .NET ดั้งเดิมเข้ากับรูปแบบ 1C

ตัวอย่างโปรแกรม

ตัวอย่างคลาสสิกของการส่งออกสตริงข้อความในภาษาในตัว 1C:Enterprise 7.7:

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

ตัวอย่างของฟังก์ชันที่คืนค่ากำลังสองของตัวเลข:

ฟังก์ชั่น SquareNumber (ตัวเลข)

กลับจำนวน * innumber ;

EndFunction

ดูเพิ่มเติม

  • RSL เป็นภาษาโปรแกรมที่สร้างไว้ใน RS-Balance

หมายเหตุ

ลิงค์


มูลนิธิวิกิมีเดีย

2010.

หนังสือ

  • 1C: องค์กร 7.7 บทเรียนการเขียนโปรแกรม คู่มือการใช้งาน 45, Postovalov Sergey Nikolaevich, Postovalova Anastasia Yuryevna, อธิบายการบริหารระบบ 1C:Enterprise 7.7, ข้อมูลเบื้องต้นเกี่ยวกับการบัญชี, ภาษาในตัวและวัตถุพื้นฐานหลักของระบบ ลักษณะเฉพาะของการทำงานกับวัตถุนั้นได้รับการพิจารณา... หมวดหมู่:ซอฟต์แวร์ประยุกต์ ซีรี่ส์: คู่มือการใช้งานด้วยตนเอง สำนักพิมพ์: BHV-Petersburg, ผู้ผลิต:

ในบทความนี้เราจะพิจารณาการสร้างภาษาโปรแกรม 1C เช่น รอบ.

มีสามวิธีในการจัดระเบียบลูป

  1. วนซ้ำโดยใช้นิพจน์เชิงตรรกะ (ดำเนินการตราบเท่าที่นิพจน์เชิงตรรกะเป็นจริง)
  2. วนซ้ำผ่านคอลเลกชัน

ลองดูแต่ละวิธีเหล่านี้

วนซ้ำโดยใช้ตัวแปรตัวนับวนซ้ำ

ไวยากรณ์:

สำหรับ< Переменная> = < НачальноеЗначение>โดย< КонечноеЗначение>วงจรEndCycle;

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

ในการวนซ้ำแต่ละครั้ง ค่าตัวนับจะเพิ่มขึ้นทีละหนึ่ง นี่คือตัวอย่างพื้นฐานที่สุดของการวนซ้ำ:

สำหรับตัวนับ = 0 ถึง 1,000 รอบการสิ้นสุดรอบ;

ต่างจากภาษาโปรแกรมอื่น ๆ มากมาย 1C ไม่มีความสามารถในการระบุขั้นตอนในรอบ หากจำเป็น สามารถทำได้โดยเพิ่มค่าที่ต้องการให้กับตัวนับภายในลูป

สำหรับตัวนับ = 0 ถึง 1,000 รอบ ตัวนับ = ตัวนับ + 10 ;

เอ็นด์ไซเคิล ;

ไวยากรณ์:

วนซ้ำโดยใช้นิพจน์บูลีน< ЛогическоеВыражение>วงจรEndCycle;

ปฏิเสธ = เท็จ ;

GeneratorRandom = NewRandomNumberGenerator(1) ;

วนซ้ำผ่านคอลเลกชัน

จนกระทั่งรอบความล้มเหลว RandomNumber = GeneratorRank สุ่มตัวเลข(0, 10);

ถ้า RandomNumber > 5 ความล้มเหลว = True ; สิ้นสุดถ้า ;:

เอ็นด์ไซเคิล ;< ЭлементКоллекции>นั่นคือการวนซ้ำจะทำงานจนกว่าจะสร้างตัวเลขสุ่มที่มากกว่าห้า< Коллекция>วงจรEndCycle;

ในภาษาการเขียนโปรแกรม 1C มีสิ่งดังกล่าวเป็นคอลเลกชัน เป็นชุดขององค์ประกอบที่อยู่ภายในวัตถุ <ЭлементКоллекции> เราสามารถรวมออบเจ็กต์ต่างๆ ไว้เป็นคอลเลกชันได้ เช่น อาร์เรย์ ตารางค่า การเลือกจากผลลัพธ์แบบสอบถาม ข้อมูลเมตา ฯลฯ แนวคิดนี้ค่อนข้างธรรมดา แต่จะปรากฏในทุกขั้นตอนในตัวช่วยไวยากรณ์ บ่อยครั้งที่เราเผชิญกับงานเมื่อเราต้องวนซ้ำองค์ประกอบทั้งหมดของคอลเลกชันตามลำดับเพื่อดำเนินการบางอย่างกับองค์ประกอบเหล่านั้น นั่นเป็นเหตุผลว่าทำไมมันถึงมีอยู่
โครงสร้างทางวากยสัมพันธ์ สำหรับทุกคนจาก

ที่นี่

เป็นตัวแปรที่องค์ประกอบจากคอลเลกชันถูกวางตามลำดับ และภายในลูปก็จะถูกประมวลผลตามนั้น ตามตัวอย่าง ฉันจะให้คุณวนซ้ำในแถวของตารางค่า ให้มันเรียกว่า

ตารางผลิตภัณฑ์

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

สำหรับแต่ละแถวของตารางจากชื่อวงจรผลิตภัณฑ์ตาราง = แถวของตาราง ชื่อ; ราคา = แถวตาราง ราคา; ข้อความ = MessageToUser ใหม่;

ข้อความ. ข้อความ =

"ชื่อผลิตภัณฑ์:" ในความเป็นจริงสิ่งเดียวกันนี้สามารถทำได้โดยใช้ตัวเลือกแรกนั่นคือในการวนซ้ำโดยใช้ตัวนับ:.

จำนวนแถว = TableProducts ปริมาณ() ; สำหรับตัวนับ = 0 ตามจำนวนแถว - 1 รอบตาราง แถว = TableProducts[ ตัวนับ] ; ชื่อ = แถวของตาราง ชื่อ; ราคา = แถวตาราง ราคา; ข้อความ = MessageToUser ใหม่;ข้อความ. ข้อความ = + ชื่อ + "; ราคา: " + ราคา;- จากนั้นการควบคุมจะถูกถ่ายโอนไปยังจุดเริ่มต้นของลูป เรามาอธิบายด้วยตัวอย่างเล็กๆ น้อยๆ:

สำหรับตัวนับ = 0 ถึง 100 รอบ ถ้าตัวนับ = 0 ให้ดำเนินการต่อ;

สิ้นสุดถ้า ; หากตัวนับ = 4 ให้ยกเลิก ;สิ้นสุดถ้า ;

ผลลัพธ์ = 1 / ตัวนับ;

ข้อความ = MessageToUser ใหม่;

ข้อความ. ข้อความ = สตริง (ผลลัพธ์) ; ข้อความ. รายงาน() ; เอ็นด์ไซเคิล ;เราข้ามศูนย์เพราะว่า คุณไม่สามารถหารด้วยศูนย์ได้ และการวนซ้ำจะถูกดำเนินการทั้งหมดห้าครั้งสำหรับค่าของตัวแปร เคาน์เตอร์จาก 0 ถึง 4

สำหรับทุกคนที่ต้องการเข้าสู่การเขียนโปรแกรม เราต้องการอธิบายสิ่งง่ายๆ ที่ไม่ได้กล่าวถึงในหนังสือเรียนการเขียนโปรแกรมทั้งหมด แต่ผู้ที่ต้องการเชี่ยวชาญการเขียนโปรแกรมในภาษา 1C ตั้งแต่เริ่มต้นควรรู้เรื่องนี้

1. ภาษาการเขียนโปรแกรมคือภาษาอย่างแรกเลย

ก่อนที่คุณจะเริ่มเรียนภาษา ควรเตรียมใจให้พร้อมสำหรับความจริงที่ว่ากระบวนการนี้ไม่รวดเร็ว เพื่อให้คุณสามารถจินตนาการได้อย่างชัดเจนว่าการเรียนรู้ภาษาการเขียนโปรแกรมคืออะไร - เกือบจะเหมือนกับการเรียนรู้ภาษาต่างประเทศเลย เราเรียนทุกอย่างที่โรงเรียนภาษาต่างประเทศ และทุกคนเข้าใจดีว่าการรู้ภาษานั้นไม่เพียงพอเพียงเรียนรู้การแปลคำศัพท์จากพจนานุกรมจากภาษาต่างประเทศเป็นภาษาแม่ของคุณ ตัวอย่างเช่น บุคคลที่สามารถพูดวลี "ฉันรู้ภาษาอังกฤษ" ได้: อ่านข้อความเป็นภาษาอังกฤษ แปล เขียนประโยคโดยไม่มีข้อผิดพลาด แสดงออกด้วยวาจา การแปล, ลิฟต์สังคมง่าย ฯลฯ ไม่มีความลับใดที่ผลิตภัณฑ์ซอฟต์แวร์ 1C Enterprise ได้รับความนิยมอย่างมากในพื้นที่หลังโซเวียต จากสิบบริษัท มีแปดบริษัทใช้โปรแกรม 1C เพื่อบันทึกกิจกรรมทางธุรกิจของตน ดังนั้นพวกเขาต้องการผู้ดูแลระบบหรือโปรแกรมเมอร์ 1C ที่จะดูแลและแก้ไขโปรแกรม โดยธรรมชาติแล้วตลาดดังกล่าวต้องการผู้เชี่ยวชาญ 1C บางครั้งบริษัทต่างๆ ก็พร้อมที่จะจ้างพนักงานที่มีคุณสมบัติไม่สูงมากนักซึ่งมีทักษะการเขียนโปรแกรมเพื่อให้ได้เงินเดือนที่เหมาะสมโดยมีเงื่อนไขของการพัฒนาตนเอง และแม้ว่าคุณจะไม่ต้องการทำงานให้กับบริษัทเชิงพาณิชย์หรือแฟรนไชส์ ​​โปรแกรมเมอร์ที่มีคุณสมบัติเหมาะสมก็สามารถหางานในการแลกเปลี่ยนอิสระหรือดำเนินโครงการที่กำหนดเองได้ โดยทั่วไปแล้วโปรแกรมเมอร์ 1C จะไม่ถูกทิ้งไว้โดยไม่มีงาน

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