คอมพิวเตอร์ Windows อินเทอร์เน็ต

โครงสร้างของโมดูลโปรแกรมใน 1c ประกอบด้วย โมดูลทั่วไป สามารถป้อนข้อมูลโครงการเข้าสู่ระบบได้หลายวิธี

โปรแกรมใด ๆ ประกอบด้วย รหัสโปรแกรมนั่นคือจากลำดับของการกระทำที่เขียนในภาษาใด ๆ ที่ต้องทำ

อย่างไรก็ตาม โปรแกรมนี้จะต้องเขียนที่ไหนสักแห่ง นั่นคือ ที่ไหนสักแห่งที่จะเป็น ในกรณีส่วนใหญ่ รหัสโปรแกรมจะถูกเขียนในไฟล์ข้อความธรรมดา ข้อแตกต่างเพียงอย่างเดียวคือส่วนขยายในนั้นไม่ใช่ .txt แต่เป็น .cpp หรือ .php

โปรแกรม 1C เขียนที่ไหน?

โมดูล 1C คืออะไร?

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

การกำหนดค่าประกอบด้วยออบเจ็กต์ 1C ตามที่เราได้กล่าวไปแล้วในบทเรียนก่อนหน้านี้ แต่ละอ็อบเจ็กต์ 1C มีอ็อบเจ็กต์ที่ซ้อนกัน ตัวอย่างเช่น ไดเร็กทอรีมีหลายรูปแบบ

แต่ละอ็อบเจ็กต์ 1C รวมถึงบางอันที่ซ้อนกัน มีโมดูลของตัวเอง - acute ไฟล์ข้อความซึ่งมีรหัสโปรแกรม

นอกจากนี้ยังมีโมดูลที่ไม่ขึ้นกับอ็อบเจ็กต์ซึ่งสามารถเขียนโค้ดโปรแกรมที่ไม่ขึ้นกับอ็อบเจ็กต์ได้

ดังนั้นจึงไม่มีโปรแกรม "เดียว" ใน 1C มีชุดโมดูลสำหรับเขียนโค้ดโปรแกรมสำหรับอ็อบเจ็กต์การกำหนดค่า 1C แต่ละอ็อบเจ็กต์

โมดูล 1C ใช้งานอย่างไร?

โปรแกรมทั้งหมดสามารถแบ่งคร่าวๆ ได้เป็นสองประเภท:

  • วิธีการวัตถุ
  • ปฏิกิริยาต่อเหตุการณ์

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

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

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

เหตุการณ์ที่กำหนดเอง - ผู้ใช้กดปุ่ม ในการตอบสนอง โค้ดบางส่วนจะถูกดำเนินการ โดยตอบสนองต่อการกระทำของผู้ใช้

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

ลำดับการทำงานของโมดูล 1C

ในหลายภาษามีสิ่งเช่น "จุดเข้าใช้งาน" นี่เป็นบรรทัดแรกหรือฟังก์ชันที่จะดำเนินการเมื่อโปรแกรมเริ่มทำงาน

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

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

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

การทำงานกับโมดูล 1C

ผลิตในเครื่องมือกำหนดค่า โมดูลสามารถเปิดได้โดยใช้หน้าต่างการกำหนดค่า

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

ลองใช้การกำหนดค่าเก่าของเราที่ฉันใช้ในบทความก่อนหน้านี้เป็นตัวอย่าง เรามีเอกสาร 2 ฉบับ ได้แก่ การมาถึงของสินค้าที่คลังสินค้าและการนำสินค้าออกจากคลังสินค้า เอกสารทั้งสองมีขั้นตอนที่คำนวณจำนวนเงินในแถวของส่วนตาราง

เอกสารแต่ละฉบับมีรหัสเดียวกันสำหรับการคำนวณจำนวนเงิน

ขั้นตอน วัสดุPriceOnChange (รายการ)
TabularSectionRow = Items.Materials.CurrentData;
TabularSectionRow.Sum = TabularSectionRow.Quantity * TabularSectionRow.ราคา;
สิ้นสุดขั้นตอน

