อาร์เรย์ฟังก์ชันรวม SKD 1 วินาที เอสเคดี. การแสดงข้อมูลแบบตารางในเซลล์เดียว สร้างรายงานใหม่

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


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

ดังนั้น ตอนนี้จึงจำเป็นต้องคำนวณผลรวมสำหรับการจัดกลุ่มข้างต้น (“คลังสินค้า”, “ประเภทคลังสินค้า”) และผลรวมโดยรวม
เมื่อต้องการทำเช่นนี้ ให้ใช้ฟังก์ชัน คำนวณ ExpressionWithGroupArray:
ประเมินการแสดงออกกับกลุ่มพันธมิตร (ประเมินผลกับกลุ่มพันธมิตร)
ไวยากรณ์:
ประเมิน ExpressionWithGroupArray(,)
คำอธิบาย:
ฟังก์ชันส่งคืนอาร์เรย์ ซึ่งแต่ละองค์ประกอบจะมีผลลัพธ์ของการประเมินนิพจน์สำหรับการจัดกลุ่มตามฟิลด์ที่ระบุ
เมื่อสร้างโครงร่าง เครื่องมือจัดวางโครงร่างจะแปลงพารามิเตอร์ฟังก์ชันเป็นเงื่อนไขของฟิลด์โครงร่างการจัดองค์ประกอบข้อมูล ตัวอย่างเช่น ฟิลด์บัญชีจะถูกแปลงเป็น DataSet.Account
เมื่อสร้างนิพจน์สำหรับเอาต์พุตของฟิลด์ที่กำหนดเองซึ่งนิพจน์ประกอบด้วยฟังก์ชัน CalculateArrayWithGroupArray() เท่านั้น ตัวสร้างเค้าโครงจะสร้างนิพจน์เอาต์พุตเพื่อให้ข้อมูลเอาต์พุตได้รับการสั่งซื้อ ตัวอย่างเช่น สำหรับฟิลด์แบบกำหนดเองที่มีนิพจน์:

CalculateExpressionWithGroupArray("จำนวน (จำนวนการหมุนเวียน)", "คู่สัญญา")
ตัวสร้างเค้าโครงจะสร้างนิพจน์ต่อไปนี้สำหรับเอาต์พุต:

ConnectRows(Array(Order(CalculateExpressionWithGroupingValueTable("View(Sum(DataSet.AmountTurnover)),Sum(DataSet.AmountTurnover)",,"DataSet.Account"),"2")))

ตัวเลือก:

ประเภท: สตริง. นิพจน์ที่จะประเมิน สตริง ตัวอย่างเช่น Amount(AmountTurnover)

ประเภท: สตริง. การจัดกลุ่มนิพจน์ฟิลด์ – นิพจน์ของการจัดกลุ่มฟิลด์ คั่นด้วยเครื่องหมายจุลภาค เช่น ผู้รับเหมา, พรรค.

ประเภท: สตริง. นิพจน์ที่อธิบายการเลือกที่ใช้กับเรกคอร์ดรายละเอียด นิพจน์ไม่รองรับการใช้ฟังก์ชันการรวม ตัวอย่างเช่น DeleteFlag = False

ประเภท: สตริง. นิพจน์ที่อธิบายการเลือกที่ใช้กับเรกคอร์ดกลุ่ม ตัวอย่างเช่น จำนวน(จำนวนการหมุนเวียน) > &พารามิเตอร์1
ตัวอย่าง:

สูงสุด(CalculateExpressionWithGroupArray("จำนวน(จำนวนการหมุนเวียน)", "คู่สัญญา"));

คำอธิบายโดยละเอียดของไวยากรณ์ของฟังก์ชันสามารถดูได้ที่ http://its.1c.ru/db/v837doc#bookmark:dev:TI000000582
ตอนนี้สำหรับการคำนวณเราทำซ้ำฟิลด์ "คำสั่งซื้อ" ด้วยค่าที่แตกต่างกัน "คำนวณโดย ... " โดยใช้นิพจน์ต่อไปนี้ โปรดทราบว่าในแต่ละระดับที่สูงกว่าจะใช้ค่าของระดับที่ต่ำกว่าการจัดกลุ่ม .

เป็นผลให้เราได้รับการก่อสร้างดังต่อไปนี้:

การใช้ Data Composition Scheme (DCS) อย่างเหมาะสมช่วยให้คุณ:

  • ลดเวลาที่ต้องใช้ในการพัฒนารายงานลงอย่างมาก
  • กำจัดความจำเป็นในการสร้าง แบบฟอร์มควบคุมโปรเซสเซอร์;
  • รับผลลัพธ์ที่สวยงามพร้อมความเป็นไปได้ในการปรับแต่งเพิ่มเติมโดยผู้ใช้

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

เขตข้อมูลจากการคำนวณคืออะไร

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

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

ฟิลด์ที่มีการคำนวณช่วยให้คุณสามารถดำเนินการบางอย่างกับชุดข้อมูลที่สร้างขึ้น:

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

มาดูรายการนี้กัน

อาร์เรย์ของค่าในเซลล์เดียว

มาจำลองสถานการณ์ที่จำเป็นต้องรับหมายเลขเอกสารการรับทั้งหมดสำหรับคู่สัญญาในเซลล์ที่แยกต่างหาก:


ดังนั้นเราจึงได้สร้างฟิลด์การคำนวณเพิ่มเติมในโครงการของเรา


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

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

  1. ตัวแยกองค์ประกอบ – ระบุว่าอักขระตัวใดที่จะแยกองค์ประกอบอาร์เรย์หนึ่งหรือแถวหนึ่งของตารางค่าจากอีกแถวหนึ่ง (ในกรณีของเราเราละเว้นพารามิเตอร์นี้และกำหนดตัวแบ่งบรรทัดตามค่าเริ่มต้น)
  2. ตัวคั่นคอลัมน์ – อักขระที่ใช้แยกคอลัมน์ของตารางค่า (จะใช้เครื่องหมายอัฒภาคเป็นค่าเริ่มต้น)

การเข้าถึงฟังก์ชันการส่งออกของโมดูลทั่วไป

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

ประเด็นสำคัญบางประการ:

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

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


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

สำนวนภาษาเค้าโครง

บ่อยครั้งในงานของนักพัฒนาสถานการณ์เกิดขึ้นเมื่อจำเป็นต้องแสดงผลการแบ่งในฟิลด์ ACS:

  1. คำนวณต้นทุนเฉลี่ยของสินค้า
  2. ความสนใจทุกประเภท
  3. การคำนวณรายได้เฉลี่ย ฯลฯ

เพื่อหลีกเลี่ยงปัญหา ในกรณีเหล่านี้ แนะนำให้ป้อนการทดสอบการหารด้วย 0 ลงในช่องที่คำนวณ

ซึ่งสามารถทำได้โดยใช้การก่อสร้าง “ทางเลือกเมื่อ….จากนั้น… มิฉะนั้น… สิ้นสุด”

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

สมมติว่าคุณสามารถรับ Document Amount จากบรรทัดก่อนหน้าของคำขอของเราโดยระบุค่า Calculate Expression ("Document Amount", "Previous Amount") ในช่อง "Expression"

ขอให้เป็นวันที่ดีผู้อ่านบล็อกของเรา! วันนี้ผมอยากจะเล่าให้ฟังเกี่ยวกับ ตัวอย่างจริง, ยังไง
ใช้ฟังก์ชัน ACS Array และ JoinStrings. ในบทความเกี่ยวกับ

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

ลักษณะที่ปรากฏของตัวอย่างรายงาน 1C โดยใช้สอง ฟังก์ชั่นเอซีเอส อาร์เรย์และ เชื่อมต่อแถวต่อไป:

คำชี้แจงปัญหาในการใช้ฟังก์ชัน ACS Array และ JoinStrings

ภารกิจ: คุณต้องแทรกหมายเลขการขายทั้งหมดสำหรับผลิตภัณฑ์หนึ่งรายการลงในเซลล์เดียว

บางอย่างเช่น: ระบบการตั้งชื่อ | ปริมาณ | 001, 002 ฯลฯ |

เราจะใช้คำขอในการลงทะเบียนสะสม "การขาย TMZ"

เลือก
การดำเนินการตาม TMZ นายทะเบียน. ตัวเลข,
การดำเนินการตาม TMZ ศัพท์เฉพาะ
การดำเนินการตาม TMZ นายทะเบียน
การดำเนินการตาม TMZ ปริมาณการหมุนเวียน
จาก
ทะเบียนสะสม. การดำเนินการตาม TMZ การปฏิวัติ
(, , นายทะเบียน, ) วิธีใช้ TMZ

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

การดำเนินงานโดยใช้ฟังก์ชัน SKD Array และ ConnectRows


