แบบสอบถาม 1C รวมถึงภาษาในตัวของแพลตฟอร์ม 1C:Enterprise มีฟังก์ชันสำหรับการทำงานกับวันที่ ช่วยลดความซับซ้อนในการแปลงวันที่ในแบบสอบถาม หลีกเลี่ยงการใช้ ปริมาณมากพารามิเตอร์ ลองดูที่ฟังก์ชันเหล่านี้

วิธีตั้งวันที่ในแบบสอบถาม 1C เป็นค่าคงที่

DATETIME (ปี เดือน วัน ชั่วโมง นาที วินาที)- ตัวเลือก ปี, เดือนและ วันเป็นข้อบังคับ ส่วนอย่างอื่นไม่บังคับ หากไม่ระบุเวลาระบบจะตั้งเวลาเริ่มต้นของวัน

ขอ. ข้อความ= "เลือก
วันที่และเวลา (2016,09,28,12,22,00)"
; // ผลลัพธ์: 28 กันยายน 2559 12:22:00 น

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

ขอ. ข้อความ= "เลือก
DATETIME (ปี (ที่มา.วันที่),09,28,12,22,00)
จาก Directory.Source AS Source"
;

วิธีรับการเริ่มต้นหรือสิ้นปีครึ่งปีไตรมาสเดือนทศวรรษสัปดาห์วันชั่วโมงนาทีในแบบสอบถาม 1C

ในกรณีนี้จะใช้ฟังก์ชันต่อไปนี้:

  • ระยะเวลาเริ่มต้น(วันที่, ระยะเวลา)
  • ระยะเวลาสิ้นสุด (วันที่, ระยะเวลา)

เป็นพารามิเตอร์ วันที่ค่าที่มีประเภทถูกส่งผ่าน วันที่.พารามิเตอร์ ระยะเวลา .

ขอ. ข้อความ= "เลือก
ระยะเวลาเริ่มต้น (DATETIME (2016,09,28,12,22,00), DECADE)"
; // ผลลัพธ์: 21 กันยายน 2559 0:00:00 น

ขอ. ข้อความ= "เลือก
ระยะเวลาสิ้นสุด (DATETIME (2016,09,28,12,22,00), QUARTER)"
; // ผลลัพธ์: 30 กันยายน 2559 23:59:59 น

ดังที่คุณเห็นจากตัวอย่าง คุณสามารถใช้ฟังก์ชันที่ซ้อนกันอื่นๆ ในฟังก์ชันเหล่านี้ได้

วิธีรับปี, วันของปี, ไตรมาส, เดือน, สัปดาห์, วันในสัปดาห์, วัน, ชั่วโมง, นาที, วินาทีจากวันที่ในแบบสอบถาม 1C

ในการดำเนินการนี้ มีฟังก์ชันที่เกี่ยวข้องซึ่งคุณต้องส่งวันที่เป็นพารามิเตอร์

  • การทำงาน ปี (วันที่)- ส่งคืนหมายเลขปี;
  • การทำงาน DAYYEAR (วันที่)— เพิ่มจำนวนวันในปี
  • การทำงาน ไตรมาส (วันที่)— ส่งคืนหมายเลขไตรมาส
  • การทำงาน เดือน (วันที่)- ส่งคืนหมายเลขเดือน
  • การทำงาน สัปดาห์ (วันที่)— ส่งกลับจำนวนสัปดาห์ในปี
  • การทำงาน วันในสัปดาห์ (วันที่)— ส่งกลับจำนวนวันในสัปดาห์ (วันจันทร์ — 1, วันอาทิตย์ — 7)
  • การทำงาน วัน (วันที่)- ส่งคืนจำนวนวันในเดือนนั้น
  • การทำงาน ชั่วโมง (วันที่)— ส่งคืนชั่วโมง;
  • การทำงาน นาที (วันที่)— ส่งคืนนาที;
  • การทำงาน วินาที (วันที่)— ส่งคืนวินาที

ขอ. ข้อความ= "เลือก
ปี(วันที่และเวลา (2559,09,28,12,22,00))"
- // ผลลัพธ์: 2559

ขอ. ข้อความ= "เลือก
สัปดาห์(วันที่และเวลา (2016,09,28,12,22,00))"
- // ผลลัพธ์: 40

ขอ. ข้อความ= "เลือก
วันธรรมดา(วันที่เวลา (2016,09,28,12,22,00))"
- // ผลลัพธ์: 3

ขอ. ข้อความ= "เลือก
ประจำปี(วันที่และเวลา (2016,09,28,12,22,00))"
- // ผลลัพธ์: 272

ขอ. ข้อความ= "เลือก
วัน(วันที่และเวลา (2559,09,28,12,22,00))"
- // ผลลัพธ์: 28

วิธีเพิ่มหรือลบวันที่หนึ่งปีครึ่งปีไตรมาสเดือนทศวรรษสัปดาห์วันชั่วโมงนาทีวินาทีในแบบสอบถาม 1C

เมื่อต้องการทำเช่นนี้ ให้ใช้ฟังก์ชัน AddToDate(วันที่ ระยะเวลา ค่า)

เป็นพารามิเตอร์ วันที่ค่าที่มีประเภทถูกส่งผ่าน วันที่.พารามิเตอร์ ระยะเวลาสามารถใช้ค่าใดค่าหนึ่งต่อไปนี้: ที่สอง, นาที ชั่วโมง วัน สัปดาห์ ทศวรรษ เดือน ไตรมาส ครึ่งปี ปี.

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

ขอ. ข้อความ= "เลือก
AddTODate(DATETIME(2016, 9, 28, 12, 22, 0), ครึ่งปี, 1)"
; // ผลลัพธ์: 28 มีนาคม 2560 12:22:00 น

ขอ. ข้อความ= "เลือก
AddKDate(DATETIME(2016, 9, 28, 12, 22, 0), DECADE, -1)"
; // ผลลัพธ์: 18 กันยายน 2559 12:22:00 น

วิธีคำนวณความแตกต่างของวันที่ในแบบสอบถาม 1C

เมื่อต้องการทำเช่นนี้ ให้ใช้ฟังก์ชัน DifferenceDate (วันที่ 1, วันที่ 2, ระยะเวลา)

พารามิเตอร์ วันที่1- วันที่จะถูกลบออก

พารามิเตอร์ วันที่ 2 —วันที่ที่จะลบ

พารามิเตอร์ ระยะเวลาสามารถใช้ค่าใดค่าหนึ่งต่อไปนี้: ที่สอง, นาที ชั่วโมง วัน เดือน ไตรมาส ปี- จะแสดงเป็นหน่วยที่เราต้องการได้ผลลัพธ์

ขอ. ข้อความ= "เลือก
DifferenceDate(DATETIME(2016, 9, 28, 12, 22, 0), DATETIME(2017, 9, 28, 12, 22, 0), QUARTER)"
- // ผลลัพธ์: 4

ขอ. ข้อความ= "เลือก
DifferenceDate(DATETIME(2016, 9, 28, 12, 22, 0), DATETIME(2017, 9, 28, 12, 22, 0), วินาที)"
; // ผลลัพธ์: 31,536,000

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

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

  • วิธีแปลงพารามิเตอร์ประเภทอื่นให้เป็นประเภทที่ต้องการ
  • วิธีกำหนดวันที่ว่างในคำขอ 1C
  • อะไรคือความแตกต่างระหว่างการจำกัดวันที่และเวลา?

เป็นคำถามเหล่านี้ที่เราจะพยายามตอบในบทความของเรา

วันที่คืออะไรและจะตรวจสอบได้อย่างไร

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

  • ปีที่เหตุการณ์เกิดขึ้น
  • เดือนของกิจกรรมนี้
  • วัน.

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

รูปแบบวันที่ที่มีอยู่ในโลกมีความแตกต่างอย่างมีนัยสำคัญ:

  1. ในรัสเซีย เราคุ้นเคยกับการให้ความสำคัญกับวันแรก จากนั้นจึงตามด้วยเดือนที่จัดงาน และในช่วงปลายปี
  2. ผู้ที่อาศัยอยู่ในสหรัฐอเมริกาจะเริ่มต้นวันที่ด้วยเดือน
  3. เช็ก โปแลนด์ และสโลวีเนียบันทึกช่วงเวลาในรูปแบบ ปี – เดือน – วัน

เป็นรูปแบบหลังที่แพลตฟอร์ม 1C ใช้

แปลงเป็นวันที่

เพื่อให้ได้พารามิเตอร์ประเภท Date จากหลายค่าหรือจากสตริง คุณต้องใช้โค้ดที่แสดงในรูปที่ 1 1

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

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

การนับถอยหลังในโปรแกรมเริ่มตั้งแต่ต้นวันที่ 1 มกราคม 0001 สำหรับโค้ดข้างต้น ค่านี้สามารถกำหนดได้ด้วยวิธีใดวิธีหนึ่งจากสองวิธี (รูปที่ 2)

ข้าว. 2

ในบรรทัดที่สอง เราละเว้นชั่วโมง นาที และวินาทีของเหตุการณ์ ซึ่งไม่มีผลกระทบต่อประสิทธิภาพของโค้ดของเราเลย

คุณสมบัติของการใช้วันที่ในแบบสอบถาม 1C

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

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

ข้าว. 3

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

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

ข้าว. 5

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

ขอบเขตวันที่และเวลา

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

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

เพื่อให้เข้าใจว่าสิ่งนี้เกิดขึ้นได้อย่างไรและทำไม ลองพิจารณาตัวอย่างง่ายๆ:

  1. ก่อนดำเนินการเอกสารการขายในเวลา 12 ชั่วโมง 31 นาที 36 วินาที ยอดคงเหลือตามระบบการตั้งชื่อน้ำตาลคือ 30 กิโลกรัม
  2. เอกสารตัดออก 10 กิโลกรัมตามเวลาที่กำหนด
  3. รายงานที่สร้างขึ้นในวันที่เอกสารเวลา 12 ชั่วโมง 31 นาที 36 วินาที ตามตารางที่เหลือจะแสดงยอดคงเหลือ 30 กิโลกรัม
  4. รายงานเดียวกันบนโต๊ะ ยอดคงเหลือและมูลค่าการซื้อขายในเวลาเดียวกันจะแสดงยอดคงเหลือ 20 กก.

สาเหตุของพฤติกรรมนี้คืออะไรและจะหลีกเลี่ยงได้อย่างไร?

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

มีหลายวิธีในสถานการณ์นี้:

  1. เมื่อใช้ตาราง Remains ให้ระบุเวลาที่มากกว่าจุดที่ระบุ 1 วินาที
  2. ใช้เฉพาะตารางคงเหลือและมูลค่าการซื้อขาย (ไม่ใช่ตัวเลือกที่เหมาะสมที่สุดจากมุมมองของประสิทธิภาพ)
  3. ใช้แนวคิดเรื่องขอบเขต

ตัวเลือกสุดท้ายสามารถแสดงได้ด้วยรหัสที่แสดงในรูปที่ 1 6.

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

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

ตัวอย่างการทำงานกับวันที่ในแบบสอบถาม 1C

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

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

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

วันที่และเวลา (1, 1, 1)

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

เลือกใบเสร็จรับเงินไปยังบัญชีปัจจุบัน เชื่อมโยง AS จากเอกสาร ใบเสร็จรับเงินไปยังบัญชีปัจจุบัน โดยที่ใบเสร็จรับเงินไปยังบัญชีปัจจุบัน 10, 23, 59, 59)

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

  • จุดเริ่มต้นของช่วงเวลาพารามิเตอร์ระบุวันที่และช่วงเวลาในบริบทที่จำเป็นเพื่อให้ได้จุดเริ่มต้นของวันที่ ใช้ในการแปลงวันที่เป็นรูปแบบอมตะ ในการดำเนินการนี้ คุณต้องตั้งค่าพารามิเตอร์ตัวที่สอง – “DAY”;
เริ่มต้นงวด(,) เริ่มต้นงวด(&วันที่, วัน) ระยะเวลา>วันที่>
  • สิ้นสุดระยะเวลาคำสั่งที่คล้ายกันที่ส่งคืนวันที่สุดท้ายในรูปของหน่วยที่ระบุในพารามิเตอร์
  • เพิ่มวันที่ช่วยให้คุณได้รับวันที่มากกว่า ปริมาณที่ระบุหน่วยเวลาที่กำหนด พารามิเตอร์ฟังก์ชันประกอบด้วยวันที่ หน่วยเวลา และตัวเลข
ADDKDATE(,) ADDKDATE(&วันที่, วัน, 10) ปริมาณ>ประเภท>วันที่>
  • วันที่แตกต่างรับค่าส่วนต่างระหว่างวันที่ในหน่วยที่ระบุ
DIFFERENCEDATE(,) DIFFERENCEDATE(&Date1, &Date2, DAY) ประเภท>วันที่2>วันที่1>
  • วันในสัปดาห์ส่งกลับเลขลำดับของวันใดวันหนึ่งในสัปดาห์

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

การเลือก WHENWEEKDAY(&CurrentDate) = 1 จากนั้น "วันจันทร์" WHENWEEKDAY(&CurrentDate) = 2 จากนั้น "วันอังคาร" WHENWEEKDAY(&CurrentDate) = 3 จากนั้น "วันพุธ" WHENWEEKDAY(&CurrentDate) = 4 จากนั้น "วันพฤหัสบดี" เมื่อวัน สัปดาห์(&CurrentDate) = 5 จากนั้น "วันศุกร์" เมื่อไหร่ของสัปดาห์(&CurrentDate) = 6 จากนั้น "วันเสาร์" มิฉะนั้น "วันอาทิตย์" จะสิ้นสุด

การแปลงประเภทในแบบสอบถาม 1C จากตัวเลขหรือสตริงเป็นวันที่นั้นเป็นงานที่ต้องใช้แรงงานมาก คุณสามารถรับวันที่จากตัวเลขได้โดยใช้ฟังก์ชัน DATETIME จากสตริง โดยการรวมฟังก์ชัน SUBSTRING และโครงสร้าง SELECT WHEN THEN ELSE ด้วยเหตุนี้ นักพัฒนาจึงต้องการรับวันที่จากประเภทอื่นในโมดูลและส่งต่อไปยังคำขอโดยใช้พารามิเตอร์ ขออภัย การดำเนินการนี้ไม่สามารถทำได้เสมอไป ดังนั้นคุณต้องเปลี่ยนรูปแบบวันที่ในคำขอ

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

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

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

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

ExampleRequest = คำขอใหม่;
ตัวอย่าง Request.Text = "
|เลือก
- AdvanceReportAttachedFiles.Link
|จาก
- Directory.AdvanceReportAttachedFilesAS AdvanceReportAttachedFiles
|ที่ไหน
- AdvanceReportAttachedFiles.Date< &ТекДата»;
ตัวอย่าง Request.SetParameter("CurrentDate", CurrentDate());

วันที่กำหนดเอง

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

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

ภายใน ตัวอย่างนี้ไฟล์ทั้งหมดที่แนบมากับรายงานค่าใช้จ่ายจนถึงสิ้นปี 2559 จะได้รับ โดยเราจะระบุชั่วโมง นาที และวินาที เพื่อเปรียบเทียบช่วงเวลา “วันที่ 31 ธันวาคม 2559 23:59:59 น.”

เลือก
AdvanceReportAttachedFiles.Link
จาก
Directory.AdvanceReportAttachedFiles AS AdvanceReportAttachedFiles
ที่ไหน
AdvanceReportAttachedFiles.Date< ДАТАВРЕМЯ(2016, 12, 31, 23, 59, 59)

วันที่ว่างเปล่า

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