1C - Καλό και κακό. Διάταξη σημείων σε holivars περίπου 1C

1C - Καλό και κακό. Διάταξη σημείων σε holivars περίπου 1C

Φίλοι και συνάδελφοι, πρόσφατα υπήρξαν πιο συχνά άρθρα σχετικά με το Habré με μίσος προς το 1C ως πλατφόρμα ανάπτυξης, και ομιλίες από τους υπερασπιστές του. Αυτά τα άρθρα εντόπισαν ένα σοβαρό πρόβλημα: τις περισσότερες φορές, οι επικριτές του 1C το επικρίνουν από τη θέση του «δεν το κατακτούν», επιπλήττουν προβλήματα που de facto λύνονται εύκολα και, αντίθετα, δεν αγγίζουν προβλήματα που είναι πραγματικά σημαντικά, αξίζει συζητούνται και δεν επιλύονται από τον πωλητή. Πιστεύω ότι είναι λογικό να διεξάγουμε μια νηφάλια και ισορροπημένη αναθεώρηση της πλατφόρμας 1C. Τι μπορεί να κάνει, τι δεν μπορεί να κάνει, τι πρέπει να κάνει αλλά δεν κάνει, και, για επιδόρπιο, τι κάνει με ένα χτύπημα, και οι προγραμματιστές σας στο %technology_name% θα κάνουν εκατό χρόνια, πετάοντάς το περισσότερο από έναν ετήσιο προϋπολογισμό.

Ως αποτέλεσμα, εσείς, ως διευθυντής ή αρχιτέκτονας, θα μπορείτε να κατανοήσετε με σαφήνεια ποια εργασία θα είναι επωφελής για εσάς να χρησιμοποιήσετε το 1C και πού πρέπει να καεί με ζεστό σίδερο. Ως προγραμματιστής στον κόσμο "non-1C", θα μπορείτε να δείτε τι υπάρχει στο 1C που προκαλεί φασαρία. Και ως προγραμματιστής 1C, θα μπορείτε να συγκρίνετε το σύστημά σας με τα οικοσυστήματα άλλων γλωσσών και να κατανοήσετε τη θέση σας στο σύστημα συντεταγμένων ανάπτυξης λογισμικού.

Κάτω από το κόψιμο υπάρχουν πολλές χοντρές επιθέσεις στο 1C, σε κριτικούς του 1C, σε Java, .NET και γενικά... Ο ανεμιστήρας είναι γεμάτος, καλώς ήρθες!

Δήλωση

Είμαι εξοικειωμένος με το θέμα της συζήτησης από το 2004 περίπου. Προγραμματίζω μάλλον από τα 6 μου, από τη στιγμή που πήρα ένα βιβλίο για τον καθηγητή Fortran με κόμικς για μια γάτα, ένα σπουργίτι και μια κάμπια. Ανέλυσα τα προγράμματα που έγραψε η γάτα από τις εικόνες του βιβλίου και ανακάλυψα τι έκαναν. Και ναι, δεν είχα πραγματικό υπολογιστή εκείνη την εποχή, αλλά υπήρχε ένα σχέδιο στην εξάπλωση του βιβλίου και ειλικρινά πάτησα τα κουμπιά του χαρτιού, εισάγοντας τις εντολές που είχα κατασκοπεύσει τη γάτα X.

Μετά ήταν το BK0011 και το BASIC στο σχολείο, η C++ και οι assemblers στο πανεπιστήμιο, μετά το 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 θα αποδειχθεί καλύτερος, αλλά το backend ενός συστήματος WMS θα ξεκινήσει πιο γρήγορα σε 1C.

1C ως εργαλείο

Κάθε τεχνολογική λύση έχει όρια εφαρμογής. Η 1C δεν είναι γλώσσα γενικής χρήσης· δεν ζει χωριστά από το πλαίσιό της. Συνιστάται να χρησιμοποιείτε 1C όταν χρειάζεστε:

  • εφαρμογή διακομιστή
  • εφαρμογή όπου εμφανίζονται τα οικονομικά
  • με έτοιμο UI, ORM, Reporting, XML/JSON/COM/PDF/YourDataTransferingFormat
  • με υποστήριξη για διαδικασίες και θέσεις εργασίας στο παρασκήνιο
  • με ασφάλεια βασισμένη σε ρόλους
  • με scriptable επιχειρηματική λογική
  • με δυνατότητα γρήγορης δημιουργίας πρωτοτύπου και χαμηλό χρόνο διάθεσης στην αγορά

Δεν χρειάζεστε 1C αν θέλετε:

  • μηχανική μάθηση
  • Υπολογισμοί GPU
  • γραφικά υπολογιστή
  • μαθηματικούς υπολογισμούς
  • σύστημα CAD
  • επεξεργασία σήματος (ήχος, βίντεο)
  • ανεβάστε κλήσεις http με εκατοντάδες χιλιάδες rps

1C ως κατασκευαστική εταιρεία

Αξίζει να καταλάβουμε ποια είναι η επιχείρηση της 1C ως κατασκευαστής λογισμικού. Η εταιρεία 1C πουλά λύσεις σε επιχειρηματικά προβλήματα μέσω αυτοματισμού. Διαφορετικές επιχειρήσεις, μεγάλες ή μικρές, αλλά αυτό πουλάει. Τα μέσα για την επίτευξη αυτού του στόχου είναι οι επιχειρηματικές εφαρμογές. Για λογιστική, λογιστική μισθοδοσίας κ.λπ. Για τη σύνταξη αυτών των εφαρμογών, η εταιρεία χρησιμοποιεί τη δική της πλατφόρμα ανάπτυξης επιχειρηματικών εφαρμογών. Ειδικά προσαρμοσμένο για κοινές εργασίες των ίδιων επιχειρηματικών εφαρμογών:

  • Χρηματοοικονομική Λογιστική
  • εύκολη προσαρμογή της επιχειρηματικής λογικής
  • ευρείες δυνατότητες ενσωμάτωσης σε ετερογενή τοπία πληροφορικής

Ως κατασκευαστής, η 1C πιστεύει ότι αυτή είναι η στρατηγική που σας επιτρέπει να εργάζεστε με συνεργάτες και πελάτες σε λειτουργία win-win. Μπορείτε να διαφωνήσετε με αυτό, αλλά αυτός είναι περίπου ο τρόπος με τον οποίο η εταιρεία προωθεί τον εαυτό της: έτοιμες λύσεις σε επιχειρηματικά προβλήματα που μπορούν να προσαρμοστούν γρήγορα από τους συνεργάτες και να ενσωματωθούν σε οποιοδήποτε τοπίο πληροφορικής.

Όλες οι αξιώσεις ή επιθυμίες για το 1C ως πλαίσιο θα πρέπει να εξετάζονται αποκλειστικά μέσα από αυτό το πρίσμα. «Θέλουμε το OOP σε 1C», λένε οι προγραμματιστές. «Πόσο θα μας κοστίσει η υποστήριξη του OOP στην πλατφόρμα, θα μας βοηθήσει αυτό να αυξήσουμε τις πωλήσεις κουτιών;» λέει η 1C. Ανοίγει το «πρίσμα» της πώλησης λύσεων σε επιχειρηματικά προβλήματα:

- Γεια, επιχείρηση, θέλετε OOP στο 1C σας;
- Θα με βοηθήσει αυτό να λύσω τα προβλήματά μου;
- Ποιός ξέρει...
- Τότε δεν χρειάζεται

Αυτή η προσέγγιση μπορεί να είναι καλή ή κακή ανάλογα με το ποιος την κοιτάζει, αλλά είναι ακριβώς έτσι. Μιλώντας για το γεγονός ότι δεν υπάρχει χαρακτηριστικό X στο 1C, πρέπει να καταλάβετε ότι δεν υπάρχει για κάποιο λόγο, αλλά στο πλαίσιο της επιλογής "κόστος υλοποίησης έναντι ποσού κέρδους".