วันนี้เราจะโอนไปยังโมดูลทั่วไปและจากเอกสารเราจะเรียกมันว่า

เราสร้างโมดูลทั่วไปสำหรับการคำนวณจำนวนเงิน

เริ่มกันเลย ขั้นแรกคุณต้องสร้างโมดูลทั่วไป ในการดำเนินการนี้ ไปที่ตัวกำหนดค่า ค้นหารายการ โมดูลทั่วไป คลิก คลิกขวาและเพิ่มใหม่เขียนชื่อ WorkSDokumentami เราป้อนรหัสต่อไปนี้ลงไป

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

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

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

& OnClient



สิ้นสุดขั้นตอน

และขั้นตอนนี้เริ่มทำงานเมื่อราคาเปลี่ยนแปลงในส่วนตารางของเอกสารการมาถึงของสินค้าและคำนวณจำนวนเงิน

& OnClient

TabularSectionRow = Items.Materials.CurrentData;
TabularSectionRow.Sum = TabularSectionRow.Quantity * TabularSectionRow.ราคา;
สิ้นสุดขั้นตอน

เราแทนที่ด้วยสิ่งนี้

& OnClient
ขั้นตอน วัสดุ ปริมาณในการเปลี่ยนแปลง (รายการ)
TabularSectionRow = Items.Materials.CurrentData;

สิ้นสุดขั้นตอน
& OnClient
ขั้นตอน วัสดุPriceOnChange (รายการ)
TabularSectionRow = Items.Materials.CurrentData;
WorkWithDocuments.CalculateSum (TabularSectionRow);
สิ้นสุดขั้นตอน

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

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

พิมพ์ (Ctrl + P)

อ็อบเจ็กต์ที่อยู่ในโครงสร้างแผนผังคอนฟิกูเรชันของโมดูลทั่วไปมีจุดประสงค์เพื่อให้มีข้อความของฟังก์ชันและโพรซีเดอร์ที่สามารถเรียกได้จากโมดูลการกำหนดค่าอื่นๆ
ความสนใจ! โมดูลทั่วไปสามารถมีได้เฉพาะคำจำกัดความของขั้นตอนและฟังก์ชัน.
ขั้นตอนและฟังก์ชันทั่วไปของโมดูลซึ่งระบุส่วนหัว คำสำคัญการส่งออกเป็นส่วนหนึ่งของบริบทสากล คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับการเขียนขั้นตอนในโมดูลทั่วไปได้ในส่วน "รูปแบบของซอร์สโค้ดของโมดูลโปรแกรม" และ "ตัวดำเนินการ" ในวิธีใช้สำหรับภาษาที่ฝังไว้
ในการแก้ไขโมดูลทั่วไป ในแผงคุณสมบัติของอ็อบเจ็กต์ของประเภท Common Modules ของหน้าต่าง Configuration ในคุณสมบัติ Module ให้คลิกที่ลิงก์ เปิด ข้อความของโมดูลทั่วไปจะออกให้แก้ไขในโปรแกรมแก้ไขข้อความของระบบ 1C: Enterprise ในโหมดการแก้ไขข้อความของโมดูลโปรแกรม
โมดูลทั่วไปซึ่งเป็นส่วนหนึ่งของการกำหนดค่าจะถูกเก็บไว้เป็นส่วนหนึ่งของการกำหนดค่าเท่านั้น
คุณสมบัติ Global กำหนดว่าวิธีการส่งออกของโมดูลที่ใช้ร่วมกันเป็นส่วนหนึ่งของบริบทส่วนกลางหรือไม่
ถ้าคุณสมบัติ Global ถูกตั้งค่าเป็น True วิธีการส่งออกของโมดูลทั่วไปจะพร้อมใช้งานเป็นวิธีการของบริบทส่วนกลาง
หากตั้งค่าคุณสมบัติส่วนกลางเป็นเท็จ ระบบจะสร้างคุณสมบัติในบริบทส่วนกลางด้วยชื่อที่ตรงกับชื่อของโมดูลทั่วไปในข้อมูลเมตา คุณสมบัตินี้เป็นแบบอ่านอย่างเดียว ค่าของคุณสมบัตินี้คืออ็อบเจ็กต์ CommonModule วิธีการส่งออกของโมดูลทั่วไปนี้มีให้ใช้งานผ่านวัตถุนี้ ดังนั้น การเรียกเมธอดของโมดูลทั่วไปที่ไม่ใช่แบบโกลบอลจึงดูเหมือน XXXXX.YYYYY โดยที่ XXXXX เป็นชื่อของคุณสมบัติที่สอดคล้องกับบริบทของโมดูลทั่วไป และ YYYYY คือชื่อของเมธอดที่เอ็กซ์พอร์ตของโมดูลทั่วไป
ตัวอย่าง:

ทำงานกับอุปกรณ์การซื้อขาย ConnectBarcode Scanner ();

บริบทที่แตกต่างกันและโมดูลทั่วไป

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



# ถ้า Thin Client แล้ว
// แสดงคำเตือน
แสดงการแจ้งเตือนผู้ใช้(“บนไคลเอนต์”);
#EndIf
สิ้นสุดขั้นตอน
จากนั้น ทางฝั่งเซิร์ฟเวอร์ รหัสจะมีลักษณะดังนี้:
ขั้นตอน CommonModule () วิธีการส่งออก
// รหัสสำคัญต่างๆ อยู่ที่นี่
สิ้นสุดขั้นตอน
ในฝั่งไคลเอ็นต์แบบบาง โค้ดจะมีลักษณะดังนี้:
ขั้นตอนCommonModuleMethod () ส่งออก
// รหัสสำคัญต่างๆ อยู่ที่นี่
// แสดงคำเตือน
ShowUserNotification (“บนไคลเอนต์”);
สิ้นสุดขั้นตอน

มีหลายวิธีในการถ่ายโอนการควบคุมจากไคลเอนต์ไปยังเซิร์ฟเวอร์:
●เรียกวิธีการของโมดูลทั่วไปของเซิร์ฟเวอร์
● ในแบบฟอร์มหรือโมดูลคำสั่ง ให้เรียกวิธีการที่นำหน้าด้วยคำสั่งการคอมไพล์ & AtServer & AtServerWithoutContext

