1C - ความดีและความชั่ว การจัดเรียงคะแนนในโฮลิวาร์ประมาณ 1C

1C - ความดีและความชั่ว การจัดเรียงคะแนนในโฮลิวาร์ประมาณ 1C

เพื่อนและเพื่อนร่วมงาน เมื่อเร็ว ๆ นี้ มีบทความเกี่ยวกับHabréที่มีความเกลียดชังต่อ 1C เป็นแพลตฟอร์มการพัฒนาบ่อยขึ้น และคำปราศรัยของผู้พิทักษ์ บทความเหล่านี้ระบุปัญหาร้ายแรงอย่างหนึ่ง: ส่วนใหญ่แล้วนักวิจารณ์ของ 1C วิพากษ์วิจารณ์จากจุดยืนที่ "ไม่ชำนาญ" ดุว่าปัญหาที่แก้ไขได้ง่ายโดยพฤตินัยและในทางกลับกันไม่พูดถึงปัญหาที่มีความสำคัญและคุ้มค่าจริงๆ พูดคุยแล้วผู้ขายไม่ได้รับการแก้ไข ฉันเชื่อว่าการทบทวนแพลตฟอร์ม 1C อย่างมีสติและสมดุลนั้นสมเหตุสมผล อะไรทำได้ อะไรทำไม่ได้ อะไรควรทำแต่ไม่ได้ทำ และสำหรับของหวาน อะไรทำได้สุดเหวี่ยง และนักพัฒนาของคุณที่ %technology_name% จะทำเป็นเวลาร้อยปีโดยทิ้งมันไป งบประมาณประจำปีมากกว่าหนึ่งรายการ

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

ภายใต้การตัดมีการโจมตีอย่างหนักจำนวนมากใน 1C ต่อนักวิจารณ์ 1C บน Java, .NET และโดยทั่วไป... ยินดีต้อนรับแฟน ๆ เต็ม!

คำแถลง

ฉันคุ้นเคยกับหัวข้อสนทนามาตั้งแต่ประมาณปี พ.ศ. 2004 ฉันเขียนโปรแกรมมาตั้งแต่อายุ 6 ขวบ ตั้งแต่วินาทีแรกที่ฉันได้หนังสือเกี่ยวกับศาสตราจารย์ Fortran ที่มีการ์ตูนเกี่ยวกับแมว นกกระจอก และหนอนผีเสื้อ ฉันวิเคราะห์โปรแกรมที่แมวเขียนจากรูปภาพในหนังสือและพบว่าพวกมันทำอะไร ใช่ ตอนนั้นฉันไม่มีคอมพิวเตอร์จริงๆ แต่มีภาพวาดบนการแพร่กระจายของหนังสือ และฉันก็กดปุ่มกระดาษโดยสุจริต และป้อนคำสั่งที่ฉันสอดแนมบน cat X

จากนั้นก็มี BK0011 และ BASIC ที่โรงเรียน, C++ และแอสเซมเบลอร์ที่มหาวิทยาลัย ตามด้วย 1C และอื่นๆ อีกมากมายที่ฉันขี้เกียจเกินกว่าจะจำ ในช่วง 15 ปีที่ผ่านมา ฉันเกี่ยวข้องกับ 1C เป็นหลัก ไม่เพียงแต่ในแง่ของการเขียนโค้ดเท่านั้น แต่ยังเกี่ยวข้องกับ 1C โดยทั่วไปอีกด้วย การตั้งค่างาน การดูแลระบบ และการพัฒนาที่นี่ ในช่วง 5 ปีที่ผ่านมา ฉันมีส่วนร่วมในกิจกรรมที่เป็นประโยชน์ต่อสังคมในแง่ของการพัฒนาเครื่องมือการพัฒนาและระบบอัตโนมัติสำหรับผู้ใช้ 1C คนอื่นๆ การเขียนบทความและหนังสือ

มาตัดสินใจในเรื่องของการสนทนากัน

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

สถาปัตยกรรมระดับสูง 1C: Enterprise

ไม่ใช่เพื่ออะไรที่ฉันพูดถึงคำว่า "กรอบ" จากมุมมองของนักพัฒนา แพลตฟอร์ม 1C ถือเป็นเฟรมเวิร์กอย่างแท้จริง และคุณต้องปฏิบัติต่อมันเหมือนกับเป็นกรอบงาน คิดว่าเป็น Spring หรือ ASP.NET ซึ่งดำเนินการโดยรันไทม์บางตัว (JVM หรือ CLR ตามลำดับ) มันเกิดขึ้นที่ในโลกของการเขียนโปรแกรมทั่วไป (“ไม่ใช่ 1C”) การแบ่งออกเป็นเฟรมเวิร์ก เครื่องเสมือน และแอปพลิเคชันเฉพาะนั้นเป็นเรื่องปกติ เนื่องจากส่วนประกอบเหล่านี้มักจะได้รับการพัฒนาโดยผู้ผลิตหลายราย ในโลก 1C ไม่ใช่เรื่องปกติที่จะต้องแยกความแตกต่างระหว่างกรอบการพัฒนาและรันไทม์อย่างชัดเจน นอกจากนี้ 1C เองก็พัฒนาแอปพลิเคชันเฉพาะที่เขียนโดยใช้กรอบงานเป็นหลักเช่นกัน ส่งผลให้เกิดความสับสนบางประการ ดังนั้นภายในกรอบของบทความ เราจะต้องพิจารณา 1C จากหลายด้านพร้อมกัน และจำแนกตามแกนพิกัดหลายแกน และในแต่ละแกนพิกัดเราจะใส่พลั่วใส่สารสีน้ำตาลและดูคุณสมบัติข้อดีและข้อเสียของสารละลายที่มีอยู่

มุมมองของ 1C

1C สำหรับผู้ซื้อ

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