Τεχνολογική ταξινόμηση

«Στην πραγματικότητα, οι Odinesniks κάνουν ό,τι μπορούν για να χρησιμοποιήσουν τα καλύτερα μοτίβα, προσεκτικά επιλεγμένα από φροντισμένους μεθοδολόγους και προγραμματιστές της πλατφόρμας 1C.
Όταν γράφετε τον ανόητο κώδικα σας για μια απλή διαχειριζόμενη φόρμα, στην πραγματικότητα χρησιμοποιείτε μοντέλο-προβολή-ελεγκτής с αμφίδρομη δέσμευση δεδομένων в μηχανισμός εφαρμογής τριών επιπέδων δεδομένων, αρωματισμένο αντικειμενική σχέση υψηλού επιπέδου στη βάση δηλωτική περιγραφή μεταδεδομένωνέχοντας το δικό του γλώσσα ερωτημάτων ανεξάρτητη από πλατφόρμα, Γ δηλωτική διεπαφή χρήστη βάσει δεδομένων, πλήρης διαφανής σειριοποίηση και γλώσσα προγράμματος προσανατολισμένη στον τομέα.

Εκεί που οι προγραμματιστές 1C διαφέρουν από τους δυτικούς συναδέλφους τους είναι στο PR. Τους αρέσει να δίνουν μεγάλο όνομα σε κάθε μαλακία και να τρέχουν μαζί τους σαν βρώμικη τσάντα».
Α. Ορέφκοφ

Η πλατφόρμα 1C έχει μια κλασική αρχιτεκτονική 3 επιπέδων, στο κέντρο της οποίας βρίσκεται ο διακομιστής εφαρμογών (ή η εξομοίωση του για λίγα χρήματα για τους μικρούς καταστηματάρχες). Ως DBMS χρησιμοποιείται είτε το MS SQL είτε το Postgres. Υπάρχει επίσης υποστήριξη για Oracle και IBM DB2, αλλά αυτό είναι μάλλον απόκρυφο· κανείς δεν ξέρει τι θα συμβεί εάν εφαρμόσετε το 1C σε αυτές τις βάσεις δεδομένων υπό μεσαίο και υψηλό φορτίο. Πιστεύω ότι η ίδια η 1C δεν το γνωρίζει αυτό.

Το τμήμα πελάτη είναι είτε ένας thin client εγκατεστημένος στο μηχάνημα του χρήστη είτε ένας πελάτης web. Το βασικό χαρακτηριστικό είναι ότι οι προγραμματιστές δεν γράφουν 2 διαφορετικούς κωδικούς, γράφουν μία εφαρμογή, σε μία γλώσσα και μπορείτε να την εμφανίσετε στο πρόγραμμα περιήγησης εάν υπάρχει επιθυμία ή ανάγκη. Ποιος ήθελε εκεί μια πραγματική πλήρη στοίβα και μια ενιαία γλώσσα για το front και το backend, node.js; Ποτέ δεν κατάφεραν να κάνουν ακριβώς το ίδιο πράγμα μέχρι το τέλος. Υπάρχει μια πραγματική πλήρης στοίβα, αλλά θα πρέπει να τη γράψετε σε 1C. Η ειρωνεία της μοίρας, τέτοια πράγματα :)

Η λύση cloud SaaS 1C:Fresh λειτουργεί επίσης σε λειτουργία προγράμματος περιήγησης, στην οποία δεν μπορείτε να αγοράσετε 1C, αλλά να νοικιάσετε μια μικρή βάση δεδομένων και να παρακολουθείτε τις πωλήσεις shawarma εκεί. Απλά στο πρόγραμμα περιήγησης, χωρίς να εγκαταστήσετε ή να ρυθμίσετε τίποτα.

Επιπλέον, υπάρχει ένας πελάτης παλαιού τύπου, ο οποίος στο 1C ονομάζεται "κανονική εφαρμογή". Το Legacy is legacy, καλώς ήρθατε στον κόσμο των εφαρμογών το 2002, αλλά μιλάμε ακόμα για την τρέχουσα κατάσταση του οικοσυστήματος.

Το τμήμα διακομιστή 1C υποστηρίζει ομαδοποίηση και κλιμάκωση με την προσθήκη νέων μηχανημάτων στο σύμπλεγμα. Αρκετά αντίγραφα έχουν σπάσει εδώ και θα υπάρχει ξεχωριστή ενότητα στο άρθρο σχετικά με αυτό. Εν ολίγοις, αυτό δεν είναι ακριβώς το ίδιο με την προσθήκη δύο ακριβώς ίδιων περιπτώσεων πίσω από το HAProxy.

Το πλαίσιο ανάπτυξης εφαρμογών χρησιμοποιεί τη δική του γλώσσα προγραμματισμού, η οποία μοιάζει περίπου με ένα ελαφρώς βελτιωμένο VB6 μεταφρασμένο στα ρωσικά. Για άτομα που μισούν τα πάντα ρωσικά, που δεν πιστεύουν ότι το "αν" μεταφράζεται ως "αν", προσφέρεται η δεύτερη επιλογή σύνταξης. Εκείνοι. Εάν θέλετε, μπορείτε να το γράψετε σε 1C με τέτοιο τρόπο ώστε να μην διακρίνεται από το VB.

1C - Καλό και κακό. Διάταξη σημείων σε holivars περίπου 1C

Αυτή ακριβώς η γλώσσα προγραμματισμού είναι ο κύριος λόγος για το μίσος των ψευδώνυμων της 1C προς την πλατφόρμα τους. Ας το παραδεχτούμε, όχι χωρίς λόγο. Η γλώσσα σχεδιάστηκε όσο το δυνατόν πιο απλή, σχεδιασμένη για να εκπληρώσει το μάντρα "DEVELOPERS, DEVELOPERS" σε κλίμακα τουλάχιστον στην ΚΑΚ. Η εμπορική ουσία μιας τέτοιας λύσης, κατά τη γνώμη μου, είναι ξεκάθαρα ορατή: περισσότεροι προγραμματιστές, μεγαλύτερη κάλυψη της αγοράς. Αυτό έγινε πραγματικότητα, σύμφωνα με διάφορες εκτιμήσεις από 45% έως 95%. Θα πω αμέσως ότι το γράψιμο στη γλώσσα που νομίζεις είναι πολύ πιο εύκολο. Και γνωρίζω πολλές γλώσσες προγραμματισμού.

Ας ξεκινήσουμε με τη γλώσσα.

Γλώσσα προγραμματισμού 1C

Ταυτόχρονα το δυνατό και το αδύνατο σημείο του συστήματος. Παρέχει εύκολη είσοδο και αναγνωσιμότητα. Από την άλλη, δεν έχει ενημερωθεί από την κυκλοφορία της έκδοσης 8 το 2002 και είναι ηθικά ξεπερασμένο. Κάποιος θα πει "το κύριο μειονέκτημα είναι ότι δεν υπάρχει OOP" και θα κάνει λάθος. Πρώτον, η PLO δεν συμπαθεί όχι μόνο τον Nuraliev, αλλά και τον Torvalds. Και δεύτερον, το OOP εξακολουθεί να υπάρχει.

Από την πλευρά του προγραμματιστή, έχει στη διάθεσή του ένα πλαίσιο με βασικές κλάσεις που εμφανίζονται στο DBMS. Ο προγραμματιστής μπορεί να πάρει τη βασική κλάση «Κατάλογος» και να κληρονομήσει τον κατάλογο «Πελάτες» από αυτήν. Μπορεί να προσθέσει νέα πεδία κλάσης σε αυτό, για παράδειγμα, INN και Διεύθυνση, και επίσης, εάν είναι απαραίτητο, μπορεί να παρακάμψει (παρακάμψει) μεθόδους της βασικής κλάσης, για παράδειγμα, τη μέθοδο OnWrite/AtRecord.