ในเวลาเดียวกัน เป็นไปไม่ได้ที่จะเรียกเมธอดของโมดูลทั่วไปของไคลเอ็นต์ (ซึ่งไม่ได้ตั้งค่าคุณสมบัติของเซิร์ฟเวอร์) และเมธอดของไคลเอ็นต์ของโมดูลฟอร์มหรือโมดูลคำสั่งจากโพรซีเดอร์เซิร์ฟเวอร์ การควบคุมจะกลับสู่ไคลเอ็นต์หลังจากการเรียกภายนอกสุดไปยังเมธอดเซิร์ฟเวอร์เสร็จสิ้น
ข้อยกเว้นคือวิธีการของโมดูลแบบฟอร์มและโมดูลคำสั่ง ซึ่งนำหน้าด้วยคำสั่งการคอมไพล์ & OnClientOnServer, & OnClientOnServer ไร้บริบท
ยังควรค่าแก่การกล่าวถึง ประเด็นต่อไปนี้:
● หากมีโมดูลทั่วไปสำหรับไคลเอ็นต์มากกว่าหนึ่งราย เมื่อเขียนโค้ดโปรแกรม ให้พิจารณาข้อจำกัดสูงสุดที่ไคลเอ็นต์กำหนดได้ หรือใช้คำแนะนำของตัวประมวลผลล่วงหน้าเพื่อ "แยก" รหัสเฉพาะสำหรับไคลเอ็นต์เฉพาะ
● คำแนะนำของตัวประมวลผลล่วงหน้ายังเหมาะสมเมื่อโมดูลทั่วไปหนึ่งมีบริบทการดำเนินการหลายอย่าง เช่น การเชื่อมต่อภายนอกและไคลเอ็นต์แบบบาง หรือ (ซึ่งพบได้บ่อยกว่ามาก) ไคลเอ็นต์และเซิร์ฟเวอร์ ในกรณีนี้ คำสั่งตัวประมวลผลล่วงหน้าจะเฟรมโค้ดแบบโต้ตอบที่ไม่สามารถใช้ได้บนเซิร์ฟเวอร์ แต่สามารถทำได้บนไคลเอ็นต์ (ดูตัวอย่างด้านบน)
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำสั่งตัวประมวลผลล่วงหน้าและคำสั่งการคอมไพล์ โปรดดูที่ส่วนการดำเนินการขั้นตอนและฟังก์ชันของวิธีใช้ภาษาที่ฝังไว้
คุณสมบัติ Call server ใช้เพื่อควบคุมความสามารถในการเรียกวิธีการส่งออกของโมดูลทั่วไปของเซิร์ฟเวอร์จากรหัสไคลเอ็นต์
หากมีการตั้งค่าคุณสมบัติ เมธอดที่เอ็กซ์พอร์ตของโมดูลทั่วไปของเซิร์ฟเวอร์จะพร้อมใช้งานสำหรับการโทรจากไคลเอ็นต์ หากไม่ได้ตั้งค่าคุณสมบัติ วิธีการส่งออกดังกล่าวสามารถเรียกได้จากวิธีฝั่งเซิร์ฟเวอร์เท่านั้น (ทั้งวิธีของโมดูลทั่วไปฝั่งเซิร์ฟเวอร์และวิธีฝั่งเซิร์ฟเวอร์ของโมดูลแบบฟอร์มและโมดูลคำสั่ง)
คำแนะนำ . ขอแนะนำให้ตั้งค่าคุณสมบัติ Call server เป็น False ในกรณีที่โมดูลทั่วไปของเซิร์ฟเวอร์มีวิธีที่คุณไม่ต้องการโทรจากไคลเอ็นต์ (เช่น ด้วยเหตุผลด้านความปลอดภัย)
บันทึก... หากตั้งค่าคุณสมบัติพร้อมกัน ลูกค้า (สมัครปกติ), ลูกค้า (แอปพลิเคชันที่มีการจัดการ), การเชื่อมต่อภายนอกจากนั้นคุณสมบัติการเรียกเซิร์ฟเวอร์จะถูกล้างโดยอัตโนมัติ หากตั้งค่าคุณสมบัติ Call server คุณสมบัติจะถูกรีเซ็ตโดยอัตโนมัติ ลูกค้า (สมัครปกติ), ลูกค้า (แอปพลิเคชันที่มีการจัดการ)และ การเชื่อมต่อภายนอกหากคุณสมบัติเหล่านี้ถูกตั้งค่าพร้อมกัน
คุณสมบัติ อภิสิทธิ์มีวัตถุประสงค์เพื่อปิดใช้งานการควบคุมการเข้าถึงเมื่อดำเนินการวิธีการของโมดูลทั่วไป
บันทึก. หากทรัพย์สิน อภิสิทธิ์ถูกตั้งค่า จากนั้นคุณสมบัติเซิร์ฟเวอร์จะถูกตั้งค่าเป็นโมดูลทั่วไปโดยอัตโนมัติ และคุณสมบัติที่เหลือจะถูกรีเซ็ต ( ลูกค้า (สมัครปกติ), ลูกค้า (แอปพลิเคชันที่มีการจัดการ)และใน การเชื่อมต่อภายนอก). โมดูลที่ใช้ร่วมกันที่มีสิทธิพิเศษสามารถทำงานบนเซิร์ฟเวอร์เท่านั้น

การนำคืนค่ากลับมาใช้ใหม่

ถ้าโมดูลที่ใช้ร่วมกันไม่ใช่โกลบอล คุณสมบัติ Return value reuse จะพร้อมใช้งาน คุณสมบัตินี้สามารถรับค่าต่อไปนี้:
● ห้ามใช้ - ไม่ใช้ค่าที่ส่งคืนซ้ำสำหรับฟังก์ชันของโมดูลทั่วไปนี้
● At Call Time และ At Session Time — วิธีการกำหนดการใช้ข้อมูลซ้ำจะใช้สำหรับโมดูลทั่วไป สาระสำคัญของวิธีนี้คือในระหว่างการเรียกใช้โค้ด ระบบจะจดจำพารามิเตอร์และผลลัพธ์ของฟังก์ชันหลังจากการเรียกใช้ฟังก์ชันครั้งแรก เมื่อฟังก์ชันถูกเรียกอีกครั้งด้วยพารามิเตอร์เดียวกัน ค่าที่เก็บไว้จะถูกส่งคืน (จากการเรียกครั้งแรก) โดยไม่ต้องเรียกใช้ฟังก์ชันเอง หากฟังก์ชันเปลี่ยนค่าของพารามิเตอร์ในระหว่างการดำเนินการ การเรียกใช้ฟังก์ชันครั้งที่สองจะไม่ทำเช่นนี้
คุณสมบัติต่อไปนี้ของการบันทึกผลการโทรสามารถแยกแยะได้:
● หากฟังก์ชันทำงานบนเซิร์ฟเวอร์และเรียกจากรหัสเซิร์ฟเวอร์ ค่าพารามิเตอร์และผลการโทรจะถูกเก็บไว้สำหรับเซสชันปัจจุบันที่ฝั่งเซิร์ฟเวอร์
● หากฟังก์ชันทำงานบนไคลเอ็นต์แบบหนาหรือแบบบาง ค่าของพารามิเตอร์และผลการโทรจะถูกเก็บไว้ที่ฝั่งไคลเอ็นต์
● หากฟังก์ชันทำงานบนฝั่งเซิร์ฟเวอร์ แต่ถูกเรียกจากรหัสไคลเอ็นต์ ค่าของพารามิเตอร์การโทรจะถูกจดจำทั้งในฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์ (สำหรับเซสชันปัจจุบัน)
ค่าที่เก็บไว้จะถูกลบ:
● หากตั้งค่าคุณสมบัติเป็น เวลาที่โทร:
● ทางฝั่งเซิร์ฟเวอร์ - เมื่อการควบคุมถูกส่งคืนจากเซิร์ฟเวอร์
● ทางฝั่งไคลเอ็นต์ - เมื่อขั้นตอนหรือฟังก์ชันของภาษาที่ฝังตัวสิ้นสุดลง ระดับสูง(เรียกโดยระบบจากอินเทอร์เฟซ ไม่ใช่จากขั้นตอนหรือฟังก์ชันอื่นของภาษาที่ฝังไว้)
● หากตั้งค่าคุณสมบัติของโมดูลทั่วไปเป็น ตลอดระยะเวลาของเซสชัน:
● ทางฝั่งเซิร์ฟเวอร์ - เมื่อสิ้นสุดเซสชัน
● ทางฝั่งไคลเอ็นต์ - เมื่อปิดแอปพลิเคชันไคลเอ็นต์
ค่าที่เก็บไว้จะถูกลบ:
● บนเซิร์ฟเวอร์ ในไคลเอ็นต์แบบอ้วน ในการเชื่อมต่อภายนอก ในไคลเอ็นต์แบบบาง และในเว็บไคลเอ็นต์ที่ความเร็วการเชื่อมต่อปกติ - 20 นาทีหลังจากคำนวณค่าที่เก็บไว้ หรือ 6 นาทีหลังจากการใช้งานครั้งล่าสุด
● ในธินไคลเอ็นต์และเว็บไคลเอ็นต์ที่มีความเร็วการเชื่อมต่อต่ำ - 20 นาทีหลังจากคำนวณค่าที่เก็บไว้
● หากขาดแคลน หน่วยความจำเข้าถึงโดยสุ่มในเวิร์กโฟลว์ของเซิร์ฟเวอร์
● เมื่อเริ่มเวิร์กโฟลว์ใหม่
● เมื่อไคลเอ็นต์เปลี่ยนไปใช้เวิร์กโฟลว์อื่น
หลังจากลบค่าแล้ว การเรียกใช้ฟังก์ชันที่ส่งออกจะดำเนินการเหมือนในการโทรครั้งแรก
คุณสมบัติของโมดูลทั่วไปนี้ไม่ส่งผลต่อการดำเนินการของโพรซีเดอร์ - โพรซีเดอร์จะถูกดำเนินการเสมอ

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

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

โมดูลได้รับการออกแบบสำหรับการผสานรวมกับโซลูชันที่มีการกำหนดค่า "ERP Enterprise Management 2" ที่ขาดไม่ได้สำหรับองค์กรและองค์กรที่เน้นโครงการ!

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

สามารถป้อนข้อมูลโครงการเข้าสู่ระบบได้หลายวิธี:

  1. ด้วยตนเองผ่านแผงควบคุมโครงการ
  2. โหลด / ยกเลิกการโหลดข้อมูลจาก / ไปยัง MS Project;
  3. โหลดข้อมูลจากเทมเพลตที่เก็บไว้ในระบบ
  4. แบบผสมผสาน: ทีละส่วน ส่วนหนึ่งจาก MS Project

คุณสามารถกำหนดเวลาการทำงานได้หลายวิธี:

  • เพื่อให้ผู้จัดการโครงการจัดการแผนโครงการและผู้จัดการส่วนงานจัดการงาน มีการจัดสรรทรัพยากรแรงงานโดยคำนึงถึงบทบาทที่ดำเนินการ
  • ผู้จัดการโครงการจัดการแผนโครงการและการปฏิบัติงาน จัดสรรทรัพยากรแรงงานโดยไม่คำนึงถึงบทบาท

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

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

ความเป็นไปได้ในการแก้ปัญหา:
  • การชำระบัญชีกับผู้เช่าตามใบแจ้งหนี้ที่ออก (หนี้ตามแผน) การควบคุมการชำระเงินของใบแจ้งหนี้ด้วยการวิเคราะห์สำหรับออบเจ็กต์ บริการ และรอบระยะเวลา
  • แยกการกำหนดและควบคุมเงื่อนไขการชำระเงินสำหรับส่วนที่คงที่และส่วนผันแปรของค่าเช่า
  • ความเป็นไปได้ของการคำนวณค่าปรับสำหรับการชำระเงินล่าช้าโดยพิจารณาจากหนี้ตามจริง (ตามการกระทำ) และตามแผน (ตามใบแจ้งหนี้)
  • การใช้สูตรตามอำเภอใจในการคำนวณต้นทุนของบริการชิ้นส่วนผันแปร (เช่น ดอกเบี้ยค้างรับจากมูลค่าการซื้อขายของผู้เช่าตามอัลกอริธึมต่างๆ)
  • การใช้ปริมาณการใช้หลายเมตรสำหรับบริการชิ้นส่วนตัวแปรเดียว
  • ความเป็นไปได้ในการกำหนดอัตราภาษีทั้งแบบรายบุคคลและแบบสม่ำเสมอสำหรับบริการชิ้นส่วนแปรผัน
  • การจัดการตรวจสอบอสังหาริมทรัพย์
  • ความเป็นไปได้ของการใช้ร่วมกับโซลูชันที่กำลังจะมีขึ้น "การจัดการ ERP ขององค์กรก่อสร้าง 2.0" และ "โมดูล 1C: Realtor การจัดการการขายอสังหาริมทรัพย์สำหรับ 1C: ERP" ภายในการกำหนดค่าเดียว
ความเป็นไปได้ของโซลูชัน "โมดูล 1C: การจัดการยานพาหนะสำหรับ 1C: ERP":
  • การบัญชีสำหรับการสั่งซื้อยานพาหนะ
  • การออกและการประมวลผลใบตราส่งสินค้า;
  • การคำนวณปริมาณการใช้เชื้อเพลิงมาตรฐานและตามจริง อัลกอริธึมทั้งหมดสำหรับการคำนวณปริมาณการใช้เชื้อเพลิงมาตรฐานนั้นดำเนินการตามคำสั่งของกระทรวงคมนาคมลงวันที่ 14 กรกฎาคม 2558 N NA-80-r โซลูชันนี้ช่วยให้คุณติดตามการใช้เชื้อเพลิงสำหรับรถยนต์ที่มีอุปกรณ์และรถพ่วงได้ไม่จำกัดจำนวน
  • การบัญชีสำหรับการรับ ปริมาณการใช้ และการตัดจำหน่ายน้ำมันเชื้อเพลิงและน้ำมันหล่อลื่น
  • การลงทะเบียนแผ่นป้ายทะเบียนและแบตเตอรี่
  • บูรณาการกับระบบตรวจสอบดาวเทียม
  • การคำนวณการผลิตในใบตราส่งสินค้าสำหรับพารามิเตอร์ต่างๆ พารามิเตอร์หลัก (ระยะทาง, น้ำหนักสินค้า, การหมุนเวียนของสินค้า, เวลาในการสั่งซื้อ, เวลาที่ไม่ได้ใช้งาน ฯลฯ) ถูกกำหนดไว้ล่วงหน้าในระบบ เมื่อใช้หนังสืออ้างอิง คุณสามารถปรับแต่งพารามิเตอร์การผลิตตามอำเภอใจและวิเคราะห์ข้อมูลนี้เพิ่มเติม

โมดูลแพลตฟอร์ม 1C: Enterprise 8.3, 8.2

โมดูลทั่วไป

ฟังก์ชันที่ประกาศด้วยแฟล็ก "ส่งออก" ในโมดูลดังกล่าวสามารถเรียกได้จากทุกที่ในการกำหนดค่า การโทรจะทำผ่าน CommonModuleName.FunctionName ()

ไม่มีส่วนตัวแปรในโมดูลดังกล่าว

การดำเนินการของโมดูลทั่วไปขึ้นอยู่กับพารามิเตอร์ที่กำหนดในคุณสมบัติ:

ธง "ทั่วโลก"

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

ธงเซิร์ฟเวอร์

ฟังก์ชันของโมดูลดังกล่าวสามารถดำเนินการได้บนเซิร์ฟเวอร์

ลูกค้า (แอปพลิเคชันปกติ) flag

ฟังก์ชันของโมดูลดังกล่าวสามารถดำเนินการได้บนไคลเอ็นต์ในโหมดแอปพลิเคชันปกติ

ไคลเอนต์ (แอปพลิเคชันที่มีการจัดการ) แฟล็ก

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

แฟล็กการเรียกเซิร์ฟเวอร์

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

ธงเข้าร่วมด้านนอก

ฟังก์ชันการส่งออกของโมดูลดังกล่าวสามารถเรียกได้เมื่อเชื่อมต่อจากแหล่งภายนอก

ธง "อภิสิทธิ์"

ในโมดูลที่มีแฟล็กดังกล่าว การตรวจสอบสิทธิ์จะถูกปิดใช้งาน เหมาะสำหรับการผลิตหรือการดำเนินการด้านการบริหาร

ใช้ตัวเลือกซ้ำ

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

โมดูลแอปพลิเคชัน

ออกแบบมาเพื่อจัดการกับเหตุการณ์การเริ่มต้นและการปิดแอปพลิเคชัน มีสองประเภท: สำหรับแอปพลิเคชันปกติและแอปพลิเคชันที่มีการจัดการ

อย่าโอเวอร์โหลด เนื่องจากจะส่งผลต่อเวลาเริ่มต้นแอปพลิเคชัน

โมดูลเซสชัน

โมดูลพิเศษที่ใช้ในการเริ่มต้นพารามิเตอร์เซสชัน จำเป็นเพื่อไม่ให้ซ้ำรหัสในโมดูลแอปพลิเคชันต่างๆ

ควรใช้ด้วยความระมัดระวัง เนื่องจากโมดูลสามารถดำเนินการได้หลายครั้ง และยังสามารถดำเนินการได้โดยไม่ต้องเริ่มฐานเพิ่มเติม ดำเนินการก่อนโมดูลแอปพลิเคชัน

ขอแสดงความนับถือ (ครูและนักพัฒนา)