1C - Alus jeung jahat. Susunan titik dina holivars sabudeureun 1C

1C - Alus jeung jahat. Susunan titik dina holivars sabudeureun 1C

Rerencangan sareng kolega, nembe-nembe ieu, Habr ningali paningkatan tulisan anu ngritik 1C salaku platform pamekaran, sareng pernyataan ti para pembelana. Tulisan-tulisan ieu nyorot masalah anu serius: paling sering, kritikus 1C ngritikna tina posisi "teu tiasa ngungkulan," ngritik masalah anu sacara de facto gampang direngsekeun, sedengkeun, sabalikna, ngalalaworakeun masalah anu leres-leres penting anu pantes dibahas sareng henteu dibahas ku vendor. Kuring yakin masuk akal pikeun ngalaksanakeun tinjauan anu bijaksana sareng saimbang ngeunaan platform 1C. Urang bakal ngabahas naon anu tiasa dilakukeun, naon anu henteu tiasa dilakukeun, naon anu kedah dilakukeun tapi henteu, sareng, anu terakhir tapi sanés anu paling penting, naon anu dilakukeun kalayan cemerlang, sedengkeun pamekar %technology_name% anjeun bakal nyéépkeun saratus taun pikeun ngalakukeunana, miceunan seueur anggaran taunan.

Hasilna, anjeun, salaku manajer atanapi arsiték, bakal tiasa kéngingkeun pamahaman anu jelas ngeunaan tugas mana anu bakal nguntungkeun tina 1C, sareng dimana éta kedah didorong dugi ka watesna. Salaku pamekar di dunya non-1C, anjeun bakal tiasa ningali naon anu istimewa ngeunaan 1C anu nyababkeun sadaya ribut. Sareng salaku pamekar 1C, anjeun bakal tiasa ngabandingkeun sistem anjeun sareng ékosistem basa sanés sareng ngartos dimana anjeun pas dina lanskap pamekaran parangkat lunak.

Di handap potongan éta aya sajumlah serangan kandel ka 1C, ka kritikus 1C, ka Java, .NET, sareng sacara umum... Kipasna tos disiapkeun, wilujeng sumping!

ngeunaan Kuring

Kuring geus wawuh jeung topik ieu ti kira-kira taun 2004. Kuring geus ngaprogram salila kira-kira genep taun, ti saprak kuring meunang buku ngeunaan Profesor Fortran kalawan komik ngeunaan ucing, manuk piit, jeung hileud. Kuring bakal nganalisis program anu ditulis ku ucing dina gambar buku éta sarta mikirkeun naon anu dipiboga ku éta. Jeung enya, kuring teu boga komputer nyata harita, tapi aya gambarna di tukang buku éta, sarta kuring mencét tombol kertas kalawan patuh, ngasupkeun paréntah anu kuring meunang ti X si Ucing.

Teras aya BK0011 sareng BASIC di sakola, C++ sareng assembler di universitas, teras 1C, teras seueur deui anu sesah diinget. Salila 15 taun ka pengker, kuring utamina kalibet sareng 1C, sanés ngan ukur coding, tapi 1C sacara umum. Nyetél tugas, administrasi, sareng DevOps ogé kalebet. Salila lima taun ka pengker, kuring parantos kalibet dina kagiatan layanan masarakat, ngembangkeun alat pamekaran sareng otomatisasi pikeun pamekar 1C anu sanés, sareng nyerat artikel sareng buku.

Hayu urang mutuskeun topik diskusina

Mimitina, hayu urang jelaskeun naon anu keur diobrolkeun, sabab kecap "1C" bisa hartina loba hal. Dina hal ieu, "1C" ngan saukur nujul kana kerangka pamekaran 1C:Enterprise, vérsi kadalapan ayeuna. Urang moal loba ngobrol ngeunaan produsén atawa kawijakanana (tapi urang kudu nyarita saeutik). Urang moal ngabahas aplikasi husus anu ditulis maké kerangka ieu. Téhnologina misah, jeung aplikasi (alias konfigurasi) misah.

Arsitéktur tingkat luhur 1C: Enterprise

Kuring nyebutkeun kecap "framework" kusabab aya alesan. Tina sudut pandang pamekar, platform 1C téh persis sapertos kitu—framework. Sareng éta kedah diperlakukeun sapertos kitu. Anggap waé sapertos Spring atanapi ASP.NET, anu dijalankeun ku lingkungan runtime (JVM atanapi CLR, masing-masing). Kajadianna dina dunya pamrograman tradisional ("non-1C"), pamisahan kana framework, mesin virtual, sareng aplikasi khusus mangrupikeun hal anu wajar, kusabab komponén ieu biasana dikembangkeun ku vendor anu béda. Nanging, dina dunya 1C, henteu biasa pikeun sacara eksplisit ngabédakeun antara framework pamekaran sareng runtime éta sorangan. Salajengna, aplikasi khusus anu ditulis nganggo framework, kalolobaanana, ogé dikembangkeun ku 1C sorangan. Ieu nyababkeun sababaraha kabingungan. Ku alatan éta, dina tulisan ieu, urang bakal nalungtik 1C tina sababaraha sudut sareng ngaklasifikasikeunana sapanjang sababaraha sumbu. Sareng sapanjang unggal sumbu, urang bakal ngagali jero sareng mertimbangkeun fitur, kaunggulan, sareng kakurangan tina solusi anu aya.

Sudut pandang dina 1C

1C pikeun nu meuli

Nu meuli bakal meunangkeun sistem otomatisasi anu bakal ngamungkinkeun aranjeunna pikeun gancang ngarengsekeun kabutuhan otomatisasi bisnis sorangan. Usaha ieu tiasa janten kios alit atanapi perusahaan induk anu ageung. Sanaos usaha-usaha ieu jelas gaduh kabutuhan anu béda, duanana dirojong ku hiji basis kode platform.

Pikeun nu meuli, 1C nawarkeun waktu-ka-pasar anu gancang. Gancang. Leuwih gancang tibatan Java, C#, atawa JS. Rata-rata. Teu merta. Jelas yén situs wéb kartu bisnis bakal leuwih hadé dina React, tapi backend sistem WMS bakal diluncurkeun leuwih gancang dina 1C.

1C salaku alat