สำหรับผู้ซื้อ 1C นี่เป็นเวลาที่รวดเร็วในการออกสู่ตลาด เร็ว. เร็วกว่า Java, C# หรือ JS เฉลี่ย. รอบโรงพยาบาล. เป็นที่ชัดเจนว่าเว็บไซต์นามบัตรที่ใช้ React จะดีกว่า แต่แบ็กเอนด์ของระบบ WMS จะเปิดตัวเร็วขึ้นใน 1C

1C เป็นเครื่องมือ

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

  • แอปพลิเคชันเซิร์ฟเวอร์
  • แอปพลิเคชันที่มีการเงินปรากฏ
  • ด้วย UI สำเร็จรูป, ORM, การรายงาน, XML/JSON/COM/PDF/YourDataTransferingFormat
  • พร้อมการสนับสนุนกระบวนการและงานเบื้องหลัง
  • ด้วยการรักษาความปลอดภัยตามบทบาท
  • ด้วยตรรกะทางธุรกิจที่สามารถเขียนสคริปต์ได้
  • ด้วยความสามารถในการสร้างต้นแบบได้อย่างรวดเร็วและเวลาในการออกสู่ตลาดต่ำ

คุณไม่ต้องการ 1C หากคุณต้องการ:

  • การเรียนรู้ของเครื่อง
  • การคำนวณ GPU
  • คอมพิวเตอร์กราฟฟิค
  • การคำนวณทางคณิตศาสตร์
  • ระบบซีเอด
  • การประมวลผลสัญญาณ (เสียง วิดีโอ)
  • การโทร http สูงด้วย rps หลายแสน

1C ในฐานะบริษัทผู้ผลิต

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

  • บัญชีการเงิน
  • ปรับแต่งตรรกะทางธุรกิจได้ง่าย
  • ความเป็นไปได้ในการบูรณาการอย่างกว้างขวางในภูมิทัศน์ด้านไอทีที่ต่างกัน

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

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

- เฮ้ธุรกิจ คุณต้องการ OOP ใน 1C ของคุณหรือไม่?
- สิ่งนี้จะช่วยฉันแก้ปัญหาได้หรือไม่?
- ใครจะรู้...
- ถ้าอย่างนั้นก็ไม่จำเป็น

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

การจำแนกทางเทคโนโลยี

“ในความเป็นจริง Odinesniks พยายามอย่างเต็มที่เพื่อใช้รูปแบบที่ดีที่สุด ซึ่งคัดเลือกมาอย่างพิถีพิถันโดยนักระเบียบวิธีและนักพัฒนาแพลตฟอร์ม 1C ที่เอาใจใส่
เมื่อคุณเขียนโค้ดโง่ ๆ สำหรับฟอร์มที่มีการจัดการแบบง่าย ๆ ในความเป็นจริงคุณกำลังใช้อยู่ โมเดลวิวคอนโทรลเลอร์ с การผูกข้อมูลแบบสองทาง в เอ็นจิ้นข้อมูลแอปสามชั้น,ปรุงรส การทำแผนที่ความสัมพันธ์เชิงวัตถุระดับสูง บนฐาน คำอธิบายเมตาดาต้าที่ประกาศมีของตัวเอง ภาษาคิวรีที่ไม่ขึ้นกับแพลตฟอร์ม, C ส่วนต่อประสานผู้ใช้ที่ขับเคลื่อนด้วยข้อมูลการประกาศ การทำให้ซีเรียลไลซ์อย่างโปร่งใสอย่างสมบูรณ์ และภาษาโปรแกรมเชิงโดเมน.

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

แพลตฟอร์ม 1C มีสถาปัตยกรรม 3 ชั้นแบบคลาสสิกโดยตรงกลางคือแอปพลิเคชันเซิร์ฟเวอร์ (หรือการจำลองด้วยเงินเพียงเล็กน้อยสำหรับเจ้าของร้านรายย่อย) ใช้ MS SQL หรือ Postgres เป็น DBMS นอกจากนี้ยังมีการรองรับ Oracle และ IBM DB2 แต่นี่ค่อนข้างลึกลับ ไม่มีใครรู้ว่าจะเกิดอะไรขึ้นหากคุณใช้ 1C บนฐานข้อมูลเหล่านี้ภายใต้ภาระงานปานกลางและสูง ฉันเชื่อว่า 1C เองก็ไม่ทราบเรื่องนี้

ส่วนของไคลเอ็นต์เป็นไคลเอ็นต์แบบบางที่ติดตั้งบนเครื่องของผู้ใช้หรือเว็บไคลเอ็นต์ คุณสมบัติที่สำคัญคือโปรแกรมเมอร์ไม่ได้เขียนโค้ดที่แตกต่างกัน 2 รหัส พวกเขาเขียนแอปพลิเคชันเดียวในภาษาเดียว และคุณสามารถแสดงในเบราว์เซอร์ได้หากมีความต้องการหรือความจำเป็น ใครบ้างที่ต้องการสแต็กเต็มที่แท้จริงและภาษาเดียวสำหรับส่วนหน้าและส่วนหลัง node.js? พวกเขาไม่เคยทำสิ่งเดียวกันได้เป๊ะเลยจนกระทั่งจบ มีสแต็กเต็มจริงอยู่ แต่คุณจะต้องเขียนมันใน 1C การประชดแห่งโชคชะตาสิ่งต่าง ๆ เช่นนี้ :)

โซลูชัน SaaS บนคลาวด์ 1C:Fresh ยังทำงานในโหมดเบราว์เซอร์ซึ่งคุณไม่สามารถซื้อ 1C ได้ แต่เช่าฐานข้อมูลขนาดเล็กและติดตามการขาย Shawarma ที่นั่น เพียงแค่ในเบราว์เซอร์ โดยไม่ต้องติดตั้งหรือกำหนดค่าใดๆ

นอกจากนี้ยังมีไคลเอนต์รุ่นเก่าซึ่งใน 1C เรียกว่า "แอปพลิเคชันปกติ" มรดกคือมรดก ยินดีต้อนรับสู่โลกแห่งแอปพลิเคชันในปี 2002 แต่เรายังคงพูดถึงสถานะปัจจุบันของระบบนิเวศ

