1C - Bien et mal. Disposition des points en holivars autour de 1C

1C - Bien et mal. Disposition des points en holivars autour de 1C

Amis et collègues, récemment, il y a eu des articles plus fréquents sur Habré avec de la haine envers 1C en tant que plate-forme de développement, et des discours de ses défenseurs. Ces articles ont identifié un problème sérieux : le plus souvent, les critiques de 1C le critiquent du point de vue de « ne pas le maîtriser », réprimandant des problèmes qui sont de facto facilement résolus et, au contraire, n'abordant pas des problèmes qui sont vraiment importants, valent la peine. en discussion et ne sont pas résolus par le vendeur. Je pense qu'il est logique de procéder à un examen sobre et équilibré de la plateforme 1C. Ce qu'il peut faire, ce qu'il ne peut pas faire, ce qu'il devrait faire mais ne fait pas et, pour le dessert, ce qu'il fait avec brio, et vos développeurs chez %technology_name% le feront cent ans, en le jetant plus d'un budget annuel.

En conséquence, vous, en tant que gestionnaire ou architecte, serez en mesure de comprendre clairement quelle tâche il vous sera bénéfique d'utiliser 1C et où il doit être brûlé au fer chaud. En tant que développeur dans le monde « non-1C », vous pourrez voir ce qui fait du bruit dans 1C. Et en tant que développeur 1C, vous pourrez comparer votre système avec les écosystèmes d'autres langages et comprendre votre localisation dans le système de coordonnées du développement logiciel.

Sous la coupe il y a beaucoup d'attaques épaisses sur 1C, sur les critiques de 1C, sur Java, .NET et en général... Le ventilateur est plein, bienvenue !

À propos de moi

Je connais le sujet de conversation depuis environ 2004. Je programme probablement depuis l'âge de 6 ans, à partir du moment où j'ai reçu un livre sur le professeur Fortran avec des bandes dessinées sur un chat, un moineau et une chenille. J'ai analysé les programmes que le chat avait écrits à partir des images du livre et j'ai découvert ce qu'ils faisaient. Et oui, je n'avais pas de vrai ordinateur à cette époque, mais il y avait un dessin sur la couverture du livre et j'ai honnêtement appuyé sur les boutons en papier, entrant les commandes que j'avais espionnées sur le chat X.

Ensuite, il y a eu BK0011 et BASIC à l'école, C++ et assembleurs à l'université, puis 1C, et puis tant d'autres choses dont je suis trop paresseux pour me souvenir. Depuis 15 ans, je suis principalement impliqué dans 1C, non seulement en termes de codage, mais dans 1C en général. Définition des tâches, de l'administration et des développeurs ici. Au cours des 5 dernières années, j'ai été engagé dans des activités socialement utiles en termes de développement d'outils de développement et d'automatisation pour d'autres utilisateurs de 1C, en écrivant des articles et des livres.

Décidons du sujet de discussion

Tout d’abord, définissons de quoi nous allons parler, puisque les lettres « 1C » peuvent signifier beaucoup de choses. Dans ce cas, par les lettres « 1C », nous désignerons exclusivement le cadre de développement « 1C : Enterprise » de la huitième version moderne. Nous ne parlerons pas beaucoup du constructeur et de ses politiques (mais il faudra en faire un peu). Nous ne discuterons pas des applications spécifiques écrites à l'aide de ce framework. La technologie est distincte, les applications, c'est-à-dire les configurations, sont distinctes.

Architecture de haut niveau 1C : Entreprise

Ce n’est pas pour rien que j’évoque le mot « framework ». Du point de vue du développeur, la plateforme 1C est précisément un framework. Et vous devez le traiter exactement comme un cadre. Considérez-le comme Spring ou ASP.NET, exécuté par un runtime (JVM ou CLR respectivement). Il se trouve que dans le monde de la programmation conventionnelle (« pas 1C »), la division en frameworks, machines virtuelles et applications spécifiques est naturelle, du fait que ces composants sont généralement développés par différents fabricants. Dans le monde 1C, il n'est pas habituel de distinguer explicitement le framework de développement et le runtime lui-même ; de plus, les applications spécifiques écrites à l'aide du framework sont également principalement développées par 1C lui-même. Il en résulte une certaine confusion. Ainsi, dans le cadre de l'article, nous devrons considérer 1C sous plusieurs côtés à la fois et le classer selon plusieurs axes de coordonnées. Et dans chaque axe de coordonnées, nous placerons une pelle de substance brune et examinerons les caractéristiques, les avantages et les inconvénients de la solution existante.

Points de vue sur 1C

1C pour l'acheteur

L'acheteur achète un système d'automatisation avec lequel il peut résoudre rapidement les problèmes d'automatisation de sa propre entreprise. Une entreprise peut être un petit stand ou une grande société holding. Il est clair que les besoins de ces entreprises sont différents, mais tous deux sont pris en charge par une base de code de plateforme unique.

Pour l’acheteur 1C, le délai de mise sur le marché est rapide. Rapide. Plus rapide que Java, C# ou JS. Moyenne. Autour de l'hôpital. Il est clair qu'un site Web de cartes de visite utilisant React s'avérera meilleur, mais le backend d'un système WMS se lancera plus rapidement sur 1C.

1C comme outil

Chaque solution technologique a des limites d’applicabilité. 1C n'est pas un langage généraliste ; il ne vit pas séparément de son framework. Il est conseillé d'utiliser 1C lorsque vous avez besoin de :

  • application serveur
  • application où les finances apparaissent
  • avec interface utilisateur prête à l'emploi, ORM, reporting, XML/JSON/COM/PDF/YourDataTransferingFormat
  • avec prise en charge des processus et des tâches en arrière-plan
  • avec sécurité basée sur les rôles
  • avec une logique métier scriptable
  • avec la possibilité de créer rapidement un prototype et un délai de mise sur le marché réduit

Vous n'avez pas besoin de 1C si vous voulez :

  • apprentissage automatique
  • Calculs GPU
  • infographie
  • calculs mathématiques
  • Système CAO
  • traitement du signal (son, vidéo)
  • charger des appels http avec des centaines de milliers de rps

1C en tant qu'entreprise manufacturière

Il vaut la peine de comprendre quelle est l'activité de 1C en tant que fabricant de logiciels. La société 1C vend des solutions aux problèmes commerciaux grâce à l'automatisation. Différentes entreprises, grandes ou petites, mais c’est ce qu’elle vend. Les moyens pour atteindre cet objectif sont les applications métiers. Pour la comptabilité, la comptabilité des salaires, etc. Pour écrire ces applications, l'entreprise utilise sa propre plateforme de développement d'applications métiers. Spécialement adapté aux tâches courantes de ces mêmes applications métiers :

  • comptabilité financière
  • personnalisation facile de la logique métier
  • de larges possibilités d'intégration dans des paysages informatiques hétérogènes

En tant que fabricant, 1C estime que c'est la stratégie qui vous permet de travailler avec des partenaires et des clients dans un mode gagnant-gagnant. On peut contester cela, mais c'est à peu près ainsi que l'entreprise se présente : des solutions toutes faites aux problèmes commerciaux qui peuvent être rapidement personnalisées par les partenaires et intégrées dans n'importe quel paysage informatique.

Toutes les revendications ou souhaits concernant 1C en tant que cadre doivent être considérés exclusivement à travers ce prisme. "Nous voulons de la POO en 1C", déclarent les développeurs. "Combien cela nous coûtera de prendre en charge la POO sur la plateforme, cela nous aidera-t-il à augmenter les ventes de boîtes ?", déclare 1C. Ouvre son « prisme » de vente de solutions aux problèmes des entreprises :

- Hé, business, tu veux de la POO dans ton 1C ?
- Est-ce que cela m'aidera à résoudre mes problèmes ?
- Qui sait...
- Alors ce n'est pas nécessaire

Cette approche peut être bonne ou mauvaise selon qui la regarde, mais c’est comme ça. Parlant du fait qu'il n'y a pas de fonctionnalité X dans 1C, vous devez comprendre qu'elle n'est pas là pour une raison, mais dans le contexte du choix « coût de mise en œuvre par rapport au montant du profit ».

Classement technologique

« En fait, les Odinesniks font de leur mieux pour utiliser les meilleurs modèles, soigneusement sélectionnés par des méthodologistes attentionnés et des développeurs de la plateforme 1C.
Lorsque vous écrivez votre code stupide pour un formulaire géré simple, vous utilisez en réalité Modèle Vue Contrôleur с liaison de données bidirectionnelle в moteur d'application de données à trois niveaux, aromatisé mappage de relation objet de haut niveau sur la base de description des métadonnées déclarativesavoir le sien langage de requête indépendant de la plate-forme, C Interface utilisateur déclarative basée sur les données, sérialisation transparente complète et langage de programme orienté domaine.

Là où les développeurs 1C diffèrent de leurs collègues occidentaux, c'est dans les relations publiques. Ils adorent donner un grand nom à n’importe quelle connerie et courir avec comme un sac sale.
A. Orefkov

La plateforme 1C possède une architecture classique à 3 niveaux, au centre de laquelle se trouve le serveur d'applications (ou son émulation pour peu d'argent pour les petits commerçants). Soit MS SQL, soit Postgres est utilisé comme SGBD. Il existe également un support pour Oracle et IBM DB2, mais c'est plutôt ésotérique ; personne ne sait ce qui se passera si vous implémentez 1C sur ces bases de données sous une charge moyenne et élevée. Je crois que 1C lui-même ne le sait pas.

La partie client est soit un client léger installé sur la machine de l'utilisateur, soit un client web. La caractéristique clé est que les programmeurs n'écrivent pas 2 codes différents, ils écrivent une seule application, dans une seule langue, et vous pouvez l'afficher dans le navigateur si vous le souhaitez ou si vous en avez besoin. Qui voulait une véritable pile complète et un langage unique pour le front et le backend, node.js ? Ils n’ont jamais réussi à faire exactement la même chose jusqu’au bout. Un vrai full stack existe, mais il faudra l'écrire en 1C. L'ironie du sort, de telles choses :)

La solution cloud SaaS 1C:Fresh fonctionne également en mode navigateur, dans lequel vous ne pouvez pas acheter 1C, mais louer une petite base de données et y suivre les ventes de shawarma. Juste dans le navigateur, sans rien installer ni configurer.

De plus, il existe un client hérité, qui dans 1C est appelé « application régulière ». L'héritage est l'héritage, bienvenue dans le monde des applications en 2002, mais nous parlons toujours de l'état actuel de l'écosystème.

La partie serveur 1C prend en charge le clustering et évolue en ajoutant de nouvelles machines au cluster. De nombreuses copies ont été cassées ici et il y aura une section distincte dans l'article à ce sujet. En bref, ce n’est pas tout à fait la même chose que d’ajouter exactement les mêmes instances derrière HAProxy.

Le cadre de développement d'applications utilise son propre langage de programmation, qui ressemble à peu près à un VB6 légèrement amélioré traduit en russe. Pour les personnes qui détestent tout ce qui est russe, qui ne croient pas que « si » se traduise par « si », la deuxième option syntaxique est proposée. Ceux. Si vous le souhaitez, vous pouvez l'écrire en 1C de manière à ce qu'il soit impossible de le distinguer de VB.

1C - Bien et mal. Disposition des points en holivars autour de 1C

Ce langage de programmation est la principale raison de la haine des surnoms 1C envers leur plateforme. Soyons réalistes, non sans raison. Le langage a été conçu aussi simple que possible, conçu pour répondre au mantra « DÉVELOPPEURS, DÉVELOPPEURS » à l'échelle au moins dans la CEI. L'essence commerciale d'une telle solution, à mon avis, est clairement visible : plus de développeurs, une plus grande couverture du marché. Cela s'est réalisé, selon diverses estimations, de 45 % à 95 %. Je dirai tout de suite qu’écrire dans la langue que vous pensez est vraiment plus facile. Et je connais pas mal de langages de programmation.

Commençons par la langue.

Langage de programmation 1C

A la fois le point fort et le point faible du système. Fournit une saisie et une lisibilité faciles. En revanche, il n'a pas été mis à jour depuis la sortie de la version 8 en 2002 et est moralement dépassé. Quelqu’un dira « le principal inconvénient est qu’il n’y a pas de POO » et il se trompera. Premièrement, l’OLP n’aime pas seulement Nouraliev, mais aussi Torvalds. Et deuxièmement, la POO existe toujours.

Du point de vue du développeur, il dispose d'un framework avec des classes de base affichées sur le SGBD. Le développeur peut prendre la classe de base « Répertoire » et en hériter du répertoire « Clients ». Il peut y ajouter de nouveaux champs de classe, par exemple, le numéro d'identification fiscale et l'adresse, et également, si nécessaire, il peut remplacer les méthodes de la classe de base, par exemple la méthode OnWrite/AtRecord.

Le cadre est conçu de telle manière qu'un héritage plus profond est rarement nécessaire, et la restriction de la POO est, à mon avis, logique. 1C se concentre sur le développement piloté par domaine et vous fait réfléchir, tout d'abord, au domaine de la solution en cours de développement, et c'est bien. Il n'y a non seulement aucune tentation, mais aussi aucun besoin d'écrire 10 DTO et ViewModels différents juste pour afficher des données du domaine quelque part. Le développeur 1C opère toujours avec une seule entité, sans encombrer le contexte de perception avec une douzaine de classes aux noms similaires, représentant la même entité, mais d'un côté différent. Toute application .NET, par exemple, contiendra nécessairement cinq ou deux ViewModels et DTO pour la sérialisation en JSON et le transfert de données du client au serveur. Et environ 10 à 15 % du code de votre application sera consacré au transfert de données d'une classe à une autre à l'aide de stylos ou de béquilles comme AutoMapper. Ce code doit être écrit et les programmeurs doivent être payés pour le créer et le maintenir.

Il s'avère que le langage 1C est difficile à développer sans le compliquer au niveau des langages traditionnels, perdant ainsi l'avantage de la simplicité. Quelle est la tâche du vendeur qui est essentiellement résolue : proposer une solution standard que tout étudiant pris dans la rue peut personnaliser avec le niveau de qualité requis (c'est-à-dire qu'une affaire allant d'un stand à une grande usine est terminée). Si vous êtes un stand, prenez un étudiant ; si vous êtes une usine, prenez un gourou de votre partenaire de mise en œuvre. Le fait que les partenaires de mise en œuvre vendent les étudiants au prix d’un gourou n’est pas un problème avec le cadre. Sur le plan architectural, le framework doit résoudre les problèmes des deux, le code des configurations standards (que nous vendons aux entreprises avec la promesse de personnalisation) doit pouvoir être compris par un étudiant, et un gourou doit pouvoir comprendre tout ce que vous voulez.

Ce qui, à mon avis, manque vraiment dans la langue, ce qui vous oblige à écrire plus que vous ne le pourriez, c'est ce qui fait perdre du temps au client.

  • Possibilité de taper au niveau, par exemple, TypeScript (du coup, outils d'analyse de code plus développés dans l'IDE, refactoring, moins de montants offensants)
    Disponibilité de fonctions en tant qu'objets de première classe. Un concept légèrement plus complexe, mais la quantité de code passe-partout typique pourrait être considérablement réduite. La compréhension du code par l'étudiant, à mon humble avis, augmenterait même en raison de la réduction du volume
  • Littéraux de collection universels, initialiseurs. La même chose : réduire la quantité de code qui doit être écrit et/ou regardé avec vos yeux. Le remplissage des collections occupe plus de 9000 1 % du temps de programmation 1C. Écrire ceci sans sucre syntaxique est long, coûteux et sujet aux erreurs. En général, la quantité de LOC dans les solutions XNUMXC dépasse toutes les limites imaginables par rapport aux frameworks ouverts disponibles et, en général, à tous les Javas de votre entreprise réunis. Le langage est verbeux, et cela dégénère en quantité de données, de mémoire, de freins IDE, de temps, d'argent...
  • enfin des constructions J'ai l'hypothèse que cette construction manque car ils n'en ont pas trouvé de traduction réussie en russe :)
  • Types de données propres (sans POO), analogues du Type de VB6. Cela vous permettra de ne pas taper de structures en utilisant des commentaires dans le BSP et des méthodes magiques qui construisent ces structures. Nous obtenons : moins de code, un indice via un point, une solution plus rapide au problème, moins d'erreurs dues aux fautes de frappe et aux propriétés manquantes des structures. Désormais, le typage des structures utilisateur incombe entièrement à l'équipe de développement de la bibliothèque de sous-systèmes standard, qui, à son honneur, rédige soigneusement des commentaires sur les propriétés attendues des structures de paramètres transmises.
  • Pas de sucre lorsque vous travaillez avec des appels asynchrones sur le client Web. le callback-enfer sous la forme de ProcessingNotifications est une béquille temporaire provoquée par un changement soudain de l'API des principaux navigateurs, mais vous ne pouvez pas vivre ainsi tout le temps, l'avantage de la « compréhension étudiante » du code asynchrone est perdu ; de plus en plus. N'ajoutez aucune prise en charge de ce paradigme dans l'EDI principal et les choses empirent encore.

C'est l'un des problèmes urgents, il est clair que la liste pourrait être beaucoup plus longue, mais il ne faut pas oublier que ce n'est toujours pas un langage généraliste, il ne nécessite pas de multithreading, de fonctions lambda, d'accès au GPU et rapide calculs en virgule flottante. Il s'agit d'un langage de script de logique métier.

Un programmeur qui a déjà beaucoup travaillé avec ce langage, se penche sur js ou c#, s'ennuie dans le cadre de ce langage. C'est un fait. Il a besoin de développement. De l’autre côté de l’échelle pour le fournisseur se trouve le coût de mise en œuvre des fonctionnalités spécifiées par rapport à l’augmentation des revenus après leur mise en œuvre. Ici, je n'ai aucune information sur ce qui l'emporte actuellement aux yeux de l'entreprise.

Environnement de développement

Ici non plus, les choses ne se passent pas bien. Il existe deux environnements de développement. Le premier est le configurateur inclus dans la livraison. Le second est l’environnement Enterprise Development Tools, ou EDT en abrégé, développé sur la base d’Eclipse.

Le configurateur offre une gamme complète de tâches de développement, prend en charge toutes les fonctionnalités et constitue le principal environnement du marché. Il est également moralement obsolète, ne se développant pas, selon les rumeurs, en raison du montant de la dette technique en lui-même. La situation pourrait être améliorée en ouvrant une API interne (sous forme d'amitié avec Bonhomme de neige A. Orefkova ou de manière indépendante), mais ce n'est pas le cas. La pratique a montré que la communauté écrira ses propres fonctionnalités dans l'EDI, à condition que le fournisseur n'intervienne pas. Mais nous avons ce que nous avons. Le configurateur était génial en 2004-2005, rappelant beaucoup Visual Studio de cette époque, à certains endroits il était encore plus cool, mais il était bloqué à cette époque.

De plus, le volume de la solution standard moyenne a augmenté plusieurs fois depuis lors, et aujourd'hui l'EDI ne peut tout simplement pas faire face à la quantité de code avec laquelle il est alimenté. La convivialité et les capacités de refactoring ne sont même pas nulles, elles sont dans le rouge. Tout cela n'ajoute pas d'enthousiasme aux développeurs et ils rêvent de passer à d'autres écosystèmes et de continuer à y coder de la merde, mais dans un environnement agréable qui ne vous crache pas au visage avec son comportement.

Comme alternative, un IDE écrit à partir de zéro, construit sur Eclipse, est proposé. Là, les sources, comme dans tout autre logiciel, vivent sous forme de fichiers texte, sont stockées dans GIT, des branches pull request, tout ça. En revanche, il n’a pas quitté le statut bêta depuis de nombreuses années maintenant, même s’il s’améliore à chaque version. Je n'écrirai pas sur les inconvénients de l'EDT, aujourd'hui c'est un moins, demain c'est une fonctionnalité fixe. La pertinence d’une telle description va vite s’estomper. Aujourd'hui, il est possible de développer dans EDT, mais c'est inhabituel ; il faut se préparer à un certain nombre de bugs dans l'EDT.

Si vous regardez la situation à travers le « prisme 1C » susmentionné, vous obtenez quelque chose comme ceci : la sortie du nouvel IDE n'augmente pas les ventes de boîtiers, mais la sortie de DÉVELOPPEURS peut être réduite. Difficile de dire ce qui attend l’écosystème en termes de confort des développeurs, mais Microsoft a déjà bousillé les développeurs mobiles en leur proposant ses services trop tard.

Gestion de développement

Tout ici est bien meilleur que dans l'écriture de code, surtout récemment, lorsque les efforts de la communauté ont mis en lumière les problèmes d'automatisation de l'administration, lancé des prototypes appelant à jeter le référentiel 1C à la poubelle et à utiliser git, quick blâme, code-review , analyse statique, déploiement automatique, etc. De nombreuses fonctionnalités ont été ajoutées à la plateforme qui augmentent le niveau d'automatisation des tâches de développement. Cependant, toutes ces fonctionnalités ont été ajoutées uniquement et exclusivement pour le développement de nos propres grands produits, lorsqu’il est devenu évident que nous ne pouvions pas nous passer de l’automatisation. Il y a eu des fusions automatiques, une comparaison à trois avec KDiff et tout ça. Lancé sur Github convertisseur git, qui, franchement, a été idéologiquement éloigné du projet gitsync, mais modifié pour s'adapter aux processus de l'entreprise fournisseur. Grâce aux gars têtus de l'open source, l'automatisation du développement dans 1C a décollé. Une API ouverte pour le configurateur, à mon humble avis, modifierait également le retard moral de l'IDE principal.

Aujourd'hui, stocker les sources 1C dans git avec des commits liés à des problèmes dans Jira, des critiques dans Crucible, des boutons poussoirs de Jenkins et Allure rapportent des tests de code dans 1C et même analyse statique dans SonarQube - c'est loin d'être une nouveauté, mais plutôt le courant dominant dans les entreprises où il y a beaucoup de développement 1C.

administration

Il y a beaucoup à dire ici. Tout d'abord, il s'agit bien entendu d'un serveur (cluster de serveurs 1C). Une chose merveilleuse, mais du fait qu'il s'agit d'une boîte complètement noire, documentée de manière suffisamment détaillée, mais de manière spécifique - maîtriser le lancement d'un fonctionnement ininterrompu en mode highload sur plusieurs serveurs est le lot de quelques privilégiés qui portent un médaille avec l’inscription « Expert en questions technologiques ». Il convient de noter qu'en principe, l'administration d'un serveur 1C n'est pas différente de l'administration de n'importe quel autre serveur. Il s'agit d'une application réseau multithread qui consomme des ressources de mémoire, de processeur et de disque. Offre de nombreuses possibilités de collecte de télémétrie et de diagnostic.

Le problème ici est que le fournisseur ne propose rien de spécial en termes de solutions toutes faites pour ce diagnostic précis. Oui, il existe des 1C : Instrumentation and Control Center, ils sont même assez bons, mais ils sont très chers et tout le monde n'en a pas. Il existe un certain nombre de développements dans la communauté pour connecter Grafana, Zabbix, ELK et d'autres éléments de l'ensemble d'administration standard, mais il n'existe pas de solution unique qui conviendra à la majorité. La tâche attend son héros. Et si vous êtes une entreprise qui envisage de se lancer sur un cluster 1C, vous avez besoin d'un expert. Le vôtre à l’intérieur ou à l’extérieur, mais vous en avez besoin. Il est normal qu'il existe un rôle distinct avec des compétences pour le fonctionnement du serveur, tous les utilisateurs de 1C ne devraient pas le savoir, il vous suffit de comprendre qu'un tel rôle est nécessaire. Prenons SAP par exemple. Là-bas, un programmeur ne se lèvera probablement même pas de sa chaise si on lui demande de configurer quelque chose sur le serveur d'applications. Il est peut-être simplement stupide et il n’aura pas honte. Dans la méthodologie SAP, il existe un rôle d'employé distinct pour cela. Pour une raison quelconque, dans l'industrie 1C, on pense que cela devrait être combiné en un seul employé pour le même salaire. C'est une illusion.

Inconvénients du serveur 1C

Il y a exactement un inconvénient : la fiabilité. Ou, si vous préférez, l'imprévisibilité. Le comportement étrange et soudain du serveur fait déjà parler de lui. Un remède universel - arrêter le serveur et vider tous les caches - est même décrit dans le manuel de l'expert, et même un livre de lots est recommandé pour ce faire. Si votre système 1C commence à faire quelque chose qu'il ne devrait même pas théoriquement faire, il est temps de vider le cache des données de session. D'après mon estimation, il n'y a que trois personnes dans tout le pays qui savent faire fonctionner un serveur 1C sans cette procédure et elles ne partagent pas de secrets, car... ils vivent de ça. Peut-être que leur secret est qu’ils nettoient les données de session, mais ils n’en parlent à personne, mec.

Sinon, le serveur 1C est la même application que n'importe quelle autre et est administré à peu près de la même manière, en lisant la documentation et en frappant sur le tambourin.

Docker

L'utilité d'utiliser un serveur 1C conteneurisé en production n'a pas encore été prouvée. Le serveur n'est pas clusterisé en ajoutant simplement des nœuds derrière l'équilibreur, ce qui réduit au minimum les avantages de la conteneurisation de production, et la pratique d'un fonctionnement réussi dans les conteneurs en mode charge élevée n'a pas été établie. Par conséquent, seuls les développeurs utilisent Docker+1C pour mettre en place des environnements de test. Là, c'est très utile, appliqué, permet de jouer avec les technologies modernes et de faire une pause dans le découragement du configurateur.

Volet commercial

Du point de vue de l'investissement, 1C vous permet de résoudre le problème du lancement rapide d'idées commerciales grâce aux larges capacités des classes d'applications. 1C prêt à l'emploi offre des rapports très corrects, une intégration avec n'importe quoi, un client Web, un client mobile, une application mobile, une prise en charge de divers SGBD, incl. gratuit et multiplateforme, à la fois les parties serveur et client installées. Oui, l'interface utilisateur des applications sera jaune, parfois c'est un inconvénient, mais pas toujours.
En choisissant 1C, une entreprise obtient un ensemble de solutions logicielles qui lui permettent de créer une très large gamme d'applications, ainsi que de nombreux développeurs sur le marché qui veulent moins d'argent que les Javaistes et en même temps produisent des résultats plus rapidement.

Par exemple, la tâche d'envoyer une facture PDF à un client peut être résolue en une heure de travail étudiant. Le même problème dans .NET peut être résolu en achetant une bibliothèque propriétaire ou en quelques jours ou semaines de codage par un développeur sévère et barbu. Parfois, les deux à la fois. Et oui, je parlais uniquement de génération PDF. Nous n'avons même pas dit d'où viendra ce projet de loi. Le frontender Web doit créer un formulaire dans lequel l'opérateur saisira les données, le backender devra créer des modèles dto pour le transfert de JSON, des modèles de stockage dans la base de données, la structure de la base de données elle-même, la migration vers celle-ci, la formation d'un graphique affichage de ce même compte, et alors seulement - PDF. Sur 1C, l'ensemble de la tâche, à partir de zéro, est complété en exactement une heure.

Un système comptable à part entière pour un petit stand avec un seul processus commercial d'achat/vente est réalisé en 3 heures avec des rapports de ventes, une comptabilité des marchandises aux prix d'achat et de vente, ventilés par entrepôt, un contrôle des droits d'accès, un client Web et une application mobile. . D'accord, j'ai oublié la candidature, avec la candidature pas en 3 heures, en six.

Combien de temps faudra-t-il à un développeur .NET pour installer Visual Studio sur un ordinateur propre et en faire la démonstration au client ? Qu’en est-il du coût de développement ? Même chose.

Points forts de 1C en tant que plateforme

1C est fort non pas parce qu’il a quelque chose de spécifique qui est le meilleur au monde. Au contraire, dans chaque sous-système, vous pouvez trouver un analogue plus intéressant dans le logiciel mondial. Cependant, sur la base d'une combinaison de facteurs, je ne vois pas de plate-forme similaire à 1C. C’est là que réside le succès commercial. Les avantages de la plate-forme sont dispersés partout et sont plus clairement visibles lorsque vous voyez comment cela se fait sur d'autres plates-formes. Fondamentalement, ce ne sont même PAS des fonctionnalités, mais au contraire - un rejet des fonctionnalités en faveur d'un paradigme spécifique. Quelques exemples :

  1. Unicode. Quoi de plus simple ? Il n'est pas nécessaire d'utiliser des codages ASCII sur un octet en 2019 (sauf pour l'intégration avec les anciens codages hérités). Jamais. Mais non. Quoi qu'il en soit, quelqu'un dans une table utilise un varchar à un octet et l'application aura des problèmes avec les encodages. En 2015, l'autorisation LDAP de Gitlab a échoué en raison d'un travail incorrect avec les encodages ; l'EDI JetBrains ne fonctionne toujours pas avec le cyrillique dans les noms de fichiers partout. 1C offre une isolation de haute qualité du code d'application de la couche de base de données. Là, il est impossible de saisir des tableaux à un niveau bas et les montants de juniors incompétents au niveau de la base de données y sont impossibles. Oui, il peut y avoir d’autres problèmes avec les juniors incompétents, mais la variété des problèmes est bien moindre. Maintenant, vous me direz que votre application est conçue correctement et que la couche d'accès à la base de données est isolée comme il se doit. Jetez un autre regard sur votre application Java personnalisée d’entreprise. Étroitement et honnêtement. Votre conscience vous dérange ? Alors je suis content pour toi.
  2. Numérotation des documents/ouvrages de référence. En 1C, ce n'est certainement ni le plus flexible ni le meilleur. Mais ce qu'ils font dans les logiciels bancaires et dans les systèmes comptables auto-écrits - eh bien, ce n'est que l'obscurité. Soit l'identité sera coincée (et puis "oh, pourquoi avons-nous des trous"), soit au contraire, ils feront un générateur qui fonctionne avec le verrouillage au niveau du SGBD (et deviendra un goulot d'étranglement). En fait, il est assez difficile d'accomplir cette tâche apparemment simple - un énumérateur d'entités de bout en bout, avec une section d'unicité basée sur un certain ensemble de clés, une préfixation, afin qu'elle ne bloque pas la base de données lors de la saisie de données en parallèle. .
  3. Identifiants des enregistrements dans la base de données. 1C a pris une décision volontaire : tous les identifiants de lien sont absolument synthétiques et c'est tout. Et il n'y a aucun problème avec les bases de données et les échanges distribués. Les développeurs d'autres systèmes créent obstinément quelque chose comme une identité (c'est plus court !), les font glisser dans l'interface graphique jusqu'à ce qu'il soit temps de créer plusieurs instances liées (et ensuite elles seront découvertes). Tu n'as pas ça ? Honnêtement?
  4. Listes. 1C dispose de mécanismes assez efficaces pour parcourir de (grandes) listes et y naviguer. Permettez-moi de faire une réservation tout de suite - avec la bonne utilisation du mécanisme ! En général, le sujet est assez désagréable, il ne peut pas être résolu de manière idéale : soit il est intuitif et simple (mais le risque d'énormes jeux d'enregistrements sur le client), soit la pagination est d'une ou d'une autre maladresse. Ceux qui font du pagination le font souvent de manière tordue. Ceux qui créent une barre de défilement honnête ajoutent une base de données, un canal et un client.
  5. Formulaires gérés. Sans aucun doute, dans le client web, l'interface ne fonctionne pas parfaitement. Mais ça marche. Mais pour de nombreux autres systèmes comptables et bancaires, la création d’un lieu de travail à distance est un projet à l’échelle de l’entreprise. Avertissement : heureusement pour ceux qui l'ont initialement créé sur le Web, cela n'affectera pas.
  6. Application mobile. Depuis peu, vous pouvez également écrire des applications mobiles dans le même écosystème. C'est ici un peu plus compliqué qu'avec un client Web : les spécificités des appareils vous obligent à écrire spécifiquement pour eux, mais vous n'engagez néanmoins pas une équipe distincte de développeurs mobiles. Si vous avez besoin d'une application pour les besoins internes d'une entreprise (lorsqu'une solution mobile à un problème d'entreprise est plus importante qu'une conception d'interface utilisateur jaune), vous utilisez simplement la même plateforme prête à l'emploi.
  7. Rapport. Par ce mot, je n'entends pas un système BI avec du big data et un décalage sur le processus ETL. Il s’agit des rapports des opérationnels qui permettent d’évaluer l’état de la comptabilité ici et maintenant. Soldes, règlements mutuels, reclassement, etc. 1C sort de la boîte avec un système de reporting avec des paramètres flexibles pour les regroupements, les filtres et la visualisation côté utilisateur. Oui, il existe des analogues plus cool sur le marché. Mais pas dans le cadre d’une solution tout-en-un et à un prix parfois supérieur à une solution tout-en-un. Et le plus souvent, c’est même l’inverse : uniquement des rapports, mais plus chers que l’ensemble de la plateforme et de moins bonne qualité.
  8. Formulaires imprimables. Eh bien, utilisez .NET pour résoudre le problème de l’envoi des fiches de salaire au format PDF aux employés par courrier électronique. Et maintenant la tâche d'imprimer les factures. Et si vous enregistriez leurs copies sur le même PDF ? Pour le surnom 1C, la sortie de n'importe quelle mise en page au format PDF correspond à +1 ligne de code. Cela signifie + 40 secondes de temps de travail, au lieu de jours ou semaines dans une autre langue. Les mises en page de formulaires imprimés dans 1C sont incroyablement faciles à développer et suffisamment puissantes pour rivaliser avec leurs homologues payants. Oui, probablement, il n'y a pas beaucoup d'opportunités interactives dans les feuilles de calcul 1C ; vous ne pouvez pas obtenir rapidement un diagramme 3D avec mise à l'échelle à l'aide d'OpenGL. Mais est-ce vraiment nécessaire ?

Ce ne sont là que quelques exemples où limiter les fonctionnalités ou mettre en œuvre des compromis s’avère être un avantage architectural important à l’avenir. Même un compromis ou l'option qui n'est pas la plus efficace est déjà dans la boîte et est considéré comme acquis. Sa mise en œuvre indépendante sera soit impossible (car de telles décisions doivent être prises au début du projet, et il n'y a pas de temps pour cela, et il n'y a pas d'architecte du tout), soit plusieurs itérations coûteuses. Dans chacun des points répertoriés (et il ne s'agit pas d'une liste complète des solutions architecturales), vous pouvez vous tromper et introduire des restrictions qui bloquent la mise à l'échelle. Dans tous les cas, en tant qu'homme d'affaires, vous devez vous assurer que vos programmeurs, lorsqu'ils créent un « système à partir de zéro », ont les mains droites et résolvent immédiatement et correctement les problèmes subtils du système.

Oui, comme dans tout autre système complexe, 1C lui-même propose également des solutions qui bloquent la mise à l'échelle sous certains aspects. Cependant, je le répète, sur la base d'une combinaison de facteurs, du coût de possession et du nombre de problèmes déjà résolus à l'avance, je ne vois pas de concurrent digne de ce nom sur le marché. Pour le même prix, vous obtenez un cadre d'application financière, un serveur équilibré en cluster, avec une interface utilisateur et une interface Web, avec une application mobile, avec des rapports, une intégration et bien d'autres choses. Dans le monde Java, vous embauchez une équipe front-end et back-end, déboguez des bancs de code serveur écrits à la maison et payez séparément pour 2 applications mobiles pour 2 systèmes d'exploitation mobiles.

Je ne dis pas que 1C résoudra tous les cas, mais pour une application d'entreprise interne, lorsqu'il n'est pas nécessaire de personnaliser l'interface utilisateur, que faut-il d'autre ?

Voler dans la pommade

Vous avez probablement eu l'impression que 1C sauvera le monde et que toutes les autres façons d'écrire des systèmes d'entreprise sont fausses. Ce n'est pas du tout comme ça. Du point de vue d'un homme d'affaires, si vous choisissez 1C, en plus du délai de mise sur le marché rapide, vous devez prendre en compte les inconvénients suivants :

  • Fiabilité du serveur. Il faut des spécialistes de très haute qualité capables d'assurer son fonctionnement ininterrompu. Je ne connais pas de programme de formation prêt à l'emploi pour ces spécialistes de la part du fournisseur. Il existe des cours pour préparer l'examen Expert, mais cela, à mon avis, n'est pas suffisant.
  • Soutien. Voir point précédent. Pour bénéficier du support du vendeur, vous devez l'acheter. Pour une raison quelconque, cela n'est pas accepté dans l'industrie 1C. Et avec SAP, c’est presque un achat incontournable et ça ne dérange personne. Sans le soutien de l'entreprise et sans un expert parmi le personnel, vous pouvez vous retrouver seul avec les problèmes 1C.
  • Pourtant, on ne peut absolument pas tout faire avec 1C. Il s’agit d’un outil et, comme tout outil, il a des limites d’applicabilité. Dans le paysage 1C, il est très souhaitable d'avoir un architecte système « non-1C ».
  • Les bons surnoms 1C ne sont pas moins chers que les bons programmeurs dans d'autres langages. Cependant, les mauvais programmeurs coûtent cher à embaucher, quelle que soit la langue dans laquelle ils écrivent.

Mettons les points sur les points

  • 1C est un cadre de développement rapide d'applications (RAD) pour les entreprises et est conçu pour cela.
  • Lien à trois niveaux avec prise en charge des principaux SGBD, interface utilisateur client, un très bon ORM et reporting
  • De larges possibilités d'intégration avec des systèmes capables de faire ce que 1C ne peut pas faire. Si vous souhaitez du machine learning, prenez Python et envoyez le résultat à 1C via http ou RabbitMQ
  • Il n'est pas nécessaire de s'efforcer de tout faire en utilisant 1C, vous devez comprendre ses points forts et les utiliser à vos propres fins.
  • Les développeurs qui souhaitent se plonger dans les gadgets du cadre technologique et repenser tous les N ans vers un nouveau moteur s'ennuient de 1C. Tout y est très conservateur.
  • Les développeurs s'ennuient également car le constructeur s'en soucie très peu. Langage ennuyeux, IDE faible. Ils nécessitent une modernisation.
  • D’un autre côté, les développeurs qui ne trouvent pas de plaisir à utiliser et à apprendre une autre technologie qu’ils apprécient sont de mauvais développeurs. Ils gémissent et se déplacent vers un autre écosystème.
  • Les employeurs qui ne permettent pas à leurs surnoms 1C d'écrire quelque chose en Python sont de mauvais employeurs. Ils perdront des employés à l'esprit curieux et à leur place viendront des codeurs singes qui, tout en étant d'accord avec tout, entraîneront les logiciels d'entreprise dans le marais. Il faudra encore le réécrire, alors peut-être vaudrait-il mieux investir un peu dans Python un peu plus tôt ?
  • 1C est une société commerciale et met en œuvre des fonctionnalités uniquement en fonction de ses propres intérêts et de son opportunité. On ne peut pas lui en vouloir, le business doit penser au profit, c'est la vie
  • 1C gagne de l'argent en vendant des solutions aux problèmes commerciaux, et non aux problèmes de développement de Vasya. Ces deux concepts sont corrélés, mais la priorité est exactement ce que j'ai dit. Lorsque le développeur Vasya sera prêt à payer une licence personnelle pour 1C : Resharper, cela apparaîtra assez rapidement, « Resharper » de A. Orefkova en est la preuve. Si le fournisseur le soutenait et ne luttait pas contre lui, un marché de logiciels destinés aux développeurs apparaîtrait. Il y a maintenant un acteur et demi sur ce marché avec des résultats discutables, et tout cela parce que l'intégration avec l'IDE est négative et que tout se fait avec des béquilles.
  • La pratique d’un opérateur multi-machines va disparaître dans l’oubli. Les applications modernes sont trop volumineuses pour être mémorisées, tant du point de vue du code que du point de vue de l'utilisation professionnelle. Le serveur 1C devient également plus complexe ; il sera impossible de détenir tous les types d'expertise chez un seul employé. Cela devrait entraîner une demande de spécialistes, ce qui signifie l'attractivité du métier 1C et une augmentation des salaires. Si auparavant Vasya travaillait trois en un pour un salaire, vous devez désormais embaucher deux Vasya et la concurrence entre Vasya peut stimuler la croissance globale de leur niveau.

Conclusion

1C est un produit très digne. Dans ma gamme de prix, je ne connais aucun analogue, écrivez dans les commentaires s'il y en a. Cependant, l'exode des développeurs de l'écosystème devient de plus en plus perceptible, et il s'agit d'une « fuite des cerveaux », quel que soit le point de vue. L’industrie a soif de modernisation.
Si vous êtes développeur, ne vous attardez pas sur 1C et ne pensez pas que tout est magique dans d'autres langages. Pendant que tu es junior, peut-être. Dès qu’il s’agit de résoudre quelque chose de plus vaste, des solutions toutes faites doivent être recherchées plus longtemps et mises en œuvre de manière plus intensive. En termes de qualité des « blocs » à partir desquels une solution peut être construite, 1C est très, très bon.

Et encore une chose - si un surnom 1C vient à vous pour être embauché, alors le surnom 1C peut être nommé en toute sécurité au poste d'analyste principal. Leur compréhension de la tâche, du domaine et des compétences de décomposition est excellente. Je suis sûr que cela est précisément dû à l'utilisation forcée de DDD dans le développement 1C. La personne est formée pour réfléchir avant tout au sens de la tâche, aux connexions entre les objets du domaine, et possède en même temps une formation technique en technologies d'intégration et en formats d'échange de données.

Soyez conscient que le cadre idéal n’existe pas et prenez soin de vous.
Tout bien!

PS : merci beaucoup spéchurique pour obtenir de l'aide dans la préparation de l'article.

Seuls les utilisateurs enregistrés peuvent participer à l'enquête. se connecters'il te plait.

Avez-vous 1C dans votre entreprise ?

  • 13,3%Pas du tout.71

  • 30,3%Il y en a, mais seulement quelque part dans le service comptable. Systèmes de base sur d'autres plates-formes162

  • 41,4%Oui, les principaux processus métiers fonctionnent dessus221

  • 15,0%1C doit mourir, l'avenir appartient à %technology_name%80

534 utilisateurs ont voté. 99 utilisateurs se sont abstenus.

Source: habr.com

Ajouter un commentaire