Unggal solusi téknologi ngagaduhan wates aplikasi. 1C sanés basa tujuan umum; éta henteu aya misah tina kerangka na. Éta masuk akal pikeun nganggo 1C nalika anjeun peryogi:

  • aplikasi server
  • aplikasi anu ngalibatkeun kauangan
  • kalayan UI, ORM, Reporting, XML/JSON/COM/PDF/YourDataTransferingFormat anu tos siap.
  • kalayan dukungan pikeun prosés sareng tugas latar
  • kalayan sistem kaamanan berbasis peran
  • kalayan logika bisnis anu tiasa ditulis
  • kalayan kamampuan pikeun gancang nyieun prototipe sareng waktos ka pasar anu pondok

Anjeun teu peryogi 1C upami anjeun hoyong:

  • diajar mesin
  • Itungan GPU
  • grafik komputer
  • itungan matematis
  • Sistem CAD
  • pamrosésan sinyal (sora, vidéo)
  • Telepon HTTP beban luhur kalayan ratusan rébu RPS

1C salaku perusahaan manufaktur

Penting pikeun ngartos bisnis 1C salaku produsén parangkat lunak. 1C ngajual solusi pikeun masalah bisnis ngalangkungan otomatisasi. Naha éta pikeun bisnis ageung atanapi alit, éta anu aranjeunna jual. Aplikasi bisnis mangrupikeun sarana pikeun ngahontal tujuan ieu. Pikeun akuntansi, penggajian, sareng tujuan sanésna, perusahaan nganggo platform pamekaran aplikasi bisnisna nyalira pikeun ngembangkeun aplikasi ieu. Éta khusus disaluyukeun pikeun tugas umum aplikasi bisnis anu sami ieu:

  • akuntansi kauangan
  • kustomisasi logika bisnis anu gampang
  • kamampuan integrasi anu lega dina lanskap IT anu hétérogén

Salaku produsén, 1C yakin strategi ieu ngamungkinkeun hubungan anu saling nguntungkeun sareng mitra sareng klien. Sanaos ieu tiasa diperdebatkeun, sacara kasar kumaha perusahaan memasarkeun dirina: solusi anu tos siap pakai pikeun masalah bisnis anu tiasa gancang disaluyukeun ku mitra sareng diintegrasikeun kana lanskap IT naon waé.

Sadaya keluhan atanapi kahayang ngeunaan 1C salaku kerangka kedah ditingali sacara éksklusif ngalangkungan lénsa ieu. "Kami hoyong OOP dina 1C," saur para pamekar. "Sabaraha biaya dukungan OOP dina platform ieu? Naha éta bakal ngabantosan kami ningkatkeun penjualan kotak?" tanya 1C. Aranjeunna ngungkabkeun "lénsa" aranjeunna dina ngajual solusi pikeun masalah bisnis:

— Hei, bisnis, naha anjeun hoyong OOP dina 1C anjeun?
— Naha ieu bakal ngabantosan abdi ngarengsekeun masalah abdi?
- Saha anu terang...
- Teras teu kedah.

Pamarekan ieu tiasa saé atanapi goréng, gumantung saha anu ningalina, tapi kitu waé kaayaanana. Nalika urang nyarios yén 1C henteu gaduh fitur X, urang kedah ngartos yén éta henteu aya alesanna, tapi dina kontéks tradeoff "biaya implementasi vs. kauntungan".

Klasifikasi téknologi

"Kanyataanna, pangguna Odinets ngamangpaatkeun pola-pola anu pangsaéna, anu dipilih sacara saksama ku ahli metodologi sareng pamekar platform 1C anu prihatin."
Nalika anjeun nyerat kode bodo anjeun pikeun formulir anu dikelola saderhana, anu saleresna anjeun anggo nyaéta pangontrol-tampilan-modél с pangiket data dua arah в mesin aplikasi data tilu lapis, rasa pemetaan hubungan objék tingkat luhur dina dasarna pedaran metadata deklaratif, anu gaduh ciri khasna sorangan basa pamundut anu henteu gumantung kana platform, c antarmuka pangguna anu didorong ku data deklaratif, serialisasi transparan lengkep sareng basa program anu berorientasi domain.

Anu ngabédakeun pamekar 1C ti nu ti Kulon nyaéta dina PR-na. Aranjeunna resep pisan méré ngaran ka nu teu puguh terus ribut-ribut kawas nu keur diheureuyan ku maranéhna.
A. Orefkov

Platform 1C mibanda arsitéktur tilu tingkat klasik, anu museur kana server aplikasi (atanapi émulasina, anu sayogi kalayan biaya anu murah pikeun usaha alit). MS SQL atanapi Postgres dianggo salaku DBMS. Aya ogé dukungan pikeun Oracle sareng IBM DB2, tapi éta seuseueurna ésoteris; teu aya anu terang naon anu bakal kajadian upami 1C diimplementasikeun dina database ieu dina beban sedeng dugi ka luhur. Kuring curiga 1C sorangan ogé teu terang.

Sisi klien nyaéta klien ipis anu dipasang dina mesin pangguna atanapi klien wéb. Fitur konci na nyaéta programer henteu nyerat dua kode anu béda; aranjeunna nyerat hiji aplikasi dina hiji basa, sareng anjeun tiasa nyebarkeunana dina panyungsi upami anjeun hoyong atanapi peryogina. Saha anu hoyong solusi full-stack anu leres kalayan hiji basa pikeun payun sareng tukang, node.js? Aranjeunna henteu pernah hasil ngahontal pangalaman anu konsisten pisan. Solusi full-stack anu leres aya, tapi anjeun kedah nyeratna dina 1C. Ironisna, kitu waé kaayaanana.

Solusi SaaS berbasis awan 1C:Fresh ogé tiasa dianggo dina modeu browser. Gantina mésér 1C, anjeun tiasa nyéwa database alit sareng ngalacak penjualan shawarma anjeun di dinya. Kantun anggo dina browser anjeun, tanpa masang atanapi nyetél nanaon.

Aya ogé klien warisan, anu ku 1C disebut "aplikasi biasa." Warisan nyaéta warisan, wilujeng sumping ka dunya aplikasi 2002, tapi urang nuju ngobrolkeun kaayaan ékosistem ayeuna.

Server 1C ngadukung klaster sareng skala ku cara nambihan mesin énggal kana klaster. Aya seueur perdebatan ngeunaan ieu, sareng urang bakal ngabahas éta dina bagian anu misah dina tulisan ieu. Singkatna, éta henteu sami sareng nambihan sababaraha instansi anu sami di tukangeun HAProxy.

