การโฆษณา

บ้าน - การตั้งค่า
เราสร้างรายงานตามความถี่ที่ระบุในระบบจัดเก็บข้อมูล

มาสร้างรายงานที่มีข้อมูลสืบค้นหนึ่งชุดกัน:

เลือกสินค้าในคลังสินค้าที่เหลืออยู่ คลังสินค้า สินค้าในโกดังที่เหลืออยู่ ระบบการตั้งชื่อผลิตภัณฑ์ในคลังสินค้าที่เหลืออยู่ ปริมาณยอดคงเหลือจากการลงทะเบียนการสะสม สินค้าในโกดัง คงเหลือ (&MyDate,) AS ProductsInWarehousesRemains

ตอนนี้ไปที่แท็บพารามิเตอร์แล้วดูว่าระบบ นอกเหนือจากพารามิเตอร์ &MyDate ของเรา ได้สร้างพารามิเตอร์ &Period แล้วด้วย
เพื่อที่จะตรวจสอบช่วงเวลาด้วยสายตา เราจะสร้างแบบฟอร์มรายงานหลักและวางฟิลด์ตารางที่มีข้อมูลอยู่: การตั้งค่า Composer.Settings.DataParameters

มาบันทึกรายงานและเปิดในองค์กรกันดีกว่า ในฟิลด์ตารางที่มีพารามิเตอร์ จะแสดงเฉพาะพารามิเตอร์ &Period เท่านั้น:

ดังนั้นการเปลี่ยนแปลงใด ๆ ในพารามิเตอร์นี้จะไม่ให้ผลลัพธ์ที่ต้องการ

เหตุใดพารามิเตอร์ &MyDate จึงไม่พร้อมใช้งาน แน่นอน เนื่องจากบนแท็บพารามิเตอร์ เขาได้ทำเครื่องหมายในช่องไว้ ข้อจำกัดความพร้อมใช้งาน.

ยกเลิกการเลือกช่อง ตอนนี้เราเห็นทั้งสองอย่างในพารามิเตอร์ที่มีอยู่ เมื่อสร้างรายงานเท่านั้น เราจะเห็นว่ารายงานตอบสนองต่อพารามิเตอร์ &Period ไม่ใช่ &MyDate

ในตัวอย่างนี้ สิ่งที่ง่ายที่สุดที่ต้องทำคือการเปลี่ยนชื่อพารามิเตอร์ &MyDate ในคำขอเป็น &Period และบรรลุผลลัพธ์ที่ต้องการ แต่บางทีคุณอาจมีคำถามที่ใช้พารามิเตอร์ &Period ไปแล้ว หรือมุมมองทางศาสนาของคุณไม่อนุญาตให้คุณใช้พารามิเตอร์นี้ ไม่ว่าในกรณีใด คุณสามารถแก้ไขปัญหาได้ดังนี้:

เลือกสินค้าในคลังสินค้าที่เหลืออยู่ คลังสินค้า สินค้าในโกดังที่เหลืออยู่ ระบบการตั้งชื่อผลิตภัณฑ์ในคลังสินค้าที่เหลืออยู่ ปริมาณยอดคงเหลือจากการลงทะเบียนการสะสม สินค้าในโกดัง คงเหลือ((&MyDate) ,) AS ProductsInWarehousesRemains

รปภจากผู้ใช้ บู:

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

ฉันขอยกตัวอย่าง:

SELECT EmployeesSP.Employee, WorkersSP.ReasonChangesState, WorkersSP.Period, WorkersSPAnotherDate.Period AS Period2, WorkersSPAnotherDate.ReasonChangesStates AS ReasonChangesState2 จาก RegisterInformation.EmployeesOrganizations.SliceLast(&Period , Employee = &Employee ) AS ทำงาน nikkiSP การเชื่อมต่อด้านซ้ายทะเบียนข้อมูล พนักงานขององค์กร ส่วนของล่าสุด (&OtherDate ,) AS EmployeesSPAnotherDate BY EmployeesSP.Employee = EmployeesSPAnotherDate.Employee

ในแบบสอบถามย่อยที่สอง ค่าของพารามิเตอร์ "มาตรฐาน" PERIOD จะถูกใช้เป็นพารามิเตอร์วันที่ของการแบ่งส่วน แทนที่จะเป็นค่า OtherDate

