1C - Baik dan jahat. Susunan mata dalam holivar sekitar 1C

1C - Baik dan jahat. Susunan mata dalam holivar sekitar 1C

Rakan dan rakan sekerja, baru-baru ini terdapat lebih kerap artikel mengenai HabrΓ© dengan kebencian terhadap 1C sebagai platform pembangunan, dan ucapan oleh pembelanya. Artikel-artikel ini mengenal pasti satu masalah serius: selalunya, pengkritik 1C mengkritiknya dari kedudukan "tidak menguasainya", memarahi masalah yang secara de facto mudah diselesaikan, dan, sebaliknya, tidak menyentuh masalah yang benar-benar penting, bernilai. berbincang dan tidak diselesaikan oleh vendor . Saya percaya bahawa adalah masuk akal untuk menjalankan semakan yang tenang dan seimbang terhadap platform 1C. Perkara yang boleh dilakukannya, perkara yang tidak boleh dilakukannya, perkara yang patut dilakukan tetapi tidak dilakukan, dan, sebagai pencuci mulut, perkara yang dilakukan dengan hebat, dan pembangun anda di %technology_name% akan melakukan seratus tahun, membuangnya lebih daripada satu bajet tahunan.

Akibatnya, anda, sebagai pengurus atau arkitek, akan dapat memahami dengan jelas tugas apa yang akan bermanfaat untuk anda menggunakan 1C, dan di mana ia perlu dibakar dengan seterika panas. Sebagai pembangun dalam dunia "bukan 1C", anda akan dapat melihat perkara yang terdapat dalam 1C yang menimbulkan kekecohan. Dan sebagai pembangun 1C, anda akan dapat membandingkan sistem anda dengan ekosistem bahasa lain dan memahami lokasi anda dalam sistem koordinat pembangunan perisian.

Di bawah potongan terdapat banyak serangan tebal pada 1C, pada pengkritik 1C, pada Java, .NET dan secara umum... Kipas penuh, dialu-alukan!

Mengenai Saya

Saya sudah biasa dengan subjek perbualan sejak lebih kurang 2004. Saya telah berprogram mungkin sejak saya berumur 6 tahun, dari saat saya mendapat buku tentang Profesor Fortran dengan komik tentang kucing, burung pipit dan ulat. Saya menganalisis program yang ditulis oleh kucing dari gambar dalam buku dan mengetahui apa yang mereka lakukan. Dan ya, saya tidak mempunyai komputer sebenar pada masa itu, tetapi terdapat lukisan pada hamparan buku dan saya dengan jujur ​​menekan butang kertas, memasukkan arahan yang saya telah mengintip kucing X.

Kemudian terdapat BK0011 dan BASIC di sekolah, C++ dan pemasang di universiti, kemudian 1C, dan kemudian banyak perkara lain yang saya malas untuk mengingatinya. Selama 15 tahun yang lalu, saya telah terlibat terutamanya dalam 1C, bukan sahaja dari segi pengekodan, tetapi dalam 1C secara umum. Menetapkan tugas, pentadbiran dan devops di sini. Selama 5 tahun yang lalu saya telah terlibat dalam aktiviti yang berguna dari segi sosial dari segi membangunkan alat pembangunan dan automasi untuk pengguna 1C lain, menulis artikel dan buku.

Mari kita putuskan subjek perbincangan

Mula-mula, mari kita tentukan perkara yang akan kita bincangkan, kerana huruf "1C" boleh membawa maksud banyak perkara. Dalam kes ini, dengan huruf "1C" kami bermaksud secara eksklusif rangka kerja pembangunan "1C: Enterprise" versi kelapan moden. Kami tidak akan bercakap banyak tentang pengilang dan polisinya (tetapi kami perlu melakukan sedikit sahaja). Kami tidak akan membincangkan aplikasi khusus yang ditulis menggunakan rangka kerja ini. Teknologi adalah berasingan, aplikasi aka konfigurasi adalah berasingan.

Seni bina peringkat tinggi 1C: Perusahaan

Bukan tanpa alasan saya menyebut perkataan "rangka kerja". Dari sudut pandangan pembangun, platform 1C adalah rangka kerja yang tepat. Dan anda perlu memperlakukannya betul-betul seperti rangka kerja. Fikirkannya sebagai Spring atau ASP.NET, dilaksanakan oleh beberapa runtime (JVM atau CLR masing-masing). Kebetulan dalam dunia pengaturcaraan konvensional ("bukan 1C"), pembahagian ke dalam rangka kerja, mesin maya dan aplikasi khusus adalah semula jadi, kerana komponen ini biasanya dibangunkan oleh pengeluar yang berbeza. Dalam dunia 1C, adalah tidak lazim untuk membezakan secara eksplisit rangka kerja pembangunan dan masa jalan itu sendiri; selain itu, aplikasi khusus yang ditulis menggunakan rangka kerja itu juga dibangunkan terutamanya oleh 1C sendiri. Akibatnya, timbul beberapa kekeliruan. Oleh itu, dalam rangka artikel, kita perlu mempertimbangkan 1C dari beberapa pihak sekaligus dan mengelaskannya di sepanjang beberapa paksi koordinat. Dan dalam setiap paksi koordinat kita akan meletakkan penyodok bahan coklat dan melihat ciri, kelebihan dan kekurangan penyelesaian sedia ada.

Sudut pandangan pada 1C

1C untuk pembeli

Pembeli membeli sistem automasi yang dengannya dia boleh menyelesaikan masalah mengautomasikan perniagaannya sendiri dengan cepat. Perniagaan boleh menjadi gerai kecil, atau boleh menjadi syarikat induk besar. Jelas sekali bahawa keperluan perniagaan ini berbeza, tetapi kedua-duanya disokong oleh asas kod platform tunggal.

Untuk pembeli 1C ini adalah masa yang pantas untuk pasaran. Cepat. Lebih pantas daripada Java, C# atau JS. Purata. Sekitar hospital. Jelas sekali bahawa tapak web kad perniagaan yang menggunakan React akan menjadi lebih baik, tetapi bahagian belakang sistem WMS akan dilancarkan dengan lebih pantas pada 1C.

1C sebagai alat