Το πλαίσιο είναι σχεδιασμένο με τέτοιο τρόπο που σπάνια χρειάζεται βαθύτερη κληρονομικότητα και ο περιορισμός στο OOP, κατά τη γνώμη μου, είναι λογικός. Το 1C εστιάζει στην Ανάπτυξη με γνώμονα τον τομέα και σας κάνει να σκεφτείτε, πρώτα απ 'όλα, τη θεματική περιοχή της λύσης που αναπτύσσεται, και αυτό είναι καλό. Όχι μόνο δεν υπάρχει πειρασμός, αλλά ούτε χρειάζεται να γράψετε 10 διαφορετικά DTO και ViewModels απλά για να εμφανίσετε κάπου κάποια δεδομένα από τον τομέα. Ο προγραμματιστής 1C λειτουργεί πάντα με μια οντότητα, χωρίς να γεμίζει το πλαίσιο της αντίληψης με μια ντουζίνα κλάσεις με παρόμοια ονόματα, που αντιπροσωπεύουν την ίδια οντότητα, αλλά από διαφορετική πλευρά. Οποιαδήποτε εφαρμογή .NET, για παράδειγμα, θα περιέχει απαραίτητα πέντε ή δύο ViewModels και DTO για σειριοποίηση σε JSON και μεταφορά δεδομένων από πελάτη σε διακομιστή. Και περίπου το 10-15% του κώδικα της εφαρμογής σας θα δαπανηθεί για τη μεταφορά δεδομένων από τη μια τάξη στην άλλη χρησιμοποιώντας στυλό ή πατερίτσες όπως το AutoMapper. Αυτός ο κώδικας πρέπει να είναι γραμμένος και οι προγραμματιστές πρέπει να πληρώνονται για να τον δημιουργήσουν και να τον συντηρήσουν.

Αποδεικνύεται ότι η γλώσσα 1C είναι δύσκολο να αναπτυχθεί χωρίς να περιπλέκεται στο επίπεδο των mainstream γλωσσών, χάνοντας έτσι το πλεονέκτημα της απλότητας. Ποιο είναι το καθήκον του πωλητή που ουσιαστικά επιλύεται: να εκδώσει μια τυπική λύση που κάθε μαθητής που πιαστεί στο δρόμο μπορεί να προσαρμόσει με το απαιτούμενο επίπεδο ποιότητας (δηλαδή, έχει ολοκληρωθεί μια θήκη που καλύπτει από έναν πάγκο σε ένα μεγάλο εργοστάσιο). Εάν είστε στάβλος, πάρτε έναν μαθητή, εάν είστε εργοστάσιο, πάρτε έναν γκουρού από τον συνεργάτη σας στην υλοποίηση. Το γεγονός ότι οι εταίροι υλοποίησης πωλούν τους μαθητές στην τιμή ενός γκουρού δεν αποτελεί πρόβλημα με το πλαίσιο. Αρχιτεκτονικά, το πλαίσιο πρέπει να λύνει τα προβλήματα και των δύο, ο κώδικας τυπικών διαμορφώσεων (που πουλήσαμε σε επιχειρήσεις με την υπόσχεση προσαρμογής) θα πρέπει να είναι κατανοητός από έναν μαθητή και ένας γκουρού θα πρέπει να μπορεί να καταλάβει ό,τι θέλετε.

Αυτό που, κατά τη γνώμη μου, λείπει πραγματικά από τη γλώσσα, αυτό που σε αναγκάζει να γράψεις περισσότερο από ό,τι μπορούσες, είναι αυτό που σπαταλάει χρόνο που πληρώνει ο πελάτης.

  • Δυνατότητα πληκτρολόγησης σε επίπεδο, για παράδειγμα, TypeScript (ως αποτέλεσμα, πιο ανεπτυγμένα εργαλεία ανάλυσης κώδικα στο IDE, ανακατασκευή, λιγότερα προσβλητικά παρεμβολές)
    Διαθεσιμότητα συναρτήσεων ως αντικείμενα πρώτης κατηγορίας. Μια ελαφρώς πιο περίπλοκη ιδέα, αλλά η ποσότητα του τυπικού κώδικα λέβητα θα μπορούσε να μειωθεί σημαντικά. Η κατανόηση του κώδικα από τον μαθητή, IMHO, θα αυξανόταν ακόμη και λόγω της μείωσης του όγκου
  • Καθολική συλλογή κυριολεκτικά, αρχικοποιητές. Το ίδιο πράγμα - μείωση της ποσότητας του κώδικα που πρέπει να γραφτεί ή/και να τον κοιτάξετε με τα μάτια σας. Η πλήρωση συλλογών καταλαμβάνει πάνω από το 9000% του χρόνου προγραμματισμού 1C. Η σύνταξη αυτού του κειμένου χωρίς συντακτική ζάχαρη είναι μακρά, δαπανηρή και επιρρεπής σε σφάλματα. Γενικά, η ποσότητα LOC ​​σε λύσεις 1C υπερβαίνει όλα τα πιθανά όρια σε σύγκριση με τα διαθέσιμα ανοιχτά πλαίσια και, γενικά, με όλα τα Java της επιχείρησής σας μαζί. Η γλώσσα είναι περίπλοκη και αυτό εκφυλίζεται σε όγκο δεδομένων, μνήμη, φρένα IDE, χρόνο, χρήμα...
  • τελικά κατασκευές έχω μια υπόθεση ότι αυτή η κατασκευή λείπει λόγω του γεγονότος ότι δεν βρήκαν μια επιτυχημένη μετάφραση στα ρωσικά :)
  • Δικοί τύποι δεδομένων (χωρίς OOP), ανάλογα τύπου από VB6. Θα σας επιτρέψει να μην πληκτρολογείτε δομές χρησιμοποιώντας σχόλια στο BSP και μαγικές μεθόδους που κατασκευάζουν αυτές τις δομές. Λαμβάνουμε: λιγότερο κώδικα, μια υπόδειξη μέσω κουκκίδας, ταχύτερη λύση στο πρόβλημα, λιγότερα σφάλματα λόγω τυπογραφικών σφαλμάτων και ελλείπουσες ιδιότητες των δομών. Τώρα η πληκτρολόγηση των δομών χρηστών ανήκει αποκλειστικά στην ομάδα ανάπτυξης της Standard Subsystem Library, η οποία, προς τιμήν της, γράφει προσεκτικά σχόλια σχετικά με τις αναμενόμενες ιδιότητες των δομών παραμέτρων που έχουν περάσει.
  • Χωρίς ζάχαρη όταν εργάζεστε με ασύγχρονες κλήσεις στο πρόγραμμα-πελάτη ιστού. Το callback-hell με τη μορφή ProcessingNotifications είναι ένα προσωρινό δεκανίκι που προκαλείται από μια ξαφνική αλλαγή στο API των κύριων προγραμμάτων περιήγησης, αλλά δεν μπορείτε να ζείτε έτσι συνεχώς· χάνεται το πλεονέκτημα της «μαθητικής κατανόησης» του ασύγχρονου κώδικα όλο και περισσότερο. Μην προσθέσετε καμία υποστήριξη για αυτό το παράδειγμα στο κύριο IDE και τα πράγματα γίνονται ακόμη χειρότερα.

Αυτό είναι ένα από τα πιεστικά προβλήματα, είναι σαφές ότι η λίστα θα μπορούσε να είναι πολύ μεγαλύτερη, αλλά δεν πρέπει να ξεχνάμε ότι αυτή εξακολουθεί να μην είναι μια γλώσσα γενικής χρήσης, δεν απαιτεί multithreading, λειτουργίες λάμδα, πρόσβαση στην GPU και γρήγορη υπολογισμούς κινητής υποδιαστολής. Αυτή είναι μια γλώσσα προγραμματισμού επιχειρηματικής λογικής.