ส่วนเซิร์ฟเวอร์ 1C รองรับการทำคลัสเตอร์และปรับขนาดโดยการเพิ่มเครื่องจักรใหม่ให้กับคลัสเตอร์ มีสำเนาเสียหายจำนวนมากที่นี่ และจะมีส่วนแยกต่างหากในบทความเกี่ยวกับเรื่องนี้ กล่าวโดยสรุป นี่ไม่เหมือนกับการเพิ่มอินสแตนซ์เดียวกันสองสามอินสแตนซ์เบื้องหลัง HAProxy

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

1C - ความดีและความชั่ว การจัดเรียงคะแนนในโฮลิวาร์ประมาณ 1C

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

เริ่มจากภาษากันก่อน

ภาษาโปรแกรม 1C

ในขณะเดียวกันจุดแข็งและจุดอ่อนของระบบ ช่วยให้เข้าและอ่านได้ง่าย ในทางกลับกัน ยังไม่ได้รับการอัปเดตนับตั้งแต่เปิดตัวเวอร์ชัน 8 ในปี 2002 และล้าสมัยไปในทางศีลธรรม บางคนจะพูดว่า “ข้อเสียเปรียบหลักคือไม่มี OOP” และพวกเขาจะคิดผิด ประการแรก PLO ไม่เพียงชอบ Nuraliev เท่านั้น แต่ยังรวมถึง Torvalds ด้วย และประการที่สอง OOP ยังคงมีอยู่

จากมุมมองของนักพัฒนา เขามีเฟรมเวิร์กพร้อมคลาสพื้นฐานที่แสดงบน DBMS ให้เลือก นักพัฒนาสามารถใช้คลาสฐาน "Directory" และรับช่วงไดเร็กทอรี "Clients" จากคลาสนั้น โดยสามารถเพิ่มฟิลด์คลาสใหม่ลงไปได้ เช่น INN และ Address และหากจำเป็น ก็สามารถแทนที่ (แทนที่) เมธอดของคลาสพื้นฐาน เช่น เมธอด OnWrite/AtRecord

กรอบงานได้รับการออกแบบในลักษณะที่แทบไม่จำเป็นต้องมีการสืบทอดที่ลึกกว่า และข้อจำกัดใน OOP ในความคิดของฉันก็สมเหตุสมผล 1C มุ่งเน้นไปที่การพัฒนาที่ขับเคลื่อนด้วยโดเมน และทำให้คุณคิดถึงหัวข้อต่างๆ ของโซลูชันที่กำลังพัฒนาเป็นอันดับแรก ซึ่งนี่เป็นสิ่งที่ดี ไม่เพียงแต่ไม่มีการล่อลวงเท่านั้น แต่ยังไม่จำเป็นต้องเขียน DTO และ ViewModels ที่แตกต่างกัน 10 แบบเพื่อแสดงข้อมูลบางส่วนจากโดเมนที่ใดที่หนึ่ง นักพัฒนา 1C ดำเนินการกับเอนทิตีเดียวเสมอ โดยไม่ยุ่งเกี่ยวกับบริบทของการรับรู้ด้วยคลาสโหลที่มีชื่อคล้ายกัน ซึ่งเป็นตัวแทนของเอนทิตีเดียวกัน แต่มาจากอีกด้านหนึ่ง ตัวอย่างเช่น แอปพลิเคชัน .NET ใดๆ จำเป็นต้องมี ViewModels และ DTO ห้าหรือสองตัวสำหรับซีเรียลไลซ์เป็น JSON และการถ่ายโอนข้อมูลจากไคลเอนต์ไปยังเซิร์ฟเวอร์ และประมาณ 10-15% ของรหัสแอปพลิเคชันของคุณจะถูกใช้ในการถ่ายโอนข้อมูลจากคลาสหนึ่งไปยังอีกคลาสหนึ่งโดยใช้ปากกาหรือไม้ค้ำ เช่น AutoMapper จะต้องเขียนโค้ดนี้และต้องจ่ายเงินให้โปรแกรมเมอร์เพื่อสร้างและบำรุงรักษา

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

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

  • ความเป็นไปได้ในการพิมพ์ในระดับ เช่น TypeScript (เป็นผลให้เครื่องมือวิเคราะห์โค้ดที่ได้รับการพัฒนามากขึ้นใน IDE, การปรับโครงสร้างใหม่, jambs ที่น่ารังเกียจน้อยลง)
    ความพร้อมใช้งานของฟังก์ชันเป็นวัตถุชั้นหนึ่ง แนวคิดที่ซับซ้อนกว่าเล็กน้อย แต่จำนวนโค้ดสำเร็จรูปทั่วไปสามารถลดลงได้อย่างมาก ความเข้าใจของนักเรียนเกี่ยวกับโค้ด IMHO จะเพิ่มขึ้นอีกเนื่องจากปริมาณที่ลดลง
  • ตัวอักษรคอลเลกชันสากล ตัวเริ่มต้น สิ่งเดียวกันคือการลดจำนวนโค้ดที่ต้องเขียนและ/หรือมองด้วยตาของคุณ การเติมคอลเลกชันใช้เวลามากกว่า 9000% ของเวลาการเขียนโปรแกรม 1C การเขียนโดยไม่ใช้วากยสัมพันธ์จะยาว มีราคาแพง และเกิดข้อผิดพลาดได้ง่าย โดยทั่วไป จำนวน LOC ในโซลูชัน 1C เกินขีดจำกัดที่เป็นไปได้ทั้งหมดเมื่อเปรียบเทียบกับเฟรมเวิร์กแบบเปิดที่มีอยู่ และโดยทั่วไปแล้ว Java องค์กรทั้งหมดของคุณรวมกัน ภาษามีรายละเอียดมาก และสิ่งนี้จะลดลงตามปริมาณข้อมูล หน่วยความจำ เบรก IDE เวลา เงิน...
  • ในที่สุดการก่อสร้าง ฉันมีสมมติฐานว่าการก่อสร้างนี้หายไปเนื่องจากพวกเขาไม่พบการแปลเป็นภาษารัสเซียที่ประสบความสำเร็จ :)
  • ประเภทข้อมูลของตัวเอง (ไม่มี OOP) ประเภทอะนาล็อกจาก VB6 มันจะช่วยให้คุณไม่พิมพ์โครงสร้างโดยใช้ความคิดเห็นใน BSP และวิธีการเวทย์มนตร์ที่สร้างโครงสร้างเหล่านี้ เราได้รับ: โค้ดน้อยลง คำใบ้ผ่านจุด วิธีแก้ปัญหาที่รวดเร็วยิ่งขึ้น ข้อผิดพลาดน้อยลงเนื่องจากการพิมพ์ผิดและคุณสมบัติของโครงสร้างที่ขาดหายไป ขณะนี้การพิมพ์โครงสร้างผู้ใช้ขึ้นอยู่กับทีมพัฒนาของ Standard Subsystem Library ซึ่งต้องให้เครดิตในการเขียนความคิดเห็นเกี่ยวกับคุณสมบัติที่คาดหวังของโครงสร้างพารามิเตอร์ที่ส่งผ่านอย่างระมัดระวัง
  • ไม่มีน้ำตาลเมื่อทำงานกับการโทรแบบอะซิงโครนัสบนเว็บไคลเอ็นต์ callback-hell ในรูปแบบของ ProcessingNotifications เป็นไม้ยันชั่วคราวที่เกิดจากการเปลี่ยนแปลงอย่างกะทันหันใน API ของเบราว์เซอร์หลัก แต่คุณไม่สามารถใช้ชีวิตแบบนี้ได้ตลอดเวลา ข้อดีของ "ความเข้าใจของนักเรียน" ของโค้ดอะซิงโครนัสกำลังสูญหายไป มากขึ้นและมากขึ้น. เพิ่มการไม่สนับสนุนกระบวนทัศน์นี้ใน IDE หลักและสิ่งต่าง ๆ จะแย่ลงไปอีก

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

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