มีการใช้ขั้นตอนเดียวกันแต่มีการเพิ่มเติมบางอย่างเพื่อสร้าง
.

คำอธิบายของฟังก์ชัน JoinStrings

เข้าร่วม Strings

ใช้เพื่อเชื่อมสตริงให้เป็นสตริงเดียว

ไวยากรณ์:

ConnectRows(ค่า, ItemSeparator, ColumnSeparator)

ตัวเลือก:

  1. ความหมาย— สำนวนที่ต้องรวมเป็นบรรทัดเดียว
    หากเป็นอาร์เรย์ องค์ประกอบของอาร์เรย์จะรวมกันเป็นสตริง
    หากเป็น ValueTable คอลัมน์และแถวทั้งหมดของตารางจะรวมกันเป็นแถว
  2. ตัวแยกองค์ประกอบ- สตริงที่มีข้อความที่จะใช้เป็น
    ตัวคั่นระหว่างองค์ประกอบอาร์เรย์และแถวตารางค่า ค่าเริ่มต้น – อักขระป้อนบรรทัด
  3. ตัวแยกคอลัมน์-สตริงที่มีข้อความที่จะใช้เป็นตัวคั่น
    ระหว่างคอลัมน์ของตารางค่า ค่าเริ่มต้น ";".

เข้าสู่เว็บไซต์ในฐานะนักเรียน

เข้าสู่ระบบในฐานะนักเรียนเพื่อเข้าถึงสื่อการสอนของโรงเรียน

ระบบการจัดองค์ประกอบข้อมูล 1C 8.3 สำหรับผู้เริ่มต้น: การนับผลลัพธ์ (แหล่งข้อมูล)

จุดประสงค์ของบทเรียนนี้คือ:

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

สร้างรายงานใหม่

เช่นเดียวกับบทเรียนก่อนหน้านี้เราเปิดฐานข้อมูล " เดลี่"ในตัวปรับแต่งและสร้างรายงานใหม่ผ่านเมนู" ไฟล์"->"ใหม่...":

ประเภทเอกสาร - รายงานภายนอก:

ในแบบฟอร์มตั้งค่ารายงานให้เขียนชื่อ " บทเรียนที่ 3" และกดปุ่ม " เปิดแผนภาพองค์ประกอบข้อมูล":

ปล่อยชื่อสคีมาเริ่มต้นไว้แล้วคลิกปุ่ม " พร้อม":

การเพิ่มคำขอผ่านตัวสร้าง

บนแท็บ " ชุดข้อมูล" คลิก สีเขียวเครื่องหมายบวก และเลือก " เพิ่มชุดข้อมูล - แบบสอบถาม":

แทนที่จะเขียนข้อความคำขอด้วยตนเอง เราจะดำเนินการอีกครั้ง ตัวสร้างแบบสอบถาม:

บน "แท็บ" ตาราง"ลากโต๊ะ" อาหาร" จากคอลัมน์แรกถึงคอลัมน์ที่สอง:

เลือกจากตาราง " อาหาร“ช่องที่เราจะขอ ทำได้โดยลากและวางช่อง” ชื่อ", "รสชาติ", "สี" และ " ปริมาณแคลอรี่" จากคอลัมน์ที่สองถึงคอลัมน์ที่สาม:

มันกลับกลายเป็นเช่นนี้:

กดปุ่ม " ตกลง" - ข้อความคำขอถูกสร้างขึ้นโดยอัตโนมัติ:

การสร้างการตั้งค่าการนำเสนอรายงาน

ไปที่แท็บ " การตั้งค่า" และคลิกที่ ไม้กายสิทธิ์, โทร ผู้ออกแบบการตั้งค่า:

เลือกประเภทรายงาน " รายการ..." และกดปุ่ม " ไกลออกไป":

ลากจากคอลัมน์ด้านซ้ายไปทางขวาฟิลด์ที่จะแสดงในรายการแล้วคลิก " ไกลออกไป":

ลากจากคอลัมน์ด้านซ้ายไปยังฟิลด์ด้านขวา " สี" - มันจะเกิดขึ้น การจัดกลุ่มบรรทัดในรายงาน คลิก " ตกลง":

และนี่คือผลงานของนักออกแบบ ลำดับชั้นของรายงานของเรา:

  • รายงานโดยรวม
  • การจัดกลุ่ม "สี"
  • รายการโดยละเอียด - บรรทัดพร้อมชื่ออาหาร

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

การเปลี่ยนลำดับของคอลัมน์