Ένας προγραμματιστής που έχει ήδη δουλέψει πολύ με αυτή τη γλώσσα, κοιτάζει js ή c#, βαριέται στα πλαίσια αυτής της γλώσσας. Είναι γεγονός. Χρειάζεται ανάπτυξη. Στην άλλη πλευρά της κλίμακας για τον προμηθευτή είναι το κόστος εφαρμογής των καθορισμένων λειτουργιών έναντι της αύξησης των εσόδων μετά την εφαρμογή τους. Εδώ δεν έχω καμία πληροφορία για το τι υπερτερεί αυτή τη στιγμή στα μάτια της εταιρείας.

Αναπτυξιακό περιβάλλον

Ούτε εδώ τα πράγματα πάνε ομαλά. Υπάρχουν δύο περιβάλλοντα ανάπτυξης. Το πρώτο είναι το Configurator που περιλαμβάνεται στην παράδοση. Το δεύτερο είναι το περιβάλλον Enterprise Development Tools, ή EDT για συντομία, που αναπτύχθηκε με βάση το Eclipse.

Ο διαμορφωτής παρέχει ένα πλήρες φάσμα εργασιών ανάπτυξης, υποστηρίζει όλες τις δυνατότητες και είναι το κύριο περιβάλλον στην αγορά. Είναι επίσης ηθικά απαρχαιωμένο, δεν αναπτύσσεται, σύμφωνα με φήμες - λόγω του ύψους του τεχνικού χρέους μέσα του. Η κατάσταση θα μπορούσε να βελτιωθεί ανοίγοντας ένα εσωτερικό API (με τη μορφή φιλίας με Χιονάνθρωπος A. Orefkova ή σε ανεξάρτητη βάση), αλλά αυτό δεν ισχύει. Η πρακτική έχει δείξει ότι η κοινότητα θα γράψει τα δικά της χαρακτηριστικά στο IDE, αρκεί ο προμηθευτής να μην παρεμβαίνει. Αλλά έχουμε αυτό που έχουμε. Το configurator ήταν υπέροχο το 2004-2005, θύμιζε πολύ το Visual Studio εκείνης της εποχής, σε ορισμένα σημεία ήταν ακόμα πιο δροσερό, αλλά είχε κολλήσει εκείνες τις εποχές.

Επιπλέον, ο όγκος της μέσης τυπικής λύσης έχει αυξηθεί αρκετές φορές από τότε και σήμερα το IDE απλά δεν μπορεί να αντιμετωπίσει την ποσότητα του κώδικα με τον οποίο τροφοδοτείται. Οι δυνατότητες χρηστικότητας και ανακατασκευής δεν είναι καν μηδενικές, είναι στο κόκκινο. Όλα αυτά δεν προσθέτουν ενθουσιασμό στους προγραμματιστές και ονειρεύονται να μετακομίσουν σε άλλα οικοσυστήματα και να συνεχίσουν να κωδικοποιούν σκατά εκεί, αλλά σε ένα ευχάριστο περιβάλλον που δεν σε φτύνει με τη συμπεριφορά του.

Εναλλακτικά, προσφέρεται ένα IDE γραμμένο από την αρχή, βασισμένο στο Eclipse. Εκεί, οι πηγές, όπως και σε κάθε άλλο λογισμικό, ζωντανά με τη μορφή αρχείων κειμένου, αποθηκεύονται στο GIT, κλαδιά pull request, όλα αυτά. Το αρνητικό είναι ότι δεν έχει αφήσει την κατάσταση beta για πολλά χρόνια τώρα, αν και βελτιώνεται με κάθε κυκλοφορία. Δεν θα γράψω για τα μειονεκτήματα του EDT, σήμερα είναι ένα μείον, αύριο είναι ένα σταθερό χαρακτηριστικό. Η συνάφεια μιας τέτοιας περιγραφής θα εξαφανιστεί γρήγορα. Σήμερα είναι δυνατό να αναπτυχθεί σε EDT, αλλά είναι ασυνήθιστο· πρέπει να είστε προετοιμασμένοι για έναν ορισμένο αριθμό σφαλμάτων IDE.

Αν κοιτάξετε την κατάσταση μέσα από το προαναφερθέν «πρίσμα 1C», θα λάβετε κάτι σαν αυτό: η κυκλοφορία του νέου IDE δεν αυξάνει τις πωλήσεις κουτιών, αλλά η εκροή των ΠΡΟΓΡΑΜΜΑΤΙΣΤΩΝ μπορεί να μειωθεί. Είναι δύσκολο να πούμε τι περιμένει το οικοσύστημα όσον αφορά την άνεση των προγραμματιστών, αλλά η Microsoft έχει ήδη ξεγελάσει τους προγραμματιστές κινητής τηλεφωνίας προσφέροντάς τους τις υπηρεσίες της πολύ αργά.

Διαχείριση ανάπτυξης

Όλα εδώ είναι πολύ καλύτερα από ό,τι στη σύνταξη κώδικα, ειδικά πρόσφατα, όταν οι προσπάθειες της κοινότητας έφεραν στο φως τα προβλήματα της αυτοματοποίησης διαχείρισης, κυκλοφόρησαν πρωτότυπα που απαιτούσαν τη ρίψη του αποθετηρίου 1C στον σωρό σκουπιδιών και τη χρήση git, γρήγορη blame, αναθεώρηση κώδικα , στατική ανάλυση, αυτόματη ανάπτυξη κ.λπ. Στην πλατφόρμα έχουν προστεθεί πολλές δυνατότητες που αυξάνουν το επίπεδο αυτοματοποίησης των εργασιών ανάπτυξης. Ωστόσο, όλα αυτά τα χαρακτηριστικά προστέθηκαν μόνο και αποκλειστικά για την ανάπτυξη των δικών μας μεγάλων προϊόντων, όταν έγινε φανερό ότι δεν μπορούσαμε να κάνουμε χωρίς αυτοματισμό. Υπήρχαν αυτόματες συγχωνεύσεις, τριπλή σύγκριση με το KDiff και όλα αυτά. Κυκλοφόρησε στο Github gitconverter, ο οποίος, ειλικρινά, παρασύρθηκε ιδεολογικά από το έργο gitsync, αλλά τροποποιήθηκε για να ταιριάζει στις διαδικασίες της εταιρείας πωλητή. Χάρη στους επίμονους τύπους ανοιχτού κώδικα, ο αυτοματισμός ανάπτυξης στο 1C ξεκίνησε. Ένα ανοιχτό API για τον διαμορφωτή, το IMHO, θα μετατόπιζε επίσης την ηθική καθυστέρηση του κύριου IDE.

Σήμερα, η αποθήκευση πηγών 1C σε git με δεσμεύσεις που συνδέονται με ζητήματα στο Jira, αξιολογήσεις στο Crucible, κουμπί ώθησης από Jenkins και αναφορές Allure σχετικά με τη δοκιμή κώδικα σε 1C και ακόμη στατική ανάλυση στο SonarQube - αυτό απέχει πολύ από την είδηση, αλλά μάλλον το mainstream σε εταιρείες όπου υπάρχει μεγάλη ανάπτυξη 1C.

διαχείριση

Υπάρχουν πολλά να πούμε εδώ. Πρώτον, αυτός είναι, φυσικά, ένας διακομιστής (σύμπλεγμα διακομιστών 1C). Θαυμάσιο πράγμα, αλλά λόγω του γεγονότος ότι είναι ένα εντελώς μαύρο κουτί, τεκμηριωμένο με επαρκείς λεπτομέρειες, αλλά με συγκεκριμένο τρόπο - η εκκίνηση της αδιάλειπτης λειτουργίας σε λειτουργία υψηλής φόρτωσης σε πολλούς διακομιστές είναι η παρτίδα λίγων εκλεκτών που φορούν μετάλλιο με την επιγραφή «Εμπειρογνώμονας σε Τεχνολογικά Θέματα». Αξίζει να σημειωθεί ότι, καταρχήν, η διαχείριση ενός διακομιστή 1C δεν διαφέρει από τη διαχείριση οποιουδήποτε άλλου διακομιστή. Είναι μια εφαρμογή που βασίζεται σε δίκτυο, πολλαπλών νημάτων που καταναλώνει μνήμη, CPU και πόρους δίσκου. Παρέχει άφθονες ευκαιρίες για συλλογή τηλεμετρίας και διάγνωση.

