Pourquoi, Bitrix? Ou le monde des fées 1C

Un jour, lundi, l'idée m'est venue à l'esprit - «mais je creuse dans le nouveau noyau» (relativement nouveau, mais plus à ce sujet plus tard). La pensée n'est pas apparue à l'improviste, mais les conditions préalables étaient:


  • tâche de test, dans l'un des principaux studios de Mère Russie (dans lequel l'abréviation ORM est apparue),
  • l'idée d'écrire un module simple,
  • l'envie d'un des clients, à l'avenir, de faire un magasin.

Je veux donc partager l'histoire de cette campagne dans la jungle tropicale dense.


Une brève introduction


Je ne me considère pas comme un gourou de la programmation ni sur Bitrix, ni sur rien d'autre. L'article reflète mes observations, mon expérience et mes pensées. Les critiques constructives sont les bienvenues, ainsi que les disputes bien motivées (comme l'a légué Socrate). Le contexte a mis en évidence trois grands sujets qui ne seront pas abordés. Comme leur aspect principal - programmation travailler avec des données dans le cadre du noyau Bitrix D7 (ORM), bien que ce soit un facteur fondamental pour l'écrire.


Dans la piscine avec la tête


L'aspect de travailler avec des données est fondamental et sans lui, nulle part, je pensais, et j'ai décidé d'aller tout de suite google parcourir la documentation, en espérant une description détaillée et la disponibilité d'exemples, et bien sûr regarder les cours. Avec une main légère et j'espère quelque chose de savoureux et de nouveau. Ne voyant aucune inquiétude, je suis allé camper. Les nuages ​​s'accumulaient ...


Ce que vous devez savoir sur la jungle ou les règles de survie


Règle numéro 1 - Méfiez-vous des agents de voyage sans scrupules


J'ai décidé de commencer par les cours, après avoir vu les éléments de menu qui m'intéressent (module et ORM), j'ai pensé à un tas de textes et d'inserts de code - tout sera rapide, allons-y ... Alors ma prochaine erreur a été commise. En fait, il s'est avéré:


  • les cours sont mal structurés - l'ordre d'étude n'est pas pensé, vous pouvez constater l'absence de tout lien entre les chapitres;


  • permaliens - Je ne parle pas de références à la documentation, mais les liens vers le débordement de pile et d'autres chapitres (à la fin du cours, entre lesquels il y a une mer d'informations) sont très distrayants, ce n'est pas grave;


  • eau et mots communs - vous pouvez vérifier le nombre de caractères;


    Les caractères gras sont utilisés pour mettre en évidence les mots, termes, phrases et phrases importants. C'est-à-dire ce qui est particulièrement important dans le contexte de la fonctionnalité décrite:

  • l'interprétation des concepts à sa manière est toujours un sujet ancien (API - Composant - Modèle aka MVC);


  • insertions de la documentation - copier-coller de morceaux entiers, parfois juste pour remplir une place;


  • citations de développeurs - il n'y a tout simplement pas de mots -_-, pourquoi cette fanfaronnade;


  • chapitres obsolètes - il semble tout simplement impossible de les supprimer; ils renforcent parfois la confusion.


    Relations entre l'entité (obsolète) ou les paramètres de remise de produit


Bien sûr, l'avantage est qu'en principe, il y a des cours. Probablement un plus, car écrire quelque chose uniquement sur leur base est toujours cette tâche. Oh bien. Après avoir passé en revue les cours, insérant principalement le code, j'ai décidé d'essayer, mais il reste de la documentation. Ça a commencé à couler ...


Règle numéro 2 - Attention aux fourrés denses


Après avoir fait quelques échantillons simples en utilisant scotch tape documentation, j'ai décidé d'essayer d'obtenir une remise sur les marchandises. Et puis la pluie a commencé. Noyau de Pseudon et oeufs de Pâques:


  • deux modules pour les remises - oui, oui, je pensais depuis longtemps - pourquoi j'ai ajouté la remise, c'est dans le produit, mais je ne peux pas l'obtenir via la classe d'entité DiscountTable . J'ai dû écrire à l'appui. La réponse était la suivante:

DiscountTable - les remises sur les marchandises, appartiennent au module Trade Catalog, la fonctionnalité est obsolète et non utilisée. Nous vous recommandons d'utiliser les règles du panier.

  • manque de documentation - mais vous pouvez obtenir un lien vers la documentation - a demandé
    moi. S'attendant à ce que de 2013 à 2015, elle apparaisse. La réponse est:

La documentation pour la création des règles du panier est toujours en cours de développement.

  • les scénarios de travail n'ont pas été pensés - ma prochaine question était logique - comment obtenir une remise? À laquelle j'ai reçu une réponse enchanteresse et terminé la communication avec le soutien:

Pour obtenir les règles de panier applicables au produit, vous devrez créer un objet panier et effectuer un calcul pour le produit.

  • fonctionnalité incomplète - certaines méthodes de classe peuvent renvoyer des messages d'erreur comme:

Pour ajouter des remises sur les produits, utilisez l'appel CCatalogDiscount :: Add ()

  • architecture complexe - pour créer une sélection complexe de plusieurs tables, des objets relationnels spéciaux sont utilisés, qui doivent être ajoutés à la SomeTable::getMap() . Ce n'est pas toujours facile (certaines classes de description d'entité sont générées automatiquement). En outre, cela attriste le fait qu'il est impossible d'obtenir un échantillon complexe simplement au format d'un tableau multidimensionnel. Et la construction des relations peut prendre plus d'une douzaine de lignes.
  • labyrinthes de fonctionnalités - dans D7, il y a des endroits qui sont constamment réécrits et en même temps toutes les variantes sont prises en charge. Les mêmes objets de relation peuvent être implémentés via: Entity\ReferenceField || Bitrix\Main\ORM\Fields\Relations || runtime (sur demande)

Tout cela est très déprimant et vous indigne pour le moins. Et en plus de cela, il y a d'autres inconvénients.


Règle 3 - Damn Insectes


Bitrix a un certain nombre de fonctionnalités étranges et intrusives que vous oubliez constamment, mais elles clignotent à nouveau sous vos yeux:


  • règles de dénomination des classes et des fichiers - votre propre chariot élévateur qui réduit tout en minuscules, différents noms de classe et de fichier;
  • façons de connecter des solutions tierces - par exemple compositeur ou vue (qui est simplement contenu dans la bibliothèque BX sans raisons évidentes ni add-ons) ;

UPD 1. Amendement pour Vue

Plongé dans la question.
En fait, BX revendique les avantages du wrapper Vue suivants:


  1. Prise en charge du multilinguisme (Bitrix Framework) - vous pouvez ajouter certaines fonctions de BX js au composant Vue, avec réactivité désactivée pour eux;
  2. Global Event Bus - pour la communication entre les applications (s'il y en a plusieurs);
  3. Héritage des composants - sucre syntaxique, extension simple;
  4. Personnalisation des composants - sucre syntaxique, quelque chose comme une substitution (comme / bitrix / components / et / local / components /);
  5. Une seule version de la bibliothèque (dans le cadre du site) - c'est logique, je n'y ai pas pensé tout de suite (merci k0rinf ).

  • prise en charge de l'ancien code - un tas de classes redondantes et inutiles et une confusion constante;
  • composants oubliés - seuls les composants du module iblock ont ​​été mis à jour;
  • modèles de composants - notoires et bien connus de tous, avec une logique métier prête à l'emploi;
  • logique implicite et problèmes de personnalisation - après avoir modifié le script de commande, vous pouvez détecter une erreur subtile et des problèmes avec les modules;
  • ubiquitaire statique - vous commencez à penser que c'est normal;
  • panneau d'administration controversé - parfois pas pratique et pas adaptatif, mais pour développer des modules pour cela ... mmm;

Des bagatelles, mais elles sont toujours à proximité.


Règle numéro 4 - Les étrangers et les autochtones sont dangereux


Bitrix a un autre avantage (non) - une grande communauté. Vous pouvez trouver n'importe quelle information, mais son exactitude et sa pertinence seront une grande question. Souvent, vous ne pouvez apprendre à créer des béquilles ou à utiliser un ancien code qui a déjà un remplacement adéquat. Mais il y a aussi des messies qui peuvent montrer le chemin de leur troupeau. L'un d'eux a déclaré:


Pour travailler avec les infoblocks, utilisez l'ancien noyau, qui fonctionne bien et de manière stable.

Je pense que je vais le faire.


Règle numéro 5 - Les prédateurs quelque part à proximité


Les commerçants faisant l'éloge d'un produit. Articles comparatifs où Bitrix est le leader incontesté. Un tas le sol programmeurs, comme je le suis. De nombreux sites qui demandent de mettre fin à leurs tourments. Aussi le fléau de la communauté.


Règle n ° 6 - Avoir de l'eau


Avec chaque nouveau problème et l’absence d’une solution adéquate, la moralité tombe et vous sautez un coup les pensées viennent, mais est-ce tout ce qui est nécessaire pour cette perte de temps. Le cadre, la conteneurisation et l'intégration continue peuvent être meilleurs, plutôt que ces demi-mesures. Dans de tels cas, seule une décision volontaire eh bien, la demande sauve la situation.


Règle numéro 7 - La pluie tropicale est dure


Et cela termine un fait désagréable, pour des tentatives de programmation, de recherche et de structuration d'informations, de communication avec des experts et de retour au passé, d'apprentissage de quelque chose de nouveau, cela prend beaucoup de temps, en l'absence de résultat intelligible - il déprime constamment.


Civilisation aka conclusions


Et ici, vous sortez de la jungle. Minable mais vivant. Cassé mais toujours pas cassé. Vos yeux fatigués sont ouverts et ils voient tout. Un chemin où il vaut vraiment la peine de bouger et des sentiers où des soins particuliers sont nécessaires.


Bitrix est un produit controversé, affirmant qu'il développement général se développe incorrectement - n'en vaut pas la peine. Mais dire qu'il est le meilleur sans remarquer les défauts, c'est croire aveuglément.


Pour moi, j'ai décidé, Bitrix - non. Un échec complet, bien sûr, ne fonctionnera pas, mais pour développer un produit dans lequel pendant 5 ans il n'y a pas eu de support pour les fonctionnalités de base et la documentation intelligible, pour le noyau nouveau et annoncé - je ne vois aucune raison. Il vaut mieux écrire une solution simple qui sera utilisée de projet en projet sur l'ancien noyau et aller en apprendre une nouvelle.


Le vieil homme Frankenstein, bien sûr, est digne de la vie, au moins quelques bonnes idées. Après tout, nous ne sommes pas au Moyen Âge pour brûler sur le bûcher tous ceux qui pensent différemment. Ou vaut-il encore ce que vous pensez?


PS L'article est écrit à la hâte, si vous ne pouviez pas construire une chaîne cohérente de pensées.

Source: https://habr.com/ru/post/fr473672/


All Articles