แต่ขอเถอะ มาเปลี่ยนลำดับกันเถอะคอลัมน์ (ลูกศรขึ้นและลง) เพื่อให้มีลักษณะดังรูปด้านล่าง:

มาบันทึกรายงานและเปิดอีกครั้งในโหมดผู้ใช้:

เยี่ยมเลย ดีขึ้นมาก

มาสรุปเนื้อหาแคลอรี่กันดีกว่า

เป็นการดีที่จะสรุปปริมาณแคลอรี่ของอาหารตามกลุ่ม หากต้องการดูผลรวมแคลอรี่ของผลิตภัณฑ์ทั้งหมด เช่น สีขาวหรือสีเหลือง หรือค้นหาปริมาณแคลอรี่รวมของผลิตภัณฑ์ทั้งหมดในฐานข้อมูล

เพื่อการนี้มีกลไกในการคำนวณทรัพยากร

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

ในกรณีนี้ ในฟิลด์ ให้เลือกนิพจน์จากรายการแบบเลื่อนลง " ปริมาณ(แคลอรี่)" เนื่องจากผลรวมจะเป็นผลรวมขององค์ประกอบทั้งหมดที่รวมอยู่ในผลรวม:

เราบันทึกและสร้างรายงาน:

ตอนนี้เรามีผลลัพธ์สำหรับแต่ละกลุ่มและสำหรับรายงานโดยรวมแล้ว

ลองสรุป (เฉลี่ย) ในรูปแคลอรี่กัน

ตอนนี้เรามาทำให้มันปรากฏในคอลัมน์อื่นกันดีกว่า เฉลี่ยปริมาณแคลอรี่ของผลิตภัณฑ์ตามกลุ่มและในรายงานโดยรวม

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

ในการสร้างฟิลด์ "เสมือน" เราจะใช้กลไกนี้ เขตข้อมูลจากการคำนวณ.

ไปที่แท็บ " เขตข้อมูลจากการคำนวณ" และกด สีเขียวเครื่องหมายบวก:

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

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

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

มันกลับกลายเป็นเช่นนี้:

เราบันทึกและสร้างรายงาน:

ฟิลด์ปรากฏขึ้นและเราเห็นว่าค่าของมันคือค่าของฟิลด์ "แคลอรี่" ยอดเยี่ยม!

ในการทำเช่นนี้เราจะใช้กลไกที่เราคุ้นเคยอยู่แล้วอีกครั้ง ทรัพยากร(โดยสรุป). ไปที่แท็บ " ทรัพยากร“แล้วลากสนาม” ปริมาณแคลอรี่เฉลี่ย"จากคอลัมน์ซ้ายไปขวา:

นอกจากนี้ในคอลัมน์ " การแสดงออก"เลือก" เฉลี่ย(เฉลี่ยแคลอรี่)":

เราบันทึกและสร้างรายงาน:

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

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

มาแก้ไขข้อผิดพลาดกัน หากต้องการทำสิ่งนี้ ให้กลับไปที่แท็บ " การตั้งค่า", เลือก " รายการโดยละเอียด" อันดับแรกจากด้านบน (ขั้นตอนที่ 2) จากนั้น " รายการโดยละเอียด"จากด้านล่าง (ขั้นตอนที่ 3) ไปที่บุ๊กมาร์ก" เลือกแล้ว สาขา" และเราจะเห็นองค์ประกอบในคอลัมน์ด้านขวาของมัน " อัตโนมัติ".

องค์ประกอบ " อัตโนมัติ" - นี่ไม่ใช่ฟิลด์เดียว นี่เป็นหลายฟิลด์ที่จะอยู่ที่นี่โดยอัตโนมัติตามการตั้งค่าระดับที่สูงกว่า

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

องค์ประกอบ " อัตโนมัติ" ขยายออกไปในสาขาต่อไปนี้:

และนี่คือสนามของเรา" ปริมาณแคลอรี่เฉลี่ย“ซึ่งมาจากจุดนั้น” รายงาน“ตอนเราลากเขาไปนั่น. เอาออกเถอะทำเครื่องหมายที่ช่องถัดจากช่องนี้เพื่อลบเอาต์พุต

ในแง่ของการเปิดตัว 8.2.14 ที่กำลังจะมาถึง ฉันจะพยายามอธิบายฟังก์ชันใหม่บางอย่างของระบบการจัดองค์ประกอบข้อมูล

