Warum, Bitrix? Oder die Feenwelt 1C

Eines Tages, am Montag, kam mir der Gedanke: „Aber ich grabe im neuen Kern“ (relativ neu, aber dazu später mehr). Der Gedanke erschien nicht aus heiterem Himmel, aber die Voraussetzungen dafür waren:


  • Testaufgabe aus einem der großen Studios von Mutter Russland (in dem die Abkürzung ORM vorkam),
  • die Idee, ein einfaches Modul zu schreiben,
  • der Wunsch eines der Kunden, in Zukunft ein Geschäft zu machen.

Deshalb möchte ich die Geschichte dieser Kampagne im dichten tropischen Dschungel teilen.


Eine kurze Einführung


Ich betrachte mich weder bei Bitrix noch bei irgendetwas anderem als Programmierguru. Der Artikel spiegelt meine Beobachtungen, Erfahrungen und Gedanken wider. Konstruktive Kritik sowie begründete Streitigkeiten (wie Sokrates hinterlassen hat) sind willkommen. Im Hintergrund wurden drei allgemeine Themen hervorgehoben, die nicht behandelt werden. Wie ihr Hauptaspekt - Programmierung Arbeiten mit Daten im Rahmen des Bitrix D7-Kernels (ORM), obwohl dies ein grundlegender Faktor für das Schreiben ist.


Im Pool mit dem Kopf


Der Aspekt der Arbeit mit Daten ist grundlegend und ohne sie nirgendwo, dachte ich und beschloss, sofort zu gehen google Schauen Sie sich die Dokumentation an und hoffen Sie auf eine detaillierte Beschreibung und Verfügbarkeit von Beispielen. Schauen Sie sich natürlich die Kurse an. Mit leichter Hand und Hoffnung auf etwas Leckeres und Neues. Da ich keinen Grund zur Sorge sah, ging ich zelten. Die Wolken zogen auf ...


Was Sie über den Dschungel oder die Überlebensregeln wissen müssen


Regel Nummer 1 - Vorsicht vor skrupellosen Reisebüros


Ich beschloss, mit den Kursen zu beginnen, nachdem ich die Menüpunkte gesehen hatte, die mich interessierten (Modul und ORM), und dachte, eine Reihe von Texten und Code-Einfügungen - alles wird schnell gehen, lass uns gehen ... Also wurde mein nächster Fehler gemacht. In der Tat stellte sich heraus:


  • Die Kurse sind schlecht strukturiert - die Reihenfolge des Studiums ist nicht durchdacht, es besteht kein Zusammenhang zwischen den Kapiteln.


  • Permalinks - Ich spreche nicht von Links zur Dokumentation, aber Links zum Stapelüberlauf und anderen Kapiteln (am Ende des Kurses, zwischen denen sich ein Meer von Informationen befindet) sind sehr ablenkend. Dies ist nicht ernst.


  • Wasser und gebräuchliche Wörter - Sie können die Anzahl der Zeichen überprüfen;


    Fett gedruckte Schrift wird verwendet, um wichtige Wörter, Begriffe, Phrasen und Sätze hervorzuheben. Das heißt, was im Zusammenhang mit der beschriebenen Funktionalität besonders wichtig ist:

  • Die Interpretation von Konzepten auf ihre eigene Weise ist immer noch ein altes Thema (API - Component - Template aka MVC);


  • Beilagen aus der Dokumentation - Kopieren und Einfügen ganzer Teile, manchmal nur, um eine Stelle zu füllen;


  • Zitate von Entwicklern - es gibt einfach keine Worte -_-, warum ist das so?


  • veraltete Kapitel - es scheint einfach unmöglich, sie zu löschen, sie verstärken manchmal die Verwirrung.


    Beziehungen zwischen Entitätseinstellungen (veraltet) oder Produktrabatteinstellungen


Das Plus ist natürlich, dass es grundsätzlich Kurse gibt. Wahrscheinlich ein Plus, denn etwas nur auf ihrer Basis zu schreiben, ist immer noch diese Aufgabe. Na ja Nachdem ich die Kurse überprüft und hauptsächlich den Code eingefügt hatte, entschied ich mich, es zu versuchen, aber es gibt immer noch Dokumentation. Es fing an zu nieseln ...


Regel Nummer 2 - Vorsicht vor dichtem Dickicht


Nachdem ich ein paar einfache Proben mit gemacht habe Klebeband Dokumentation habe ich beschlossen, einen Rabatt auf die Ware zu bekommen. Und dann begann der Regen. Pseudonkern und Ostereier:


  • zwei Module für Rabatte - ja, ja, ich habe lange darüber nachgedacht - warum ich den Rabatt hinzugefügt habe, er ist im Produkt enthalten, aber ich kann ihn nicht über die Entitätsklasse DiscountTable . Ich musste zur Unterstützung schreiben. Die Antwort war folgende:

DiscountTable - Rabatte auf Waren gehören zum Modul Handelskatalog, die Funktionalität ist veraltet und wird nicht genutzt. Wir empfehlen die Verwendung der Warenkorbregeln.

  • Mangel an Dokumentation - aber Sie können einen Link zur Dokumentation erhalten - gefragt
    ich. In der Erwartung, dass sie von 2013 bis 2015 erschien. Die Antwort lautet:

Die Dokumentation zum Erstellen der Warenkorbregeln befindet sich noch in der Entwicklung.

  • Die Arbeitsszenarien wurden nicht durchdacht - meine nächste Frage war logisch - Wie kann ich einen Rabatt bekommen? Auf die ich eine bezaubernde Antwort erhielt und die Kommunikation mit Unterstützung beendete:

Um die für das Produkt geltenden Warenkorbregeln zu erhalten, müssen Sie ein Warenkorbobjekt erstellen und eine Berechnung für das Produkt durchführen.

  • unvollständige Funktionalität - Einige Klassenmethoden geben möglicherweise Fehlermeldungen zurück wie:

Verwenden Sie den Aufruf CCatalogDiscount :: Add (), um Produktrabatte hinzuzufügen.

  • Komplexe Architektur - SomeTable::getMap() eine komplexe Auswahl mehrerer Tabellen zu erstellen, werden spezielle Beziehungsobjekte verwendet, die der SomeTable::getMap() -Methode hinzugefügt werden müssen. Dies ist nicht immer einfach (einige Entitätsbeschreibungsklassen werden automatisch generiert). Es macht auch traurig, dass es unmöglich ist, ein komplexes Sample einfach im Format eines mehrdimensionalen Arrays zu erhalten. Und der Aufbau von Beziehungen kann mehr als ein Dutzend Zeilen dauern.
  • Labyrinthe der Funktionalität - in D7 gibt es Orte, die ständig neu geschrieben werden und gleichzeitig alle Variationen unterstützt werden. Dieselben Beziehungsobjekte können implementiert werden über: Entity\ReferenceField || Bitrix\Main\ORM\Fields\Relations || runtime (auf Anfrage)

All dies ist sehr deprimierend und macht Sie, gelinde gesagt, empört. Und außerdem gibt es noch andere Unannehmlichkeiten.


Regel 3 - Verdammte Insekten


Bitrix hat eine Reihe von seltsamen und aufdringlichen Funktionen, die Sie ständig vergessen, aber sie blinken wieder vor Ihren Augen:


  • Regeln für die Benennung von Klassen und Dateien - Ihr eigener Gabelstapler, der alles auf Kleinbuchstaben, verschiedene Klassen- und Dateinamen reduziert;
  • Möglichkeiten zum Verbinden von Lösungen von Drittanbietern - zum Beispiel Komponist oder Vue (die einfach in der BX-Bibliothek ohne offensichtliche Gründe und Add-Ons enthalten ist) ;

UPD 1. Änderung für Vue

Vertiefte sich in die Frage.
Tatsächlich beansprucht BX die folgenden Vorteile des Vue-Wrappers:


  1. Unterstützung für Mehrsprachigkeit (Bitrix Framework) - Sie können der Vue-Komponente einige Funktionen von BX js hinzufügen, für die die Reaktivität deaktiviert ist.
  2. Global Event Bus - für die Kommunikation zwischen Anwendungen (falls mehrere vorhanden sind);
  3. Komponentenvererbung - syntaktischer Zucker, einfach erweitert;
  4. Anpassung von Komponenten - syntaktischer Zucker, so etwas wie eine Substitution (wie / bitrix / components / und / local / components /);
  5. Eine einzelne Version der Bibliothek (im Rahmen der Website) - es ist logisch, ich habe nicht sofort darüber nachgedacht (danke k0rinf ).

  • Unterstützung für alten Code - eine Reihe redundanter, unnötiger Klassen und ständiger Verwirrung;
  • vergessene Komponenten - nur die Komponenten des iblock-Moduls wurden aktualisiert;
  • Komponentenvorlagen - berüchtigt und allen bekannt, mit Geschäftslogik im Anschlag;
  • implizite Logik und Probleme bei der Anpassung - Nach dem Ändern des Auftragsskripts können Sie einen subtilen Fehler und Probleme mit Modulen feststellen.
  • allgegenwärtige statische Aufladung - Sie beginnen zu denken, dass dies normal ist;
  • umstrittenes Admin-Panel - manchmal nicht bequem und nicht anpassungsfähig, aber um Module dafür zu entwickeln ... mmm;

Kleinigkeiten, aber sie sind immer in der Nähe.


Regel Nummer 4 - Fremde und Eingeborene sind gefährlich


Bitrix hat noch einen Vorteil (nein) - eine große Community. Sie können alle Informationen finden, aber ihre Richtigkeit und Relevanz wird eine große Frage sein. Oft können Sie nur lernen, wie man Krücken erstellt oder einen alten Code verwendet, der bereits einen angemessenen Ersatz hat. Es gibt aber auch Messias, die ihrer Herde den Weg weisen können. Einer von diesen sagte:


Verwenden Sie zum Arbeiten mit Infoblocks den alten Kernel, der gut und stabil funktioniert.

Ich denke, ich werde es tun.


Regel Nummer 5 - Raubtiere irgendwo in der Nähe


Vermarkter loben ein Produkt. Vergleichsartikel, in denen Bitrix unbestritten führend ist. Ein Haufen der Boden Programmierer, wie ich bin. Viele Websites, die darum bitten, ihre Qualen zu beenden. Auch die Geißel der Gemeinde.


Regel Nr. 6 - Wasser haben


Mit jedem neuen Problem und dem Fehlen einer angemessenen Lösung sinkt die Moral und Sie überspringen einen Zug Gedanken kommen, aber ist es alles, was für diese Zeitverschwendung benötigt wird. Der Rahmen, die Containerisierung und die kontinuierliche Integration sind möglicherweise besser als diese halben Sachen. In solchen Fällen nur eine willensstarke Entscheidung Nun, Nachfrage rettet die Situation.


Regel Nr. 7 - Tropischer Regen ist hart


Und es beendet eine unangenehme Tatsache: Versuche, Informationen zu programmieren, zu suchen und zu strukturieren, mit Experten zu kommunizieren und in die Vergangenheit zurückzukehren, etwas Neues zu lernen, es braucht viel Zeit, wenn kein verständliches Ergebnis vorliegt - es drückt ständig.


Zivilisation alias Schlussfolgerungen


Und hier kommst du aus dem Dschungel. Schäbig aber lebendig. Gebrochen, aber immer noch nicht kaputt. Deine müden Augen sind offen und sie sehen alles. Ein Weg, auf dem es sich wirklich zu bewegen lohnt, und Wege, auf denen besondere Sorgfalt erforderlich ist.


Bitrix ist ein umstrittenes Produkt und sagt, dass er im Allgemeinen entwickeln entwickelt sich falsch - nicht wert. Aber zu sagen, dass er der Beste ist, ohne die Fehler zu bemerken, ist blind zu glauben.


Für mich selbst entschied ich mich, Bitrix - nein. Eine vollständige Ablehnung wird natürlich nicht funktionieren, sondern in einem Produkt zu entwickeln, in dem seit 5 Jahren keine Unterstützung für die Grundfunktionalität und die verständliche Dokumentation mehr für den neuen und angekündigten Kernel vorhanden ist - ich sehe keinen Grund. Es ist besser, eine einfache Lösung zu schreiben, die von Projekt zu Projekt auf dem alten Kern verwendet wird, und eine neue zu lernen.


Der alte Frankenstein ist natürlich lebenswert, zumindest ein paar würdige Ideen. Schließlich sind wir nicht im Mittelalter, um all diejenigen auf dem Scheiterhaufen zu verbrennen, die anders denken. Oder ist es immer noch wert, was Sie denken?


PS Der Artikel ist in Eile geschrieben, wenn Sie keine konsistente Gedankenkette aufbauen könnten.

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


All Articles