1s ckd เอาต์พุตของเอกสารในช่วงเวลา เราสร้างรายงานด้วยความถี่ที่ระบุใน SCD
ขอให้เป็นวันที่ดีผู้อ่านบล็อกที่รัก! ในบทความที่แล้ว เราได้เรียนรู้ว่าบทบาทเหล่านี้มีไว้เพื่ออะไร และวันนี้ในซีรีย์ที่ 2 นี้เราจะมาดู กำหนดบทบาทด้วยคุณสมบัติ "ระยะเวลา"และพิจารณาตัวอย่างการกรอกบทบาทเหล่านี้ด้วย มีการคำนวณยอดดุลสำหรับฟิลด์ที่มีบทบาท "ระยะเวลา" เช่นเดียวกับในสนามกับบทบาทของ "มิติ" ซึ่งเราจะพูดถึงอีกครั้ง เริ่มกันเลย!
มาสร้างรายงานใหม่กัน:
- ใน Configurator เลือกรายการเมนู "ไฟล์" - "ใหม่" - "รายงานภายนอก"
- คลิกที่ปุ่ม "เปิดสคีมาองค์ประกอบข้อมูล" ในกล่องโต้ตอบที่เปิดขึ้น ให้กดปุ่ม "เสร็จสิ้น"
- ตอนนี้ มาสร้างตารางเสมือนที่อ้างอิงถึงตารางเสมือน "ทะเบียนสะสม"
- กด คลิกขวาวางเมาส์บนโหนด "ชุดข้อมูล" และเลือกบรรทัด "เพิ่มชุดข้อมูล - แบบสอบถาม"
- ตอนนี้เรามาคลิกที่ปุ่ม "ตัวสร้างแบบสอบถาม" เลือกการลงทะเบียนการสะสม "สินค้าในคลังสินค้า ยอดคงเหลือและมูลค่าการซื้อขาย" (การกำหนดค่า USP)
- เรามาเปิดกล่องโต้ตอบ "พารามิเตอร์ตารางเสมือน" และระบุว่าจะใช้ความถี่ "อัตโนมัติ" นั่นคือจะระบุช่วงเวลาได้หลายช่วงเวลา
ตอนนี้ มาตั้งค่าฟิลด์ผลลัพธ์กัน ปล่อยให้เป็นฟิลด์ต่อไปนี้: "นายทะเบียน" "รอบเดือน" "ระบบการตั้งชื่อ" "คุณภาพ" และข้อมูลเกี่ยวกับยอดคงเหลือ การเพิ่มฟิลด์ทำได้โดยดับเบิลคลิกที่ปุ่มซ้ายของเมาส์บนฟิลด์ที่ต้องการหรือใช้ปุ่ม ">" หลังจากเพิ่มฟิลด์แล้วให้กดปุ่ม "ตกลง"
โปรดทราบว่าสำหรับบางฟิลด์ บทบาทที่มีคุณสมบัติ "ระยะเวลา" จะได้รับการกำหนดค่าโดยอัตโนมัติ
พิจารณาสิ่งที่มีอยู่ การตั้งค่าบทบาทสำหรับคุณสมบัติ "ระยะเวลา"... ขั้นแรกให้ระบุหมายเลขประจำงวด การนับควรต่อเนื่องกันโดยเริ่มจากหนึ่งจากช่วงล่างถึงเก่านั่นคืออันดับแรกจะมีเช่นหมายเลขบรรทัดแล้ว "นายทะเบียน" จากนั้นที่สอง วัน สัปดาห์ เดือน ไตรมาส , ปี.
ดังนั้น ฟิลด์ที่เกิดขึ้นในคำขอของเราควรมีหมายเลข โปรดสังเกตว่า เรามีฟิลด์ระยะเวลาสองฟิลด์ - "นายทะเบียน" และ "รอบเดือน" ฟิลด์ต่ำสุดคือ "นายทะเบียน" ถูกกำหนดหนึ่งฟิลด์ และฟิลด์สูงสุดคือ "รอบเดือน" จะได้รับสองฟิลด์ เราจะพิจารณารายละเอียดเพิ่มเติมในบทความหน้า
มาปรับแต่งรายงานของเรากันเถอะ:
- ไปที่แท็บ "ทรัพยากร" และกำหนดทรัพยากรสำหรับรายงานของเรา
- คลิกที่ปุ่ม ">>" เพื่อเลือกฟิลด์ทั้งหมดสำหรับทรัพยากร
- ตอนนี้ไปที่แท็บ "การตั้งค่า" และสร้างการตั้งค่าในรูปแบบของรายการ
- คลิกที่ปุ่มตัวออกแบบการตั้งค่าองค์ประกอบข้อมูล (ปุ่มไม้กายสิทธิ์)
- ประเภทรายงาน: "รายการ" ให้กดปุ่ม "ถัดไป"
- มากำหนดค่าฟิลด์เอาต์พุตโดยคลิกที่ปุ่ม ">>" มาจัดเรียงกันดังนี้: "ระยะเวลาเดือน", "ศัพท์เฉพาะ", "คุณภาพ", "นายทะเบียน"
- ให้กดปุ่ม "ถัดไป" และตั้งค่าการจัดกลุ่ม ตั้งค่าการจัดกลุ่มตามลำดับต่อไปนี้: "ระยะเวลาเดือน" "การตั้งชื่อ" "คุณภาพ" การจัดกลุ่ม "ผู้รับจดทะเบียน" จะแสดงเป็นบันทึกโดยละเอียด
- ให้กดปุ่ม "ตกลง"
มาเปิดรายงานของเรากันเถอะ หากเราดำเนินการรายงานนี้ เราจะเห็นลักษณะเฉพาะบางอย่างเมื่อได้รับยอดคงเหลือ หากคุณดูผลลัพธ์ของรายงานอย่างใกล้ชิด คุณจะสังเกตเห็นข้อผิดพลาดหลายอย่างพร้อมกัน โดยเฉพาะอย่างยิ่ง ด้วยเหตุผลบางอย่าง ในช่วงเริ่มต้นของกิจกรรมของบริษัท จะมียอดคงเหลือเริ่มต้น
และข้อผิดพลาดนี้เกี่ยวข้องกับลักษณะเฉพาะของการรับยอดคงเหลือโดยนายทะเบียน เพื่อให้ยอดดุลเหล่านี้แสดงได้อย่างถูกต้อง คุณต้องเพิ่มฟิลด์อื่นลงในฟิลด์ผลลัพธ์ของคำขอ ฟิลด์นี้ "PeriodSecond" ในการเพิ่มฟิลด์ "ช่วงเวลาที่สอง" ให้เปิดรายงานใน Configurator คลิกที่ปุ่ม "เปิดโครงร่างองค์ประกอบข้อมูล" ตอนนี้คลิกที่ปุ่ม "ตัวสร้างแบบสอบถาม" และเพิ่ม "ช่วงเวลาที่สอง" ในกรณีนี้ ฟิลด์ "ผู้รับจดทะเบียน" จะยังคงเป็นฟิลด์แรกของรอบระยะเวลา "PeriodSecond" จะเป็นฟิลด์ที่สอง และ "PeriodMonth" จะเป็นฟิลด์ที่สาม
วินาทีสำหรับอะไร? ระบบการจัดองค์ประกอบข้อมูลคำนวณส่วนที่เหลือโดยการคำนวณและเพื่อกำหนดตำแหน่งของเครื่องบันทึกบนแกนเวลาของลิงก์ไปยังเครื่องบันทึกอย่างไม่น่าสงสัยจึงไม่เพียงพอต้องใช้วินาทีเช่นกันนั่นคือวันที่ของ เครื่องบันทึกนี้แล้วระบบองค์ประกอบจะสามารถคำนวณยอดดุลที่ถูกต้องโดยการคำนวณ หากเราระบุลำดับของฟิลด์ที่ถูกต้องและสร้างรายงานอีกครั้ง เราได้รับ:
ตอนนี้ไม่มีเศษเหลืออยู่ที่จุดเริ่มต้นของระบบการตั้งชื่อ "ฐาน" นอกจากนี้สำหรับงวดต่อไปตรงกับยอดดุลสุดท้ายคือเราเห็นผลที่ถูกต้องจริงๆ คุณสามารถดาวน์โหลดรายงานตัวอย่างได้จากลิงค์ด้านล่าง คุณชอบบทความนี้หรือไม่? อะไรเปลี่ยนได้ อะไรเพิ่มได้ อย่าลังเลที่จะแบ่งปันในความคิดเห็น!
ในตอนท้ายของบทความฉันอยากจะแนะนำคุณฟรีจาก Anatoly Sotnikov เป็นหลักสูตรจากโปรแกรมเมอร์ที่มีประสบการณ์ มันจะแสดงให้คุณเห็นวิธีการสร้างรายงานใน ACS แยกกัน คุณเพียงแค่ต้องฟังอย่างระมัดระวังและจำไว้! คุณจะได้รับคำตอบสำหรับคำถามดังกล่าว:อาจเป็นไปได้ว่าคุณไม่ควรพยายามท่องอินเทอร์เน็ตเพื่อค้นหาข้อมูลที่จำเป็น? ยิ่งกว่านั้นทุกอย่างก็พร้อมใช้งาน เพียงแค่เริ่มต้น! รายละเอียดทั้งหมดเกี่ยวกับสิ่งที่อยู่ในวิดีโอสอนฟรี
- ฉันจะสร้างรายงานรายการอย่างง่ายได้อย่างไร
- คอลัมน์ฟิลด์ เส้นทาง และชื่อเรื่องบนแท็บฟิลด์มีไว้เพื่ออะไร
- ข้อจำกัดสำหรับฟิลด์เลย์เอาต์คืออะไร?
- ฉันจะกำหนดค่าบทบาทอย่างถูกต้องได้อย่างไร
- บทบาทของฟิลด์เลย์เอาต์คืออะไร?
- ฉันจะหาแท็บองค์ประกอบข้อมูลในคิวรีได้ที่ไหน
- จะกำหนดค่าพารามิเตอร์ใน ACS ได้อย่างไร?
- น่าสนใจยิ่งขึ้นไปอีก ...
นี่คือหนึ่งในบทเรียนเกี่ยวกับแท็บองค์ประกอบข้อมูลในแบบสอบถาม:
เมื่อสร้างรายงานใน ACS มักจะจำเป็นต้องแสดงการเลือกช่วงเวลาในแบบฟอร์มรายงาน เพื่อที่คุณจะได้ไม่ต้องกรอกวันที่ด้วยตนเอง แต่เลือกจากรายการของรอบระยะเวลามาตรฐาน เช่น: "ปี , "เดือน", "สัปดาห์" ฯลฯ ... สำหรับพารามิเตอร์ของประเภทวันที่ คุณสามารถระบุได้เฉพาะ "ต้นปีนี้ เดือน ฯลฯ" แต่ไม่มีการระบุ "สิ้นสุด"
ความจริงก็คือสำหรับประเภทข้อมูล มีเพียงประเภท "วันที่เริ่มต้นมาตรฐาน" เท่านั้นที่สามารถใช้ได้ แต่ฉันต้องการ "วันที่สิ้นสุดมาตรฐาน" ด้วย
มีวิธีแก้ไขปัญหานี้
- สร้างพารามิเตอร์ใหม่ ตั้งชื่อว่า "ระยะเวลา"
- มาตั้งค่าประเภท "ช่วงเวลามาตรฐาน" สำหรับพารามิเตอร์นี้กัน
- ในฟิลด์ "นิพจน์" ของพารามิเตอร์ "StartPeriod" และ "EndPeriod" ที่ใช้ในคำขอ ให้ตั้งค่านิพจน์ " & Period.StartDate "และ" & Period.EndDate "ตามลำดับ
แต่มีความละเอียดอ่อนเล็กน้อย หากเราใช้ตารางเสมือนในการสืบค้น เป็นไปได้มากว่ารายงานจะหยุดทำงาน และข้อความแสดงข้อผิดพลาด เช่น "ดูข้อผิดพลาดในการประมวลผล ประเภทไม่ตรงกัน หมายเลขพารามิเตอร์ ..." จะปรากฏขึ้น
เพื่อหลีกเลี่ยงปัญหานี้ คุณต้องลบพารามิเตอร์ทั้งหมดของตารางเสมือน
และเพิ่มลงในตารางบนแท็บ "องค์ประกอบข้อมูล"
เพื่อให้พารามิเตอร์แสดงในการตั้งค่าด่วนของรายงาน ให้เปิดใช้งานการตั้งค่าสถานะที่สอดคล้องกันสำหรับพารามิเตอร์รายงาน
ตอนนี้การเลือกช่วงเวลาในแบบฟอร์มรายงานมีลักษณะดังนี้
คุณสมบัติบางอย่างของการตั้งค่าช่วงเวลาใน ACS
รายงานส่วนใหญ่ที่พัฒนาขึ้นโดยใช้ Data Composition System (ACS) กำหนดให้ผู้ใช้ป้อนระยะเวลาที่จะสร้างรายงาน
ตามกฎแล้วใน ACS รายการช่วงเวลาจะถูกจัดเรียงตามพารามิเตอร์โดยใช้โครงสร้างต่อไปนี้ ดู วิธีการเข้าสู่ช่วงเวลานี้ถือเป็น "คลาสสิก" อธิบายไว้ในบทความเกี่ยวกับ ITS และวรรณกรรมอื่น ๆ เกี่ยวกับการพัฒนาใน 1C ดังนั้นเราจะถือเป็นพื้นฐาน ให้เราพิจารณาเป็นตัวอย่างแบบสอบถามง่ายๆ ที่ได้รับเอกสารการขายสินค้าและบริการทั้งหมดในช่วงเวลาที่กำหนด ดู
เมื่อใช้รายงานนี้ผู้ใช้จะกำหนดช่วงเวลาผ่านพารามิเตอร์ see ทุกอย่างดูเหมือนจะถูกต้อง ... แต่มีปัญหาเล็กน้อย:
ประเด็นคือผู้ใช้ส่วนใหญ่อย่างท่วมท้น "เข้าใจ" ช่วงเวลาที่แตกต่างจาก 1C "เข้าใจ" ตัวอย่าง:
จากมุมมองของผู้ใช้ ไม่ได้กำหนดระยะเวลา กล่าวคือ ไม่จำกัด กล่าวคือ เอกสารทั้งหมดควรรวมอยู่ในรายงานโดยไม่มีการจำกัดวันที่
"จากมุมมอง" ของระบบ 1C กำหนดช่วงพารามิเตอร์และ ... ขอบเขตทั้งสองมีค่าเท่ากับ 01.01.001 และจะรวมเฉพาะเอกสารที่มีวันที่ว่างเปล่าในรายงานซึ่งในทางปฏิบัติหมายถึง ว่าจะไม่รวมเอกสารฉบับเดียว
จากมุมมองของผู้ใช้ เอกสารทั้งหมดที่เริ่มตั้งแต่วันที่ 01/28/2010 ควรรวมอยู่ในรายงาน
"จากมุมมอง" 1C ช่วงเวลา 28.01.2010 - 01.01.001 จะยกข้อยกเว้น
แน่นอน คุณสามารถพยายามอธิบายให้ผู้ใช้ฟังว่าเหตุใดรายงานจึงไม่แสดงเอกสารที่เขาคาดว่าจะเห็นและวิธีนำเสนอช่วงเวลาจาก "มุมมอง" ของ 1C แต่นี่เป็นธุรกิจที่ต้องขอบคุณ ผิด. โปรแกรมดีๆประการแรกควรสะดวกสำหรับผู้ใช้ เพราะมีโปรแกรมสำหรับผู้ใช้ และไม่ใช่ในทางกลับกัน ดังนั้น 1C จะต้อง "สอน" ให้เข้าใจช่วงเวลาที่ผู้ใช้เข้าใจ กล่าวคือ:
หนึ่ง). ไม่ได้ระบุระยะเวลาเริ่มต้นและสิ้นสุดระยะเวลา -> เอกสารทั้งหมด
2). ระบุเฉพาะช่วงต้นงวด -> เอกสารทั้งหมดเริ่มต้นตั้งแต่ต้นงวด
3). นอกจากนี้ เราจะตรวจสอบว่าสิ้นสุดระยะเวลา> = จุดเริ่มต้นของช่วงเวลา และหากไม่เป็นไปตามนั้น เราจะถือว่าไม่มีการระบุการสิ้นสุดของระยะเวลา กล่าวคือ 2).
ตามข้างต้น นิพจน์สำหรับพารามิเตอร์ EndDate คือ:
WHEN & Period.EndDate = DATETIME (1,1,1)
แล้ว วันที่ เวลา (3999,12,31)
เมื่อไร & งวดวันที่สิ้นสุด<&Период.ДатаНачала
แล้ว วันที่ เวลา (3999,12,31)วันที่ เวลา (3999,12,31,23,59,59)
& งวดวันที่สิ้นสุด
มุมมองสุดท้ายของการสร้างการเลือกช่วงเวลาของเราถูกนำเสนอใน
หมายเหตุ: กลไกสำหรับการตั้งค่าพารามิเตอร์นี้มีไว้สำหรับแพลตฟอร์มเก่า 1C 8.1 และ 8.2 (และการกำหนดค่าทำงานภายใต้การควบคุม) ในเวอร์ชันเก่าของแพลตฟอร์ม 1C มีกลไกในตัวสำหรับควบคุมพารามิเตอร์ที่ไม่สำเร็จและไม่จำเป็นต้องใช้ กลไกที่อธิบายไว้ในบทความนี้ นอกจากนี้ในแพลตฟอร์ม 1C บางรุ่น อาจเกิดข้อผิดพลาดและการทำงานที่ไม่ถูกต้องได้
เริ่มกันเลย
เพื่อความง่าย ทำความเข้าใจกับตัวอย่าง เราจะสร้างจากการลงทะเบียนการสะสมหมุนเวียนอย่างง่าย
ในกรณีของฉัน นี่คือการลงทะเบียนการสะสม "งานระหว่างทำบัญชี"
ตัวอย่างเช่น เราจะระบุพารามิเตอร์อย่างเคร่งครัด (ไม่ผ่านการกำหนดพารามิเตอร์แบบนุ่มนวลบน ACS):
ให้ความสนใจ ช่วงเวลาของตารางเสมือนคือ "บันทึก"
แต่ดังที่กล่าวไว้ข้างต้น เราต้องการช่วงเวลาในแง่ของช่วงเวลา ดังนั้นฉันจึงเสนอให้คำนวณฟิลด์ "ช่วงเวลา" ด้วยวิธีต่อไปนี้ (ไม่สวยงามทั้งหมด แต่ฉันไม่เห็นตัวเลือกที่ดีกว่านี้):
ดังที่คุณเห็นจากภาพหน้าจอ พารามิเตอร์จะถูกส่งไปยังคำขอ ซึ่งผู้ใช้ระบุในแบบฟอร์ม: ค่าการแจงนับ "ความถี่" - การแจงนับนี้มีอยู่ในโซลูชันมาตรฐานเกือบทั้งหมด
เราระบุประเภทที่มีอยู่ในแท็บ "พารามิเตอร์":
ด้วยการตั้งค่านี้เราจัดรูปแบบช่วงเวลาของเราเพื่อให้ทุกอย่างสวยงามและน่ามอง)
นี่คือรูปแบบของตัวเอง:
เดือน: DF = "MMMM ปปปป" ก. ""
วัน: DF = dd.MM.yyyy
สัปดาห์: DF = "" สัปดาห์จาก "dd.MM.yyyy"
ไตรมาส: DF = "k" ไตรมาส "yyyy" g. ""
ปี: DF = "ปปปป" ก. ""
ทศวรรษ: DF = "" ทศวรรษกับ "dd.MM.yyyy"
ภาคการศึกษา: DF = "" ภาคเรียนที่มี "dd.MM.yyyy"
นั่นคือทั้งหมดที่ ที่ทางออกเรามีภาพที่ยอดเยี่ยม:
บทความนี้จะกล่าวถึงความเฉพาะเจาะจงบางประการของการกำหนดช่วงเวลาเมื่อใช้ Data Composition System (ACS) ปัญหาที่เกิดขึ้นเนื่องจากความแตกต่างในแนวคิดเรื่องระยะเวลาระหว่างผู้ใช้ทั่วไปกับระบบ 1C ตลอดจนแนวทางที่แนะนำ แก้ปัญหาพวกเขา
รายงานส่วนใหญ่ที่พัฒนาขึ้นโดยใช้ Data Composition System (ACS) กำหนดให้ผู้ใช้ป้อนระยะเวลาที่จะสร้างรายงาน ตามกฎแล้ว ใน ACS รายการของช่วงเวลาจะถูกจัดเรียงตามพารามิเตอร์ โดยใช้โครงสร้างต่อไปนี้ดู มะเดื่อ 1วิธีการเข้าสู่ช่วงเวลานี้ถือเป็น "คลาสสิก" ซึ่งอธิบายไว้ในบทความเกี่ยวกับ ITS และวรรณกรรมอื่น ๆ เกี่ยวกับการพัฒนาใน 1C ดังนั้นเราจะใช้เป็นพื้นฐาน ให้เราพิจารณาเป็นตัวอย่างแบบสอบถามง่ายๆ ที่ได้รับเอกสารการขายสินค้าและบริการทั้งหมดในช่วงเวลาที่กำหนด ดู มะเดื่อ 2เมื่อใช้รายงานนี้ ผู้ใช้ตั้งค่าช่วงเวลาผ่านพารามิเตอร์ดู มะเดื่อ 3ดูเหมือนว่าทุกอย่างถูกต้อง ... แต่มีปัญหาเล็กน้อย:
ประเด็นคือผู้ใช้ส่วนใหญ่อย่างท่วมท้น "เข้าใจ" ช่วงเวลาที่แตกต่างจาก 1C "เข้าใจ" ตัวอย่าง:
หนึ่ง). พิจารณา มะเดื่อ 3
จากมุมมองของผู้ใช้ ไม่ได้กำหนดระยะเวลา กล่าวคือ ไม่จำกัด กล่าวคือ เอกสารทั้งหมดควรรวมอยู่ในรายงานโดยไม่มีการจำกัดวันที่
"จากมุมมอง" ของระบบ 1C กำหนดช่วงพารามิเตอร์และ ... ขอบเขตทั้งสองมีค่าเท่ากับ 01.01.001 และจะรวมเฉพาะเอกสารที่มีวันที่ว่างเปล่าในรายงานซึ่งในทางปฏิบัติหมายถึง ว่าจะไม่รวมเอกสารฉบับเดียว
2). พิจารณา มะเดื่อ 4
จากมุมมองของผู้ใช้ เอกสารทั้งหมดที่เริ่มตั้งแต่วันที่ 01/28/2010 ควรรวมอยู่ในรายงาน
"จากมุมมอง" 1C ช่วงเวลา 28.01.2010 - 01.01.001 จะยกข้อยกเว้น
แน่นอน คุณสามารถพยายามอธิบายให้ผู้ใช้ฟังว่าเหตุใดรายงานจึงไม่แสดงเอกสารที่เขาคาดว่าจะเห็นและวิธีนำเสนอช่วงเวลาจาก "มุมมอง" ของ 1C แต่นี่เป็นธุรกิจที่ต้องขอบคุณ ผิด. ก่อนอื่นโปรแกรมที่ดีควรสะดวกสำหรับผู้ใช้ เพราะมีโปรแกรมสำหรับผู้ใช้ ไม่ใช่ในทางกลับกัน ดังนั้น คุณจะต้อง "สอน" 1C ให้เข้าใจระยะเวลาตามที่ผู้ใช้เข้าใจ กล่าวคือ:
หนึ่ง). ไม่ได้ระบุระยะเวลาเริ่มต้นและสิ้นสุดระยะเวลา -> เอกสารทั้งหมด
2). ระบุเฉพาะช่วงต้นงวด -> เอกสารทั้งหมดเริ่มต้นตั้งแต่ต้นงวด
3). นอกจากนี้ เราจะตรวจสอบว่าสิ้นสุดระยะเวลา> = จุดเริ่มต้นของช่วงเวลา และหากไม่เป็นไปตามนั้น เราจะถือว่าไม่มีการระบุการสิ้นสุดของระยะเวลา กล่าวคือ 2).
จากข้างต้น นิพจน์สำหรับพารามิเตอร์ EndDate จะมีลักษณะดังนี้:
เลือกเมื่อ & ระยะเวลา วันที่สิ้นสุด = DATE TIME (1,1,1) จากนั้น DATE TIME (3999,12,31,23,59,59) ELSE เลือกเมื่อ & ระยะเวลา วันที่สิ้นสุด<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ
มุมมองสุดท้ายของการสร้างการเลือกช่วงเวลาของเราถูกนำเสนอใน มะเดื่อ 5