เปิดไดอะแกรมเค้าโครงข้อมูล โดยเฉพาะอย่างยิ่งในรายงานภายนอก เพื่อให้การแก้ไขง่ายขึ้น

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

1. ตั้งค่าคำขอในระบบควบคุมการเข้าออก

2. ตั้งค่าฟิลด์ที่คำนวณได้ในระบบควบคุมการเข้าออก

3. กำหนดโครงร่างข้อมูลบนแท็บการตั้งค่า

4. เปิดตัว 1C Enterprise 8.2.14 เปิดรายงาน เราสร้างเราได้รับ

คำอธิบายของฟังก์ชั่นใหม่:

1. วันที่ปัจจุบัน()

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

2. การแสดงออกทางคอมพิวเตอร์()

ไวยากรณ์:

คำนวณนิพจน์(,)

คำอธิบาย:

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

ฟังก์ชันจะคำนึงถึงการเลือกการจัดกลุ่ม แต่ไม่คำนึงถึงการเลือกแบบลำดับชั้น

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

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

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

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

ตัวเลือก

พิมพ์: เส้น. นิพจน์ที่จะประเมิน

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

ตัวอย่างเช่น:

ผลรวม(Sales.SumTurnover)/คำนวณ("Sum(Sales.SumTurnover)", "ทั้งหมด")

ใน ในตัวอย่างนี้ผลลัพธ์จะเป็นอัตราส่วนของผลรวมตามฟิลด์ ยอดขายจำนวนการหมุนเวียนการจัดกลุ่มบันทึกเป็นผลรวมของฟิลด์เดียวกันในเค้าโครงทั้งหมด

พิมพ์: เส้น. พารามิเตอร์สามารถรับค่าต่อไปนี้:

· ผลรวมทั้งสิ้น— นิพจน์จะถูกคำนวณสำหรับบันทึกการจัดกลุ่มทั้งหมด

· ลำดับชั้น— นิพจน์จะถูกประเมินสำหรับเรกคอร์ดลำดับชั้นพาเรนต์ ถ้ามี และสำหรับทั้งกลุ่ม หากไม่มีเรกคอร์ดลำดับชั้นพาเรนต์

· การจัดกลุ่ม— นิพจน์จะได้รับการประเมินสำหรับบันทึกการจัดกลุ่มกลุ่มปัจจุบัน

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

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

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

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

· อันดับแรก

· สุดท้าย (สุดท้าย)

· ก่อนหน้า

· ถัดไป (ถัดไป)

· ปัจจุบัน

· การจำกัดมูลค่า(ค่าขอบเขต) การจำกัดมูลค่า

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

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

หากเรกคอร์ดแรกอยู่นอกกลุ่ม จะถือว่าไม่มีเรกคอร์ด ตัวอย่างเช่น หากมี 3 เรคคอร์ด และคุณต้องการได้รับ First(4) ก็ถือว่าไม่มีเรคคอร์ด

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

ถ้า บันทึกสุดท้ายไปไกลกว่าการจัดกลุ่มก็ถือว่าไม่มีบันทึก ตัวอย่างเช่น หากมี 3 เรคคอร์ด และคุณต้องการรับ Last(4) ก็ถือว่าไม่มีเรคคอร์ด

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

หากเรกคอร์ดก่อนหน้านี้ไปไกลกว่าการจัดกลุ่ม (เช่น สำหรับเรกคอร์ดการจัดกลุ่มที่สอง คุณต้องได้รับ Previous(3)) จากนั้นจะได้รับเรกคอร์ดการจัดกลุ่มแรก

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

· ถัดไป (ถัดไป). คุณต้องได้รับเรกคอร์ดการจัดกลุ่มถัดไป หลังคำในวงเล็บ คุณสามารถระบุนิพจน์ได้ ซึ่งผลลัพธ์จะถูกใช้เป็นค่าชดเชยจากบันทึกการจัดกลุ่มปัจจุบัน ตัวอย่างเช่น Next(2) - รับรายการถัดไปจากบันทึกถัดไป

หากบันทึกถัดไปไปนอกเหนือการจัดกลุ่มจะถือว่าไม่มีบันทึก ตัวอย่างเช่น หากมี 3 รายการและรายการที่สามได้รับ Next() จะถือว่าไม่มีรายการ

เมื่อได้รับบันทึกถัดไปสำหรับยอดรวมกลุ่มถือว่าไม่มีบันทึก

· ปัจจุบัน. คุณต้องได้รับบันทึกปัจจุบัน

เมื่อดึงข้อมูลผลรวมการจัดกลุ่ม จะได้รับบันทึกแรก

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

เรกคอร์ดแรกที่มีค่าฟิลด์การเรียงลำดับมากกว่าหรือเท่ากับค่าที่ระบุจะถูกส่งกลับเป็นเรกคอร์ด ตัวอย่างเช่น หากใช้ฟิลด์ระยะเวลาเป็นฟิลด์การสั่งซื้อ และมีค่า 01/01/2010, 02/01/2010, 03/01/2010 และคุณต้องการรับ การจำกัดมูลค่า(DateTime(2010, 1, 15))จากนั้นจะได้รับบันทึกวันที่ 02/01/2010

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

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

พิมพ์: เส้น. ระบุกฎสำหรับกำหนดเรคคอร์ดก่อนหน้าหรือถัดไป ในกรณีที่มีหลายเรคคอร์ดที่มีมูลค่าการเรียงลำดับเหมือนกัน:

· แยกกันบ่งชี้ว่ามีการใช้ลำดับของบันทึกที่เรียงลำดับเพื่อกำหนดบันทึกก่อนหน้าและถัดไป ค่าเริ่มต้น

· ด้วยกันบ่งชี้ว่าบันทึกก่อนหน้าและถัดไปถูกกำหนดตามค่าของนิพจน์การเรียงลำดับ

ตัวอย่างเช่น หากลำดับผลลัพธ์เรียงลำดับตามวันที่:

วันที่ ชื่อเต็ม ความหมาย
1 01 มกราคม 2544

อีวานอฟ เอ็ม.

10
2 02 มกราคม 2544 เปตรอฟ เอส. 20
3 03 มกราคม 2544 ซิโดรอฟ อาร์. 30
4 04 มกราคม 2544 เปตรอฟ เอส. 40

แยกกัน, ที่:

§ รายการก่อนหน้าของรายการ 3 จะเป็นรายการ 2

ปัจจุบันปัจจุบัน(ตามพารามิเตอร์ เริ่มและ จบ) จากนั้นสำหรับบันทึก 2 ส่วนนี้จะประกอบด้วยหนึ่งระเบียน 2 นิพจน์จะเท่ากับ 20

หากค่าพารามิเตอร์เป็น ด้วยกัน, ที่:

§ รายการก่อนหน้าของรายการ 3 จะเป็นรายการ 1

§ ถ้าส่วนการคำนวณถูกกำหนดเป็น ปัจจุบันปัจจุบัน(ตามพารามิเตอร์ เริ่มและ จบ) จากนั้นสำหรับบันทึก 2 ส่วนนี้จะประกอบด้วยบันทึก 2 และ 3 นิพจน์ CalculateExpression("ผลรวม(มูลค่า)", ปัจจุบัน, ปัจจุบัน)จะเท่ากับ 50

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

CalculateExpression("Sum(SumTurnover)", "First", "ปัจจุบัน")

หากคุณต้องการรับค่าการจัดกลุ่มในบรรทัดก่อนหน้า คุณสามารถใช้นิพจน์ต่อไปนี้:

CalculateExpression("อัตรา", "ก่อนหน้า")

รายการ ใหม่ฟังก์ชั่น:

คำนวณ ExpressionWithGroupArray(,) -

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

คำนวณ ExpressionWithGroupValueTable(,) -

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

เติมมูลค่าแล้ว() - ส่งคืนค่า True หากค่าแตกต่างจากค่า ประเภทนี้ค่าเริ่มต้น นอกเหนือจาก NULL นอกเหนือจากการอ้างอิงที่ว่างเปล่า นอกเหนือจากไม่ได้กำหนด ค่าบูลีนจะถูกตรวจสอบสำหรับค่า NULL ตรวจสอบสตริงว่าไม่มีอักขระที่ไม่ใช่ช่องว่างหรือไม่

รูปแบบ(, ) - รับสตริงที่จัดรูปแบบของค่าที่ส่งผ่าน สตริงรูปแบบถูกตั้งค่าตามสตริงรูปแบบของระบบ 1C:Enterprise

สตริงย่อย(, , ) - ฟังก์ชั่นนี้ออกแบบมาเพื่อแยกสตริงย่อยออกจากสตริง

ความยาวสาย() - ฟังก์ชันนี้ออกแบบมาเพื่อกำหนดความยาวของสตริง พารามิเตอร์คือนิพจน์สตริง

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