Kenapa, Bitrix? Atau dunia peri 1C

Suatu hari, pada hari Senin, pikiran itu terpikir oleh saya - โ€œtetapi saya menggali inti baruโ€ (relatif baru, tetapi lebih banyak tentang itu nanti). Pikiran itu tidak muncul begitu saja, tetapi prasyarat untuk itu adalah:


  • tugas uji, dari salah satu studio utama Mother Russia (di mana singkatan ORM muncul),
  • gagasan menulis modul sederhana,
  • keinginan salah satu pelanggan, di masa depan, untuk membuat toko.

Jadi, saya ingin membagikan kisah kampanye ini di hutan tropis yang lebat.


Pengantar singkat


Saya tidak menganggap diri saya seorang guru pemrograman baik pada Bitrix, atau pada hal lain. Artikel tersebut mencerminkan pengamatan, pengalaman, dan pemikiran saya. Kritik konstruktif disambut baik, juga perselisihan yang beralasan (seperti yang diwariskan Socrates). Latar belakang telah menyoroti tiga topik luas yang tidak akan dibahas. Suka aspek utama mereka - pemrograman bekerja dengan data dalam kerangka kerja kernel Bitrix D7 (ORM), meskipun itu merupakan faktor mendasar untuk menulisnya.


Di kolam renang dengan kepala


Aspek bekerja dengan data adalah fundamental dan tanpa itu, saya pikir, dan memutuskan untuk segera pergi google lihat dokumentasi, berharap untuk deskripsi rinci dan ketersediaan contoh, dan tentu saja lihat kursus. Dengan tangan yang ringan dan berharap untuk sesuatu yang enak dan baru. Melihat tidak ada alasan untuk khawatir, saya pergi berkemah. Awan berkumpul ...


Apa yang perlu Anda ketahui tentang hutan atau aturan bertahan hidup


Peraturan nomor 1 - Waspadalah terhadap agen perjalanan yang tidak bermoral


Saya memutuskan untuk memulai dengan kursus, setelah melihat item menu yang menarik minat saya (modul dan ORM), saya pikir banyak teks dan sisipan kode - semuanya akan cepat, mari kita pergi ... Jadi kesalahan saya berikutnya dibuat. Bahkan, ternyata:


  • kursus terstruktur dengan buruk - urutan studi tidak dipikirkan, Anda dapat menemukan tidak adanya hubungan antara bab-bab;


  • permalinks - Saya tidak berbicara tentang tautan ke dokumentasi, tetapi tautan ke stack overflow dan bab-bab lain (di akhir kursus, di antara ada banyak informasi) sangat mengganggu, ini tidak serius;


  • air dan kata - kata umum - Anda dapat memeriksa jumlah karakter;


    Jenis huruf tebal digunakan untuk menyorot kata-kata, istilah, frasa dan kalimat penting. Artinya, apa yang sangat penting dalam konteks fungsi yang dijelaskan:

  • interpretasi konsep dengan cara sendiri masih merupakan topik lama (API - Komponen - Templat alias MVC);


  • sisipan dari dokumentasi - salin-tempel seluruh bagian, kadang-kadang hanya untuk mengisi tempat;


  • kutipan dari pengembang - tidak ada kata -_-, mengapa gertakan ini;


  • bab usang - sepertinya tidak mungkin untuk menghapus mereka, mereka memperkuat kebingungan di kali.


    Hubungan antara entitas (usang) atau pengaturan diskon Produk


Tentu saja, nilai tambahnya adalah, pada prinsipnya, ada kursus. Mungkin nilai tambah, karena menulis sesuatu hanya berdasarkan pada mereka masih tugas itu. Oh baiklah Setelah meninjau kursus, sebagian besar memasukkan kode, saya memutuskan untuk mencoba, tetapi masih ada dokumentasi. Itu mulai gerimis ...


Peraturan nomor 2 - Waspadai semak yang lebat


Setelah membuat beberapa sampel sederhana menggunakan pita scotch dokumentasi, saya memutuskan untuk mencoba mendapatkan diskon pada barang. Dan kemudian hujan pun mulai. Inti pseudon dan telur paskah:


  • dua modul untuk diskon - ya, ya, saya pikir untuk waktu yang lama - mengapa saya menambahkan diskon, itu ada dalam produk, tetapi saya tidak bisa mendapatkannya melalui kelas entitas DiscountTable . Saya harus menulis dukungan. Jawabannya adalah ini:

DiscountTable - diskon barang, milik modul Katalog Dagang, fungsinya sudah usang dan tidak digunakan. Kami merekomendasikan menggunakan Aturan Cart.

  • kurangnya dokumentasi - tetapi Anda bisa mendapatkan tautan ke dokumentasi - bertanya
    saya Berharap bahwa dari 2013-2015 dia muncul. Jawabannya adalah:

Dokumentasi untuk membuat Aturan Keranjang masih dalam pengembangan.

  • skenario kerja tidak dipikirkan - pertanyaan saya berikutnya adalah logis - Bagaimana saya bisa mendapatkan diskon? Saya menerima jawaban yang memikat dan mengakhiri komunikasi dengan dukungan:

Untuk mendapatkan aturan keranjang yang berlaku untuk produk, Anda harus membuat objek keranjang dan melakukan perhitungan untuk produk tersebut.

  • fungsionalitas yang tidak lengkap - beberapa metode kelas dapat mengembalikan pesan kesalahan seperti:

Untuk menambahkan diskon produk, gunakan panggilan CCatalogDiscount :: Add ()

  • arsitektur kompleks - untuk membuat seleksi kompleks dari beberapa tabel, objek hubungan khusus digunakan, yang harus ditambahkan ke metode SomeTable::getMap() . Ini tidak selalu mudah (beberapa kelas deskripsi entitas dihasilkan secara otomatis). Juga, itu menyedihkan fakta bahwa tidak mungkin untuk mendapatkan sampel yang kompleks hanya dalam format array multidimensi. Dan pembangunan hubungan dapat mengambil lebih dari selusin garis.
  • fungsi labirin - di D7 ada tempat yang terus ditulis ulang dan pada saat yang sama semua variasi didukung. Objek hubungan yang sama dapat diimplementasikan melalui: Entity\ReferenceField || Bitrix\Main\ORM\Fields\Relations || runtime (berdasarkan permintaan)

Semua ini sangat menyedihkan dan membuat Anda marah, untuk sedikitnya. Dan selain itu, ada ketidaknyamanan lainnya.


Aturan 3 - Serangga Sial


Bitrix memiliki sejumlah fitur aneh dan mengganggu yang selalu Anda lupakan, tetapi mereka kembali menyala di depan mata Anda:


  • aturan penamaan kelas dan file - forklift Anda sendiri yang mengurangi segalanya menjadi huruf kecil, kelas yang berbeda, dan nama file;
  • cara untuk menghubungkan solusi pihak ketiga - misalnya komposer atau vue (yang hanya terdapat di perpustakaan BX tanpa alasan dan add-on yang jelas) ;

UPD 1. Amandemen untuk Vue

Menggali pertanyaan.
Bahkan, BX mengklaim manfaat bungkus Vue berikut:


  1. Dukungan untuk multibahasa (Bitrix Framework) - Anda dapat menambahkan beberapa fungsi dari BX js ke komponen Vue, dengan reaktivitas dinonaktifkan untuknya;
  2. Global Event Bus - untuk komunikasi antar aplikasi (jika ada beberapa);
  3. Komponen warisan - gula sintaksis, sederhana meluas;
  4. Kustomisasi komponen - gula sintaksis, sesuatu seperti substitusi (seperti / bitrix / komponen / dan / lokal / komponen /);
  5. Satu versi perpustakaan (dalam kerangka situs) - logis, saya tidak langsung berpikir (terima kasih k0rinf ).

  • dukungan untuk kode lama - sekelompok kelas yang berlebihan, tidak perlu dan kebingungan terus-menerus;
  • komponen yang terlupakan - hanya komponen modul iblock yang diperbarui;
  • templat komponen - terkenal dan terkenal bagi semua orang, dengan logika bisnis siap pakai;
  • logika implisit dan masalah dengan kustomisasi - setelah mengubah skrip pesanan, Anda dapat menangkap kesalahan halus dan masalah dengan modul;
  • statis di mana-mana - Anda mulai berpikir bahwa ini normal;
  • panel admin kontroversial - kadang tidak nyaman dan tidak adaptif, tetapi untuk mengembangkan modul untuk itu ... mmm;