Setiap penyelesaian teknologi mempunyai had kebolehgunaan. 1C bukan bahasa tujuan umum; ia tidak hidup secara berasingan daripada rangka kerjanya. Adalah dinasihatkan untuk menggunakan 1C apabila anda memerlukan:

  • aplikasi pelayan
  • aplikasi di mana kewangan muncul
  • dengan UI siap sedia, ORM, Pelaporan, XML/JSON/COM/PDF/YourDataTransferingFormat
  • dengan sokongan untuk proses latar belakang dan pekerjaan
  • dengan keselamatan berasaskan peranan
  • dengan logik perniagaan boleh skrip
  • dengan keupayaan untuk mencipta prototaip dengan cepat dan masa ke pasaran yang rendah

Anda tidak memerlukan 1C jika anda mahu:

  • pembelajaran mesin
  • pengiraan GPU
  • grafik komputer
  • pengiraan matematik
  • sistem CAD
  • pemprosesan isyarat (bunyi, video)
  • highload http panggilan dengan ratusan ribu rps

1C sebagai syarikat pembuatan

Adalah wajar untuk memahami perniagaan 1C sebagai pengeluar perisian. Syarikat 1C menjual penyelesaian kepada masalah perniagaan melalui automasi. Perniagaan yang berbeza, besar atau kecil, tetapi itulah yang dia jual. Cara untuk mencapai matlamat ini adalah aplikasi perniagaan. Untuk perakaunan, perakaunan gaji, dsb. Untuk menulis aplikasi ini, syarikat menggunakan platform pembangunan aplikasi perniagaannya sendiri. Disesuaikan khas untuk tugas biasa bagi aplikasi perniagaan yang sama ini:

  • perakaunan kewangan
  • penyesuaian mudah logik perniagaan
  • kemungkinan integrasi yang luas dalam landskap IT heterogen

Sebagai pengeluar, 1C percaya bahawa ini adalah strategi yang membolehkan anda bekerjasama dengan rakan kongsi dan pelanggan dalam mod menang-menang. Anda boleh berhujah dengan ini, tetapi ini secara kasarnya cara syarikat mempromosikan dirinya: penyelesaian siap sedia untuk masalah perniagaan yang boleh disesuaikan dengan cepat oleh rakan kongsi dan disepadukan ke dalam mana-mana landskap IT.

Semua tuntutan atau kehendak untuk 1C sebagai rangka kerja harus dilihat secara eksklusif melalui prisma ini. "Kami mahukan OOP dalam 1C," kata pemaju. "Berapa kos kami untuk menyokong OOP dalam platform, adakah ini akan membantu kami meningkatkan jualan kotak?" kata 1C. Membuka "prisma" beliau untuk menjual penyelesaian kepada masalah perniagaan:

- Hei, perniagaan, adakah anda mahu OOP dalam 1C anda?
- Adakah ini membantu saya menyelesaikan masalah saya?
- Siapa tahu...
- Kemudian tidak perlu

Pendekatan ini boleh menjadi baik atau buruk bergantung pada siapa yang melihatnya, tetapi itulah caranya. Bercakap tentang fakta bahawa tiada ciri X dalam 1C, anda perlu memahami bahawa ia tidak ada atas sebab tertentu, tetapi dalam konteks pilihan "kos pelaksanaan vs jumlah keuntungan".

Klasifikasi teknologi

β€œMalah, Odinesniks melakukan yang terbaik untuk menggunakan corak terbaik, dipilih dengan teliti oleh metodologi yang prihatin dan pembangun platform 1C.
Apabila anda menulis kod bodoh anda untuk borang terurus yang mudah, sebenarnya anda sedang menggunakan model-pandangan-pengawal с pengikatan data dua hala в enjin-apl-data-tiga lapis, berperisa pemetaan hubungan objek peringkat tinggi di pangkalan perihalan metadata deklaratifmempunyai sendiri bahasa pertanyaan bebas platform, C antara muka pengguna didorong data deklaratif, siri telus lengkap dan bahasa program berorientasikan domain.

Di mana pemaju 1C berbeza daripada rakan sekerja Barat mereka adalah dalam PR. Mereka suka memberi nama besar kepada apa-apa omong kosong dan berlari dengannya seperti beg kotor.”
A. Orefkov

Platform 1C mempunyai seni bina 3 peringkat klasik, di tengah-tengahnya adalah pelayan aplikasi (atau emulasinya untuk wang yang sedikit untuk pekedai kecil). Sama ada MS SQL atau Postgres digunakan sebagai DBMS. Terdapat juga sokongan untuk Oracle dan IBM DB2, tetapi ini agak esoterik; tiada siapa yang tahu apa yang akan berlaku jika anda melaksanakan 1C pada pangkalan data ini di bawah beban sederhana dan tinggi. Saya percaya bahawa 1C sendiri tidak mengetahui perkara ini.

Bahagian klien sama ada klien nipis yang dipasang pada mesin pengguna atau klien web. Ciri utama ialah pengaturcara tidak menulis 2 kod yang berbeza, mereka menulis satu aplikasi, dalam satu bahasa, dan anda boleh memaparkannya dalam penyemak imbas jika ada keinginan atau keperluan. Siapa di sana yang mahukan tindanan penuh yang benar dan satu bahasa untuk bahagian hadapan dan belakang, node.js? Mereka tidak pernah berjaya melakukan perkara yang sama sehingga akhirnya. Timbunan penuh sebenar wujud, tetapi anda perlu menulisnya dalam 1C. Ironinya nasib, perkara sedemikian :)

Penyelesaian SaaS awan 1C:Fresh juga berfungsi dalam mod penyemak imbas, di mana anda tidak boleh membeli 1C, tetapi menyewa pangkalan data kecil dan menjejaki jualan shawarma di sana. Hanya dalam penyemak imbas, tanpa memasang atau mengkonfigurasi apa-apa.

Di samping itu, terdapat pelanggan legasi, yang dalam 1C dipanggil "aplikasi biasa". Legasi adalah warisan, selamat datang ke dunia aplikasi pada tahun 2002, tetapi kami masih bercakap tentang keadaan semasa ekosistem.

Bahagian pelayan 1C menyokong pengelompokan dan skala dengan menambahkan mesin baharu pada gugusan. Agak banyak salinan telah dipecahkan di sini dan akan ada bahagian berasingan dalam artikel tentang ini. Ringkasnya, ini tidak sama dengan menambah beberapa contoh yang sama di belakang HAProxy.

Rangka kerja pembangunan aplikasi menggunakan bahasa pengaturcaraannya sendiri, yang secara kasarnya menyerupai VB6 yang telah dipertingkatkan sedikit yang diterjemahkan ke dalam bahasa Rusia. Bagi orang yang membenci semua bahasa Rusia, yang tidak percaya bahawa "jika" diterjemahkan sebagai "jika", pilihan sintaks kedua ditawarkan. Itu. Jika anda mahu, anda boleh menulisnya dalam 1C sedemikian rupa sehingga ia tidak dapat dibezakan daripada VB.

1C - Baik dan jahat. Susunan mata dalam holivar sekitar 1C

Bahasa pengaturcaraan ini adalah sebab utama kebencian nama samaran 1C terhadap platform mereka. Mari kita hadapi, bukan tanpa sebab. Bahasa ini diilhamkan semudah mungkin, direka untuk memenuhi mantra "PEMBANGUN, PEMAJU" pada skala sekurang-kurangnya dalam CIS. Intipati komersial penyelesaian sedemikian, pada pendapat saya, jelas kelihatan: lebih banyak pembangun, liputan pasaran yang lebih besar. Ini menjadi kenyataan, menurut pelbagai anggaran daripada 45% hingga 95%. Saya akan katakan dengan segera bahawa menulis dalam bahasa yang anda fikirkan adalah lebih mudah. Dan saya tahu banyak bahasa pengaturcaraan.

Mari kita mulakan dengan bahasa.

bahasa pengaturcaraan 1C

Pada masa yang sama titik kuat dan lemah sistem. Menyediakan kemasukan yang mudah dan kebolehbacaan. Sebaliknya, ia tidak dikemas kini sejak keluaran versi 8 pada tahun 2002 dan sudah lapuk dari segi moral. Seseorang akan berkata "kelemahan utama ialah tiada OOP" dan mereka akan salah. Pertama, PLO bukan sahaja menyukai Nuraliev, tetapi juga Torvalds. Dan kedua, OOP masih wujud.

Dari sudut pandangan pembangun, dia mempunyai rangka kerja dengan kelas asas yang dipaparkan pada DBMS. Pembangun boleh mengambil kelas asas "Direktori" dan mewarisi direktori "Pelanggan" daripadanya. Ia boleh menambah medan kelas baharu padanya, contohnya, INN dan Alamat, dan juga, jika perlu, ia boleh mengatasi (mengatasi) kaedah kelas asas, contohnya, kaedah OnWrite/AtRecord.

Rangka kerja ini direka bentuk sedemikian rupa sehingga pewarisan yang lebih mendalam jarang diperlukan, dan sekatan dalam OOP, pada pendapat saya, masuk akal. 1C memfokuskan pada Pembangunan Didorong Domain dan membuatkan anda berfikir, pertama sekali, tentang bidang subjek penyelesaian yang sedang dibangunkan, dan ini bagus. Bukan sahaja tiada godaan, tetapi juga tidak perlu menulis 10 DTO dan ViewModel yang berbeza hanya untuk menunjukkan beberapa data dari domain di suatu tempat. Pembangun 1C sentiasa beroperasi dengan satu entiti, tanpa mengacaukan konteks persepsi dengan sedozen kelas dengan nama yang serupa, mewakili entiti yang sama, tetapi dari sisi yang berbeza. Mana-mana aplikasi .NET, sebagai contoh, semestinya mengandungi lima atau dua ViewModel dan DTO untuk bersiri ke JSON dan pemindahan data dari klien ke pelayan. Dan kira-kira 10-15% daripada kod aplikasi anda akan dibelanjakan untuk memindahkan data dari satu kelas ke kelas lain menggunakan pen atau tongkat seperti AutoMapper. Kod ini mesti ditulis dan pengaturcara mesti dibayar untuk mencipta dan mengekalkannya.

Ternyata bahasa 1C sukar dikembangkan tanpa merumitkannya ke tahap bahasa arus perdana, sehingga kehilangan kelebihan kesederhanaan. Apakah tugas vendor yang pada dasarnya sedang diselesaikan: untuk mengeluarkan penyelesaian standard yang mana-mana pelajar yang ditangkap di jalan boleh menyesuaikan dengan tahap kualiti yang diperlukan (iaitu, penutup kes dari gerai ke kilang besar telah siap). Jika anda gerai, ambil pelajar; jika anda kilang, ambil guru daripada rakan pelaksana anda. Hakikat bahawa rakan kongsi pelaksana menjual pelajar pada harga guru tidak menjadi masalah dengan rangka kerja. Dari segi seni bina, rangka kerja mesti menyelesaikan masalah kedua-duanya, kod konfigurasi standard (yang kami jual kepada perniagaan dengan janji penyesuaian) harus dapat difahami oleh pelajar dan guru harus dapat memahami apa sahaja yang anda mahukan.

Apa yang, pada pendapat saya, benar-benar hilang dalam bahasa, apa yang memaksa anda untuk menulis lebih daripada yang anda boleh, adalah apa yang membuang masa yang dibayar oleh pelanggan.

  • Kemungkinan menaip pada tahap, contohnya, TypeScript (akibatnya, alat analisis kod yang lebih maju dalam IDE, pemfaktoran semula, lebih sedikit jambs ofensif)
    Ketersediaan fungsi sebagai objek kelas pertama. Konsep yang lebih kompleks sedikit, tetapi jumlah kod plat dandang biasa boleh dikurangkan dengan banyak. Pemahaman pelajar tentang kod, IMHO, malah akan meningkat disebabkan oleh pengurangan dalam volum
  • Literal koleksi universal, pemula. Perkara yang sama - mengurangkan jumlah kod yang perlu ditulis dan/atau dilihat dengan mata anda. Pengisian koleksi mengambil lebih 9000% masa pengaturcaraan 1C. Menulis ini tanpa gula sintaksis adalah panjang, mahal dan mudah ralat. Secara umum, jumlah LOC dalam penyelesaian 1C melebihi semua had yang boleh difikirkan berbanding rangka kerja terbuka yang tersedia dan, secara amnya, semua Java perusahaan anda digabungkan. Bahasa ini bertele-tele, dan ini merosot kepada jumlah data, memori, brek IDE, masa, wang...
  • akhirnya pembinaan Saya mempunyai hipotesis bahawa pembinaan ini hilang kerana fakta bahawa mereka tidak menemui terjemahan yang berjaya ke dalam bahasa Rusia :)
  • Jenis data sendiri (tanpa OOP), analog Jenis daripada VB6. Ia akan membolehkan anda untuk tidak menaip struktur menggunakan ulasan dalam BSP dan kaedah ajaib yang membina struktur ini. Kami mendapat: kurang kod, petunjuk melalui titik, penyelesaian yang lebih cepat kepada masalah, lebih sedikit ralat disebabkan kesilapan menaip dan hilang sifat struktur. Kini penaipan struktur pengguna bergantung sepenuhnya kepada pasukan pembangunan Perpustakaan Subsistem Standard, yang, secara kreditnya, menulis ulasan dengan teliti tentang sifat yang dijangkakan bagi struktur parameter yang diluluskan.
  • Tiada gula apabila bekerja dengan panggilan tak segerak pada klien web. callback-hell dalam bentuk ProcessingNotifications ialah tongkat sementara yang disebabkan oleh perubahan mendadak dalam API pelayar utama, tetapi anda tidak boleh hidup seperti ini sepanjang masa; kelebihan "pemahaman pelajar" kod tak segerak semakin hilang lagi dan lagi. Tambah tiada sokongan untuk paradigma ini dalam IDE utama dan keadaan menjadi lebih teruk.

Ini adalah salah satu masalah yang mendesak, jelas bahawa senarai itu mungkin lebih besar, tetapi kita tidak boleh lupa bahawa ini masih bukan bahasa tujuan umum, ia tidak memerlukan multithreading, fungsi lambda, akses kepada GPU dan pantas. pengiraan titik terapung. Ini ialah bahasa skrip logik perniagaan.

Seorang pengaturcara yang telah banyak bekerja dengan bahasa ini, melihat ke dalam js atau c#, menjadi bosan dalam rangka kerja bahasa ini. Ianya adalah fakta. Dia perlukan pembangunan. Di sisi lain skala untuk vendor ialah kos melaksanakan ciri yang ditentukan berbanding peningkatan hasil selepas pelaksanaannya. Di sini saya tidak mempunyai apa-apa maklumat tentang apa yang kini lebih berat di mata syarikat.

Persekitaran pembangunan

Perkara tidak berjalan lancar di sini juga. Terdapat dua persekitaran pembangunan. Yang pertama ialah Configurator yang disertakan dalam penghantaran. Yang kedua ialah persekitaran Alat Pembangunan Perusahaan, atau singkatannya EDT, dibangunkan berdasarkan Eclipse.

Konfigurator menyediakan rangkaian penuh tugas pembangunan, menyokong semua ciri dan merupakan persekitaran utama di pasaran. Ia juga secara moral usang, tidak berkembang, menurut khabar angin - disebabkan oleh jumlah hutang teknikal dalam dirinya sendiri. Keadaan ini boleh diperbaiki dengan membuka API dalaman (dalam bentuk persahabatan dengan manusia salji A. Orefkova atau secara bebas), tetapi ini tidak berlaku. Amalan telah menunjukkan bahawa komuniti akan menulis cirinya sendiri dalam IDE, selagi vendor tidak campur tangan. Tetapi kita ada apa yang kita ada. Konfigurator itu hebat pada tahun 2004-2005, sangat mengingatkan Visual Studio pada masa itu, di beberapa tempat ia lebih sejuk, tetapi ia tersekat pada masa itu.

Di samping itu, volum penyelesaian standard purata telah berkembang beberapa kali sejak itu, dan hari ini IDE tidak dapat menampung jumlah kod yang diberi makan. Keupayaan kebolehgunaan dan pemfaktoran semula bukanlah sifar, ia berada dalam keadaan merah. Semua ini tidak menambah semangat kepada pemaju dan mereka bermimpi untuk berpindah ke ekosistem lain dan terus mengodkan najis di sana, tetapi dalam persekitaran yang menyenangkan yang tidak meludahi muka anda dengan tingkah lakunya.

Sebagai alternatif, IDE yang ditulis dari awal, dibina di atas Eclipse, ditawarkan. Di sana, sumber, seperti dalam mana-mana perisian lain, hidup dalam bentuk fail teks, disimpan dalam GIT, tarik cawangan permintaan, semua ini. Pada sisi negatifnya, ia tidak meninggalkan status beta selama bertahun-tahun sekarang, walaupun ia semakin baik dengan setiap keluaran. Saya tidak akan menulis tentang keburukan EDT, hari ini ia tolak, esok ia adalah ciri tetap. Perkaitan huraian sedemikian akan cepat pudar. Hari ini adalah mungkin untuk dibangunkan dalam EDT, tetapi ia adalah luar biasa; anda perlu bersedia untuk beberapa pepijat IDE tertentu.

Jika anda melihat keadaan melalui "prisma 1C" yang disebutkan di atas, anda mendapat sesuatu seperti ini: pelepasan IDE baharu tidak meningkatkan jualan kotak, tetapi aliran keluar PEMBANGUN mungkin dikurangkan. Sukar untuk mengatakan apa yang menanti ekosistem dari segi keselesaan pembangun, tetapi Microsoft telah merosakkan pembangun mudah alih dengan menawarkan mereka perkhidmatannya terlalu lewat.

Pengurusan pembangunan

Segala-galanya di sini jauh lebih baik daripada menulis kod, terutamanya baru-baru ini, apabila usaha komuniti mendedahkan masalah automasi pentadbiran, melancarkan prototaip yang menyeru untuk membuang repositori 1C ke dalam timbunan sampah dan menggunakan git, kesalahan cepat, semakan kod , analisis statik, penggunaan automatik dan lain-lain. Banyak ciri telah ditambahkan pada platform yang meningkatkan tahap automasi tugas pembangunan. Walau bagaimanapun, semua ciri ini telah ditambahkan hanya dan secara eksklusif untuk pembangunan produk besar kami sendiri, apabila menjadi jelas bahawa kami tidak boleh melakukannya tanpa automasi. Terdapat gabungan automatik, perbandingan tiga hala dengan KDiff dan semua itu. Dilancarkan pada Github gitconverter, yang, terus terang, secara ideologi diseret dari projek itu gitsync, tetapi diubah suai untuk disesuaikan dengan proses syarikat vendor. Terima kasih kepada lelaki yang degil dari sumber terbuka, automasi pembangunan dalam 1C mula berkembang. API terbuka untuk konfigurator, IMHO, juga akan mengalihkan kemunduran moral IDE utama.

Hari ini, menyimpan sumber 1C dalam git dengan komitmen yang dikaitkan dengan isu dalam Jira, ulasan dalam Crucible, butang tekan daripada Jenkins dan laporan Allure tentang ujian kod dalam 1C dan juga analisis statik dalam SonarQube - ini jauh daripada berita, sebaliknya arus perdana dalam syarikat yang terdapat banyak pembangunan 1C.

Pentadbiran

Banyak yang nak diperkatakan di sini. Pertama, ini, sudah tentu, pelayan (kluster pelayan 1C). Satu perkara yang menarik, tetapi disebabkan oleh fakta bahawa ia adalah kotak hitam sepenuhnya, didokumenkan dengan terperinci yang mencukupi, tetapi dengan cara tertentu - menguasai pelancaran operasi tanpa gangguan dalam mod muat tinggi pada beberapa pelayan adalah banyak orang terpilih yang memakai pingat dengan tulisan "Pakar Isu Teknologi". Perlu diingat bahawa, pada dasarnya, mentadbir pelayan 1C tidak berbeza dengan mentadbir mana-mana pelayan lain. Ia adalah aplikasi berasaskan rangkaian, berbilang benang yang menggunakan memori, CPU dan sumber cakera. Menyediakan peluang yang luas untuk pengumpulan telemetri dan diagnostik.

Masalahnya di sini ialah vendor tidak menawarkan sesuatu yang istimewa dari segi penyelesaian siap sedia untuk diagnostik ini. Ya, terdapat 1C: Instrumentasi dan Pusat Kawalan, malah ia agak bagus, tetapi ia sangat mahal dan tidak semua orang memilikinya. Terdapat beberapa perkembangan dalam komuniti untuk menyambungkan Grafana, Zabbix, ELK dan lain-lain daripada set pentadbir standard, tetapi tidak ada penyelesaian tunggal yang sesuai dengan majoriti. Tugas menanti wiranya. Dan jika anda adalah perniagaan yang merancang untuk melancarkan kluster 1C, anda memerlukan Pakar. Anda sendiri di dalam atau dari luar, tetapi anda memerlukannya. Ia adalah perkara biasa bahawa terdapat peranan berasingan dengan kecekapan untuk operasi pelayan, tidak setiap pengguna 1C harus mengetahui perkara ini, anda hanya perlu memahami bahawa peranan sedemikian diperlukan. Mari kita ambil contoh SAP. Di sana, seorang pengaturcara, kemungkinan besar, tidak akan bangun dari kerusinya jika dia diminta untuk mengkonfigurasi sesuatu pada pelayan aplikasi. Dia mungkin bodoh dan dia tidak akan malu. Dalam metodologi SAP terdapat peranan pekerja yang berasingan untuk ini. Atas sebab tertentu, dalam industri 1C dipercayai bahawa ini harus digabungkan dalam satu pekerja untuk gaji yang sama. Ia adalah satu khayalan.

Kelemahan pelayan 1C

Terdapat betul-betul satu tolak - kebolehpercayaan. Atau, jika anda lebih suka, tidak dapat diramalkan. Tiba-tiba perangai pelayan yang pelik sudah menjadi buah mulut orang ramai. Ubat universal - menghentikan pelayan dan mengosongkan semua cache - malah diterangkan dalam buku panduan pakar, malah buku kelompok disyorkan untuk melakukan ini. Jika sistem 1C anda mula melakukan sesuatu yang tidak sepatutnya dilakukan secara teori, sudah tiba masanya untuk mengosongkan cache data sesi. Mengikut anggaran saya, terdapat hanya tiga orang di seluruh negara yang tahu mengendalikan pelayan 1C tanpa prosedur ini dan mereka tidak berkongsi rahsia, kerana... mereka hidup dari ini. Mungkin rahsia mereka ialah mereka membersihkan data sesi, tetapi mereka tidak memberitahu sesiapa mengenainya, kawan.

Jika tidak, pelayan 1C adalah aplikasi yang sama seperti yang lain dan ditadbir dengan cara yang sama, dengan membaca dokumentasi dan mengetuk tamborin.

buruh pelabuhan

Kebergunaan menggunakan pelayan 1C kontena dalam pengeluaran masih belum terbukti. Pelayan tidak dikelompokkan dengan hanya menambah nod di belakang pengimbang, yang mengurangkan faedah kontena pengeluaran kepada minimum, dan amalan operasi yang berjaya dalam bekas dalam mod muatan tinggi belum diwujudkan. Akibatnya, hanya pembangun menggunakan Docker+1C untuk menyediakan persekitaran ujian. Di sana ia sangat berguna, digunakan, membolehkan anda bermain dengan teknologi moden dan berehat dari keputusasaan configurator.

Komponen komersial

Dari sudut pelaburan, 1C membolehkan anda menyelesaikan masalah melancarkan idea perniagaan dengan cepat kerana keupayaan kelas aplikasi yang luas. 1C di luar kotak memberikan Pelaporan yang sangat baik, integrasi dengan apa sahaja, pelanggan web, pelanggan mudah alih, aplikasi mudah alih, sokongan untuk pelbagai DBMS, termasuk. percuma, merentas platform kedua-dua pelayan dan bahagian pelanggan yang dipasang. Ya, UI aplikasi akan berwarna kuning, kadangkala ini adalah tolak, tetapi tidak selalu.
Dengan memilih 1C, perniagaan mendapat satu set penyelesaian perisian yang membolehkan mereka membina rangkaian aplikasi yang sangat luas, serta banyak pembangun di pasaran yang mahukan kurang wang daripada Javaists dan pada masa yang sama menghasilkan hasil dengan lebih cepat.

Sebagai contoh, tugas menghantar invois PDF kepada pelanggan boleh diselesaikan dalam satu jam kerja pelajar. Masalah yang sama dalam .NET boleh diselesaikan dengan membeli perpustakaan proprietari, atau beberapa hari atau minggu pengekodan oleh pembangun yang tegas dan berjanggut. Kadang-kadang, kedua-duanya sekali. Dan ya, saya hanya bercakap tentang penjanaan PDF. Kami tidak menyatakan dari mana rang undang-undang ini akan datang. Frontender web mesti mencipta borang di mana pengendali akan memasukkan data, backender perlu mencipta model dto untuk memindahkan JSON, model untuk menyimpan dalam pangkalan data, struktur pangkalan data itu sendiri, pemindahan kepadanya, pembentukan grafik paparan akaun ini, dan hanya kemudian - PDF. Pada 1C, keseluruhan tugasan, dari awal, selesai dalam masa satu jam.

Sistem perakaunan lengkap untuk gerai kecil dengan satu proses perniagaan yang dibeli/dijual dilakukan dalam masa 3 jam. Dengan pelaporan jualan, perakaunan barangan pada harga belian dan jualan, dipecahkan mengikut gudang, kawalan hak akses, klien web dan aplikasi mudah alih . Okay, saya lupa tentang permohonan itu, dengan permohonan itu bukan dalam 3 jam, dalam enam.

Berapa lama tugas ini mengambil masa pembangun .NET daripada memasang studio visual pada komputer yang bersih kepada menunjukkannya kepada pelanggan? Bagaimana pula dengan kos pembangunan? Benda yang sama.

Kekuatan 1C sebagai platform

1C kuat bukan kerana ada sesuatu yang khusus mengenainya yang terbaik di dunia. Sebaliknya, dalam setiap subsistem individu anda boleh menemui analog yang lebih menarik dalam perisian dunia. Walau bagaimanapun, berdasarkan gabungan faktor, saya tidak melihat platform yang serupa dengan 1C. Di sinilah terletaknya kejayaan komersial. Kelebihan platform tersebar di seluruhnya dan paling jelas kelihatan apabila anda melihat cara ini dilakukan dalam platform lain. Pada asasnya, ini BUKAN ciri, tetapi sebaliknya - penolakan ciri yang memihak kepada satu paradigma tertentu. Beberapa contoh:

  1. Unicode. Apa yang boleh menjadi lebih mudah? Tidak perlu menggunakan pengekodan ASCII bait tunggal pada tahun 2019 (kecuali untuk penyepaduan dengan pengekodan lama). tidak pernah. Tetapi tidak. Bagaimanapun, seseorang dalam beberapa jadual menggunakan varchar bait tunggal dan aplikasi akan menghadapi masalah dengan pengekodan. Pada tahun 2015, kebenaran LDAP gitlab gagal kerana kerja yang salah dengan pengekodan; JetBrains IDE masih tidak berfungsi dengan Cyrillic dalam nama fail di mana-mana sahaja. 1C menyediakan pengasingan berkualiti tinggi kod aplikasi daripada lapisan pangkalan data. Di sana adalah mustahil untuk menaip jadual pada tahap rendah dan jambs junior yang tidak cekap di peringkat pangkalan data adalah mustahil di sana. Ya, mungkin ada masalah lain dengan junior yang tidak cekap, tetapi pelbagai masalah adalah lebih kecil. Sekarang anda akan memberitahu saya bahawa aplikasi anda direka dengan betul dan lapisan akses pangkalan data diasingkan sebagaimana mestinya. Lihat sekali lagi aplikasi Java tersuai korporat anda. Secara rapat dan jujur. Adakah hati nurani anda mengganggu anda? Kemudian saya gembira untuk anda.
  2. Penomboran dokumen/buku rujukan. Dalam 1C ia pasti bukan yang paling fleksibel dan bukan yang terbaik. Tetapi apa yang mereka lakukan dalam perisian perbankan dan dalam sistem perakaunan yang ditulis sendiri - baiklah, ia hanya kegelapan. Sama ada identiti akan tersekat dalam (dan kemudian "oh, mengapa kita mempunyai lubang"), atau sebaliknya, mereka akan membuat penjana yang berfungsi dengan penguncian pada tahap DBMS (dan akan menjadi kesesakan). Sebenarnya, agak sukar untuk melakukan tugas yang kelihatan mudah ini - penghitung entiti hujung ke hujung, dengan bahagian keunikan berdasarkan set kunci tertentu, awalan, supaya ia tidak menyekat pangkalan data semasa kemasukan data selari .
  3. Pengecam rekod dalam pangkalan data. 1C membuat keputusan yang bersungguh-sungguh - semua pengecam pautan adalah benar-benar sintetik dan itu sahaja. Dan tiada masalah dengan pangkalan data dan pertukaran yang diedarkan. Pembangun sistem lain berdegil mencipta sesuatu seperti identiti (ia lebih pendek!), seretnya ke dalam GUI sehingga tiba masanya untuk mencipta beberapa kejadian yang berkaitan (dan kemudian ia akan ditemui). Adakah anda tidak mempunyai ini? secara jujur?
  4. Senarai. 1C mempunyai mekanisme yang agak berjaya untuk melayari senarai (besar) dan menavigasinya. Biar saya membuat tempahan segera - dengan penggunaan mekanisme yang betul! Secara umum, topik ini agak tidak menyenangkan, ia tidak dapat diselesaikan dengan ideal: ia sama ada intuitif dan mudah (tetapi risiko set rekod besar pada pelanggan), atau paging adalah satu atau satu lagi kebengkokan. Mereka yang melakukan paging sering melakukannya secara bengkok. Mereka yang membuat bar skrol jujur ​​menambah pangkalan data, saluran dan pelanggan.
  5. Borang terurus. Tidak syak lagi, dalam klien web antara muka tidak berfungsi dengan sempurna. Tetapi ia berfungsi. Tetapi untuk kebanyakan sistem perakaunan dan perbankan lain, mewujudkan tempat kerja terpencil ialah projek peringkat perusahaan. Penafian: nasib baik bagi mereka yang pada asalnya membuatnya di web, ini tidak akan menjejaskan.
  6. Apl mudah alih. Baru-baru ini, anda juga boleh menulis aplikasi mudah alih semasa berada dalam ekosistem yang sama. Ia sedikit lebih rumit di sini berbanding dengan pelanggan web; kekhususan peranti memaksa anda menulis khusus untuk mereka, tetapi, bagaimanapun, anda tidak mengupah pasukan pembangun mudah alih yang berasingan. Jika anda memerlukan aplikasi untuk keperluan dalaman syarikat (apabila penyelesaian mudah alih untuk masalah korporat adalah lebih penting daripada reka bentuk UI kuning), anda hanya menggunakan platform yang sama di luar kotak.
  7. Pelaporan. Dengan perkataan ini saya tidak bermaksud sistem BI dengan data besar dan ketinggalan pada proses ETL. Ini merujuk kepada laporan kakitangan operasi yang membolehkan anda menilai keadaan perakaunan di sini dan sekarang. Baki, penyelesaian bersama, penggredan semula, dsb. 1C keluar dari kotak dengan sistem pelaporan dengan tetapan fleksibel untuk pengelompokan, penapis dan visualisasi pada bahagian pengguna. Ya, terdapat analog yang lebih sejuk di pasaran. Tetapi tidak dalam rangka penyelesaian semua-dalam-satu dan pada harga kadangkala lebih tinggi daripada penyelesaian semua-dalam-satu. Dan lebih kerap ia adalah sebaliknya: hanya melaporkan, tetapi lebih mahal daripada keseluruhan platform, dan lebih teruk dari segi kualiti.
  8. Borang boleh cetak. Nah, gunakan .NET untuk menyelesaikan masalah menghantar slip gaji dalam bentuk PDF kepada pekerja melalui e-mel. Dan kini tugas mencetak invois. Bagaimana pula dengan menyimpan salinan mereka ke PDF yang sama? Untuk nama panggilan 1C, mengeluarkan sebarang reka letak ke PDF ialah +1 baris kod. Ini bermakna + 40 saat masa bekerja, bukannya hari atau minggu dalam bahasa lain. Reka letak borang bercetak dalam 1C adalah sangat mudah untuk dibangunkan dan cukup berkuasa untuk bersaing dengan rakan sejawat berbayar. Ya, mungkin, tidak banyak peluang interaktif dalam dokumen hamparan 1C; anda tidak boleh dengan cepat mendapatkan gambar rajah 3D dengan penskalaan menggunakan OpenGL. Tetapi adakah ia benar-benar perlu?

Ini hanyalah segelintir contoh di mana mengehadkan fungsi atau melaksanakan kompromi ternyata menjadi manfaat seni bina yang penting pada masa hadapan. Malah kompromi atau bukan pilihan yang paling berkesan - ia sudah ada di dalam kotak dan diambil mudah. Pelaksanaan bebasnya sama ada mustahil (kerana keputusan sedemikian mesti dibuat pada permulaan projek, dan tidak ada masa untuk itu, dan tidak ada arkitek sama sekali), atau beberapa lelaran mahal. Dalam setiap titik yang disenaraikan (dan ini bukan senarai lengkap penyelesaian seni bina), anda boleh merosakkan dan memperkenalkan sekatan yang menyekat penskalaan. Walau apa pun, anda, sebagai ahli perniagaan, perlu memastikan bahawa pengaturcara anda, apabila membuat "sistem dari awal," mempunyai tangan yang lurus dan akan menyelesaikan masalah sistem yang halus dengan segera.

Ya, seperti dalam sistem kompleks lain, 1C sendiri juga mempunyai penyelesaian yang menyekat penskalaan dalam aspek tertentu. Walau bagaimanapun, saya ulangi, berdasarkan gabungan faktor, kos pemilikan, dan bilangan masalah yang telah diselesaikan terlebih dahulu, saya tidak melihat pesaing yang layak di pasaran. Untuk harga yang sama, anda mendapat rangka kerja aplikasi kewangan, pelayan seimbang berkelompok, dengan UI dan antara muka web, dengan aplikasi mudah alih, dengan pelaporan, penyepaduan dan banyak perkara lain. Di dunia Java, anda mengupah pasukan bahagian hadapan dan bahagian belakang, nyahpepijat kumpulan kod pelayan tulisan rumah peringkat rendah dan membayar secara berasingan untuk 2 aplikasi mudah alih untuk 2 OS mudah alih.

Saya tidak mengatakan bahawa 1C akan menyelesaikan semua kes, tetapi untuk aplikasi korporat dalaman, apabila tidak perlu menjenamakan UI, apa lagi yang diperlukan?

Fly di Salap

Anda mungkin mendapat tanggapan bahawa 1C akan menyelamatkan dunia dan semua cara lain untuk menulis sistem korporat adalah salah. Ia tidak seperti itu sama sekali. Dari sudut pandangan ahli perniagaan, jika anda memilih 1C, maka sebagai tambahan kepada masa ke pasaran yang pantas, anda mesti mengambil kira kelemahan berikut:

  • Kebolehpercayaan pelayan. Pakar yang benar-benar berkualiti tinggi diperlukan yang boleh memastikan operasinya tanpa gangguan. Saya tidak mengetahui tentang program latihan siap sedia untuk pakar sedemikian daripada vendor. Terdapat kursus untuk menyediakan peperiksaan Pakar, tetapi ini, pada pendapat saya, tidak mencukupi.
  • Sokongan. Lihat titik sebelumnya. Untuk mendapat sokongan daripada vendor, anda perlu membelinya. Atas sebab tertentu ini tidak diterima dalam industri 1C. Dan dengan SAP, ia hampir mesti dibeli dan ia tidak mengganggu sesiapa pun. Tanpa sokongan korporat dan tanpa pakar mengenai kakitangan, anda boleh dibiarkan bersendirian dengan gangguan 1C.
  • Namun, anda tidak boleh melakukan segala-galanya dengan 1C. Ini adalah alat dan seperti setiap alat, ia mempunyai had kebolehgunaan. Dalam landskap 1C, adalah sangat wajar untuk mempunyai arkitek sistem "bukan-1C".
  • Nama panggilan 1C yang baik tidak lebih murah daripada pengaturcara yang baik dalam bahasa lain. Walaupun, pengaturcara yang buruk mahal untuk diupah, tanpa mengira bahasa yang mereka gunakan.

Mari titik titik

  • 1C ialah rangka kerja pembangunan aplikasi pesat (RAD) untuk perniagaan dan disesuaikan untuk ini.
  • Pautan tiga peringkat dengan sokongan untuk DBMS utama, UI pelanggan, ORM dan pelaporan yang sangat baik
  • Kemungkinan luas untuk penyepaduan dengan sistem yang boleh melakukan apa yang 1C tidak boleh. Jika anda mahukan pembelajaran mesin, ambil Python dan hantar hasilnya ke 1C melalui http atau RabbitMQ
  • Tidak perlu berusaha untuk melakukan segala-galanya menggunakan 1C, anda perlu memahami kekuatannya dan menggunakannya untuk tujuan anda sendiri
  • Pembangun yang berminat untuk menggali alat rangka kerja teknologi dan mereka bentuk semula setiap N tahun kepada enjin baharu bosan dengan 1C. Semuanya sangat konservatif di sana.
  • Pemaju juga bosan kerana terdapat sedikit kebimbangan untuk mereka daripada pengeluar. Bahasa yang membosankan, IDE yang lemah. Mereka memerlukan pemodenan.
  • Sebaliknya, pembangun yang tidak dapat mencari keseronokan melalui penggunaan dan pembelajaran teknologi lain yang mereka nikmati adalah pembangun yang tidak baik. Mereka akan merengek dan berpindah ke ekosistem lain.
  • Majikan yang tidak membenarkan nama panggilan 1C mereka menulis sesuatu dalam Python adalah majikan yang tidak baik. Mereka akan kehilangan pekerja dengan fikiran yang ingin tahu, dan menggantikan mereka akan datang pengkod monyet yang, sambil bersetuju dengan segala-galanya, akan menyeret perisian korporat ke dalam paya. Ia masih perlu ditulis semula, jadi mungkin lebih baik untuk melabur sedikit dalam Python lebih awal?
  • 1C ialah sebuah syarikat komersial dan melaksanakan ciri-ciri semata-mata berdasarkan kepentingan dan kesesuaiannya sendiri. Anda tidak boleh menyalahkannya untuk ini, perniagaan mesti memikirkan keuntungan, itulah kehidupan
  • 1C menjana wang dengan menjual penyelesaian kepada masalah perniagaan, bukan kepada masalah pembangun Vasya. Kedua-dua konsep ini berkorelasi, tetapi keutamaan adalah tepat seperti yang saya katakan. Apabila pemaju Vasya bersedia untuk membayar lesen peribadi untuk 1C: Resharper, ia akan muncul dengan cepat, "Resharper" oleh A. Orefkova adalah buktinya. Jika vendor menyokongnya, dan tidak melawannya, pasaran untuk perisian untuk pembangun akan muncul. Kini terdapat satu setengah pemain dalam pasaran ini dengan keputusan yang boleh dipersoalkan, dan semuanya kerana integrasi dengan IDE adalah negatif dan semuanya dilakukan dengan tongkat.
  • Amalan pengendali pelbagai mesin akan hilang begitu sahaja. Aplikasi moden terlalu besar untuk diingati dari sisi kod dan dari sisi penggunaan perniagaan. Pelayan 1C juga menjadi lebih kompleks; adalah mustahil untuk memegang semua jenis kepakaran dalam satu pekerja. Ini sepatutnya memerlukan permintaan untuk pakar, yang bermaksud daya tarikan profesion 1C dan kenaikan gaji. Jika sebelum ini Vasya bekerja tiga dalam satu untuk satu gaji, kini anda perlu mengupah dua Vasya dan persaingan sesama Vasya boleh merangsang pertumbuhan keseluruhan tahap mereka.

Kesimpulan

1C adalah produk yang sangat berbaloi. Dalam julat harga saya, saya tidak tahu mana-mana analog sama sekali, tulis dalam komen jika ada. Walau bagaimanapun, pengaliran keluar pembangun daripada ekosistem semakin ketara, dan ini adalah "penyingkiran otak", tidak kira bagaimana anda melihatnya. Industri ini dahagakan pemodenan.
Jika anda seorang pembangun, jangan tutup talian pada 1C dan jangan fikir semuanya ajaib dalam bahasa lain. Semasa awak junior, mungkin. Sebaik sahaja sesuatu yang lebih besar perlu diselesaikan, penyelesaian siap sedia perlu dicari lebih lama dan diselesaikan dengan lebih intensif. Dari segi kualiti "blok" dari mana penyelesaian boleh dibina, 1C adalah sangat, sangat baik.

Dan satu lagi - jika nama panggilan 1C datang kepada anda untuk mengupah, maka nama panggilan 1C boleh dilantik dengan selamat untuk jawatan penganalisis utama. Pemahaman mereka tentang tugas, bidang subjek, dan kemahiran penguraian adalah sangat baik. Saya pasti bahawa ini adalah disebabkan oleh penggunaan paksa DDD dalam pembangunan 1C. Orang itu dilatih untuk berfikir tentang maksud tugas pertama sekali, tentang hubungan antara objek kawasan subjek, dan pada masa yang sama mempunyai latar belakang teknikal dalam teknologi integrasi dan format pertukaran data.

Sedar bahawa rangka kerja yang ideal tidak wujud dan jaga diri anda.
Baik untuk semua!

PS: terima kasih banyak-banyak speshuric untuk bantuan dalam menyediakan artikel.

Hanya pengguna berdaftar boleh mengambil bahagian dalam tinjauan. Log masuk, Sama-sama.

Adakah anda mempunyai 1C dalam perusahaan anda?

  • 13,3% Tidak sama sekali.71

  • 30,3% Ada, tetapi hanya di jabatan perakaunan di suatu tempat. Sistem teras pada platform lain162

  • 41,4% Ya, proses perniagaan utama berfungsi padanya221

  • 15,0% 1C mesti mati, masa depan milik %technology_name%80

534 pengguna telah mengundi. 99 pengguna berpantang.

Sumber: www.habr.com

Tambah komen