Το πρόβλημα εδώ είναι ότι ο πωλητής δεν προσφέρει κάτι ιδιαίτερο όσον αφορά τις έτοιμες λύσεις για αυτό ακριβώς το διαγνωστικό. Ναι, υπάρχει το 1C: Instrumentation and Control Center, είναι μάλιστα αρκετά καλά, αλλά είναι πολύ ακριβά και δεν τα έχουν όλοι. Υπάρχει μια σειρά από εξελίξεις στην κοινότητα για τη σύνδεση των Grafana, Zabbix, ELK και άλλων πραγμάτων από το τυπικό σύνολο διαχειριστών, αλλά δεν υπάρχει μια ενιαία λύση που να ταιριάζει στην πλειοψηφία. Το έργο περιμένει τον ήρωά του. Και αν είστε μια επιχείρηση που σκοπεύει να ξεκινήσει σε ένα σύμπλεγμα 1C, χρειάζεστε έναν ειδικό. Το δικό σου μέσα ή από έξω, αλλά το χρειάζεσαι. Είναι φυσιολογικό να υπάρχει ξεχωριστός ρόλος με τις ικανότητες για τη λειτουργία διακομιστή, δεν πρέπει να το γνωρίζει κάθε χρήστης 1C, απλά πρέπει να καταλάβετε ότι χρειάζεται ένας τέτοιος ρόλος. Ας πάρουμε για παράδειγμα το SAP. Εκεί, ένας προγραμματιστής, πιθανότατα, δεν θα σηκωθεί καν από την καρέκλα του αν του ζητηθεί να ρυθμίσει κάτι στον διακομιστή εφαρμογών. Μπορεί να είναι απλώς ηλίθιος και δεν θα ντρέπεται. Στη μεθοδολογία SAP υπάρχει ξεχωριστός ρόλος υπαλλήλου για αυτό. Για κάποιο λόγο, στη βιομηχανία 1C πιστεύεται ότι αυτό πρέπει να συνδυαστεί σε έναν υπάλληλο για τον ίδιο μισθό. Είναι μια αυταπάτη.

Μειονεκτήματα του διακομιστή 1C

Υπάρχει ακριβώς ένα μείον - αξιοπιστία. Ή, αν προτιμάτε, απρόβλεπτο. Η ξαφνική περίεργη συμπεριφορά του διακομιστή έχει ήδη γίνει το talk of the town. Μια καθολική λύση - η διακοπή του διακομιστή και η εκκαθάριση όλων των κρυφών μνήμων - περιγράφεται ακόμη και στο εγχειρίδιο του ειδικού και προτείνεται ακόμη και ένα βιβλίο παρτίδων που να το κάνει αυτό. Εάν το σύστημά σας 1C αρχίσει να κάνει κάτι που δεν θα έπρεπε καν να κάνει θεωρητικά, ήρθε η ώρα να διαγράψετε την προσωρινή μνήμη δεδομένων περιόδου λειτουργίας. Σύμφωνα με την εκτίμησή μου, υπάρχουν μόνο τρία άτομα σε ολόκληρη τη χώρα που ξέρουν πώς να χειρίζονται έναν διακομιστή 1C χωρίς αυτή τη διαδικασία και δεν μοιράζονται μυστικά, γιατί... ζουν από αυτό. Ίσως το μυστικό τους είναι ότι καθαρίζουν τα δεδομένα συνεδρίας, αλλά δεν το λένε σε κανέναν, φίλε.

Διαφορετικά, ο διακομιστής 1C είναι η ίδια εφαρμογή με κάθε άλλο και διαχειρίζεται σχεδόν με τον ίδιο τρόπο, διαβάζοντας την τεκμηρίωση και χτυπώντας το ντέφι.

Λιμενεργάτης

Η χρησιμότητα της χρήσης ενός κοντέινερ διακομιστή 1C στην παραγωγή δεν έχει ακόμη αποδειχθεί. Ο διακομιστής δεν συγκεντρώνεται με την απλή προσθήκη κόμβων πίσω από τον εξισορροπητή, γεγονός που μειώνει στο ελάχιστο τα οφέλη από τη μεταφορά εμπορευματοκιβωτίων παραγωγής και η πρακτική της επιτυχούς λειτουργίας σε κοντέινερ σε λειτουργία υψηλής φόρτωσης δεν έχει καθιερωθεί. Ως αποτέλεσμα, μόνο οι προγραμματιστές χρησιμοποιούν το Docker+1C για να ρυθμίσουν περιβάλλοντα δοκιμής. Εκεί είναι πολύ χρήσιμο, εφαρμόζεται, σας επιτρέπει να παίξετε με σύγχρονες τεχνολογίες και να κάνετε ένα διάλειμμα από την απελπισία του διαμορφωτή.

Εμπορικό στοιχείο

Από επενδυτική άποψη, το 1C σάς επιτρέπει να λύσετε το πρόβλημα της γρήγορης εκκίνησης επιχειρηματικών ιδεών λόγω των ευρειών δυνατοτήτων των κατηγοριών εφαρμογών. Το 1C out of the box δίνει πολύ αξιοπρεπή Reporting, ενσωμάτωση με οτιδήποτε, web client, mobile client, mobile application, υποστήριξη για διάφορα DBMS, συμπεριλαμβανομένου. δωρεάν, cross-platform τόσο διακομιστή όσο και εγκατεστημένων εξαρτημάτων πελάτη. Ναι, η διεπαφή χρήστη των εφαρμογών θα είναι κίτρινη, μερικές φορές αυτό είναι μείον, αλλά όχι πάντα.
Επιλέγοντας 1C, μια επιχείρηση λαμβάνει ένα σύνολο λύσεων λογισμικού που της επιτρέπουν να δημιουργήσει ένα πολύ ευρύ φάσμα εφαρμογών, καθώς και πολλούς προγραμματιστές στην αγορά που θέλουν λιγότερα χρήματα από τους Javaists και ταυτόχρονα παράγουν αποτελέσματα πιο γρήγορα.

Για παράδειγμα, η αποστολή ενός τιμολογίου PDF σε έναν πελάτη μπορεί να λυθεί σε μια ώρα εργασίας των μαθητών. Το ίδιο πρόβλημα στο .NET μπορεί να λυθεί αγοράζοντας μια ιδιόκτητη βιβλιοθήκη ή μερικές ημέρες ή εβδομάδες κωδικοποίησης από έναν αυστηρό, γενειοφόρο προγραμματιστή. Μερικές φορές, και τα δύο ταυτόχρονα. Και ναι, μίλησα μόνο για τη δημιουργία PDF. Δεν έχουμε πει από πού θα βγει αυτός ο λογαριασμός. Το web frontender πρέπει να δημιουργήσει μια φόρμα όπου ο χειριστής θα εισάγει τα δεδομένα, το backender θα πρέπει να δημιουργήσει μοντέλα dto για τη μεταφορά JSON, μοντέλα για αποθήκευση στη βάση δεδομένων, τη δομή της ίδιας της βάσης δεδομένων, τη μετάβαση σε αυτήν, το σχηματισμό γραφικού εμφάνιση αυτού του λογαριασμού και μόνο τότε - PDF. Στο 1C, ολόκληρη η εργασία, από την αρχή, ολοκληρώνεται ακριβώς σε μία ώρα.