Kerangka pamekaran aplikasi ieu nganggo basa pamrograman sorangan, anu ampir siga VB6 anu rada ningkat anu ditarjamahkeun kana basa Rusia. Pikeun anu teu resep kana sagala hal anu aya hubunganana sareng basa Rusia sareng henteu percanten yén "upami" ditarjamahkeun salaku "upami," pilihan sintaksis kadua ditawarkeun. Ieu hartosna, upami dipikahoyong, anjeun tiasa nyerat dina 1C ku cara anu sacara visual teu tiasa dibédakeun ti VB.

1C - Alus jeung jahat. Susunan titik dina holivars sabudeureun 1C

Basa pamrograman ieu mangrupikeun alesan utama pamekar 1C benci kana platformna. Terus terang, éta sanés tanpa alesan. Basa ieu dikonsep saderhana mungkin, dirancang pikeun minuhan mantra "PANGEMBARA, PAMEKAR" sahenteuna dina skala CIS. Alesan komérsial di balik kaputusan ieu, numutkeun pamanggih kuring, jelas: langkung seueur pamekar, jangkauan pasar anu langkung ageung. Perkiraan mimitian ti 45% dugi ka 95% waktos, sareng kuring bakal langsung nyarios yén nyerat dina basa anu anjeun pikirkeun leres-leres langkung gampang. Sareng kuring terang sababaraha basa pamrograman.

Hayu urang mimitian ku basana, meureun.

Basa pamrograman 1C

Ieu mangrupikeun kaunggulan sareng kalemahan sistem ieu. Éta mastikeun gampangna diaksés sareng gampang dibaca. Di sisi anu sanésna, éta teu acan diropéa ti saprak vérsi 8 dirilis dina taun 2002 sareng parantos lami. Aya anu nyarios, "Kakurangan utama nyaéta kurangna OOP," tapi aranjeunna salah. Kahiji, sanés ngan ukur Nuraliev anu henteu resep OOP, tapi Torvalds ogé. Sareng kadua, OOP memang aya.

Tina sudut pandang pamekar, aranjeunna gaduh kerangka kerja kalayan kelas dasar anu dipetakan kana DBMS. Aranjeunna tiasa nyandak kelas dasar "Diréktori" sareng ngalegaan diréktori "Konsumén" ti dinya. Aranjeunna tiasa nambihan widang kelas énggal, sapertos Nomer Idéntifikasi Wajib Pajak (TIN) sareng Alamat, sareng, upami diperyogikeun, ngaganti metode kelas dasar, sapertos metode OnWrite.

Rangka kerja ieu dirancang sedemikian rupa sehingga pewarisan anu langkung jero jarang diperyogikeun, sareng larangan OOP, numutkeun kuring, masuk akal. 1C museur kana Pangwangunan anu Didorong ku Domain sareng maksa anjeun pikeun mikir utamina ngeunaan widang poko tina solusi anu dikembangkeun, sareng ieu mangrupikeun hal anu saé. Henteu ngan ukur teu aya godaan, tapi ogé teu kedah nyerat 10 DTO sareng ViewModels anu béda ngan ukur pikeun nampilkeun sababaraha data domain di hiji tempat. Pamekar 1C salawasna beroperasi sareng hiji éntitas, tanpa ngaganggu kontéksna ku belasan kelas anu namina sami anu ngawakilan éntitas anu sami tina sudut pandang anu béda. Aplikasi .NET naon waé, contona, pasti bakal ngandung sababaraha ViewModels sareng DTO pikeun serialisasi ka JSON sareng mindahkeun data ti klien ka server. Sareng sakitar 10-15% tina kode aplikasi anjeun bakal dianggo pikeun mindahkeun data ti hiji kelas ka kelas anu sanés sacara manual atanapi nganggo hacks sapertos AutoMapper. Kode ieu kedah ditulis, sareng programer kedah dibayar pikeun nyiptakeun sareng pangropéa na.

Tétéla basa 1C hésé dikembangkeun tanpa ningkatkeun kompleksitasna kana tingkat basa umum, sahingga kaleungitan kaunggulanana dina hal kesederhanaan. Naon tujuan pamungkas vendor: pikeun nganteurkeun solusi standar anu tiasa disaluyukeun ku mahasiswa anu direbut ti jalan kalayan tingkat kualitas anu diperyogikeun (nyaéta, kasusna ditutupan ti kios ka pabrik ageung). Upami anjeun kios, sewa mahasiswa; upami anjeun pabrik, sewa guru ti mitra implementasi. Kanyataan yén mitra implementasi ngajual mahasiswa kalayan harga guru sanés masalah kerangka. Sacara arsitéktur, kerangka kedah nyumponan kabutuhan duanana; kode pikeun konfigurasi standar (anu kami jual ka bisnis kalayan jangji kustomisasi) kedah kahartos ku mahasiswa, sareng guru tiasa ngartos naon waé.

Numutkeun kuring mah, naon anu sabenerna kurang tina basa éta, naon anu maksa hiji jalma pikeun nulis leuwih ti anu mungkin, naon anu ngabeakkeun waktu anu dibayar ku klien.

  • Kamungkinan ngetik dina tingkat, contona, TypeScript (hasilna, alat analisis kode anu langkung canggih dina IDE, refactoring, langkung sakedik bug anu ngaganggu)
    Ngagaduhan fungsi salaku objék kelas hiji. Konsép anu rada rumit, tapi jumlah kode boilerplate tiasa dikirangan sacara signifikan tina anu biasana. Numutkeun kuring, pamahaman murid ngeunaan kode éta bakal ningkat kusabab volume anu dikirangan.
  • Literal sareng inisialisasi koleksi universal. Hal anu sami lumaku pikeun ngirangan jumlah kode anu kedah ditulis sareng/atanapi diulas. Ngamuat koleksi nyéépkeun langkung ti 9000% waktos pamrograman 1C. Nulis ieu tanpa gula sintaksis nyéépkeun waktos, mahal, sareng rawan kasalahan. Sacara umum, jumlah LOC dina solusi 1C ngaleuwihan sadaya wates anu tiasa dibayangkeun dibandingkeun sareng kerangka sumber terbuka anu sayogi sareng, kanyataanna, sadaya program Java perusahaan anjeun digabungkeun. Basa na verbose, sareng ieu robih janten volume data, mémori, perlambatan IDE, waktos, sareng artos.
  • pamungkas konstruksi kuring gaduh hipotesis yén konstruksi ieu leungit sabab aranjeunna teu acan mendakan tarjamahan anu saé pikeun éta kana basa Rusia 🙂
  • Tipe data asli (non-OO), analog sareng Tipe VB6. Ieu ngaleungitkeun kabutuhan pikeun ngetik struktur nganggo koméntar dina perpustakaan subsistem standar sareng metode magis pikeun ngawangun struktur ieu. Hasilna: kirang kode, petunjuk titik-titik, pemecahan masalah anu langkung gancang, sareng kirang typo sareng sipat struktur anu leungit. Ayeuna, ngetik struktur anu ditetepkeun ku pangguna mangrupikeun tanggung jawab tim pamekaran Perpustakaan Subsistem Standar, anu, pikeun kiriditna, sacara saksama nyerat koméntar ngeunaan sipat anu dipiharep tina struktur parameter anu disalurkeun.
  • Kurangna dukungan nalika damel sareng telepon asinkron dina klien wéb. Naraka callback dina bentuk NotificationHandling mangrupikeun solusi samentawis anu disababkeun ku parobahan dadakan dina API browser utama, tapi ieu teu tiasa dijaga salamina; kaunggulan "pamahaman siswa" ngeunaan kode asinkron beuki leungit. Tambahkeun kana ieu kurangna dukungan pikeun paradigma ieu dina IDE utama, sareng kaayaan janten langkung parah.

Ieu ngan sababaraha masalah anu penting. Daptarna tiasa langkung panjang, tapi urang kedah émut yén ieu sanés basa tujuan umum. Éta henteu meryogikeun multithreading, fungsi lambda, aksés GPU, atanapi itungan floating-point anu gancang. Éta mangrupikeun basa skrip logika bisnis.

Programer anu parantos sering damel sareng basa ieu teras nalungtik kana JS atanapi C# janten bosen. Éta kanyataan. Éta kedah mekar. Di sisi anu sanés tina skala, vendor nimbang-nimbang biaya palaksanaan fitur-fitur ieu dibandingkeun sareng paningkatan pendapatan anu bakal dihasilkeun. Abdi teu gaduh inpormasi ngeunaan mana anu ayeuna langkung penting dipertimbangkeun ku perusahaan.

Lingkungan pangwangunan

Di dieu ogé teu lancar. Aya dua lingkungan pamekaran. Anu kahiji nyaéta Configurator, anu kalebet dina distribusi. Anu kadua nyaéta lingkungan Enterprise Development Tools (EDT), anu dikembangkeun nganggo Eclipse.

Konfigurator ieu nyayogikeun rupa-rupa tugas pamekaran, ngadukung sadaya fitur, sareng mangrupikeun lingkungan utama di pasar. Éta ogé parantos lami sareng henteu dikembangkeun, numutkeun gosip, kusabab seueurna hutang téknis di jerona. Kaayaan ieu tiasa ditingkatkeun ku cara muka API internal (dina bentuk silaturahmi sareng Badai salju A. Orefkova atanapi sacara mandiri), tapi sanés kitu. Pangalaman nunjukkeun yén komunitas bakal ngahijikeun fitur IDE na nyalira, salami vendor henteu ngaganggu. Tapi urang gaduh naon anu urang gaduh. Konfiguratorna saé pisan dina taun 2004-2005, mirip pisan sareng Visual Studio harita, sareng bahkan langkung saé di sababaraha tempat, tapi éta macét dina jaman éta.

Leuwih ti éta, ukuran solusi has rata-rata parantos ningkat sababaraha kali lipat ti saprak harita, sareng IDE ayeuna teu tiasa nanganan volume kode anu dipasihkeun ka aranjeunna. Kamampuan usability sareng refactoring henteu nol; aranjeunna sabenerna nuju turun. Sadaya ieu ngalemahkeun para pamekar, anu ngimpi migrasi ka ékosistem sanés sareng teras-terasan ngode di dinya kalayan goréng, tapi dina lingkungan anu pikaresepeun anu henteu ngaludah beungeutna ku paripolahna.

Salaku alternatif, kami nawiskeun IDE anu diwangun ti mimiti di luhur Eclipse. Kode sumberna, sapertos parangkat lunak sanésna, hirup salaku file téks anu disimpen dina GIT, cabang, pamundut pull, sareng sadayana anu sanésna. Kakuranganna nyaéta éta henteu ninggalkeun status béta salami mangtaun-taun, sanaos beuki saé unggal rilis. Abdi moal ngajelaskeun sacara rinci ngeunaan kakurangan EDT, kumargi kakurangan ayeuna mangrupikeun fitur anu tetep énjing. Pedaran sapertos kitu bakal gancang janten teu relevan. Ngembangkeun dina EDT tiasa dilakukeun ayeuna, tapi éta teu biasa, sareng anjeun kedah siap pikeun sababaraha bug dina IDE.

Upami urang ningali kaayaan ieu ngalangkungan "lénsa 1C" anu kasebat di luhur, hasilna sapertos kieu: diluncurkeunna IDE énggal moal ningkatkeun penjualan kotak, tapi kamungkinan bakal ngirangan churn pamekar. Hésé pikeun nyarios naon anu bakal kajadian ka hareup pikeun ékosistem dina hal kanyamanan pamekar, tapi Microsoft parantos ngabobodo pamekar sélulér sakali ku nawiskeun jasana telat teuing.

Manajemén pangwangunan

Sadayana di dieu langkung saé tibatan nyerat kode, khususna akhir-akhir ieu, nalika usaha komunitas parantos ngungkabkeun masalah administrasi otomatis, ngaluncurkeun prototipe anu ngadorong miceun repositori 1C sareng nganggo git, quick blame, review kode, analisis statis, autodeployment, sareng saterasna. Seueur fitur anu parantos ditambahkeun kana platform anu ningkatkeun tingkat otomatisasi tugas pamekaran. Nanging, sadaya fitur ieu ditambahkeun sacara éksklusif pikeun ngembangkeun produk ageung urang nyalira, nalika janten jelas yén otomatisasi sanés pilihan deui. Gabungan otomatis, babandingan KDiff tilu arah, sareng fitur-fitur sanésna parantos muncul. Proyék GitHub parantos diluncurkeun. gitconverter, anu, terus terang, sacara ideologis ditarik kaluar tina proyék éta gitsync, tapi disaluyukeun pikeun prosés vendor. Hatur nuhun ka tim sumber terbuka anu khusus, otomatisasi pamekaran dina 1C parantos maju. API konfigurator terbuka, numutkeun pamanggih kuring, ogé bakal ngungkulan katerbelakangan moral IDE utama.

Ayeuna, nyimpen kode sumber 1C dina git kalayan komitmen anu numbu ka tugas Jira, ulasan dina Crucible, diluncurkeun nganggo tombol ti Jenkins, sareng laporan Allure ngeunaan uji coba kode dina 1C, bahkan analisis statis dina SonarQube — ieu lain warta deui, tapi geus jadi hal umum di pausahaan-pausahaan anu loba ngamekarkeun 1C.

Administrasi

Seueur anu kedah dicarioskeun di dieu. Anu mimiti, tangtosna, aya serverna (klaster server 1C). Éta hal anu saé pisan, tapi kusabab éta mangrupikeun kotak hideung anu lengkep, didokumentasikeun sacara rinci tapi ku cara anu khusus, ngatur ngajalankeun operasi beban tinggi anu teu kaganggu dina sababaraha server mangrupikeun hak milik sababaraha jalma anu dipilih, nyaéta jalma-jalma anu ngagem medali "Ahli Téknologi". Perlu dicatet yén, sacara prinsip, ngatur server 1C teu béda ti ngatur server anu sanés. Éta mangrupikeun aplikasi multi-threaded berbasis jaringan anu ngonsumsi mémori, CPU, sareng sumber daya disk. Éta nawiskeun kamampuan anu éksténsif pikeun pangumpulan telemetri sareng diagnostik.

Masalahna di dieu nyaéta vendor henteu nawiskeun nanaon anu khusus dina hal solusi anu tos siap pikeun diagnostik ieu. Leres, aya 1C:KIP sareng TsUP, sareng sanaos henteu goréng, éta mahal pisan sareng henteu sadayana gaduhna. Komunitas ieu ngagaduhan sababaraha pamekaran pikeun nyambungkeun Grafana, Zabbix, ELK, sareng alat admin standar anu sanés, tapi teu aya solusi tunggal anu cocog pikeun mayoritas. Tugas ngantosan jawara na. Sareng upami anjeun bisnis anu ngarencanakeun pikeun ngaluncurkeun dina klaster 1C, anjeun peryogi Ahli. Naha éta jalma jero atanapi jalma luar, aranjeunna diperyogikeun. Éta normal pikeun gaduh peran anu misah sareng kompetensi khusus server; henteu unggal spesialis 1C peryogi pangaweruh ieu, tapi anjeun ngan ukur kedah ngartos yén peran sapertos kitu diperyogikeun. Candak SAP, contona. Programmer di dinya sigana moal ninggalkeun korsi na upami dipenta pikeun ngonpigurasikeun hiji hal dina server aplikasi. Aranjeunna panginten ngan saukur teu terang, sareng aranjeunna moal ngarasa éra. Metodologi SAP ngagaduhan peran karyawan khusus pikeun ieu. Ku sababaraha alesan, industri 1C percaya yén kamampuan ieu kedah digabungkeun dina hiji karyawan pikeun gaji anu sami. Ieu mangrupikeun salah paham.

Kakurangan Server 1C

Ngan aya hiji kakuranganna: reliabilitas. Atawa, upami anjeun resep, teu tiasa diprediksi. Paripolah server anu ujug-ujug sareng teu teratur janten bahan obrolan. Ubar universal — ngeureunkeun server sareng ngabersihkeun sadaya cache — bahkan dijelaskeun dina buku panduan ahli, sareng file batch malah disarankeun pikeun ngalakukeunana. Upami 1C anjeun mimiti ngalakukeun hiji hal anu sacara téoritis henteu kedah dilakukeun, waktosna pikeun ngabersihkeun cache data sési. Numutkeun kuring, ngan aya sakitar tilu jalmi di sakumna nagara anu terang kumaha ngoperasikeun server 1C tanpa prosedur ieu, sareng aranjeunna henteu ngabagi rahasia aranjeunna sabab éta cara aranjeunna hirup. Panginten rahasia aranjeunna nyaéta aranjeunna ngabersihkeun data sési, tapi aranjeunna henteu nyarios ka saha waé ngeunaan éta, hehe.

Upami teu kitu, server 1C mangrupikeun aplikasi anu sami sareng anu sanés sareng diadministrasikeun ku cara anu sami, ku cara maca dokuméntasi sareng ngetok kendang.

Docker

Mangpaat ngagunakeun server 1C anu dikontainerisasi dina produksi tacan kabuktian. Server henteu dikelompokkeun ku ngan saukur nambihan simpul di tukangeun load balancer, anu ngaminimalkeun kauntungan tina kontainerisasi dina produksi, sareng operasi beban tinggi anu suksés dina kontainer tacan kabuktian. Hasilna, Docker + 1C ngan ukur dianggo ku pamekar pikeun nyetél lingkungan uji coba. Di dinya, éta mangpaat pisan sareng praktis, ngamungkinkeun pamekar pikeun maénkeun téknologi modéren sareng istirahat tina padamelan alat konfigurasi.

Komponen komérsial

Tina sudut pandang investasi, 1C ngamungkinkeun peluncuran ideu bisnis anu gancang hatur nuhun kana kamampuan anu lega tina kelas aplikasi na. Langsung ti kotakna, 1C nawiskeun laporan anu saé pisan, integrasi sareng sadayana, klien wéb, klien sélulér, aplikasi sélulér, dukungan pikeun rupa-rupa DBMS, kalebet anu gratis, sareng dukungan lintas platform pikeun komponén server sareng klien anu tiasa dipasang. Leres, UI aplikasi bakal konéng, anu sakapeung janten kakurangan, tapi henteu salawasna.
Ku milih 1C, bisnis nampi sakumpulan solusi parangkat lunak anu ngamungkinkeun pikeun ngawangun rupa-rupa aplikasi, ogé seueur pamekar di pasar anu hoyong artos kirang tibatan pamekar Java sareng ngahasilkeun hasil anu langkung gancang.

Contona, ngirimkeun faktur PDF ka klien tiasa réngsé dina sajam padamelan mahasiswa. Tugas anu sami dina .NET tiasa réngsé ku mésér perpustakaan anu dipatenkeun, atanapi ku sababaraha dinten atanapi minggu coding ku pamekar anu tegas sareng janggotan. Kadang-kadang, duanana. Sareng enya, kuring ngan ukur nyarioskeun ngeunaan ngahasilkeun PDF. Kami henteu nyarios ti mana asalna faktur éta. Pamekar wéb front-end kedah nyiptakeun formulir dimana operator ngalebetkeun data, pamekar back-end kedah nyiptakeun modél DTO pikeun ngirimkeun JSON, modél pikeun nyimpenna dina database, struktur database éta sorangan, migrasi ka dinya, ngahasilkeun répréséntasi grafis tina faktur éta sorangan, sareng ngan ukur PDF. Dina 1C, sadaya tugas, ti mimiti, tiasa réngsé dina waktos anu pas sajam.

Sistem akuntansi anu lengkep pikeun kios alit kalayan hiji prosés bisnis mésér/ngajual tiasa diwangun dina sakitar tilu jam. Éta kalebet laporan penjualan, pelacakan inventaris dumasar harga pameseran sareng penjualan, rincian dumasar gudang, kontrol aksés, klien wéb, sareng aplikasi sélulér. Oke, kuring ngaleuleuwihi ngeunaan aplikasi éta; sareng aplikasi éta, éta henteu peryogi tilu jam, tapi peryogi genep jam.

Sabaraha lami waktos anu diperyogikeun ku pamekar .NET pikeun masang Visual Studio dina komputer anu bersih pikeun nunjukkeunana ka klien? Sareng kumaha upami biaya pamekaranna? Leres pisan.

Kaunggulan 1C salaku platform

Kaunggulan 1C sanés kusabab gaduh hiji fitur anu pangsaéna di kelasna. Sabalikna, unggal subsistem individu gaduh padanan anu langkung pikaresepeun dina parangkat lunak global. Nanging, dumasar kana kombinasi faktor, kuring henteu ningali platform anu tiasa dibandingkeun sareng 1C. Di dieu pisan kasuksésan komérsialna. Kaunggulan platform ieu sumebar di mana-mana sareng paling jelas katingali nalika anjeun ningali kumaha éta diimplementasikeun dina platform sanés. Pikeun kalolobaanana, ieu sanés fitur, tapi langkung nolak fitur anu nguntungkeun paradigma khusus. Sababaraha conto:

  1. Unicode. Naon deui anu langkung saderhana? Tong nganggo encoding ASCII byte tunggal dina taun 2019 (kajaba integrasi sareng sistem warisan anu teu transparan). Moal mungkin. Tapi henteu. Aya anu masih bakal nganggo varchar byte tunggal dina sababaraha tabel, sareng aplikasi éta bakal ngagaduhan masalah encoding. Dina taun 2015, otorisasina LDAP GitLab gagal kusabab penanganan encoding anu teu leres, sareng JetBrains IDE masih henteu salawasna nanganan Cyrillic dina nami file. 1C ngagaduhan isolasi kode aplikasi anu saé tina lapisan database. Éta henteu ngamungkinkeun tipifikasi tabel dina tingkat anu handap, sareng kasalahan pamekar junior anu teu kompeten dina tingkat database mustahil. Leres, kasalahan sanés ku pamekar junior anu teu kompeten tiasa waé, tapi rupa-rupa masalahna langkung alit. Anjeun bakal ngawartosan kuring ayeuna yén aplikasi anjeun dirancang kalayan leres sareng lapisan aksés database diisolasi kalayan leres. Tingali deui aplikasi Java perusahaan anu ditulis khusus anjeun. Tingali sacara saksama sareng jujur. Naha nurani anjeun henteu ngaganggu anjeun? Maka kuring bagja pikeun anjeun.
  2. Penomoran dokumén/diréktori. Ieu pastina sanés anu paling fléksibel atanapi anu pangsaéna dina 1C. Tapi naon anu aranjeunna lakukeun dina parangkat lunak perbankan sareng sistem akuntansi khusus ngan saukur pikasieuneun. Kadang-kadang aranjeunna bakal nempelkeun idéntitas (teras "oh, naha aya liang?"), kadang-kadang aranjeunna bakal nyiptakeun generator anu tiasa dianggo pikeun ngonci dina tingkat DBMS (sareng janten hambatan). Nyatana, rada hésé pikeun ngalaksanakeun tugas anu sigana saderhana ieu — sistem penomoran éntitas ujung-ka-ujung, kalayan kaunikan anu dibagi ku sakumpulan konci anu tangtu, sareng awalan — ku cara anu henteu ngonci database nalika éntri data paralel.
  3. Identifier rékaman basis data. 1C nyieun kaputusan anu wani—sadaya identifier tautan sagemblengna sintétis, sareng éta waé. Sareng teu aya masalah sareng basis data sareng bursa anu disebarkeun. Pamekar sistem sanés nekad ngahijikeun hal sapertos idéntitas (éta langkung pondok, kumaha ogé!), nyered kana GUI dugi ka waktosna pikeun nyiptakeun sababaraha instansi anu numbu (teras aranjeunna bakal kéngingkeun hadiah). Anjeun teu gaduh nanaon sapertos kitu? Jujur?
  4. Daptar. 1C ngagaduhan sababaraha mékanisme anu saé pikeun ngagulung daptar (ageung) sareng navigasi kana éta. Hayu atuh kuring jelaskeun ayeuna — éta ngan upami anjeun nganggo mékanismena kalayan leres! Ieu mangrupikeun masalah anu rada rumit, sareng éta henteu diatasi sacara idéal: boh éta intuitif sareng saderhana (tapi résiko set rékaman klien anu ageung), atanapi paging cacad dina hiji cara atanapi cara anu sanés. Jalma anu ngalaksanakeun paging sering ngalakukeunana kalayan goréng. Jalma anu nyiptakeun scrollbar anu leres ngarusak database, saluran, sareng klien.
  5. Formulir anu dikelola. Memang, antarmuka klien wéb henteu sampurna. Tapi éta tiasa dianggo. Nanging, pikeun seueur sistem akuntansi sareng perbankan anu sanés, ngalaksanakeun workstation jarak jauh mangrupikeun proyék tingkat perusahaan. Bantahan: untungna, ieu moal mangaruhan jalma anu mimitina nerapkeunana dina wéb.
  6. Aplikasi sélulér. Anyar-anyar ieu, anjeun ogé tiasa ngembangkeun aplikasi sélulér dina ékosistem anu sami. Ieu rada rumit tibatan nganggo klien wéb, sabab spésifik alat meryogikeun pamekaran khusus. Nanging, anjeun henteu kedah nyewa tim pamekar sélulér anu misah. Upami anjeun peryogi aplikasi pikeun kabutuhan internal perusahaan (nalika solusi sélulér pikeun masalah perusahaan langkung penting tibatan desain UI anu mencolok), anjeun ngan saukur nganggo platform anu sami.
  7. Laporan. Ku ieu, abdi sanés hartosna sistem BI kalayan data ageung sareng lag ETL. Abdi hartosna laporan staf operasional anu ngamungkinkeun anjeun pikeun meunteun status akuntansi anjeun di dieu sareng ayeuna. Saldo, penyelesaian, bédana inventaris, sareng saterasna. 1C hadir sareng sistem laporan anu tos siap dianggo kalayan setélan anu fleksibel pikeun panglompokan, filter, sareng visualisasi sisi pangguna. Leres, aya alternatif anu langkung saé di pasar. Tapi éta sanés solusi sadayana-dina-hiji, sareng hargana kadang langkung luhur tibatan solusi sadayana-dina-hiji. Langkung sering tibatan henteu, sabalikna: ngan ukur laporan, tapi langkung mahal tibatan sakumna platform, sareng kualitasna langkung handap.
  8. Formulir anu dicitak. Coba waé nganggo .NET pikeun ngarengsekeun masalah ngirim rékaman gaji ka karyawan via email dina format PDF. Ayeuna, kumaha upami nyitak faktur? Kumaha upami nyimpen salinanana kana PDF? Pikeun pangguna 1C, ngaluarkeun tata letak naon waé kana PDF mangrupikeun baris kode tambahan. Éta hartosna 40 detik damel, tinimbang dinten atanapi minggu dina basa sanés. Tata letak formulir anu dicitak dina 1C gampang pisan dikembangkeun sareng cukup kuat pikeun bersaing sareng solusi anu mayar. Leres, spreadsheet 1C sigana henteu nawiskeun seueur fitur interaktif, sareng anjeun henteu tiasa gancang ngadamel diagram 3D kalayan skala nganggo OpenGL. Tapi naha éta leres-leres diperyogikeun?

Ieu ngan ukur sababaraha conto dimana ngawatesan fungsi atanapi ngalaksanakeun kompromi tétéla janten kaunggulan arsitéktur anu signifikan di hareup. Bahkan kompromi atanapi solusi anu kirang sampurna parantos kaluar tina kotak sareng dianggap enteng. Ngalaksanakeunana sacara mandiri bakal mustahil (sabab kaputusan sapertos kitu kedah dilakukeun dina awal proyék, sareng teu aya waktos kanggo éta, sareng teu aya arsiték) atanapi bakal meryogikeun sababaraha iterasi anu mahal. Masing-masing poin ieu (sareng ieu jauh tina daptar lengkep kaputusan arsitéktur) tiasa dirusak sareng ngenalkeun watesan anu ngahalangan skalabilitas. Dina sagala hal, salaku pamilik bisnis, anjeun kedah mastikeun yén programer anjeun, nalika ngawangun sistem ti mimiti, terampil sareng bakal langsung nanganan detil sistem anu halus.

Leres, sapertos sistem kompléks anu sanés, 1C nyalira gaduh solusi anu, dina hiji cara atanapi cara anu sanés, tiasa ningkatkeun skala blok. Nanging, kuring ngulang deui, upami ningali kombinasi faktor, biaya kapamilikan, sareng jumlah masalah anu parantos direngsekeun sateuacanna, kuring henteu ningali pesaing anu pantes di pasar. Kalayan harga anu sami, anjeun kéngingkeun kerangka aplikasi kauangan, server anu dikelompokkeun sareng saimbang kalayan antarmuka UI sareng wéb, aplikasi sélulér, pelaporan, integrasi, sareng sajumlah fitur sanésna. Dina dunya Java, anjeun nyewa tim front-end sareng back-end, ngadebug masalah tingkat handap dina kode server khusus, sareng mayar sacara misah pikeun dua aplikasi sélulér pikeun dua sistem operasi sélulér.

Abdi sanés nyarios 1C bakal ngarengsekeun unggal kasus, tapi pikeun aplikasi internal perusahaan, nalika teu kedah masihan mérek ka UI, naon deui anu diperyogikeun?

Hiji sendok tar

Anjeun panginten gaduh kesan yén 1C bakal nyalametkeun dunya sareng sadaya metode sanés pikeun ngembangkeun sistem perusahaan salah. Ieu leres pisan henteu leres. Tina sudut pandang bisnis, upami anjeun milih 1C, salian ti waktos ka pasar anu gancang, anjeun ogé kedah mertimbangkeun kalemahan ieu:

  • Reliabilitas server. Urang peryogi spesialis anu leres-leres berkualitas tinggi anu sanggup mastikeun operasina lancar. Abdi teu terang aya program pelatihan anu disayogikeun ku vendor pikeun spesialis sapertos kitu. Aya kursus pikeun nyiapkeun ujian "Ahli", tapi numutkeun abdi, éta teu cekap.
  • Dukungan. Tingali poin sateuacanna. Pikeun kéngingkeun dukungan vendor, anjeun kedah mésérna. Kusabab sababaraha alesan, ieu henteu umum dina industri 1C. Tapi sareng SAP, éta ampir wajib, sareng sigana moal aya anu paduli. Tanpa dukungan perusahaan sareng ahli staf, anjeun bakal ditinggalkeun nyalira sareng gangguan 1C.
  • Sabenerna mah, anjeun teu bisa ngalakukeun sagalana ku 1C. Éta téh alat, jeung kawas alat séjénna, éta boga watesna. Dina lingkungan nu basisna 1C, kacida dipikahoyongna pikeun boga arsiték sistem nu lain ahli 1C.
  • Programer 1C anu saé teu langkung mirah tibatan programer anu saé dina basa sanés. Nanging, nyewa programer anu goréng téh mahal, henteu paduli basa anu dianggo.

Hayu urang titik-titik i-na

  • 1C nyaéta kerangka pangwangunan aplikasi gancang (RAD) pikeun bisnis sareng dirancang pikeun tujuan ieu.
  • Sistem tilu tingkat kalayan dukungan pikeun DBMS utama, UI klien, ORM anu lumayan saé, sareng pelaporan.
  • Kamampuh integrasi anu lega sareng sistem anu ngadukung kamampuan anu teu aya dina 1C. Upami anjeun hoyong pembelajaran mesin, anggo Python sareng transfer hasilna ka 1C via HTTP atanapi RabbitMQ.
  • Anjeun teu kedah nyobian ngalakukeun sadayana dina 1C; anjeun kedah ngartos kaunggulanana sareng nganggo éta pikeun kauntungan anjeun.
  • Para pamekar anu resep ngotak-ngatik kerangka kerja sareng gadget téknologi, teras ngolahna deui unggal N taun pikeun nganggo mesin énggal, bosen ku 1C. Sadayana di dinya konservatif pisan.
  • Para pamekar ogé bosen sabab produsénna kurang pisan paduli ka aranjeunna. Basana pikaboseneun, IDE-na lemah. Aranjeunna peryogi modernisasi.
  • Di sisi séjén, pamekar anu teu mendakan hiburan dina ngagunakeun sareng diajar téknologi sanés anu dipikaresepna nyaéta pamekar anu goréng. Aranjeunna bakal ngeluh teras ngalih ka ékosistem anu sanés.
  • Dunungan anu teu ngidinan spesialis 1C-na nulis nanaon dina Python nyaéta dunungan anu goréng. Maranéhna bakal kaleungitan karyawan anu panasaran, sarta maranéhna bakal diganti ku coder monyét anu, bari satuju kana sagalana, bakal nyered parangkat lunak perusahaan kana rawa. Éta kudu ditulis ulang kumaha waé, jadi meureun leuwih hade investasi saeutik dina Python saeutik leuwih tiheula?
  • 1C nyaéta perusahaan komérsial sareng nerapkeun fitur-fiturna ngan ukur dumasar kana kapentingan sareng kagancanganana nyalira. Teu tiasa disalahkeun pikeun ieu; bisnis kedah mikirkeun kauntungan; kitu hirupna.
  • 1C ngahasilkeun artos ku ngajual solusi pikeun masalah bisnis, sanés pikeun masalah pamekar Vasya. Dua konsép ieu aya patalina, tapi prioritasna persis sapertos anu kuring nyatakeun. Nalika pamekar Vasya siap mayar lisénsi pribadi pikeun 1C: ReSharper, éta bakal muncul gancang pisan. "ReSharper" A. Orefkov mangrupikeun buktina. Upami vendor ngadukungna tinimbang ngalawan, pasar pikeun parangkat lunak pamekar tiasa muncul. Ayeuna, aya hiji satengah pamaén di pasar ieu kalayan hasil anu patut dipertanyakeun, sadayana kusabab integrasi IDE goréng sareng sadayana dilakukeun ku cara hacky.
  • Praktek spesialis multi-tasking bakal jadi hal anu geus kaliwat. Aplikasi modéren geus loba teuing pikeun diinget boh tina sisi kode boh tina sisi bisnis. Server 1C ogé beuki rumit, sahingga teu mungkin pikeun nampung sadaya jinis kaahlian dina hiji karyawan. Ieu kedah nyababkeun ningkatna paménta pikeun spesialis, anu antukna bakal ngajantenkeun profési 1C langkung pikaresepeun sareng nyababkeun gaji anu langkung luhur. Upami sateuacana Vasya tilu-dina-hiji damel pikeun hiji gaji, ayeuna anjeun kedah nyewa dua Vasya, sareng persaingan di antara aranjeunna tiasa ngadorong tingkat kaahlianana sacara umum.

kacindekan

1C mangrupikeun produk anu saé pisan. Abdi teu terang produk anu sami dina kisaran hargana. Punten wartosan abdi dina koméntar upami anjeun terang. Nanging, kaleungitan pamekar tina ékosistem beuki katingali, sareng éta mangrupikeun "brain drain," henteu paduli kumaha anjeun ningalina. Industri ieu butuh pisan modernisasi.
Upami anjeun pamekar, tong kaleuleuwihi mikiran 1C sareng ulah nganggap sadayana téh magis dina basa sanés. Nalika anjeun masih junior, éta tiasa waé. Pas anjeun kedah ngarengsekeun hal anu langkung ageung, anjeun kedah milarian solusi anu parantos siap langkung lami sareng ngasahna langkung intensif. Dina hal kualitas blok wangunan anu tiasa dianggo pikeun ngawangun solusi, 1C saé pisan.

Sareng hiji deui: upami anjeun parantos nyewa spesialis 1C, anjeun tiasa ningkatkeun aranjeunna kalayan percaya diri janten analis utama. Pamahaman aranjeunna ngeunaan tugas, bidang poko, sareng kamampuan dekomposisi saé pisan. Abdi yakin ieu kusabab panggunaan DDD anu wajib dina pamekaran 1C. Aranjeunna dilatih pikeun mikir utamina ngeunaan tujuan tugas sareng hubungan antara objék dina bidang poko, bari ogé gaduh latar téknis dina téknologi integrasi sareng format pertukaran data.

Sing émut yén teu aya kerangka anu sampurna sareng jaga diri anjeun.
Saé kanggo sadayana!

P.S.: Hatur nuhun pisan spésurik kanggo bantosan dina nyiapkeun artikel.

Ngan pamaké nu kadaptar bisa ilubiung dina survey. Daptar, Punten.

Naha anjeun gaduh 1C di perusahaan anjeun?

  • 13,3%Teu pisan.71

  • 30,3%Muhun, tapi ngan ukur di departemen akuntansi di hiji tempat. Sistem utama aya dina platform anu sanés. 162

  • 41,4%Muhun, prosés bisnis utama dijalankeun dina éta221

  • 15,0%1C kudu maot, masa depan milik %technology_name%80

534 pamaké milih. 99 pamaké abstained.

sumber: www.habr.com

Mésér hosting anu dipercaya pikeun situs anu gaduh panyalindungan DDoS, server VPS VDS 🔥 Meser hosting situs wéb anu tiasa dipercaya nganggo panyalindungan DDoS, server VPS VDS | ProHoster