การพัฒนาสภาพแวดล้อม

สิ่งต่าง ๆ ก็ไม่ราบรื่นที่นี่เช่นกัน มีสภาพแวดล้อมการพัฒนาสองแบบ ประการแรกคือ Configurator ที่รวมอยู่ในการจัดส่ง อย่างที่สองคือสภาพแวดล้อม Enterprise Development Tools หรือเรียกสั้นๆ ว่า EDT ซึ่งพัฒนาบนพื้นฐานของ Eclipse

เครื่องมือกำหนดค่าให้งานการพัฒนาเต็มรูปแบบ รองรับคุณสมบัติทั้งหมด และเป็นสภาพแวดล้อมหลักในตลาด นอกจากนี้ยังล้าสมัยทางศีลธรรมและไม่พัฒนาตามข่าวลือ - เนื่องจากจำนวนหนี้ทางเทคนิคภายในตัวมันเอง สถานการณ์สามารถปรับปรุงได้โดยการเปิด API ภายใน (ในรูปแบบของมิตรภาพกับ สโนว์แมน A. Orefkova หรือบนพื้นฐานที่เป็นอิสระ) แต่ไม่ได้เป็นเช่นนั้น การปฏิบัติได้แสดงให้เห็นว่าชุมชนจะเขียนคุณลักษณะของตนเองใน IDE ตราบใดที่ผู้ขายไม่เข้าไปยุ่ง แต่เรามีสิ่งที่เรามี ตัวกำหนดค่านั้นยอดเยี่ยมในปี 2004-2005 ซึ่งชวนให้นึกถึง Visual Studio ในสมัยนั้นมาก ในบางสถานที่มันเจ๋งกว่าด้วยซ้ำ แต่มันก็ติดอยู่ในช่วงเวลานั้น

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

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

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

การจัดการการพัฒนา

ทุกอย่างที่นี่ดีกว่าการเขียนโค้ดอย่างเห็นได้ชัด โดยเฉพาะอย่างยิ่งเมื่อเร็วๆ นี้ เมื่อความพยายามของชุมชนได้เผยให้เห็นถึงปัญหาของการบริหารระบบอัตโนมัติ เปิดตัวต้นแบบที่เรียกร้องให้ทิ้งพื้นที่เก็บข้อมูล 1C ลงในกองขยะ และใช้คอมไพล์ การตำหนิอย่างรวดเร็ว การตรวจสอบโค้ด , การวิเคราะห์แบบคงที่, การปรับใช้อัตโนมัติ และอื่นๆ มีการเพิ่มคุณสมบัติหลายอย่างลงในแพลตฟอร์มที่เพิ่มระดับการทำงานอัตโนมัติของงานการพัฒนา อย่างไรก็ตาม คุณสมบัติทั้งหมดเหล่านี้ถูกเพิ่มเข้ามาเพื่อการพัฒนาผลิตภัณฑ์ขนาดใหญ่ของเราโดยเฉพาะเท่านั้น เมื่อเห็นได้ชัดว่าเราทำไม่ได้หากไม่มีระบบอัตโนมัติ มีการผสานอัตโนมัติ การเปรียบเทียบแบบสามทางกับ KDiff และทั้งหมดนั้น เปิดตัวบน Github gitconverterซึ่งพูดตามตรงแล้วถูกลากออกจากโครงการตามอุดมการณ์ gitsyncแต่ปรับเปลี่ยนให้เหมาะสมกับกระบวนการของบริษัทผู้จำหน่าย ต้องขอบคุณคนที่หัวแข็งจากโอเพ่นซอร์ส การพัฒนาอัตโนมัติใน 1C จึงเริ่มต้นขึ้น API แบบเปิดสำหรับผู้กำหนดค่า IMHO จะเปลี่ยนความล้าหลังทางศีลธรรมของ IDE หลักด้วย