Ένα πλήρες λογιστικό σύστημα για ένα μικρό περίπτερο με μία επιχειρηματική διαδικασία αγοραπωλησίας γίνεται σε 3 ώρες. Με αναφορά πωλήσεων, λογιστικοποίηση εμπορευμάτων σε τιμές αγοράς και πώλησης, κατανεμημένα ανά αποθήκη, έλεγχο δικαιωμάτων πρόσβασης, web client και εφαρμογή για κινητά . Εντάξει, ξέχασα την εφαρμογή, με την εφαρμογή όχι σε 3 ώρες, σε έξι.

Πόσο καιρό θα χρειαστεί αυτή η εργασία σε έναν προγραμματιστή .NET από την εγκατάσταση του visual studio σε έναν καθαρό υπολογιστή έως την επίδειξη του στον πελάτη; Τι γίνεται με το κόστος ανάπτυξης; Το ίδιο πράγμα.

Δυνάμεις του 1C ως πλατφόρμα

Το 1C είναι ισχυρό όχι επειδή υπάρχει κάτι συγκεκριμένο σε αυτό που είναι το καλύτερο στον κόσμο. Αντίθετα, σε κάθε μεμονωμένο υποσύστημα μπορείτε να βρείτε ένα πιο ενδιαφέρον ανάλογο στο λογισμικό του κόσμου. Ωστόσο, με βάση έναν συνδυασμό παραγόντων, δεν βλέπω μια πλατφόρμα παρόμοια με το 1C. Εδώ βρίσκεται η εμπορική επιτυχία. Τα πλεονεκτήματα της πλατφόρμας είναι διάσπαρτα σε αυτήν και είναι πιο ευδιάκριτα όταν βλέπετε πώς γίνεται αυτό σε άλλες πλατφόρμες. Βασικά, αυτά ΔΕΝ είναι καν χαρακτηριστικά, αλλά αντίθετα - μια απόρριψη χαρακτηριστικών υπέρ ενός συγκεκριμένου παραδείγματος. Μερικά παραδείγματα:

  1. Unicode. Τι στο διάολο θα μπορούσε να είναι πιο απλό; Δεν χρειάζεται να χρησιμοποιηθούν κωδικοποιήσεις ASCII ενός byte το 2019 (εκτός από την ενσωμάτωση με αρχαίες παλαιού τύπου). Ποτέ. Αλλά όχι. Τέλος πάντων, κάποιος σε κάποιον πίνακα χρησιμοποιεί ένα varchar ενός byte και η εφαρμογή θα έχει προβλήματα με τις κωδικοποιήσεις. Το 2015, η εξουσιοδότηση LDAP του gitlab απέτυχε λόγω λανθασμένης εργασίας με κωδικοποιήσεις· το JetBrains IDE εξακολουθεί να μην λειτουργεί με κυριλλικά στα ονόματα αρχείων παντού. Το 1C παρέχει υψηλής ποιότητας απομόνωση του κώδικα εφαρμογής από το επίπεδο βάσης δεδομένων. Εκεί είναι αδύνατο να πληκτρολογήσετε πίνακες σε χαμηλό επίπεδο και τα εμπόδια ανίκανων juniors σε επίπεδο βάσης δεδομένων είναι αδύνατα εκεί. Ναι, μπορεί να υπάρχουν άλλα προβλήματα με ανίκανους juniors, αλλά η ποικιλία των προβλημάτων είναι πολύ μικρότερη. Τώρα θα μου πείτε ότι η εφαρμογή σας έχει σχεδιαστεί σωστά και το επίπεδο πρόσβασης στη βάση δεδομένων είναι απομονωμένο όπως θα έπρεπε. Ρίξτε μια άλλη ματιά στην εταιρική σας προσαρμοσμένη εφαρμογή Java. Στενά και ειλικρινά. Σας ενοχλεί η συνείδησή σας; Τότε χαίρομαι για σένα.
  2. Αρίθμηση εγγράφων/βιβλίων αναφοράς. Στο 1C σίγουρα δεν είναι το πιο ευέλικτο και όχι το καλύτερο. Αλλά αυτό που κάνουν στο τραπεζικό λογισμικό και στα αυτογραμμένα λογιστικά συστήματα - λοιπόν, είναι απλώς σκοτάδι. Είτε θα κολλήσει η ταυτότητα (και μετά "α, γιατί έχουμε τρύπες"), είτε αντίθετα, θα φτιάξουν μια γεννήτρια που θα λειτουργεί με κλείδωμα σε επίπεδο DBMS (και θα γίνει μποτιλιάρισμα). Στην πραγματικότητα, είναι αρκετά δύσκολο να γίνει αυτό το φαινομενικά απλό έργο - ένας απαριθμητής οντοτήτων από άκρο σε άκρο, με ενότητα μοναδικότητας που βασίζεται σε ένα συγκεκριμένο σύνολο κλειδιών, προθέματα, έτσι ώστε να μην μπλοκάρει τη βάση δεδομένων κατά την παράλληλη εισαγωγή δεδομένων .
  3. Αναγνωριστικά εγγραφών στη βάση δεδομένων. Το 1C πήρε μια απόφαση με ισχυρή θέληση - όλα τα αναγνωριστικά συνδέσμων είναι απολύτως συνθετικά και αυτό είναι. Και δεν υπάρχουν προβλήματα με τις κατανεμημένες βάσεις δεδομένων και τις ανταλλαγές. Οι προγραμματιστές άλλων συστημάτων δημιουργούν πεισματικά κάτι σαν ταυτότητα (είναι πιο σύντομο!), τους σύρουν στο GUI μέχρι να έρθει η ώρα να δημιουργήσουν πολλές σχετικές παρουσίες (και μετά θα ανακαλυφθούν). Δεν το έχεις αυτό; Τίμια?
  4. Κονίστρα. Το 1C διαθέτει αρκετά επιτυχημένους μηχανισμούς για σελιδοποίηση σε (μεγάλες) λίστες και πλοήγηση σε αυτές. Επιτρέψτε μου να κάνω κράτηση αμέσως - με τη σωστή χρήση του μηχανισμού! Σε γενικές γραμμές, το θέμα είναι αρκετά δυσάρεστο, δεν μπορεί να λυθεί ιδανικά: είναι είτε διαισθητικό και απλό (αλλά ο κίνδυνος τεράστιων συνόλων εγγραφών στον πελάτη), είτε η σελιδοποίηση είναι στραβά. Αυτοί που κάνουν σελιδοποίηση συχνά το κάνουν στραβά. Όσοι κάνουν μια ειλικρινή γραμμή κύλισης προσθέτουν μια βάση δεδομένων, ένα κανάλι και έναν πελάτη.
  5. Διαχειριζόμενες φόρμες. Χωρίς αμφιβολία, στο πρόγραμμα-πελάτη ιστού η διεπαφή δεν λειτουργεί τέλεια. Αλλά λειτουργεί. Αλλά για πολλά άλλα λογιστικά και τραπεζικά συστήματα, η δημιουργία ενός απομακρυσμένου χώρου εργασίας είναι ένα έργο σε επίπεδο επιχείρησης. Αποποίηση ευθύνης: ευτυχώς για όσους το δημιούργησαν αρχικά στον Ιστό, αυτό δεν θα επηρεάσει.
  6. Εφαρμογή για κινητό. Πρόσφατα, μπορείτε επίσης να γράφετε εφαρμογές για κινητά ενώ βρίσκεστε στο ίδιο οικοσύστημα. Εδώ είναι λίγο πιο περίπλοκο απ' ό,τι με έναν πελάτη ιστού· οι ιδιαιτερότητες των συσκευών σάς αναγκάζουν να γράψετε ειδικά για αυτές, αλλά, ωστόσο, δεν προσλαμβάνετε μια ξεχωριστή ομάδα προγραμματιστών κινητής τηλεφωνίας. Εάν χρειάζεστε μια εφαρμογή για τις εσωτερικές ανάγκες μιας εταιρείας (όταν μια λύση για φορητές συσκευές σε ένα εταιρικό πρόβλημα είναι πιο σημαντική από μια κίτρινη σχεδίαση διεπαφής χρήστη), απλά χρησιμοποιείτε την ίδια πλατφόρμα από το κουτί.
  7. Αναφορά. Με αυτή τη λέξη δεν εννοώ ένα σύστημα BI με μεγάλα δεδομένα και καθυστέρηση στη διαδικασία ETL. Αυτό αναφέρεται σε εκθέσεις επιχειρησιακού προσωπικού που σας επιτρέπουν να αξιολογήσετε την κατάσταση της λογιστικής εδώ και τώρα. Υπόλοιπα, αμοιβαίοι διακανονισμοί, αναβαθμολόγηση κ.λπ. Το 1C βγαίνει από το κουτί με ένα σύστημα αναφοράς με ευέλικτες ρυθμίσεις για ομαδοποιήσεις, φίλτρα και οπτικοποίηση από την πλευρά του χρήστη. Ναι, υπάρχουν πιο ψυχρά ανάλογα στην αγορά. Όχι όμως στο πλαίσιο μιας λύσης all-in-one και σε τιμή μερικές φορές υψηλότερη από μια λύση all-in-one. Και πιο συχνά συμβαίνει και το αντίστροφο: μόνο αναφορά, αλλά πιο ακριβό από ολόκληρη την πλατφόρμα και χειρότερο σε ποιότητα.
  8. Εκτυπώσιμα έντυπα. Λοιπόν, χρησιμοποιήστε το .NET για να λύσετε το πρόβλημα της αποστολής δελτίων μισθού σε PDF στους υπαλλήλους μέσω email. Και τώρα το έργο της εκτύπωσης τιμολογίων. Τι γίνεται με την αποθήκευση των αντιγράφων τους στο ίδιο PDF; Για το ψευδώνυμο 1C, η έξοδος οποιασδήποτε διάταξης σε PDF είναι γραμμή κώδικα +1. Αυτό σημαίνει + 40 δευτερόλεπτα χρόνου εργασίας, αντί για ημέρες ή εβδομάδες σε άλλη γλώσσα. Οι διατάξεις τυπωμένης φόρμας σε 1C είναι απίστευτα εύκολο να αναπτυχθούν και αρκετά ισχυρές ώστε να ανταγωνιστούν τις αντίστοιχες επί πληρωμή. Ναι, πιθανώς, δεν υπάρχουν πολλές αλληλεπιδραστικές ευκαιρίες στα έγγραφα υπολογιστικού φύλλου 1C· δεν μπορείτε να λάβετε γρήγορα ένα τρισδιάστατο διάγραμμα με κλιμάκωση χρησιμοποιώντας το OpenGL. Είναι όμως πραγματικά απαραίτητο;