“ความผิดพลาด” นี้จะถูกสังเกตแม้ว่าแบบสอบถามย่อยที่สองจะถูกส่งออกไปยังชุดข้อมูลที่สองและเชื่อมโยงโดยใช้ ACS ตัวเลือกที่ใช้ในคำขอที่สองนิพจน์เช่น "ADDATE(&Period, MONTH, -1)" จะไม่ทำงานเช่นกัน เดือนจะไม่ถูกลบออก แต่การเปลี่ยนชื่อพารามิเตอร์ "Period" ในคำขอเป็น "FirstDate" จะช่วยแก้ปัญหานี้ได้

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

บทความนี้กล่าวถึงคุณสมบัติบางประการของการตั้งค่าช่วงเวลาเมื่อใช้ Data Composition System (DCS) ปัญหาที่เกิดขึ้นเนื่องจากความแตกต่างในแนวคิดเรื่องช่วงเวลาระหว่างผู้ใช้ทั่วไปและระบบ 1C และยังแนะนำวิธีแก้ปัญหาอีกด้วย .
รายงานส่วนใหญ่ที่พัฒนาโดยใช้ Data Composition System (DCS) กำหนดให้ผู้ใช้ป้อนระยะเวลาที่จะสร้างรายงาน ตามกฎแล้ว ใน ACS รายการงวดจะถูกจัดระเบียบผ่านพารามิเตอร์ โดยใช้โครงสร้างต่อไปนี้ โปรดดู รูปที่ 1วิธีการเข้าสู่ช่วงเวลานี้ถือเป็น "คลาสสิก" โดยมีการอธิบายไว้ในบทความเกี่ยวกับ ITS และวรรณกรรมอื่น ๆ ที่อุทิศให้กับการพัฒนาใน 1C ดังนั้นเรามาใช้เป็นพื้นฐานกันดีกว่า ลองพิจารณาเป็นตัวอย่างคำของ่ายๆ ที่ได้รับเอกสารทั้งหมด การขายสินค้าและบริการในช่วงเวลาที่กำหนด ดู รูปที่ 2เมื่อใช้รายงานนี้ ผู้ใช้จะกำหนดช่วงเวลาผ่านพารามิเตอร์ โปรดดู รูปที่ 3ดูเหมือนว่าทุกอย่างจะถูกต้อง... แต่มีปัญหาเล็กน้อย:

ประเด็นก็คือผู้ใช้ส่วนใหญ่ "เข้าใจ" ระยะเวลาที่แตกต่างจาก 1C "เข้าใจ" ตัวอย่าง:
1) ลองพิจารณาดู รูปที่ 3
จากมุมมองของผู้ใช้ ไม่ได้ระบุระยะเวลา กล่าวคือ ไม่จำกัด กล่าวคือ ควรรวมเอกสารทั้งหมดที่ไม่มีการจำกัดวันที่ไว้ในรายงาน
“ จากมุมมอง” ของระบบ 1C มีการตั้งค่าช่วงเวลาพารามิเตอร์และ ... ขอบเขตทั้งสองเท่ากับ 01.01.0001 และเฉพาะเอกสารที่มีวันที่ว่างเท่านั้นที่จะรวมอยู่ในรายงานซึ่งในทางปฏิบัติหมายถึง จะไม่รวมเอกสารฉบับเดียว
2). ลองพิจารณาดู รูปที่ 4
จากมุมมองของผู้ใช้ รายงานควรรวมเอกสารทั้งหมดโดยเริ่มตั้งแต่วันที่ 28/01/2010
“จากมุมมอง” ของ 1C ช่วงเวลาที่ 28/01/2553 – 01/01/0001 จะทำให้เกิดข้อยกเว้น

แน่นอนคุณสามารถลองอธิบายให้ผู้ใช้ฟังว่าทำไมรายงานไม่แสดงเอกสารที่เขาคาดว่าจะเห็นและวิธีการนำเสนอช่วงเวลาจาก "มุมมอง" ของ 1C แต่นี่เป็นงานที่ไม่เห็นคุณค่าและมัน ก็ผิดเช่นกัน ก่อนอื่นโปรแกรมที่ดีควรเป็นมิตรกับผู้ใช้เนื่องจากมีโปรแกรมอยู่สำหรับผู้ใช้และไม่ใช่ในทางกลับกัน ดังนั้นคุณจะต้อง "สอน" 1C เพื่อทำความเข้าใจช่วงเวลาที่ผู้ใช้เข้าใจ กล่าวคือ:
1) ไม่ได้ระบุวันเริ่มต้นงวดและวันสิ้นสุดงวด -> เอกสารทั้งหมด
2). ระบุเฉพาะจุดเริ่มต้นของรอบระยะเวลา -> เอกสารทั้งหมดที่เริ่มต้นจากจุดเริ่มต้นของรอบระยะเวลา
3). นอกจากนี้ เราจะตรวจสอบว่าสิ้นสุดระยะเวลา >= เริ่มต้นช่วงเวลา และหากไม่เป็นความจริง เราจะถือว่าไม่มีการระบุการสิ้นสุดระยะเวลา กล่าวคือ 2).
จากข้อมูลข้างต้น นิพจน์สำหรับพารามิเตอร์วันที่สิ้นสุดจะมีลักษณะดังนี้:

เลือกเมื่อ &Period.EndDate=DATETIME(1,1,1) จากนั้น DATETIME(3999,12,31,23,59,59) มิฉะนั้น เลือกเมื่อ &Period.EndDate<&Период.ДатаНачала ТОГДА ДАТАВРЕМЯ(3999,12,31,23,59,59) ИНАЧЕ &Период.ДатаОкончания КОНЕЦ КОНЕЦ

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

เมื่อสร้างรายงานบนระบบควบคุมการเข้าออก มักจะจำเป็นต้องแสดงการเลือกช่วงเวลาในแบบฟอร์มรายงาน เพื่อที่คุณจะได้ไม่ต้องป้อนวันที่ด้วยตนเอง แต่เลือกจากรายการช่วงเวลามาตรฐาน เช่น “ปี” , “เดือน”, “สัปดาห์” ฯลฯ สำหรับพารามิเตอร์ประเภทวันที่ คุณสามารถระบุได้เฉพาะ "ต้นปี เดือน ฯลฯ" เท่านั้น แต่ไม่ได้ระบุ "สิ้นสุด"

สิ่งสำคัญคือสำหรับประเภทข้อมูลจะมีเฉพาะประเภท "วันที่เริ่มต้นมาตรฐาน" เท่านั้น แต่ฉันก็ต้องการ "วันที่สิ้นสุดมาตรฐาน" ด้วย

มีวิธีแก้ไขปัญหานี้

  1. เรามาสร้างพารามิเตอร์ใหม่กันดีกว่า เรียกว่า “Period”
  2. ตั้งค่าพารามิเตอร์นี้เป็นประเภท “ช่วงเวลามาตรฐาน”
  3. ในฟิลด์ "นิพจน์" ของพารามิเตอร์ "เริ่มต้นของช่วงเวลา" และ "สิ้นสุดระยะเวลา" ซึ่งใช้ในการร้องขอ ให้ตั้งค่านิพจน์ " &Period.StartDate" และ " &ระยะเวลาวันที่สิ้นสุด” ตามลำดับ

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

เพื่อหลีกเลี่ยงปัญหานี้ คุณต้องลบพารามิเตอร์ตารางเสมือนทั้งหมด

และเพิ่มลงในตารางบนแท็บ "องค์ประกอบข้อมูล"

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

ตอนนี้การเลือกช่วงเวลาในแบบฟอร์มรายงานจะเป็นดังนี้

มาเริ่มกันเลย

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

ในกรณีของฉันนี่คือทะเบียนสะสม "การบัญชีงานระหว่างดำเนินการ"

ตัวอย่างเช่น เราจะระบุพารามิเตอร์อย่างเข้มงวด (ไม่ผ่านการกำหนดพารามิเตอร์แบบนุ่มนวลบนระบบควบคุมการเข้าออก):

โปรดทราบว่าความถี่ของตารางเสมือนคือ "บันทึก"

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

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

เราจะระบุประเภทที่มีอยู่ในแท็บ "พารามิเตอร์":

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

นี่คือรูปแบบของตัวเอง:

เดือน: DF="MMMM yyyy "y.""

วัน: DF = วว.ดด.ปปปป

สัปดาห์: DF = ""สัปดาห์จาก "dd.MM.yyyy"

ไตรมาส: DF = "ถึง "ไตรมาส" ปปปป "y."

ปี: DF = "yyyy "y.""

ทศวรรษ: DF = ""ทศวรรษด้วย "dd.MM.yyyy"

ครึ่งปี: DF = ""ครึ่งปีนับจาก" dd.MM.yyyy"

แค่นั้นแหละ. ผลลัพธ์ที่ได้คือภาพที่ยอดเยี่ยม:

คุณสมบัติบางประการของการตั้งค่าระยะเวลาในระบบควบคุมการเข้าออก

รายงานส่วนใหญ่ที่พัฒนาโดยใช้ Data Composition System (DCS) กำหนดให้ผู้ใช้ป้อนระยะเวลาที่จะสร้างรายงาน

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