ทุกวันนี้ การจัดเก็บแหล่งข้อมูล 1C ในคอมไพล์ที่มีการคอมมิตที่เชื่อมโยงกับปัญหาใน Jira บทวิจารณ์ใน Crucible ปุ่มกดจาก Jenkins และ Allure รายงานเกี่ยวกับการทดสอบโค้ดใน 1C และแม้แต่ การวิเคราะห์แบบคงที่ใน SonarQube - นี่ยังห่างไกลจากข่าว แต่เป็นกระแสหลักในบริษัทที่มีการพัฒนา 1C จำนวนมาก

การบริหาร

มีเรื่องจะพูดมากมายที่นี่ ประการแรก แน่นอนว่านี่คือเซิร์ฟเวอร์ (คลัสเตอร์เซิร์ฟเวอร์ 1C) สิ่งที่ยอดเยี่ยม แต่เนื่องจากความจริงที่ว่ามันเป็นกล่องดำที่สมบูรณ์ซึ่งบันทึกไว้ในรายละเอียดที่เพียงพอ แต่ในลักษณะเฉพาะ - การควบคุมการเปิดตัวการทำงานอย่างต่อเนื่องในโหมดไฮโหลดบนเซิร์ฟเวอร์หลายเครื่องนั้นเป็นเพียงไม่กี่คนที่สวม เหรียญพร้อมจารึก "ผู้เชี่ยวชาญเกี่ยวกับปัญหาทางเทคโนโลยี" เป็นที่น่าสังเกตว่าโดยหลักการแล้วการจัดการเซิร์ฟเวอร์ 1C ก็ไม่แตกต่างจากการดูแลเซิร์ฟเวอร์อื่น ๆ เป็นแอปพลิเคชันแบบมัลติเธรดบนเครือข่ายที่ใช้หน่วยความจำ CPU และทรัพยากรดิสก์ มอบโอกาสที่เพียงพอสำหรับการรวบรวมและการวินิจฉัยการวัดและส่งข้อมูลทางไกล

ปัญหาคือผู้ขายไม่ได้เสนออะไรเป็นพิเศษในแง่ของโซลูชันสำเร็จรูปสำหรับการวินิจฉัยนี้ ใช่ มี 1C: Instrumentation and Control Center แม้จะค่อนข้างดี แต่ก็มีราคาแพงมากและไม่ใช่ทุกคนที่มี มีการพัฒนาหลายอย่างในชุมชนสำหรับการเชื่อมต่อ Grafana, Zabbix, ELK และสิ่งอื่นๆ จากชุดผู้ดูแลระบบมาตรฐาน แต่ไม่มีโซลูชันเดียวที่เหมาะกับคนส่วนใหญ่ ภารกิจกำลังรอฮีโร่อยู่ และหากคุณเป็นธุรกิจที่วางแผนจะเปิดตัวบนคลัสเตอร์ 1C คุณต้องมีผู้เชี่ยวชาญ ของคุณเองจากภายในหรือจากภายนอก แต่คุณต้องการมัน เป็นเรื่องปกติที่จะมีบทบาทแยกต่างหากพร้อมความสามารถในการปฏิบัติงานของเซิร์ฟเวอร์ ไม่ใช่ผู้ใช้ 1C ทุกคนควรรู้สิ่งนี้ คุณเพียงแค่ต้องเข้าใจว่าจำเป็นต้องมีบทบาทดังกล่าว ลองใช้ SAP เป็นตัวอย่าง ที่นั่นโปรแกรมเมอร์ส่วนใหญ่จะไม่ลุกขึ้นจากเก้าอี้ด้วยซ้ำหากเขาถูกขอให้กำหนดค่าบางอย่างบนแอปพลิเคชันเซิร์ฟเวอร์ เขาอาจจะโง่และเขาจะไม่ละอายใจ ในวิธีการของ SAP มีบทบาทพนักงานแยกต่างหากสำหรับสิ่งนี้ ด้วยเหตุผลบางประการ ในอุตสาหกรรม 1C เชื่อกันว่าควรรวมสิ่งนี้ไว้ในพนักงานคนเดียวโดยมีเงินเดือนเท่ากัน มันเป็นภาพลวงตา

ข้อเสียของเซิร์ฟเวอร์ 1C

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

มิฉะนั้นเซิร์ฟเวอร์ 1C จะเป็นแอปพลิเคชันเดียวกันกับแอปพลิเคชันอื่นและได้รับการดูแลในลักษณะเดียวกันโดยการอ่านเอกสารและเคาะแทมบูรีน

นักเทียบท่า

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

ส่วนประกอบเชิงพาณิชย์

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

ตัวอย่างเช่น งานส่งใบแจ้งหนี้ PDF ให้กับลูกค้าสามารถแก้ไขได้ภายในหนึ่งชั่วโมงของการทำงานของนักเรียน ปัญหาเดียวกันใน .NET สามารถแก้ไขได้โดยการซื้อไลบรารี่ที่เป็นกรรมสิทธิ์ หรือเขียนโค้ดสองสามวันหรือหลายสัปดาห์โดยนักพัฒนาที่มีเคราเข้มงวด บางครั้งทั้งสองอย่างพร้อมกัน ใช่แล้ว ฉันแค่พูดถึงการสร้าง PDF เท่านั้น เราไม่ได้บอกว่าร่างกฎหมายนี้จะมาจากไหน ส่วนหน้าของเว็บจะต้องสร้างแบบฟอร์มที่ผู้ดำเนินการจะป้อนข้อมูลส่วนแบ็คเอนด์จะต้องสร้างแบบจำลอง dto สำหรับการถ่ายโอน JSON, แบบจำลองสำหรับการจัดเก็บในฐานข้อมูล, โครงสร้างของฐานข้อมูลเอง, การโยกย้ายไปยังมัน, การก่อตัวของกราฟิก แสดงบัญชีนี้และจากนั้นเท่านั้น - PDF ใน 1C งานทั้งหมดตั้งแต่เริ่มต้นจะเสร็จสิ้นภายในหนึ่งชั่วโมงพอดี

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

งานนี้นักพัฒนา .NET จะใช้เวลานานแค่ไหนในการติดตั้ง Visual Studio บนคอมพิวเตอร์ที่สะอาดไปจนถึงสาธิตให้ลูกค้าเห็น แล้วต้นทุนการพัฒนาล่ะ? สิ่งเดียวกัน

จุดแข็งของ 1C เป็นแพลตฟอร์ม

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

  1. ยูนิโค้ด อะไรจะง่ายกว่านี้ล่ะ? ไม่จำเป็นต้องมีการเข้ารหัส ASCII ไบต์เดียวในปี 2019 (ยกเว้นการรวมเข้ากับการเข้ารหัสแบบเก่า) ไม่เคย. แต่ไม่มี. อย่างไรก็ตาม บางคนในบางตารางใช้ varchar ไบต์เดียว และแอปพลิเคชันจะมีปัญหาในการเข้ารหัส ในปี 2015 การอนุญาต LDAP ของ gitlab ล้มเหลวเนื่องจากการทำงานที่ไม่ถูกต้องกับการเข้ารหัส JetBrains IDE ยังคงใช้งานไม่ได้กับ Cyrillic ในชื่อไฟล์ทุกที่ 1C ให้การแยกโค้ดแอปพลิเคชันคุณภาพสูงจากเลเยอร์ฐานข้อมูล ที่นั่นเป็นไปไม่ได้ที่จะพิมพ์ตารางในระดับต่ำและกลุ่มผู้เยาว์ที่ไร้ความสามารถในระดับฐานข้อมูลนั้นเป็นไปไม่ได้ ใช่ อาจมีปัญหาอื่นกับรุ่นน้องที่ไร้ความสามารถ แต่ปัญหาที่หลากหลายนั้นน้อยกว่ามาก ตอนนี้ คุณจะบอกฉันว่าแอปพลิเคชันของคุณได้รับการออกแบบอย่างถูกต้อง และชั้นการเข้าถึงฐานข้อมูลถูกแยกออกมาตามที่ควรจะเป็น ลองดูที่แอปพลิเคชัน Java แบบกำหนดเองขององค์กรของคุณอีกครั้ง อย่างใกล้ชิดและจริงใจ มโนธรรมของคุณรบกวนคุณหรือไม่? แล้วฉันก็ดีใจกับคุณด้วย
  2. การนับจำนวนเอกสาร/หนังสืออ้างอิง ใน 1C มันไม่ได้ยืดหยุ่นที่สุดและไม่ใช่ดีที่สุดอย่างแน่นอน แต่สิ่งที่พวกเขาทำในซอฟต์แวร์การธนาคารและในระบบบัญชีที่เขียนเอง มันเป็นเพียงความมืดมน ข้อมูลระบุตัวตนอย่างใดอย่างหนึ่งจะติดอยู่ (แล้ว "โอ้ ทำไมเราถึงมีช่องโหว่") หรือในทางกลับกัน จะสร้างเครื่องกำเนิดไฟฟ้าที่ทำงานร่วมกับการล็อกที่ระดับ DBMS (และจะกลายเป็นคอขวด) ในความเป็นจริงมันค่อนข้างยากที่จะทำงานที่ดูเหมือนง่ายนี้ - การแจงนับเอนทิตีแบบ end-to-end โดยมีส่วนที่ไม่ซ้ำใครตามชุดคีย์บางชุดคำนำหน้าเพื่อไม่ให้บล็อกฐานข้อมูลในระหว่างการป้อนข้อมูลแบบขนาน .
  3. ตัวระบุบันทึกในฐานข้อมูล 1C ตัดสินใจอย่างแน่วแน่ - ตัวระบุลิงก์ทั้งหมดเป็นการสังเคราะห์แท้จริงเพียงเท่านี้ และไม่มีปัญหากับฐานข้อมูลแบบกระจายและการแลกเปลี่ยน นักพัฒนาระบบอื่น ๆ สร้างบางสิ่งเช่นตัวตนอย่างดื้อรั้น (สั้นกว่า!) ลากมันเข้าไปใน GUI จนกว่าจะถึงเวลาสร้างอินสแตนซ์ที่เกี่ยวข้องหลายรายการ (จากนั้นพวกเขาจะถูกค้นพบ) คุณไม่มีสิ่งนี้เหรอ? สุจริต?
  4. รายการ 1C มีกลไกที่ค่อนข้างประสบความสำเร็จในการเพจผ่านรายการ (ขนาดใหญ่) และการนำทางผ่านรายการเหล่านั้น ขอจองด่วน-ใช้กลไกถูก! โดยทั่วไปหัวข้อนี้ค่อนข้างไม่เป็นที่พอใจและไม่สามารถแก้ไขได้ในอุดมคติ: เป็นทั้งแบบสัญชาตญาณและเรียบง่าย (แต่มีความเสี่ยงที่จะมีชุดบันทึกขนาดใหญ่บนไคลเอนต์) หรือการเพจมีความคลาดเคลื่อนอย่างใดอย่างหนึ่ง พวกที่ทำเพจมักจะทำแบบคดโกง ผู้ที่สร้างแถบเลื่อนแบบตรงไปตรงมาจะเพิ่มฐานข้อมูล ช่องทาง และไคลเอนต์
  5. แบบฟอร์มที่ได้รับการจัดการ ไม่ต้องสงสัยเลยว่าอินเทอร์เฟซทำงานได้ไม่สมบูรณ์ในเว็บไคลเอ็นต์ แต่มันได้ผล แต่สำหรับระบบบัญชีและการธนาคารอื่นๆ การสร้างสถานที่ทำงานระยะไกลถือเป็นโครงการระดับองค์กร ข้อจำกัดความรับผิดชอบ: โชคดีสำหรับผู้ที่สร้างมันขึ้นมาบนเว็บแต่แรก สิ่งนี้จะไม่ส่งผลกระทบ
  6. แอพมือถือ ล่าสุด คุณยังสามารถเขียนแอปพลิเคชันบนมือถือได้ในขณะที่อยู่ในระบบนิเวศเดียวกัน ที่นี่ซับซ้อนกว่าเว็บไคลเอ็นต์เล็กน้อย เนื่องจากลักษณะเฉพาะของอุปกรณ์บังคับให้คุณเขียนเพื่ออุปกรณ์เหล่านี้โดยเฉพาะ แต่ถึงกระนั้น คุณไม่ได้จ้างทีมนักพัฒนามือถือแยกต่างหาก หากคุณต้องการแอปพลิเคชันสำหรับความต้องการภายในของบริษัท (เมื่อโซลูชันมือถือสำหรับปัญหาขององค์กรมีความสำคัญมากกว่าการออกแบบ UI สีเหลือง) คุณเพียงแค่ใช้แพลตฟอร์มเดียวกันทันที
  7. การรายงาน ในคำนี้ ฉันไม่ได้หมายถึงระบบ BI ที่มีข้อมูลขนาดใหญ่และกระบวนการ ETL ที่ล่าช้า นี่หมายถึงรายงานของเจ้าหน้าที่ฝ่ายปฏิบัติการที่ช่วยให้คุณสามารถประเมินสถานะการบัญชีได้ที่นี่และเดี๋ยวนี้ ยอดคงเหลือ การชำระบัญชีร่วมกัน การจัดลำดับใหม่ ฯลฯ 1C เปิดตัวครั้งแรกพร้อมกับระบบการรายงานพร้อมการตั้งค่าที่ยืดหยุ่นสำหรับการจัดกลุ่ม ตัวกรอง และการแสดงภาพทางฝั่งผู้ใช้ ใช่ มีอะนาล็อกที่เย็นกว่าในตลาด แต่ไม่อยู่ในกรอบของโซลูชันแบบออลอินวัน และบางครั้งก็มีราคาสูงกว่าโซลูชันแบบออลอินวันด้วย และบ่อยครั้งที่มันกลับกัน: การรายงานเท่านั้น แต่มีราคาแพงกว่าทั้งแพลตฟอร์ม และคุณภาพที่แย่กว่านั้น
  8. แบบฟอร์มที่สามารถพิมพ์ได้ คือใช้ .NET แก้ปัญหาการส่งสลิปเงินเดือนในรูปแบบ PDF ให้กับพนักงานทางอีเมล และตอนนี้งานพิมพ์ใบแจ้งหนี้ แล้วการบันทึกสำเนาของพวกเขาเป็น PDF เดียวกันล่ะ? สำหรับชื่อเล่น 1C การแสดงผลเค้าโครงใดๆ เป็น PDF คือโค้ด +1 บรรทัด ซึ่งหมายความว่า +40 วินาทีของเวลาทำงาน แทนที่จะเป็นวันหรือสัปดาห์ในภาษาอื่น เค้าโครงแบบฟอร์มที่พิมพ์ใน 1C นั้นง่ายต่อการพัฒนาอย่างเหลือเชื่อและทรงพลังพอที่จะแข่งขันกับคู่แข่งที่ต้องชำระเงิน ใช่ อาจมีโอกาสโต้ตอบไม่มากนักในเอกสารสเปรดชีต 1C คุณไม่สามารถรับไดอะแกรม 3 มิติพร้อมสเกลโดยใช้ OpenGL ได้อย่างรวดเร็ว แต่มันจำเป็นจริงๆเหรอ?

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

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

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

บินในครีม

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

  • ความน่าเชื่อถือของเซิร์ฟเวอร์ จำเป็นต้องมีผู้เชี่ยวชาญคุณภาพสูงจริงๆ ซึ่งสามารถรับประกันการทำงานที่ไม่หยุดชะงัก ฉันไม่ทราบถึงโปรแกรมการฝึกอบรมสำเร็จรูปสำหรับผู้เชี่ยวชาญดังกล่าวจากผู้ขาย มีหลักสูตรที่ต้องเตรียมตัวสำหรับการสอบ Expert แต่ในความคิดของฉันยังไม่เพียงพอ
  • สนับสนุน. ดูจุดก่อนหน้า หากต้องการได้รับการสนับสนุนจากผู้ขาย คุณต้องซื้อมัน ด้วยเหตุผลบางประการ สิ่งนี้จึงไม่ได้รับการยอมรับในอุตสาหกรรม 1C และด้วย SAP แทบจะเป็นสิ่งที่ต้องซื้อและไม่รบกวนใครเลย หากไม่มีการสนับสนุนจากองค์กรและไม่มีผู้เชี่ยวชาญ คุณอาจถูกทิ้งให้อยู่ตามลำพังกับข้อบกพร่องของ 1C
  • ถึงกระนั้น คุณไม่สามารถทำทุกอย่างด้วย 1C ได้อย่างแน่นอน นี่เป็นเครื่องมือและเช่นเดียวกับเครื่องมืออื่นๆ ก็มีข้อจำกัดในการนำไปใช้ ในภูมิทัศน์ 1C เป็นที่พึงปรารถนาอย่างยิ่งที่จะมีสถาปนิกระบบ "ที่ไม่ใช่ 1C"
  • ชื่อเล่น 1C ที่ดีนั้นไม่ได้ถูกกว่าโปรแกรมเมอร์ที่ดีในภาษาอื่น แม้ว่าโปรแกรมเมอร์ที่ไม่ดีจะมีราคาจ้างสูง ไม่ว่าพวกเขาจะเขียนด้วยภาษาใดก็ตาม

มาจุดจุดกันเถอะ

  • 1C เป็นเฟรมเวิร์กการพัฒนาแอปพลิเคชันอย่างรวดเร็ว (RAD) สำหรับธุรกิจและได้รับการปรับแต่งมาเพื่อสิ่งนี้
  • ลิงก์สามระดับพร้อมการรองรับ DBMS หลัก, UI ไคลเอนต์, ORM ที่ดีมาก และการรายงาน
  • ความเป็นไปได้มากมายสำหรับการบูรณาการกับระบบที่สามารถทำในสิ่งที่ 1C ไม่สามารถทำได้ หากคุณต้องการการเรียนรู้ของเครื่อง ให้ใช้ Python แล้วส่งผลไปที่ 1C ผ่าน http หรือ RabbitMQ
  • ไม่จำเป็นต้องพยายามทำทุกอย่างโดยใช้ 1C คุณต้องเข้าใจจุดแข็งของมันและใช้เพื่อวัตถุประสงค์ของคุณเอง
  • นักพัฒนาที่มุ่งความสนใจไปที่การเจาะเข้าไปในอุปกรณ์กรอบเทคโนโลยีและการออกแบบใหม่ทุก N ปีให้เป็นเอ็นจิ้นใหม่เบื่อกับ 1C ทุกอย่างอนุรักษ์นิยมมากที่นั่น
  • นักพัฒนาก็เบื่อเช่นกันเพราะผู้ผลิตกังวลน้อยมาก ภาษาที่น่าเบื่อ IDE ที่อ่อนแอ พวกเขาต้องการความทันสมัย
  • ในทางกลับกัน นักพัฒนาที่ไม่สามารถค้นพบความสนุกสนานจากการใช้และการเรียนรู้เทคโนโลยีอื่นที่พวกเขาชอบได้ ถือเป็นนักพัฒนาที่ไม่ดี พวกเขาจะสะอื้นและย้ายไปยังระบบนิเวศอื่น
  • นายจ้างที่ไม่อนุญาตให้ชื่อเล่น 1C เขียนอะไรบางอย่างใน Python ถือเป็นนายจ้างที่ไม่ดี พวกเขาจะสูญเสียพนักงานที่มีจิตใจอยากรู้อยากเห็น และแทนที่พวกเขาด้วยนักเขียนโค้ดลิง ซึ่งแม้จะเห็นด้วยกับทุกสิ่ง แต่จะลากซอฟต์แวร์ขององค์กรไปไว้ในหนองน้ำ มันยังคงต้องเขียนใหม่ ดังนั้นอาจจะดีกว่าถ้าลงทุนเล็กน้อยใน Python เร็วขึ้นสักหน่อย?
  • 1C เป็นบริษัทเชิงพาณิชย์และใช้งานคุณสมบัติต่างๆ ตามความสนใจและความสะดวกของตนเองเท่านั้น คุณไม่สามารถตำหนิเธอในเรื่องนี้ ธุรกิจต้องคิดถึงผลกำไร นั่นคือชีวิต
  • 1C สร้างรายได้ด้วยการขายวิธีแก้ปัญหาทางธุรกิจ ไม่ใช่ปัญหาของนักพัฒนาของ Vasya แนวคิดทั้งสองนี้มีความสัมพันธ์กัน แต่ลำดับความสำคัญคือสิ่งที่ฉันพูดอย่างแน่นอน เมื่อนักพัฒนา Vasya พร้อมที่จะชำระค่าใบอนุญาตส่วนบุคคลสำหรับ 1C: Resharper มันจะปรากฏขึ้นอย่างรวดเร็ว “Resharper” โดย A. Orefkova เป็นข้อพิสูจน์ในเรื่องนี้ หากผู้จำหน่ายสนับสนุนและไม่ต่อสู้กับมัน ตลาดสำหรับซอฟต์แวร์สำหรับนักพัฒนาก็จะปรากฏขึ้น ขณะนี้มีผู้เล่นหนึ่งคนครึ่งในตลาดนี้ที่มีผลการแข่งขันที่น่าสงสัย และทั้งหมดเป็นเพราะการบูรณาการกับ IDE นั้นเป็นลบและทุกอย่างทำโดยใช้ไม้ค้ำยัน
  • การฝึกฝนของผู้ควบคุมเครื่องจักรหลายเครื่องจะหายไปจากการลืมเลือน แอปพลิเคชันสมัยใหม่มีขนาดใหญ่เกินกว่าจะจดจำทั้งจากด้านโค้ดและด้านการใช้งานทางธุรกิจ เซิร์ฟเวอร์ 1C มีความซับซ้อนมากขึ้นเช่นกัน เป็นไปไม่ได้ที่จะรวบรวมความเชี่ยวชาญทุกประเภทไว้ในพนักงานคนเดียว สิ่งนี้ควรนำมาซึ่งความต้องการผู้เชี่ยวชาญซึ่งหมายถึงความน่าดึงดูดใจของอาชีพ 1C และการเพิ่มเงินเดือน หากก่อนหน้านี้ Vasya ทำงานแบบสามต่อหนึ่งเพื่อเงินเดือนเดียว ตอนนี้คุณต้องจ้าง Vasya สองคน และการแข่งขันระหว่าง Vasya จะช่วยเพิ่มการเติบโตโดยรวมของระดับของพวกเขาได้

ข้อสรุป

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

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

โปรดทราบว่าไม่มีกรอบการทำงานในอุดมคติและดูแลตัวเอง
ทั้งหมดดี!

ป.ล. ขอบคุณมาก ขับปัสสาวะ เพื่อช่วยในการจัดทำบทความ

เฉพาะผู้ใช้ที่ลงทะเบียนเท่านั้นที่สามารถเข้าร่วมในการสำรวจได้ เข้าสู่ระบบ, โปรด.

คุณมี 1C ในองค์กรของคุณหรือไม่?

  • 13,3% ไม่เลย71

  • 30,3% มี แต่เฉพาะในแผนกบัญชีที่ไหนสักแห่งเท่านั้น ระบบหลักบนแพลตฟอร์มอื่น162

  • 41,4% ใช่ กระบวนการทางธุรกิจหลักทำงานอยู่221

  • 15,0% 1C ต้องตาย อนาคตเป็นของ %technology_name%80

ผู้ใช้ 534 คนโหวต ผู้ใช้ 99 รายงดออกเสียง

ที่มา: will.com

เพิ่มความคิดเห็น