Αυτά είναι μόνο μερικά παραδείγματα όπου ο περιορισμός της λειτουργικότητας ή η εφαρμογή συμβιβασμών αποδεικνύεται σημαντικό αρχιτεκτονικό όφελος στο μέλλον. Ακόμη και ένας συμβιβασμός ή όχι η πιο αποτελεσματική επιλογή - είναι ήδη στο κουτί και θεωρείται δεδομένο. Η ανεξάρτητη εφαρμογή του είτε θα είναι αδύνατη (γιατί τέτοιες αποφάσεις πρέπει να ληφθούν στην αρχή του έργου και δεν υπάρχει χρόνος για αυτό και δεν υπάρχει καθόλου αρχιτέκτονας), είτε πολλές ακριβές επαναλήψεις. Σε κάθε ένα από τα αναφερόμενα σημεία (και αυτή δεν είναι μια πλήρης λίστα αρχιτεκτονικών λύσεων), μπορείτε να ξεπεράσετε και να εισαγάγετε περιορισμούς που εμποδίζουν την κλιμάκωση. Σε κάθε περίπτωση, εσείς, ως επιχειρηματίας, πρέπει να βεβαιωθείτε ότι οι προγραμματιστές σας, όταν φτιάχνουν ένα «σύστημα από το μηδέν», έχουν ίσια χέρια και θα κάνουν αμέσως λεπτα ζητήματα συστήματος.

Ναι, όπως σε κάθε άλλο πολύπλοκο σύστημα, το ίδιο το 1C έχει επίσης λύσεις που εμποδίζουν την κλιμάκωση σε ορισμένες πτυχές. Ωστόσο, επαναλαμβάνω, με βάση έναν συνδυασμό παραγόντων, το κόστος ιδιοκτησίας και τον αριθμό των προβλημάτων που έχουν ήδη λυθεί εκ των προτέρων, δεν βλέπω έναν άξιο ανταγωνιστή στην αγορά. Στην ίδια τιμή, λαμβάνετε ένα πλαίσιο χρηματοοικονομικής εφαρμογής, έναν ισορροπημένο διακομιστή συμπλέγματος, με διεπαφή χρήστη και web, με εφαρμογή για κινητά, με αναφορές, ενοποίηση και πολλά άλλα πράγματα. Στον κόσμο της Java, προσλαμβάνετε μια ομάδα front-end και back-end, διορθώνετε σφάλματα χαμηλού επιπέδου οικιακού κώδικα διακομιστή και πληρώνετε ξεχωριστά για 2 εφαρμογές για κινητά για 2 λειτουργικά συστήματα για κινητά.

Δεν λέω ότι το 1C θα λύσει όλες τις περιπτώσεις, αλλά για μια εσωτερική εταιρική εφαρμογή, όταν δεν χρειάζεται να φέρετε το UI - τι άλλο χρειάζεται;

Πετάξτε στην αλοιφή

Πιθανότατα έχετε την εντύπωση ότι το 1C θα σώσει τον κόσμο και ότι όλοι οι άλλοι τρόποι σύνταξης εταιρικών συστημάτων είναι λάθος. Δεν είναι καθόλου έτσι. Από την άποψη ενός επιχειρηματία, εάν επιλέξετε 1C, τότε εκτός από το γρήγορο χρόνο για την αγορά, πρέπει να λάβετε υπόψη τα ακόλουθα μειονεκτήματα:

  • Αξιοπιστία διακομιστή. Απαιτούνται πραγματικά υψηλής ποιότητας ειδικοί που μπορούν να εξασφαλίσουν την απρόσκοπτη λειτουργία του. Δεν γνωρίζω έτοιμο πρόγραμμα εκπαίδευσης για τέτοιους ειδικούς από τον πωλητή. Υπάρχουν μαθήματα για προετοιμασία για την εξέταση Expert, αλλά αυτό, κατά τη γνώμη μου, δεν είναι αρκετό.
  • Υποστήριξη. Δείτε την προηγούμενη παράγραφο. Για να έχετε υποστήριξη από τον πωλητή, πρέπει να το αγοράσετε. Για κάποιο λόγο αυτό δεν είναι αποδεκτό στη βιομηχανία 1C. Και με το SAP, είναι σχεδόν απαραίτητο να το αγοράσετε και δεν ενοχλεί κανέναν. Χωρίς εταιρική υποστήριξη και χωρίς ειδικό σε προσωπικό, μπορείτε να μείνετε μόνοι με δυσλειτουργίες 1C.
  • Ωστόσο, δεν μπορείτε να κάνετε τα πάντα με το 1C. Αυτό είναι ένα εργαλείο και όπως κάθε εργαλείο έχει όρια εφαρμογής. Στο τοπίο 1C, είναι πολύ επιθυμητό να έχουμε έναν αρχιτέκτονα συστήματος "μη 1C".
  • Τα καλά ψευδώνυμα 1C δεν είναι φθηνότερα από τους καλούς προγραμματιστές σε άλλες γλώσσες. Αν και η πρόσληψη κακών προγραμματιστών είναι ακριβή, ανεξάρτητα από τη γλώσσα στην οποία γράφουν.