เมื่อใช้รายงานนี้ ผู้ใช้จะกำหนดช่วงเวลาผ่านพารามิเตอร์ โปรดดูที่ ดูเหมือนว่าทุกอย่างจะถูกต้อง... แต่มีปัญหาเล็กน้อย:

ประเด็นก็คือผู้ใช้ส่วนใหญ่ "เข้าใจ" ระยะเวลาที่แตกต่างจาก 1C "เข้าใจ" ตัวอย่าง:

จากมุมมองของผู้ใช้ ไม่ได้ระบุระยะเวลา กล่าวคือ ไม่จำกัด กล่าวคือ ควรรวมเอกสารทั้งหมดที่ไม่มีการจำกัดวันที่ไว้ในรายงาน

“ จากมุมมอง” ของระบบ 1C มีการตั้งค่าช่วงเวลาพารามิเตอร์และ ... ขอบเขตทั้งสองเท่ากับ 01.01.0001 และเฉพาะเอกสารที่มีวันที่ว่างเท่านั้นที่จะรวมอยู่ในรายงานซึ่งในทางปฏิบัติหมายถึง จะไม่รวมเอกสารฉบับเดียว

จากมุมมองของผู้ใช้ รายงานควรรวมเอกสารทั้งหมดโดยเริ่มตั้งแต่วันที่ 28/01/2010

“ จากมุมมอง” ของ 1C ระยะเวลา 28/01/2553 - 01/01/0001 จะทำให้เกิดข้อยกเว้น

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

1) ไม่ได้ระบุวันเริ่มต้นงวดและวันสิ้นสุดงวด -> เอกสารทั้งหมด

2). ระบุเฉพาะจุดเริ่มต้นของรอบระยะเวลา -> เอกสารทั้งหมดเริ่มต้นจากจุดเริ่มต้นของรอบระยะเวลา

3). นอกจากนี้ เราจะตรวจสอบว่าสิ้นสุดระยะเวลา >= เริ่มต้นช่วงเวลา และหากไม่เป็นความจริง เราจะถือว่าไม่มีการระบุการสิ้นสุดระยะเวลา กล่าวคือ 2).

จากข้อมูลข้างต้น นิพจน์สำหรับพารามิเตอร์วันที่สิ้นสุดคือ:

เมื่อ &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 อาจเกิดข้อผิดพลาดและการดำเนินการที่ไม่ถูกต้องได้



 


อ่าน:


ใหม่

วิธีฟื้นฟูรอบประจำเดือนหลังคลอดบุตร:

วิธียกเลิกการสมัครสมาชิก Megogo บนทีวี: คำแนะนำโดยละเอียด วิธียกเลิกการสมัครสมาชิก Megogo

วิธียกเลิกการสมัครสมาชิก Megogo บนทีวี: คำแนะนำโดยละเอียด วิธียกเลิกการสมัครสมาชิก Megogo

ลักษณะและข้อดีของบริการ Megogo หนึ่งในบริการวิดีโอที่ใหญ่ที่สุดในยุโรปตะวันออกและ CIS คือ Megogo แค็ตตาล็อกประกอบด้วยมากกว่า 80,000...

วิธีแบ่งพาร์ติชันดิสก์โดยติดตั้ง Windows โดยไม่สูญเสียข้อมูล แบ่งพาร์ติชันดิสก์ 7

วิธีแบ่งพาร์ติชันดิสก์โดยติดตั้ง Windows โดยไม่สูญเสียข้อมูล แบ่งพาร์ติชันดิสก์ 7

การแบ่งฮาร์ดไดรฟ์ออกเป็นพาร์ติชั่นโดยใช้ Windows7 การแบ่งพาร์ติชั่นไดรฟ์ C:\ ใน Win7 เมื่อซื้อคอมพิวเตอร์หรือแล็ปท็อปเครื่องใหม่ที่มี...

เหตุใดผู้จัดพิมพ์จึงไม่สามารถแก้ไขทุกหน้าได้

เหตุใดผู้จัดพิมพ์จึงไม่สามารถแก้ไขทุกหน้าได้

ผู้ใช้ที่ทำงานใน Microsoft Word บ่อยครั้งอาจประสบปัญหาบางอย่างเป็นครั้งคราว เราได้หารือเกี่ยวกับวิธีแก้ปัญหากับหลายๆ คนแล้ว...

รหัสโปรโมชั่น Pandao สำหรับคะแนน

รหัสโปรโมชั่น Pandao สำหรับคะแนน

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

ฟีดรูปภาพ อาร์เอสเอส