Sepele, tetapi mereka selalu di dekatnya.


Peraturan nomor 4 - Orang asing dan penduduk asli berbahaya


Bitrix memiliki satu manfaat lagi (tidak) - komunitas besar. Anda dapat menemukan informasi apa pun, tetapi kebenaran dan relevansinya akan menjadi pertanyaan besar. Seringkali, Anda hanya bisa belajar cara membuat kruk atau menggunakan kode kuno yang sudah memiliki pengganti yang memadai. Tetapi ada juga Mesias yang bisa menunjukkan jalan ke kawanan mereka. Salah satunya berkata:


Untuk bekerja dengan infoblock, gunakan kernel lama, yang bekerja dengan baik dan stabil.

Saya pikir saya akan melakukannya.


Peraturan nomor 5 - Predator di suatu tempat di dekatnya


Pemasar memuji suatu produk. Artikel komparatif di mana Bitrix adalah pemimpin yang tidak perlu dipersoalkan. Banyak lantai programmer, seperti saya. Banyak situs yang meminta untuk mengakhiri siksaan mereka. Juga menjadi momok bagi masyarakat.


Aturan # 6 - Memiliki Air


Dengan setiap masalah baru dan kurangnya solusi yang memadai, moralitas jatuh dan Anda melewatkan langkah pikiran datang, tetapi apakah hanya itu yang diperlukan untuk buang-buang waktu ini? Kerangka kerja, kontainerisasi, dan integrasi berkesinambungan mungkin lebih baik, daripada setengah tindakan ini. Dalam kasus seperti itu, hanya keputusan yang berkemauan keras baik, permintaan menyelamatkan situasi.


Peraturan nomor 7 - Hujan tropis sulit


Dan itu menyelesaikan satu fakta yang tidak menyenangkan, untuk upaya pemrograman, pencarian dan penataan informasi, berkomunikasi dengan para ahli dan kembali ke masa lalu, mempelajari sesuatu yang baru, butuh banyak waktu, tanpa adanya hasil yang dapat dipahami - itu selalu menyedihkan.


Peradaban alias kesimpulan


Dan di sini Anda keluar dari hutan. Buruk tapi hidup. Rusak tapi masih belum rusak. Mata lelahmu terbuka dan mereka melihat segalanya. Sebuah jalan yang benar-benar layak untuk dilalui dan dilalui di mana perawatan khusus diperlukan.


Bitrix adalah produk yang kontroversial, mengatakan bahwa dia umumnya berkembang berkembang secara tidak benar - tidak sepadan. Tetapi untuk mengatakan bahwa dia adalah yang terbaik tanpa memperhatikan kekurangannya adalah kepercayaan yang membabi buta.


Untuk saya sendiri, saya memutuskan, Bitrix - tidak. Kegagalan total, tentu saja, tidak akan berhasil, tetapi untuk mengembangkan produk yang selama 5 tahun tidak ada dukungan untuk fungsionalitas dasar dan dokumentasi yang dapat dipahami, untuk kernel baru dan yang diumumkan - saya tidak melihat alasan. Lebih baik menulis solusi sederhana yang akan digunakan dari proyek ke proyek pada inti lama dan belajar yang baru.


Orang tua Frankenstein, tentu saja, layak hidup, setidaknya beberapa ide yang layak di dalamnya. Bagaimanapun, kita tidak di Abad Pertengahan untuk membakar semua yang berpikir secara berbeda. Atau apakah itu masih layak menurut Anda?


PS Artikel ditulis dengan tergesa-gesa, jika Anda tidak dapat membangun rantai pemikiran yang konsisten.

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


All Articles