Ας βάλουμε τις τελείες

  • Το 1C είναι ένα πλαίσιο ταχείας ανάπτυξης εφαρμογών (RAD) για επιχειρήσεις και είναι προσαρμοσμένο για αυτό.
  • Σύνδεσμος τριών επιπέδων με υποστήριξη για μεγάλα DBMS, διεπαφή πελάτη, πολύ καλό ORM και αναφορές
  • Ευρείες δυνατότητες ενοποίησης με συστήματα που μπορούν να κάνουν ό,τι δεν μπορεί το 1C. Αν θέλετε μηχανική μάθηση, πάρτε την Python και στείλτε το αποτέλεσμα στο 1C μέσω http ή RabbitMQ
  • Δεν χρειάζεται να προσπαθείτε να κάνετε τα πάντα χρησιμοποιώντας το 1C, πρέπει να κατανοήσετε τα δυνατά του σημεία και να τα χρησιμοποιήσετε για τους δικούς σας σκοπούς
  • Οι προγραμματιστές που στρέφονται προς την αναζήτηση gadget τεχνολογικού πλαισίου και τον επανασχεδιασμό κάθε Ν χρόνια σε έναν νέο κινητήρα βαριούνται το 1C. Όλα είναι πολύ συντηρητικά εκεί.
  • Οι προγραμματιστές βαριούνται επίσης επειδή υπάρχει πολύ μικρή ανησυχία για αυτούς από τον κατασκευαστή. Βαρετή γλώσσα, αδύναμο IDE. Απαιτούν εκσυγχρονισμό.
  • Από την άλλη πλευρά, οι προγραμματιστές που δεν μπορούν να διασκεδάσουν χρησιμοποιώντας και μαθαίνοντας μια άλλη τεχνολογία που τους αρέσει είναι κακοί προγραμματιστές. Θα γκρινιάζουν και θα μετακομίσουν σε άλλο οικοσύστημα.
  • Οι εργοδότες που δεν επιτρέπουν στα ψευδώνυμά τους 1C να γράφουν κάτι στην Python είναι κακοί εργοδότες. Θα χάσουν υπαλλήλους με περίεργα μυαλά και στη θέση τους θα έρθουν μαϊμού κωδικοποιητές που ενώ συμφωνούν σε όλα, θα σύρουν το εταιρικό λογισμικό στο βάλτο. Θα πρέπει ακόμα να ξαναγραφτεί, οπότε ίσως θα ήταν καλύτερο να επενδύσουμε λίγο στην Python λίγο νωρίτερα;
  • Η 1C είναι μια εμπορική εταιρεία και εφαρμόζει χαρακτηριστικά αποκλειστικά με βάση τα δικά της συμφέροντα και σκοπιμότητες. Δεν μπορείς να την κατηγορήσεις για αυτό, οι επιχειρήσεις πρέπει να σκεφτούν το κέρδος, αυτή είναι η ζωή
  • Η 1C κερδίζει χρήματα πουλώντας λύσεις σε επιχειρηματικά προβλήματα, όχι σε προβλήματα προγραμματιστών του Vasya. Αυτές οι δύο έννοιες συσχετίζονται, αλλά η προτεραιότητα είναι ακριβώς αυτό που είπα. Όταν ο προγραμματιστής Vasya είναι έτοιμος να πληρώσει για μια προσωπική άδεια για το 1C: Resharper, θα εμφανιστεί αρκετά γρήγορα, το "Resharper" της A. Orefkova είναι απόδειξη αυτού. Εάν ο πωλητής το υποστήριζε και δεν το καταπολεμούσε, θα εμφανιζόταν μια αγορά λογισμικού για προγραμματιστές. Τώρα υπάρχουν ενάμιση παίκτες σε αυτή την αγορά με αμφίβολα αποτελέσματα, και όλα αυτά επειδή η ενοποίηση με το IDE είναι αρνητική και όλα γίνονται με δεκανίκια.
  • Η πρακτική του χειριστή πολλών μηχανών θα εξαφανιστεί στη λήθη. Οι σύγχρονες εφαρμογές είναι πολύ μεγάλες για να τις θυμόμαστε τόσο από την πλευρά του κώδικα όσο και από την πλευρά της επαγγελματικής χρήσης. Ο διακομιστής 1C γίνεται επίσης πιο περίπλοκος· θα είναι αδύνατο να διατηρηθούν όλα τα είδη τεχνογνωσίας σε έναν υπάλληλο. Αυτό θα πρέπει να συνεπάγεται ζήτηση για ειδικούς, πράγμα που σημαίνει την ελκυστικότητα του επαγγέλματος 1C και την αύξηση των μισθών. Εάν προηγουμένως ο Vasya δούλευε τρία σε ένα για έναν μισθό, τώρα πρέπει να προσλάβετε δύο Vasyas και ο ανταγωνισμός μεταξύ των Vasyas μπορεί να τονώσει τη συνολική ανάπτυξη του επιπέδου τους.

Συμπέρασμα

Το 1C είναι ένα πολύ αξιόλογο προϊόν. Στο εύρος τιμών μου, δεν γνωρίζω καθόλου ανάλογα, γράψτε στα σχόλια εάν υπάρχουν. Ωστόσο, η εκροή προγραμματιστών από το οικοσύστημα γίνεται ολοένα και πιο αισθητή και αυτό είναι μια «διαρροή εγκεφάλων», όπως και να το δεις. Ο κλάδος διψάει για εκσυγχρονισμό.
Εάν είστε προγραμματιστής, μην κολλάτε στο 1C και μην νομίζετε ότι όλα είναι μαγικά σε άλλες γλώσσες. Όσο είσαι junior, ίσως. Από τη στιγμή που πρέπει να λυθεί κάτι μεγαλύτερο, οι έτοιμες λύσεις θα πρέπει να αναζητηθούν για μεγαλύτερο χρονικό διάστημα και να ολοκληρωθούν πιο εντατικά. Όσον αφορά την ποιότητα των "μπλοκ" από τα οποία μπορεί να κατασκευαστεί μια λύση, το 1C είναι πολύ, πολύ καλό.

Και κάτι ακόμα - εάν σας έρθει ένα ψευδώνυμο 1C για πρόσληψη, τότε το ψευδώνυμο 1C μπορεί να διοριστεί με ασφάλεια στη θέση των επικεφαλής αναλυτών. Η κατανόησή τους για την εργασία, το θέμα και τις δεξιότητες αποσύνθεσης είναι εξαιρετική. Είμαι βέβαιος ότι αυτό οφείλεται ακριβώς στην αναγκαστική χρήση του DDD στην ανάπτυξη 1C. Ένα άτομο εκπαιδεύεται να σκέφτεται πρώτα απ 'όλα το νόημα μιας εργασίας, τις συνδέσεις μεταξύ αντικειμένων της θεματικής περιοχής και ταυτόχρονα έχει τεχνικό υπόβαθρο σε τεχνολογίες ολοκλήρωσης και μορφές ανταλλαγής δεδομένων.

Να γνωρίζετε ότι το ιδανικό πλαίσιο δεν υπάρχει και να προσέχετε τον εαυτό σας.
Καλό για όλους!

ΥΓ: ευχαριστώ πολύ σπεσουρικό για βοήθεια στην προετοιμασία του άρθρου.

Μόνο εγγεγραμμένοι χρήστες μπορούν να συμμετάσχουν στην έρευνα. Συνδεθείτε, Σας παρακαλούμε.

Έχετε 1C στην επιχείρησή σας;

  • 13,3%Καθόλου.71

  • 30,3%Υπάρχει, αλλά μόνο στο λογιστήριο κάπου. Βασικά συστήματα σε άλλες πλατφόρμες162

  • 41,4%Ναι, οι κύριες επιχειρηματικές διαδικασίες λειτουργούν σε αυτό221

  • 15,0%Το 1C πρέπει να πεθάνει, το μέλλον ανήκει στην %technology_name%80

Ψήφισαν 534 χρήστες. 99 χρήστες απείχαν.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο