การทดแทนค่าในไดเรกทอรี 1c วิธีการตั้งค่าองค์กรหลักสำหรับการทดแทนในเอกสาร

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

การทำเช่นนี้เราต้องทำสองสิ่ง

ขั้นแรก ให้เขียนฟังก์ชันบางอย่างที่จะส่งคืนราคาปัจจุบันของสินค้า จากนั้นเรียกใช้ฟังก์ชันนี้ในขณะที่เพิ่มสินค้าลงในเอกสาร และแทนที่ราคาของสินค้าที่ฟังก์ชันนี้จะส่งคืนลงในเอกสาร

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

ในโหมดตัวกำหนดค่า

ฟังก์ชั่นส่งคืนราคาสินค้า

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

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

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

ลองทำเครื่องหมายในช่อง Call server เพื่อให้สามารถเรียกขั้นตอนการส่งออกและฟังก์ชันของโมดูลนี้จากไคลเอ็นต์ได้ (รูปที่ 9.9)

ลองใส่ข้อความต่อไปนี้ลงไป (รายการ 9.1)

เรามาอธิบายฟังก์ชันนี้กันดีกว่า

หากต้องการรับราคาขายปลีก เราจะส่งพารามิเตอร์สองตัวไปที่ฟังก์ชัน:

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

ในเนื้อความของฟังก์ชัน อันดับแรกเราจะสร้างออบเจ็กต์ตัวช่วย Selection

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

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

ในบรรทัดที่สอง เราติดต่อผู้จัดการของการลงทะเบียนข้อมูลราคา (Information Registers.Prices) และดำเนินการเมธอด GetLast() ซึ่งจะส่งคืนค่าทรัพยากรของบันทึกการลงทะเบียนล่าสุดที่สอดคล้องกับวันที่ที่ส่งไปยังฟังก์ชัน ( CurrentDate) และค่าของมิติการลงทะเบียน (Selection)

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

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

ตอนนี้จำเป็นต้องเรียกใช้ฟังก์ชันนี้ ณ จุดใดจุดหนึ่งในการดำเนินการของเอกสาร

การเรียกใช้ฟังก์ชันเมื่อเลือกรายการและกรอกราคาในเอกสาร

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


ค้นหาเอกสารการให้บริการในตัวกำหนดค่าและเปิดแบบฟอร์ม แบบฟอร์มเอกสาร

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

คลิกปุ่มเปิด B พร้อมไอคอนรูปแว่นขยายในช่องป้อนข้อมูล

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

ลองเพิ่มข้อความต่อไปนี้ลงไป (รายการ 9.2)

แสดงความคิดเห็นเกี่ยวกับเนื้อหาของตัวจัดการ

บรรทัดแรกของตัวจัดการที่คุณคุ้นเคยอยู่แล้วจากขั้นตอน List of ItemsQuantityOnChange และ List ofItemsPriceOnChange ขั้นแรก เราจะได้แถวปัจจุบันของส่วนที่เป็นตารางของเอกสาร เนื่องจากเราจะต้องใช้ในภายหลัง และจัดเก็บไว้ในตัวแปร TabularPart Row

จากนั้นเราเรียกฟังก์ชัน RetailPrice() ของเราจากโมดูลทั่วไปที่ทำงานกับไดเร็กทอรี

ในฐานะพารามิเตอร์แรก เราส่งผ่านไปยังฟังก์ชันนี้ตามวันที่ของเอกสารที่เราต้องการรับราคา เราได้รับวันที่ของเอกสารจากแอตทริบิวต์แบบฟอร์มหลัก - Object.Date



ฟังก์ชันส่งคืนค่าราคาสุดท้าย และเรากำหนดค่านี้ให้กับฟิลด์ราคาในแถวปัจจุบันของส่วนตารางของเอกสาร (TabularPartRow.Price)

โปรดทราบว่ากระบวนการ Item List NomenclatureOnChange() จะเริ่มทำงานในโมดูลแบบฟอร์มบนฝั่งไคลเอ็นต์ เนื่องจากเป็นตัวจัดการสำหรับเหตุการณ์แบบโต้ตอบของแบบฟอร์ม เมื่อสร้างเทมเพลตสำหรับขั้นตอนนี้ แพลตฟอร์มจะวางคำสั่งการคอมไพล์ &OnClient ไว้หน้าคำอธิบายของขั้นตอนโดยอัตโนมัติ

จากนั้นจึงเรียกใช้ฟังก์ชัน RetailPrice() เนื่องจากไม่พบฟังก์ชันนี้ในฝั่งไคลเอ็นต์ การดำเนินการจะถูกโอนไปยังโมดูลทั่วไป Working with Directories ซึ่งทำงานบนเซิร์ฟเวอร์ หลังจากที่ฟังก์ชันเสร็จสิ้น โค้ดโปรแกรมจะยังคงดำเนินการบนไคลเอ็นต์ต่อไป

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

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

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

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

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

ใน 1C: โหมดองค์กร

เรามาตรวจสอบว่าเอกสารของเราทำงานอย่างไรตอนนี้

มาเปิดตัว 1C:Enterprise ในโหมดดีบักและเปิดการลงทะเบียนข้อมูลราคา

สำหรับทรานซิสเตอร์ Philips ให้เพิ่มราคาใหม่ด้วยตัวเลขอื่น (รูปที่ 9.10)

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

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

ตอนนี้ขอเปลี่ยนวันที่ของเอกสารเป็น 13/07/2552 แล้วเลือกทรานซิสเตอร์ซ้ำอีกครั้ง ค่าราคาใหม่จะถูกตั้งค่า ล่าสุดสำหรับวันนี้ (รูปที่ 9.12)

ดังนั้นราคาของบริการที่เป็นปัจจุบันในขณะที่สร้างเอกสารจะปรากฏในเอกสาร


คำถามควบคุม

1. จุดประสงค์ของออบเจ็กต์การกำหนดค่า Information Register คืออะไร?

2. ออบเจ็กต์การกำหนดค่า Information Register มีคุณสมบัติอะไรบ้าง?

3. อะไรคือความแตกต่างที่สำคัญระหว่างการลงทะเบียนข้อมูลและการลงทะเบียนการสะสม

4. ฟิลด์ใดกำหนดคีย์เฉพาะของการลงทะเบียนการสะสม

5. การลงทะเบียนข้อมูลเป็นระยะคืออะไรและการลงทะเบียนข้อมูลที่เป็นอิสระคืออะไร

6. วิธีสร้างการลงทะเบียนข้อมูลเป็นระยะ

7. อะไรคือมิตินำของการลงทะเบียน

8. วิธีรับค่าทรัพยากรของรายการรีจิสตรีล่าสุดโดยใช้ภาษาในตัว

ภารกิจที่ 1. การสร้างรายการแบบเลื่อนลง

1. เปิดไฟล์ Ex03_1.xlsx.

2. บนแผ่นงาน ราคา มีตารางสินค้าพร้อมราคา

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

ภาพที่ 1

4. บนเอกสารการขายในคอลัมน์ ชื่อผลิตภัณฑ์สร้างรายการแบบเลื่อนลงและกรอกข้อมูล

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

รูปที่ 2

บนแท็บแรก ตัวเลือกจากรายการแบบเลื่อนลง ประเภทข้อมูลเลือกตัวเลือก รายการและเข้าแถว แหล่งที่มา= และชื่อของช่วงที่มีข้อมูลที่ต้องการ (เช่น =สินค้า) (รูปที่ 3) คลิก ตกลง.

ผลลัพธ์ของการสร้างรายการแบบเลื่อนลงแสดงในรูปที่ 4

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

รูปที่ 3

รูปที่ 4

ขอแนะนำฟังก์ชัน MATCH และ INDEX

ฟังก์ชัน MATCH และ INDEX ส่วนใหญ่จะใช้เพื่อทดแทนข้อมูลลงในตารางจากช่วงที่กำหนดโดยอัตโนมัติ

ไวยากรณ์ของฟังก์ชัน

MATCH(lookup_value, อาร์เรย์, match_type)

อาร์เรย์คือบล็อกที่ประกอบด้วยหนึ่งคอลัมน์หรือหนึ่งแถว

Match_typeคือตัวเลข -1, 0 หรือ 1

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

ถ้า match_typeเท่ากับ 0, ที่ ฟังก์ชันจับคู่ค้นหาค่าแรกที่เท่ากับอาร์กิวเมนต์ทุกประการ ค้นหา_ค่าดูแล้ว อาร์เรย์อาจจะไม่เป็นระเบียบ

ถ้า match_typeเท่ากับ -1 แล้วจึงเป็นฟังก์ชัน ค้นหาค้นหาค่าที่น้อยที่สุดที่มากกว่า ค้นหา_ค่า,หรือเท่ากับมัน ดู_อาร์เรย์ต้องเรียงลำดับจากมากไปน้อย

ถ้า match_typeละไว้ก็จะถือว่าเท่ากับ 1 .

การทำงาน ค้นหาส่งคืนตำแหน่งของค่าที่ค้นหาในอาร์เรย์ ไม่ใช่ค่านั้นเอง

การทำงาน ดัชนีมีสองรูปแบบ เราจะพิจารณาเพียงสิ่งเดียว

INDEX(ตาราง; row_number; คอลัมน์_number)

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

มาดูกันว่าฟังก์ชันเหล่านี้ทำงานอย่างไรโดยใช้ตัวอย่างเฉพาะ

ภารกิจที่ 2 ความรู้เบื้องต้นเกี่ยวกับฟังก์ชัน MATCH

ใช้ฟังก์ชัน MATCH() เพื่อระบุตำแหน่งของผลิตภัณฑ์ที่มีชื่อ "โยเกิร์ต" ในช่วง ผลิตภัณฑ์- สำหรับสิ่งนี้:

1.ในรูปแบบอีบุ๊ค Ex03_1.xlsxไปที่แผ่นงาน ราคาและวางเคอร์เซอร์ของชีตลงในเซลล์ว่างใดๆ

2. ป้อนสูตร =MATCH("Yogurt";Product;0) ลงในเซลล์นี้ เช่น เราระบุว่าการใช้ฟังก์ชันนี้เราต้องค้นหาองค์ประกอบ "โยเกิร์ต" (ค่าข้อความในฟังก์ชันจะระบุด้วยเครื่องหมายคำพูดเสมอ) ในช่วง ผลิตภัณฑ์, ประเภทการจับคู่ 0 – การจับคู่แบบตรงทั้งหมด;

3. กด Enter ดังนั้นคุณควรได้หมายเลข 7 (รูปที่ 5)

รูปที่ 5

จริงๆแล้วถ้าดูจากระยะแล้ว ผลิตภัณฑ์จากนั้นตำแหน่งของโยเกิร์ตจะตรงกับรูปนี้ เป็นที่น่าจดจำว่าตำแหน่งของค่าในอาร์เรย์คือ ในช่วงที่กำหนดนับจากจุดเริ่มต้นของช่วง ปรากฎว่าถ้าเราเพิ่มแถวใหม่ที่จุดเริ่มต้นของตารางข้อมูล ค่า "โยเกิร์ต" จะเลื่อนไปที่แถวที่ 8 แต่ช่วง ผลิตภัณฑ์เริ่มต้นด้วยค่า “นม” ดังนั้นจากจุดเริ่มต้นของช่วง ตำแหน่งของโยเกิร์ตจะตรงกับหมายเลข 7 ไม่ว่าในกรณีใดก็ตาม (รูปที่ 6)

รูปที่ 6

โปรดทราบว่าค่าสำหรับฟังก์ชัน MATCH() สามารถระบุได้ทั้งค่านั้นเองหรือชื่อของเซลล์ที่มีค่านี้อยู่ ตัวอย่างเช่น รายการ =MATCH(A7;Product;0) จะให้ผลลัพธ์เหมือนกับเมื่อใช้รายการ =MATCH("Yogurt";Product;0)

ภารกิจที่ 3 ความรู้เบื้องต้นเกี่ยวกับฟังก์ชัน INDEX

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

ใช้ฟังก์ชัน INDEX() เพื่อค้นหาในช่วง ผลิตภัณฑ์องค์ประกอบที่อยู่ในตำแหน่งที่ห้า สำหรับสิ่งนี้:

1.ในรูปแบบอีบุ๊ค Ex03_1.xlsxบนแผ่นงาน ราคาวางเคอร์เซอร์ของแผ่นงานในเซลล์ว่างใดก็ได้

2. ป้อนฟังก์ชันต่อไปนี้ในเซลล์นี้ =INDEX(Product;5) กดปุ่มตกลง. ผลลัพธ์แสดงไว้ในรูปที่ 7

รูปที่ 7

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

ในเซลล์ใหม่ ให้ป้อนสูตร =INDEX(Table;8;2) จึงจะพบราคาแฮม (รูปที่ 8)

รูปที่ 8

การทดแทนข้อมูลอัตโนมัติ

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

การทดแทนข้อมูลจากตารางค้นหาโดยอัตโนมัติจะขึ้นอยู่กับการใช้ฟังก์ชัน INDEX และ MATCH รวมกัน

ภารกิจที่ 4 การรวมฟังก์ชัน MATCH และ INDEX

ในอีบุ๊ค Ex03_1.xlsxบนแผ่นงาน ฝ่ายขายในคอลัมน์ ราคาโดยใช้ฟังก์ชัน MS Excel ให้การทดแทนต้นทุนสินค้าจากแผ่นงานโดยอัตโนมัติ ราคาขึ้นอยู่กับค่าที่เลือกจากรายการดรอปดาวน์บนแผ่นงาน ฝ่ายขาย.

1. วางเคอร์เซอร์แผ่นงานในเซลล์ C2 และป้อนสูตรต่อไปนี้ลงไป:

2. กด Enter เป็นผลให้คุณจะได้รับต้นทุนของผลิตภัณฑ์ในเซลล์ C2 ซึ่งมีชื่อระบุไว้ในคอลัมน์ที่อยู่ติดกัน (รูปที่ 9) เมื่อคุณเลือกชื่อผลิตภัณฑ์อื่นจากรายการแบบเลื่อนลง ค่าราคาจะเปลี่ยนไปตามนั้น

รูปที่ 9

3. ใช้เครื่องหมายเติมข้อความอัตโนมัติ ทำซ้ำสูตรนี้ที่ส่วนท้ายของตาราง (รูปที่ 10)

รูปที่ 10

มาถอดรหัสสูตรนี้กัน สูตรนี้เริ่มต้นด้วยฟังก์ชัน MATCH ซึ่งช่วยให้เราสามารถค้นหาตำแหน่งของค่าจากเซลล์ B2 บนเวิร์กชีตได้ ฝ่ายขายในช่วง ผลิตภัณฑ์จากการมองเห็น ราคาและประเภทความแม่นยำ 0 ตัวอย่างเช่น หากคุณใช้รายการผลิตภัณฑ์ที่แสดงในรูปที่ 10 ฟังก์ชัน SEARCH จะค้นหาตำแหน่งของขนมปังซึ่งมีชื่อระบุไว้ในเซลล์ B2 จากคอลัมน์ ชื่อผลิตภัณฑ์ในช่วง ผลิตภัณฑ์บนแผ่นงาน ราคา- ตำแหน่งนี้จะเท่ากับ 3 ดังนั้นในหน่วยความจำคอมพิวเตอร์สูตรที่เราป้อนคือ

=INDEX(ตาราง, จับคู่(B2, สินค้า, 0), 2)

จะเอาแบบฟอร์ม

=ดัชนี(ตาราง,3,2)

พารามิเตอร์ “3” คือผลลัพธ์ของฟังก์ชัน SEARCH

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

ภารกิจที่ 5 การออกแบบตารางสุดท้าย

บนแผ่นงาน ฝ่ายขายในคอลัมน์ ปริมาณป้อนค่าที่กำหนดเอง คำนวณค่าในคอลัมน์ ทั้งหมด.

ภารกิจที่ 6 งานอิสระ

เปิดไฟล์ เฟรม.xls - จำเป็นต้องเปลี่ยนแปลงเงินเดือนในแผ่นงานโดยอัตโนมัติ บุคลากร .

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

สร้างแผ่นงานใหม่และตั้งชื่อ สถานะ .

คัดลอกไปยังแผ่นงาน สถานะคอลัมน์ ชื่องานและ เงินเดือน.

ลบพนักงานที่ซ้ำกัน สำหรับสิ่งนี้:

1. เลือกคอลัมน์ตำแหน่งและเงินเดือน

2. บนแท็บ ข้อมูล คลิกปุ่ม ลบรายการที่ซ้ำกัน .

3. ลบเครื่องหมายถูกออกจากคอลัมน์ เงินเดือน.

4. คลิกปุ่ม ตกลง.

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

แนวทาง

1. เลือกบนแผ่นงาน สถานะช่วงของตำแหน่ง ตั้งชื่อให้กับช่วงที่เลือก ชื่องาน

2. เลือกบนแผ่นงาน สถานะช่วงเงินเดือน ตั้งชื่อให้กับช่วงที่เลือก เงินเดือน.

3. บนแผ่นงาน พนักงานในคอลัมน์ เงินเดือนป้อนสูตรที่จะค้นหาบนแผ่นงาน สถานะในช่วง ชื่องานตำแหน่งที่สอดคล้องกับตำแหน่งของพนักงานและจากช่วง เงินเดือนแผ่น สถานะใส่เงินเดือนให้ตรงกับตำแหน่งที่พบ

4. หลังจากกรอกสูตรแล้ว ตรวจสอบให้แน่ใจว่าเงินเดือนที่ได้นั้นตรงกับเงินเดือนของตำแหน่งพนักงานจริงจากในชีต สถานะ.

5.เปลี่ยนเงินเดือนช. นักบัญชีบนแผ่นงาน สถานะ- ตรวจสอบว่าเงินเดือนที่เกี่ยวข้องมีการเปลี่ยนแปลงในแผ่นงานหรือไม่ พนักงาน.

/
การบัญชีสำหรับประเทศยูเครน /
ทำงานกับเอกสาร หนังสืออ้างอิง และรายงาน

วิธีการตั้งค่าองค์กรหลักสำหรับการทดแทนในเอกสาร

ส่วนนี้อธิบายวิธีการตั้งค่าองค์กรหลักให้แทนที่ในเอกสารใหม่โดยอัตโนมัติ

การติดตั้งจากไดเร็กทอรี

ในไดเรกทอรีขององค์กร (เมนู "องค์กร" - "องค์กร") องค์กรหลักจะถูกเน้นด้วยตัวหนา ซึ่งหมายความว่าเมื่อสร้างเอกสารใหม่เอกสารนั้นจะถูกแทรกโดยอัตโนมัติ

หากต้องการให้องค์กรอื่นเป็นองค์กรหลัก คุณต้องเลือกองค์กรนี้ในรายการแล้วคลิก ปุ่ม ตั้งหลักในแผงคำสั่ง

เชื่อมต่อรหัส Preoix ชื่อ l w 00000001 กับ Dobro 000000001 DB Do5ro5ut 00000006 DU Do st eka และการติดตั้ง 00000005 NF National S0000001 nsho องค์กรของเรา" width="757" height="216" border="0">

บันทึก
องค์กรหลักจะถูกบันทึกไว้ในการตั้งค่าผู้ใช้ สำหรับผู้ใช้แต่ละคน องค์กรหลักจะถูกระบุเป็นรายบุคคล

การเลือกเอกสารตามองค์กรหลัก

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

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

หากจำเป็น สามารถเปลี่ยนองค์กรหลักได้โดยตรงในการตั้งค่าผู้ใช้ในกลุ่ม "ค่าพื้นฐานสำหรับการทดแทนในเอกสารและไดเร็กทอรี"

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

ในการทำเช่นนี้คุณต้องมี:

    เขียนฟังก์ชัน RetailPrice ที่จะส่งคืนราคาปัจจุบัน

    เรียกใช้ฟังก์ชันเมื่อมีการเพิ่มรายการใหม่ลงในเอกสาร

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

1. สร้างฟังก์ชัน ราคาขายปลีกในสาขาทั่วไป – โมดูลทั่วไปที่มีชื่อ การทำงานกับไดเร็กทอรี- ตั้งธง โทรเซิร์ฟเวอร์(เพื่อให้สามารถเรียกขั้นตอนการส่งออกและฟังก์ชันของโมดูลนี้จากไคลเอ็นต์ได้) (รูปที่ 71a)

ข้าว. 71ก. คุณสมบัติโมดูลทั่วไป

2. วางข้อความต่อไปนี้ในโมดูล

ฟังก์ชั่นราคาขายปลีก (วันที่ปัจจุบัน Service NomenclatureElement) ส่งออก

//สร้างการเลือกวัตถุเสริม

การเลือก = โครงสร้างใหม่ ("ระบบการตั้งชื่อบริการ" องค์ประกอบระบบการตั้งชื่อบริการ);

// รับค่าทรัพยากรรีจิสทรีปัจจุบัน

ResourceValues=InformationRegisters.Prices.GetLast(CurrentDate, Selection);

ReturnResourceValue ราคา;

EndFunction

มาอธิบายฟังก์ชันกันดีกว่า

หากต้องการรับราคาขายปลีก คุณต้องส่งพารามิเตอร์สองตัวไปที่ฟังก์ชัน:

    วันที่ปัจจุบัน– พารามิเตอร์ประเภท Date กำหนดจุดบนแกนเวลาที่เราสนใจมูลค่าราคาขายปลีก

โครงสร้างนี้ประกอบด้วย การคัดเลือกตามทะเบียนวัด. ด้วยความช่วยเหลือ จะมีการกำหนดมิติที่ต้องการของการลงทะเบียน Nomenclature of Services ซึ่งเท่ากับการอ้างอิงไปยังองค์ประกอบไดเร็กทอรีที่ส่งผ่านไปยังฟังก์ชัน

ชื่อคีย์โครงสร้าง ("H ศัพท์เฉพาะของบริการ") ต้องตรงกับชื่อของมิติรีจิสเตอร์ที่ระบุในตัวกำหนดค่า และค่าขององค์ประกอบโครงสร้าง ( องค์ประกอบของระบบการตั้งชื่อบริการ) ระบุค่าที่เลือกสำหรับมิตินี้

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

วิธี รับล่าสุดส่งคืนโครงสร้างที่มีค่าทรัพยากรซึ่งถูกเก็บไว้ในตัวแปร ค่าทรัพยากร

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

ที่. ฟังก์ชันนี้สามารถเรียกใช้ได้ในบางช่วงเวลา

จำเป็นต้องเปิด แบบฟอร์มเอกสารการดำเนินการบริการ(มันถูกสร้างขึ้นก่อนหน้านี้) ใน โมดูลแบบฟอร์มจำเป็น เพิ่มขั้นตอนในการเปลี่ยนแปลง.

ในการดำเนินการนี้ให้ดับเบิลคลิกที่องค์ประกอบแบบฟอร์มรายการและบริการ (รูปที่ 71b)

ข้าว. 71บ. องค์ประกอบของเอกสารประสิทธิภาพการบริการ

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

&บนไคลเอนต์

ขั้นตอนรายการบริการระบบการตั้งชื่อเมื่อมีการเปลี่ยนแปลง (องค์ประกอบ)

//รับแถวถัดไปของส่วนของตาราง

TabularPartLine=Elements.List ของระบบการตั้งชื่อ.CurrentData;

//ตั้งราคา

TabularPart Row.Price = การทำงานกับ Directories.RetailPrice(Object.Date, TabularPartLine.Service);

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

มาอธิบายฟังก์ชันกันดีกว่า

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

จากนั้นเราก็เรียกใช้ฟังก์ชัน ราคาขายปลีก()จากโมดูลทั่วไป การทำงานกับไดเร็กทอรี.

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

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

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

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

ตรวจสอบขั้นตอนข้างต้นแล้วเปิดแอปพลิเคชันใน 1C: โหมดองค์กร มาทำงานกับการกำหนดค่าที่พัฒนาแล้ว.

การป้อนข้อมูลลงในฐานข้อมูล

1. กรอกเอกสารอย่างน้อย 8 ฉบับ การให้บริการในการสมัคร