1C - İyi ve kötü. Holivarlarda noktaların 1C civarında düzenlenmesi

1C - İyi ve kötü. Holivarlarda noktaların 1C civarında düzenlenmesi

Arkadaşlar ve meslektaşlarım, son zamanlarda Habré hakkında bir geliştirme platformu olarak 1C'ye yönelik nefret içeren makaleler ve savunucularının konuşmaları daha sık ortaya çıkıyor. Bu makaleler ciddi bir sorunu belirledi: Çoğu zaman, 1C eleştirmenleri onu "ustalaşmama", fiilen kolayca çözülen sorunları azarlama ve tam tersine gerçekten önemli, değer veren sorunlara değinmeme açısından eleştiriyorlar. tartışılıyor ve satıcı tarafından çözülmüyor. 1C platformunun ölçülü ve dengeli bir incelemesini yapmanın mantıklı olduğuna inanıyorum. Ne yapabilir, ne yapamaz, ne yapması gerekir ama ne yapmaz ve tatlı olarak, bir anda ne yapar ve %teknoloji_name%'deki geliştiricileriniz bunu yüz yıl boyunca bir kenara atarak yapar. birden fazla yıllık bütçe.

Sonuç olarak, bir yönetici veya mimar olarak siz, 1C'yi kullanmanın sizin için hangi görevde faydalı olacağını ve sıcak ütüyle nerede yakılması gerektiğini net bir şekilde anlayabileceksiniz. "1C olmayan" dünyada bir geliştirici olarak, 1C'de neyin karışıklığa neden olduğunu görebileceksiniz. Ve bir 1C geliştiricisi olarak sisteminizi diğer dillerin ekosistemleriyle karşılaştırabilecek ve yazılım geliştirmenin koordinat sistemindeki konumunuzu anlayabileceksiniz.

Kesimin altında 1C'ye, 1C'yi eleştirenlere, Java'ya, .NET'e ve genel olarak çok sayıda yoğun saldırı var... Hayranlar dolu, hoş geldiniz!

Hakkımda

Konuşma konusuna yaklaşık 2004'ten beri aşinayım. Muhtemelen 6 yaşımdan beri programlama yapıyorum, Profesör Fortran hakkında bir kedi, bir serçe ve bir tırtıl hakkında çizgi romanlar içeren bir kitap aldığım andan itibaren. Kitaptaki resimlerden kedinin yazdığı programları analiz ettim ve ne yaptıklarını öğrendim. Ve evet, o zamanlar gerçek bir bilgisayarım yoktu ama kitabın yayılışında bir çizim vardı ve dürüstçe kağıt düğmelere bastım, kedi X'te gözetlediğim komutları girdim.

Sonra okulda BK0011 ve BASIC vardı, üniversitede C++ ve montajcılar, sonra 1C ve sonra hatırlayamayacak kadar tembel olduğum daha birçok şey vardı. Son 15 yıldır sadece kodlama anlamında değil genel olarak 1C ile ağırlıklı olarak ilgileniyorum. Görevleri, yönetimi ve devop'ları burada ayarlayabilirsiniz. Son 1 yıldır diğer 5C kullanıcıları için geliştirme ve otomasyon araçları geliştirmek, makaleler ve kitaplar yazmak gibi toplumsal açıdan faydalı faaliyetlerde bulunuyorum.

Tartışma konusuna karar verelim

Öncelikle ne hakkında konuşacağımızı tanımlayalım çünkü “1C” harfleri birçok anlama gelebiliyor. Bu durumda, "1C" harfleriyle yalnızca modern sekizinci versiyonun "1C: Enterprise" geliştirme çerçevesini kastedeceğiz. Üreticiden ve politikalarından çok fazla bahsetmeyeceğiz (ama biraz yapmamız gerekecek) Bu çerçeve kullanılarak yazılan belirli uygulamaları tartışmayacağız. Teknoloji ayrı, uygulamalar yani konfigürasyonlar ayrı.

Üst düzey mimari 1C: Kurumsal

“Çerçeve” kelimesini boşuna kullanmadım. Geliştiricinin bakış açısından 1C platformu tam olarak bir çerçevedir. Ve ona tam olarak bir çerçeve gibi davranmanız gerekiyor. Bunu, bazı çalışma zamanları (sırasıyla JVM veya CLR) tarafından yürütülen Spring veya ASP.NET olarak düşünün. Geleneksel programlama dünyasında (“1C değil”), bu bileşenlerin genellikle farklı üreticiler tarafından geliştirilmesi nedeniyle çerçevelere, sanal makinelere ve belirli uygulamalara bölünme doğaldır. 1C dünyasında, geliştirme çerçevesi ile çalışma zamanının kendisini açıkça ayırt etmek alışılmış bir şey değildir; buna ek olarak, çerçeve kullanılarak yazılan belirli uygulamalar da esas olarak 1C'nin kendisi tarafından geliştirilmektedir. Bunun sonucunda bazı karışıklıklar ortaya çıkıyor. Bu nedenle makale çerçevesinde 1C'yi aynı anda birkaç yönden ele almamız ve onu birkaç koordinat eksenine göre sınıflandırmamız gerekecek. Ve her koordinat eksenine bir kürek kahverengi madde koyacağız ve mevcut çözümün özelliklerine, avantajlarına ve dezavantajlarına bakacağız.

1C'ye bakış açıları

Alıcı için 1C

Alıcı, kendi işini otomatikleştirme sorunlarını hızlı bir şekilde çözebileceği bir otomasyon sistemi satın alır. Bir işletme küçük bir tezgah olabileceği gibi büyük bir holding şirketi de olabilir. Bu işletmelerin ihtiyaçlarının farklı olduğu açıktır ancak her ikisi de tek bir platform kod tabanı tarafından desteklenmektedir.

1C alıcısı için bu, pazara hızlı bir çıkış süresidir. Hızlı. Java, C# veya JS'den daha hızlı. Ortalama. Hastane civarında. React kullanan bir kartvizit web sitesinin daha iyi sonuç vereceği açıktır, ancak WMS sisteminin arka ucu 1C'de daha hızlı açılacaktır.

Bir araç olarak 1C

Her teknolojik çözümün uygulanabilirlik sınırları vardır. 1C genel amaçlı bir dil değildir, çerçevesinden ayrı yaşamaz. Aşağıdakilere ihtiyacınız olduğunda 1C kullanmanız önerilir:

  • sunucu uygulaması
  • finansmanın göründüğü uygulama
  • hazır kullanıcı arayüzü, ORM, Raporlama, XML/JSON/COM/PDF/YourDataTransferingFormat ile
  • arka plan süreçleri ve işleri desteğiyle
  • rol tabanlı güvenlik ile
  • komut dosyası yazılabilir iş mantığıyla
  • hızlı bir şekilde prototip oluşturma yeteneği ve düşük pazara sunma süresi ile

İsterseniz 1C'ye ihtiyacınız yoktur:

  • makine öğrenme
  • GPU hesaplamaları
  • bilgisayar grafikleri
  • Matematiksel hesaplamalar
  • CAD sistemi
  • sinyal işleme (ses, video)
  • yüzbinlerce rps ile http çağrılarını yüksek yükleme

Bir üretim şirketi olarak 1C

Bir yazılım üreticisi olarak 1C'nin işinin ne olduğunu anlamaya değer. 1C şirketi otomasyon yoluyla iş sorunlarına çözümler satıyor. Büyük ya da küçük farklı işletmeler ama sattığı şey bu. Bu hedefe ulaşmanın yolu ise iş uygulamalarıdır. Muhasebe, bordro muhasebesi vb. için bu uygulamaları yazmak için şirket kendi iş uygulaması geliştirme platformunu kullanır. Aynı iş uygulamalarının ortak görevleri için özel olarak uyarlanmıştır:

  • finansal Muhasebe
  • iş mantığının kolay özelleştirilmesi
  • Heterojen BT ortamlarında geniş entegrasyon olanakları

Bir üretici olarak 1C, ortaklar ve müşterilerle kazan-kazan modunda çalışmanıza olanak tanıyan stratejinin bu olduğuna inanıyor. Bununla tartışabilirsiniz, ancak şirket kabaca bu şekilde kendini tanıtıyor: iş sorunlarına yönelik, iş ortakları tarafından hızla özelleştirilebilen ve herhangi bir BT ortamına entegre edilebilen hazır çözümler.

Bir çerçeve olarak 1C'ye yönelik tüm iddialar veya istekler yalnızca bu prizmadan görülmelidir. Geliştiriciler, "1C'de OOP istiyoruz" diyor. 1C, "Platformda OOP'yi desteklemenin bize maliyeti ne kadar olacak, bu kutu satışlarını artırmamıza yardımcı olacak mı?" diyor. İş sorunlarına çözüm satma “prizmasını” açıyor:

- Hey iş, 1C'de OOP ister misin?
- Bu sorunlarımı çözmeme yardımcı olacak mı?
- Kim bilir...
- O zaman gerek yok

Bu yaklaşım kimin baktığına bağlı olarak iyi ya da kötü olabilir ama durum böyle. 1C'de X özelliğinin bulunmadığından bahsetmişken, bunun bir nedenden dolayı olmadığını, ancak "uygulama maliyeti ve kar tutarı" seçimi bağlamında olduğunu anlamalısınız.

Teknolojik sınıflandırma

“Aslında Odinesniks, 1C platformunun özenli metodolojistleri ve geliştiricileri tarafından özenle seçilen en iyi kalıpları kullanmak için ellerinden geleni yapıyor.
Aptal kodunuzu basit bir yönetilen form için yazdığınızda, gerçekte şunu kullanıyorsunuz: model görüntü kontrolörü с çift ​​yönlü veri bağlama в üç katmanlı-veri-uygulama-motoru, aromalı yüksek seviyeli nesne ilişkisi haritalaması temelinde bildirimsel meta veri açıklamasıkendine ait olan platformdan bağımsız sorgu dili, Cı bildirimsel veri odaklı kullanıcı arayüzü, eksiksiz şeffaf serileştirme ve etki alanı odaklı program dili.

1C geliştiricilerinin Batılı meslektaşlarından farklı olduğu nokta PR alanındadır. Herhangi bir saçmalığa büyük bir isim vermeyi ve onu kirli bir çanta gibi ortalıkta dolaştırmayı seviyorlar.
A. Orefkov

1C platformu, merkezinde uygulama sunucusunun (veya küçük esnaf için az para karşılığında emülasyonunun) bulunduğu klasik 3 katmanlı bir mimariye sahiptir. DBMS olarak MS SQL veya Postgres kullanılır. Oracle ve IBM DB2 için de destek var, ancak bu oldukça ezoterik; orta ve yüksek yük altında bu veritabanlarına 1C uygularsanız ne olacağını kimse bilmiyor. 1C'nin kendisinin bunu bilmediğine inanıyorum.

İstemci kısmı, kullanıcının makinesine yüklenen bir ince istemci veya bir web istemcisidir. Temel özelliği, programcıların 2 farklı kod yazmaması, tek bir dilde tek bir uygulama yazmaları ve istek veya ihtiyaç olması durumunda tarayıcıda görüntüleyebilmenizdir. Kim ön ve arka uç için gerçek bir tam yığın ve tek bir dil olan node.js'yi istedi? Sonuna kadar asla aynı şeyi yapmayı başaramadılar. Gerçek bir tam yığın var, ancak bunu 1C'de yazmanız gerekecek. Kaderin ironisi, böyle şeyler :)

Bulut SaaS çözümü 1C:Fresh ayrıca 1C satın alamayacağınız, ancak küçük bir veritabanı kiralayabileceğiniz ve orada shawarma satışlarını takip edebileceğiniz tarayıcı modunda da çalışır. Hiçbir şey yüklemeden veya yapılandırmadan yalnızca tarayıcıda.

Ek olarak, 1C'de "normal uygulama" olarak adlandırılan eski bir istemci de var. Miras mirastır, 2002'deki uygulamalar dünyasına hoş geldiniz, ancak biz hâlâ ekosistemin mevcut durumundan bahsediyoruz.

1C sunucu kısmı, kümeye yeni makineler ekleyerek kümelemeyi ve ölçeklendirmeyi destekler. Burada oldukça fazla kopya kırıldı ve bununla ilgili makalede ayrı bir bölüm olacak. Kısacası bu, HAProxy'nin arkasına tamamen aynı birkaç örneği eklemekle aynı şey değil.

Uygulama geliştirme çerçevesi, kabaca Rusçaya çevrilmiş biraz geliştirilmiş VB6'ya benzeyen kendi programlama dilini kullanır. Rusça olan her şeyden nefret eden, "if"in "if" olarak çevrildiğine inanmayanlar için ikinci sözdizimi seçeneği sunulmaktadır. Onlar. Dilerseniz 1C'de VB'den ayırt edilemeyecek şekilde yazabilirsiniz.

1C - İyi ve kötü. Holivarlarda noktaların 1C civarında düzenlenmesi

Bu programlama dili, 1C takma adlarının platformlarına yönelik nefretinin ana nedenidir. Kabul edelim, sebepsiz değil. Dil mümkün olduğu kadar basit tasarlandı ve "GELİŞTİRİCİLER, GELİŞTİRİCİLER" mantrasını en azından BDT'de bir ölçekte yerine getirecek şekilde tasarlandı. Bana göre böyle bir çözümün ticari özü açıkça görülüyor: daha fazla geliştirici, daha fazla pazar kapsamı. Bu, çeşitli tahminlere göre% 45'ten% 95'e kadar gerçekleşti. Düşündüğünüz dilde yazmanın gerçekten daha kolay olduğunu hemen söyleyeceğim. Ve oldukça fazla programlama dili biliyorum.

Dil ile başlayalım.

1C programlama dili

Aynı zamanda sistemin güçlü ve zayıf noktası. Kolay giriş ve okunabilirlik sağlar. Öte yandan, 8 yılında 2002. sürümün yayınlanmasından bu yana güncellenmemiştir ve ahlaki açıdan güncelliğini yitirmiştir. Birisi "asıl dezavantajı OOP olmamasıdır" diyecek ve yanılacaktır. Birincisi, FKÖ sadece Nuraliev'i değil Torvalds'ı da sevmiyor. İkincisi, OOP hala var.

Geliştiricinin bakış açısından, DBMS'de görüntülenen temel sınıfları içeren bir çerçeveye sahiptir. Geliştirici, "Directory" temel sınıfını alabilir ve ondan "Clients" dizinini devralabilir. Kendisine INN ve Adres gibi yeni sınıf alanları ekleyebilir ve ayrıca gerekirse OnWrite/AtRecord yöntemi gibi temel sınıfın yöntemlerini geçersiz kılabilir (geçersiz kılabilir).

Çerçeve, daha derin kalıtıma nadiren ihtiyaç duyulacak şekilde tasarlanmıştır ve bence OOP'daki kısıtlama mantıklıdır. 1C, Etki Alanı Odaklı Geliştirmeye odaklanır ve öncelikle geliştirilmekte olan çözümün konu alanı hakkında düşünmenizi sağlar ve bu iyidir. Sadece bir cazibe yok, aynı zamanda etki alanından bazı verileri bir yerde göstermek için 10 farklı DTO ve ViewModel yazmaya da gerek yok. 1C geliştiricisi, algı bağlamını aynı varlığı temsil eden, ancak farklı bir taraftan benzer adlara sahip bir düzine sınıfla karıştırmadan, her zaman tek bir varlıkla çalışır. Örneğin herhangi bir .NET uygulaması, JSON'a serileştirme ve istemciden sunucuya veri aktarımı için mutlaka beş veya iki ViewModel ve DTO içerecektir. Ve uygulama kodunuzun yaklaşık %10-15'i, AutoMapper gibi kalemler veya koltuk değnekleri kullanarak verileri bir sınıftan diğerine aktarmak için harcanacaktır. Bu kod yazılmalı ve onu oluşturup sürdürmeleri için programcılara ödeme yapılmalıdır.

1C dilinin, ana dillerin seviyesine kadar karmaşıklaştırılmadan geliştirilmesinin zor olduğu, dolayısıyla basitlik avantajının kaybedildiği ortaya çıktı. Satıcının esasen çözülmesi gereken görevi nedir: Sokakta yakalanan herhangi bir öğrencinin gerekli kalite düzeyinde özelleştirebileceği standart bir çözüm sunmak (yani, bir tezgahtan büyük bir fabrikaya kadar uzanan bir vakanın tamamlanması). Eğer bir tezgah iseniz bir öğrenciyi, bir fabrika iseniz, uygulama ortağınızdan bir guruyu alın. Uygulayıcı ortakların öğrencileri bir guru fiyatına satması, çerçeveyle ilgili bir sorun değildir. Mimari olarak çerçeve her ikisinin de sorunlarını çözebilmeli, (özelleştirme vaadiyle işletmelere sattığımız) standart konfigürasyonların kodu bir öğrenci tarafından anlaşılabilmeli ve bir guru da sizin istediğinizi anlayabilmelidir.

Bana göre dilde asıl eksik olan, sizi yazabildiğinizden daha fazlasını yazmaya zorlayan şey, müşterinin ödediği zamanın boşa harcanmasıdır.

  • Örneğin TypeScript düzeyinde yazma imkanı (sonuç olarak IDE'de daha gelişmiş kod analiz araçları, yeniden düzenleme, daha az saldırgan pervaz)
    Fonksiyonların birinci sınıf nesneler olarak kullanılabilirliği. Biraz daha karmaşık bir kavram, ancak tipik standart kod miktarı büyük ölçüde azaltılabilir. Hacmin azalması nedeniyle öğrencinin IMHO kodunu anlaması daha da artacaktır.
  • Evrensel koleksiyon değişmezleri, başlatıcılar. Aynı şey - yazılması ve/veya gözlerinizle bakılması gereken kod miktarını azaltmak. Koleksiyonların doldurulması 9000C programlama süresinin %1'inden fazlasını kaplar. Bunu sözdizimsel şeker olmadan yazmak uzun, pahalı ve hataya açıktır. Genel olarak, 1C çözümlerindeki LOC miktarı, mevcut açık çerçevelerle ve genel olarak tüm kurumsal Java'larınızın birleşimiyle karşılaştırıldığında akla gelebilecek tüm sınırları aşıyor. Dil çok ayrıntılı ve bu da veri miktarına, belleğe, IDE frenlerine, zamana, paraya dönüşüyor...
  • nihayet yapılar Rusçaya başarılı bir çeviri bulamadıkları için bu yapının eksik olduğuna dair bir hipotezim var :)
  • Kendi veri türleri (OOP olmadan), VB6'dan Tür analogları. BSP'deki yorumları ve bu yapıları oluşturan sihirli yöntemleri kullanarak yapıları yazmamanıza olanak tanır. Şunları elde ederiz: daha az kod, nokta yoluyla ipucu, soruna daha hızlı çözüm, yazım hatalarından ve yapıların eksik özelliklerinden kaynaklanan daha az hata. Artık kullanıcı yapılarının yazılması tamamen, aktarılan parametre yapılarının beklenen özellikleri hakkında dikkatli bir şekilde yorumlar yazan Standart Alt Sistem Kitaplığı geliştirme ekibine kalmıştır.
  • Web istemcisinde eşzamansız çağrılarla çalışırken şeker yok. ProcessingNotifications biçimindeki geri çağırma-cehennem, ana tarayıcıların API'sindeki ani bir değişikliğin neden olduğu geçici bir koltuk değneğidir, ancak her zaman böyle yaşayamazsınız; eşzamansız kodu "öğrencinin anlaması" avantajı kayboluyor giderek daha fazla. Ana IDE'ye bu paradigma için hiçbir destek eklenmezse işler daha da kötüleşir.

Bu acil sorunlardan biri, listenin çok daha büyük olabileceği açık, ancak bunun hala genel amaçlı bir dil olmadığını, çoklu iş parçacığı, lambda işlevleri, GPU'ya erişim ve hızlı gerektirmediğini unutmamalıyız. kayan nokta hesaplamaları. Bu bir iş mantığı kodlama dilidir.

Zaten bu dille çok çalışmış, js veya c#'a bakan bir programcı bu dilin çerçevesinden sıkılıyor. Bu bir gerçek. Gelişime ihtiyacı var. Satıcı açısından terazinin diğer tarafında, belirtilen özelliklerin uygulanmasının maliyeti ile bunların uygulanmasından sonra gelirdeki artış yer alır. Burada şu anda şirketin gözünde neyin ağır bastığına dair hiçbir bilgim yok.

Geliştirme ortamı

Burada da işler yolunda gitmiyor. İki geliştirme ortamı vardır. Bunlardan ilki, teslimata dahil edilen Yapılandırıcıdır. İkincisi, Eclipse temel alınarak geliştirilen Kurumsal Geliştirme Araçları ortamı veya kısaca EDT'dir.

Yapılandırıcı, çok çeşitli geliştirme görevleri sağlar, tüm özellikleri destekler ve piyasadaki ana ortamdır. Aynı zamanda kendi içindeki teknik borç miktarı nedeniyle ahlaki açıdan da geçerliliğini yitirmiş, söylentilere göre gelişmiyor. Dahili bir API açılarak durum iyileştirilebilir (arkadaşlık şeklinde) Kardan adam A. Orefkova veya bağımsız olarak), ancak durum böyle değil. Uygulama, satıcı müdahale etmediği sürece topluluğun IDE'ye kendi özelliklerini yazacağını göstermiştir. Ama elimizde olan var. Yapılandırıcı 2004-2005'te harikaydı, o zamanların Visual Studio'sunu çok anımsatıyordu, bazı yerlerde daha da havalıydı ama o zamanlarda sıkışıp kalmıştı.

Ek olarak, ortalama standart çözümün hacmi o zamandan bu yana birkaç kat arttı ve bugün IDE, beslendiği kod miktarıyla baş edemiyor. Kullanılabilirlik ve yeniden düzenleme yetenekleri sıfır bile değil, kırmızı renkteler. Bütün bunlar geliştiricilere heyecan katmıyor ve başka ekosistemlere geçip orada kodlamaya devam etmenin hayalini kuruyorlar ama davranışlarıyla yüzünüze tükürmeyen keyifli bir ortamda.

Alternatif olarak Eclipse üzerine kurulu sıfırdan yazılmış bir IDE sunulmaktadır. Orada, kaynaklar, diğer yazılımlarda olduğu gibi, metin dosyaları biçiminde canlı olarak GIT'te depolanır, istek dallarını çeker, tüm bunlar. İşin kötü tarafı, her sürümde daha da iyi hale gelmesine rağmen uzun yıllardır beta statüsünden çıkmıyor. EDT'nin dezavantajlarını yazmayacağım, bugün eksi, yarın sabit bir özellik. Böyle bir açıklamanın önemi hızla kaybolacaktır. Bugün EDT'de geliştirme yapmak mümkün, ancak bu alışılmadık bir durum; belirli sayıda IDE hatalarına hazırlıklı olmanız gerekiyor.

Duruma yukarıda bahsedilen "1C prizması" üzerinden bakarsanız, şunun gibi bir şey elde edersiniz: Yeni IDE'nin piyasaya sürülmesi kutu satışlarını artırmaz, ancak GELİŞTİRİCİLERİN çıkışı azalabilir. Geliştirici konforu açısından ekosistemi neyin beklediğini söylemek zor ancak Microsoft, mobil geliştiricilere hizmetlerini çok geç sunarak onları zaten batırdı.

Geliştirme yönetimi

Buradaki her şey kod yazmaktan önemli ölçüde daha iyi, özellikle son zamanlarda, topluluğun çabaları yönetim otomasyonu sorunlarını gün ışığına çıkardığında, 1C deposunu çöp yığınına atmak ve git, hızlı suçlama, kod incelemesi kullanmak için çağrıda bulunan prototipler başlatıldığında statik analiz, otomatik dağıtım vb. Platforma, geliştirme görevlerinin otomasyon düzeyini artıran birçok özellik eklendi. Ancak otomasyon olmadan yapamayacağımız açıkça ortaya çıkınca, tüm bu özellikler yalnızca ve özel olarak kendi büyük ürünlerimizin geliştirilmesi için eklendi. Otomatik birleştirmeler, KDiff ile üç yönlü karşılaştırma ve bunların hepsi vardı. Github'da başlatıldı gitdönüştürücüaçıkçası ideolojik olarak projeden uzaklaştırılan gitsync, ancak satıcı şirketin süreçlerine uyacak şekilde değiştirildi. Açık kaynaktaki inatçı adamlar sayesinde 1C'deki geliştirme otomasyonu başladı. Yapılandırıcı için açık bir API olan IMHO, aynı zamanda ana IDE'nin ahlaki geri kalmışlığını da değiştirecektir.

Bugün, Jira'daki sorunlarla bağlantılı taahhütler, Crucible'daki incelemeler, Jenkins ve Allure'un 1C'deki kod testiyle ilgili raporlarıyla birlikte 1C kaynaklarını git'te depolamak ve hatta SonarQube'da statik analiz - bu haberlerden uzak, daha ziyade 1C gelişiminin çok fazla olduğu şirketlerdeki ana akım.

yönetim

Burada söylenecek çok şey var. Öncelikle bu elbette bir sunucudur (1C sunucu kümesi). Harika bir şey, ancak tamamen kara bir kutu olması nedeniyle, yeterli ayrıntıyla, ancak belirli bir şekilde belgelenmiştir - birkaç sunucuda yüksek yük modunda kesintisiz çalışmanın başlatılmasında ustalaşmak, bir takım elbise giyen seçilmiş birkaç kişinin çoğudur. “Teknolojik Konularda Uzman” ibaresi bulunan madalya. Prensip olarak bir 1C sunucusunu yönetmenin başka herhangi bir sunucuyu yönetmekten farklı olmadığını belirtmekte fayda var. Bellek, CPU ve disk kaynaklarını tüketen, ağ tabanlı, çok iş parçacıklı bir uygulamadır. Telemetri toplama ve teşhis için geniş fırsatlar sunar.

Buradaki sorun, satıcının bu teşhis için hazır çözümler açısından özel bir şey sunmamasıdır. Evet, 1C: Enstrümantasyon ve Kontrol Merkezi var, hatta oldukça iyiler ama çok pahalılar ve herkeste yok. Topluluğun Grafana, Zabbix, ELK ve standart yönetici setindeki diğer şeyleri birbirine bağlamak için çeşitli fikirleri var, ancak çoğunluğa uyacak tek bir çözüm yok. Görev kahramanını bekliyor. Ve eğer 1C kümesinde faaliyete geçmeyi planlayan bir işletmeyseniz, bir Uzmana ihtiyacınız var. Kendi içinden veya dışından, ama buna ihtiyacın var. Sunucu işletimi için yeterliliklere sahip ayrı bir rolün olması normaldir, her 1C kullanıcısının bunu bilmemesi gerekir, sadece böyle bir rolün gerekli olduğunu anlamanız gerekir. Örneğin SAP'yi ele alalım. Orada, bir programcı, uygulama sunucusunda bir şey yapılandırması istenirse büyük olasılıkla sandalyesinden bile kalkmayacaktır. O sadece aptal olabilir ve utanmayacaktır. SAP metodolojisinde bunun için ayrı bir çalışan rolü bulunmaktadır. Bazı nedenlerden dolayı, 1C endüstrisinde bunun aynı maaş için bir çalışanda birleştirilmesi gerektiğine inanılıyor. Bu bir yanılgı.

1C sunucusunun dezavantajları

Tam olarak bir eksi var - güvenilirlik. Veya, eğer tercih ederseniz, öngörülemezlik. Sunucunun ani tuhaf davranışı şimdiden kasabanın konuşulan konusu haline geldi. Uzmanın el kitabında bile evrensel bir çözüm - sunucuyu durdurmak ve tüm önbellekleri temizlemek - açıklanmaktadır ve hatta bunu yapan bir toplu kitap bile tavsiye edilmektedir. 1C sisteminiz teorik olarak bile yapmaması gereken bir şeyi yapmaya başlarsa, oturum veri önbelleğini temizlemenin zamanı gelmiştir. Tahminime göre, tüm ülkede bu prosedür olmadan 1C sunucusunun nasıl çalıştırılacağını bilen sadece üç kişi var ve sırlarını paylaşmıyorlar çünkü... bundan yaşıyorlar. Belki de onların sırrı oturum verilerini temizlemeleridir ama bundan kimseye bahsetmezler dostum.

Aksi takdirde, 1C sunucusu diğerleriyle aynı uygulamadır ve belgeleri okuyarak ve tefi çalarak hemen hemen aynı şekilde yönetilir.

liman işçisi

Üretimde konteynerli 1C sunucusu kullanmanın faydası henüz kanıtlanmadı. Sunucu, yalnızca dengeleyicinin arkasına düğümler eklenerek kümelenmez, bu da üretim konteynerleştirmesinin faydalarını en aza indirir ve konteynerlerde yüksek yük modunda başarılı çalışma uygulaması oluşturulmamıştır. Sonuç olarak, test ortamlarını oluşturmak için yalnızca geliştiriciler Docker+1C'yi kullanır. Orada çok kullanışlıdır, uygulanır, modern teknolojilerle oynamanıza ve yapılandırıcının umutsuzluğuna ara vermenize olanak tanır.

Ticari bileşen

Yatırım açısından bakıldığında 1C, uygulama sınıflarının geniş yetenekleri nedeniyle iş fikirlerinin hızlı bir şekilde başlatılması sorununu çözmenize olanak tanır. Kutudan çıktığı haliyle 1C, çok iyi Raporlama, herhangi bir şeyle entegrasyon, web istemcisi, mobil istemci, mobil uygulama, çeşitli DBMS'ler için destek sağlar. ücretsiz, platformlar arası hem sunucu hem de yüklü istemci parçaları. Evet, uygulamaların kullanıcı arayüzü sarı olacaktır, bazen bu bir eksidir, ancak her zaman değil.
Bir işletme 1C'yi seçerek, çok çeşitli uygulamalar oluşturmalarına olanak tanıyan bir dizi yazılım çözümüne sahip olur ve ayrıca piyasada Javaistlerden daha az para isteyen ve aynı zamanda daha hızlı sonuç üreten birçok geliştiriciye sahip olur.

Örneğin, bir müşteriye PDF faturası gönderme görevi bir saatlik öğrenci çalışmasıyla çözülebilir. .NET'teki aynı sorun, özel bir kitaplık satın alınarak veya sert, sakallı bir geliştirici tarafından birkaç gün veya hafta boyunca kodlama yapılarak çözülebilir. Bazen ikisi birden. Ve evet, sadece PDF oluşturmadan bahsediyordum. Bu tasarının nereden geleceğini bile söylemedik. Web ön sunucusu, operatörün verileri gireceği bir form oluşturmalıdır; arka sunucunun, JSON'u aktarmak için dto modelleri, veritabanında depolamak için modeller, veritabanının yapısı, ona geçiş, grafiksel bir form oluşturması gerekecektir. bu hesabın görüntülenmesi ve ancak o zaman - PDF. 1C'de tüm görev sıfırdan tam olarak bir saatte tamamlanıyor.

Küçük bir tezgah için tam teşekküllü bir muhasebe sistemi, tek bir alım/satım iş süreci ile 3 saatte gerçekleştirilir.Satış raporlaması, malların depoya göre ayrılmış alış ve satış fiyatları üzerinden muhasebeleştirilmesi, erişim hakları kontrolü, web istemcisi ve mobil uygulama ile . Tamam başvuruyu unuttum, başvuru 3 saatte değil, XNUMX saatte oldu.

Bu görev, bir .NET geliştiricisinin görsel stüdyoyu temiz bir bilgisayara kurmasından müşteriye göstermesine kadar ne kadar zaman alacak? Peki ya geliştirmenin maliyeti? Aynı şey.

Bir platform olarak 1C'nin güçlü yönleri

1C güçlüdür çünkü onda dünyanın en iyisi olan belirli bir şey vardır. Aksine, her bir alt sistemde dünya yazılımında daha ilginç bir analog bulabilirsiniz. Ancak faktörlerin birleşimine dayanarak 1C'ye benzer bir platform görmüyorum. Ticari başarının yattığı yer burasıdır. Platformun avantajları genele dağılmış durumda ve bunun diğer platformlarda nasıl yapıldığını gördüğünüzde en net şekilde görülebiliyor. Temel olarak, bunlar özellikler bile DEĞİLDİR, aksine tam tersine belirli bir paradigma lehine özelliklerin reddedilmesidir. Birkaç örnek:

  1. Unicode. Daha basit ne olabilir ki? 2019'da tek baytlık ASCII kodlamalarının kullanılmasına gerek yoktur (eski eski kodlamalarla entegrasyon hariç). Asla. Ama hayır. Her neyse, bazı tablolardaki birisi tek baytlık bir varchar kullanıyor ve uygulamanın kodlamalarla ilgili sorunları olacak. 2015 yılında, gitlab'ın LDAP yetkilendirmesi kodlamalarla yapılan yanlış çalışma nedeniyle başarısız oldu; JetBrains IDE hala her yerde dosya adlarında Kiril alfabesiyle çalışmıyor. 1C, uygulama kodunun veritabanı katmanından yüksek kalitede izolasyonunu sağlar. Orada düşük düzeyde tablo yazmak imkansızdır ve orada veri tabanı düzeyinde beceriksiz gençlerin pervazları imkansızdır. Evet, beceriksiz gençlerle ilgili başka sorunlar da olabilir, ancak sorunların çeşitliliği çok daha azdır. Şimdi bana uygulamanızın doğru tasarlandığını ve veritabanı erişim katmanının olması gerektiği gibi izole edildiğini söyleyeceksiniz. Kurumsal özel Java uygulamanıza bir kez daha göz atın. Yakından ve dürüstçe. Vicdanınız sizi rahatsız mı ediyor? O halde senin adına sevindim.
  2. Belgelerin/referans kitaplarının numaralandırılması. 1C'de kesinlikle en esnek ve en iyisi değil. Ancak bankacılık yazılımlarında ve kendi yazdıkları muhasebe sistemlerinde yaptıkları şey, aslında sadece karanlıktır. Ya kimlik sıkışıp kalacak (ve sonra “ah, neden deliklerimiz var”), ya da tam tersine DBMS seviyesinde kilitleme ile çalışan bir jeneratör yapacaklar (ve darboğaz haline gelecekler). Aslında, görünüşte basit olan bu görevi gerçekleştirmek oldukça zordur - paralel veri girişi sırasında veritabanını engellememesi için belirli bir anahtar kümesine dayalı benzersizlik bölümü, önek ile uçtan uca varlık numaralandırıcısı .
  3. Veritabanındaki kayıtların tanımlayıcıları. 1C iradeli bir karar verdi - tüm bağlantı tanımlayıcıları kesinlikle sentetiktir ve hepsi bu. Dağıtılmış veritabanları ve borsalarla ilgili hiçbir sorun yoktur. Diğer sistemlerin geliştiricileri inatla kimlik gibi bir şey yaratır (daha kısadır!), birkaç ilgili örnek oluşturma zamanı gelene kadar bunları GUI'ye sürükler (ve sonra keşfedilirler). Bu sende yok mu? Açıkçası?
  4. Listeler. 1C, (büyük) listeler arasında gezinmek ve bunlar arasında gezinmek için oldukça başarılı mekanizmalara sahiptir. Mekanizmayı doğru kullanarak hemen rezervasyon yaptırayım! Genel olarak konu oldukça tatsızdır, ideal olarak çözülemez: ya sezgisel ve basittir (ancak istemcide büyük kayıt kümeleri riski vardır) ya da sayfalama şu veya bu şekilde çarpıktır. Çağrı yapanlar genellikle bunu çarpık bir şekilde yaparlar. Dürüst bir kaydırma çubuğu yapanlar bir veritabanı, bir kanal ve bir müşteri ekler.
  5. Yönetilen formlar Hiç şüphe yok ki web istemcisinde arayüz mükemmel çalışmıyor. Ama işe yarıyor. Ancak diğer birçok muhasebe ve bankacılık sistemi için uzak bir işyeri oluşturmak kurumsal düzeyde bir projedir. Yasal Uyarı: Neyse ki bunu başlangıçta web üzerinden yapanlar için bu durum etkilenmeyecektir.
  6. Mobil uygulama. Son dönemde aynı ekosistem içerisindeyken mobil uygulamalar da yazabiliyorsunuz. Burada işler bir web istemcisinden biraz daha karmaşık; cihazların özellikleri sizi onlar için özel olarak yazmaya zorluyor, ancak yine de ayrı bir mobil geliştirici ekibi kiralamıyorsunuz. Bir şirketin iç ihtiyaçlarına yönelik bir uygulamaya ihtiyacınız varsa (kurumsal bir soruna mobil çözüm, sarı bir kullanıcı arayüzü tasarımından daha önemli olduğunda), kutudan çıktığı gibi aynı platformu kullanmanız yeterlidir.
  7. Raporlama. Bu kelimeyle büyük verili ve ETL sürecinde gecikme olan bir BI sistemini kastetmiyorum. Bu, muhasebenin durumunu burada ve şimdi değerlendirmenize olanak tanıyan operasyonel personel raporlarını ifade eder. Bakiyeler, karşılıklı uzlaşmalar, yeniden derecelendirme vb. 1C, kullanıcı tarafında esnek gruplandırma, filtre ve görselleştirme yapılandırmasına sahip bir raporlama sistemi ile kutudan çıkar. Evet, piyasada daha soğuk analoglar var. Ancak hepsi bir arada çözüm çerçevesinde değil ve bazen hepsi bir arada çözümden daha yüksek bir fiyata. Hatta çoğu zaman durum tam tersidir: yalnızca raporlama yapılır, ancak tüm platformdan daha pahalıdır ve kalite açısından daha kötüdür.
  8. Yazdırılabilir formlar Çalışanlara PDF biçiminde maaş bordrolarının e-postayla gönderilmesi sorununu çözmek için .NET'i kullanın. Ve şimdi fatura basma görevi. Kopyalarını aynı PDF'ye kaydetmeye ne dersiniz? 1C takma adı için herhangi bir düzeni PDF'ye çıkarmak +1 kod satırıdır. Bu, başka bir dilde günler veya haftalar yerine +40 saniyelik çalışma süresi anlamına gelir. 1C'deki basılı form düzenlerinin geliştirilmesi inanılmaz derecede kolaydır ve ücretli muadilleriyle rekabet edebilecek kadar güçlüdür. Evet, muhtemelen 1C elektronik tablo belgelerinde çok fazla etkileşimli fırsat yoktur, OpenGL kullanarak ölçeklendirmeli bir 3B diyagramı hızlı bir şekilde elde edemezsiniz. Ama gerçekten gerekli mi?

Bunlar, işlevselliği sınırlamanın veya taviz vermenin gelecekte önemli bir mimari faydaya dönüştüğü örneklerden yalnızca birkaçıdır. Uzlaşma olsa da olmasa da en etkili seçenek, bu zaten kutunun içindedir ve olduğu gibi kabul edilir. Bağımsız uygulaması ya imkansız olacak (çünkü bu tür kararların projenin başında verilmesi gerekiyor ve bunun için zaman yok ve mimar da yok) ya da birkaç pahalı yineleme olacak. Listelenen noktaların her birinde (ve bu, mimari çözümlerin tam bir listesi değildir), ölçeklendirmeyi engelleyen kısıtlamaları alt üst edebilir ve tanıtabilirsiniz. Her halükarda, bir iş adamı olarak siz, programcılarınızın "sıfırdan bir sistem" oluştururken doğru ellere sahip olduğundan ve ince sistem sorunlarını hemen iyi bir şekilde çözeceklerinden emin olmalısınız.

Evet, diğer karmaşık sistemlerde olduğu gibi 1C'nin de ölçeklendirmeyi belirli yönlerden engelleyen çözümleri vardır. Ancak tekrar ediyorum, sahip olma maliyeti ve halihazırda çözülmüş sorunların sayısı gibi faktörlerin birleşimine dayanarak piyasada değerli bir rakip göremiyorum. Aynı fiyata, bir finansal uygulama çerçevesine, kümelenmiş dengeli bir sunucuya, kullanıcı arayüzüne ve web arayüzüne, mobil uygulamaya, raporlamaya, entegrasyona ve daha birçok şeye sahip olursunuz. Java dünyasında, bir ön uç ve arka uç ekibi kiralarsınız, evde yazılan sunucu kodlarının düşük düzeyli hatalarını ayıklarsınız ve 2 mobil işletim sistemi için 2 mobil uygulama için ayrı ödeme yaparsınız.

1C'nin tüm durumları çözeceğini söylemiyorum, ancak dahili bir kurumsal uygulama için, kullanıcı arayüzünü markalamaya gerek olmadığında - başka ne gerekiyor?

Merhem olarak Fly

Muhtemelen 1C'nin dünyayı kurtaracağı ve kurumsal sistemleri yazmanın diğer tüm yollarının yanlış olduğu izlenimine kapılmışsınızdır. Hiç de öyle değil. Bir işadamı açısından bakıldığında, 1C'yi seçerseniz, hızlı pazara sunma süresinin yanı sıra aşağıdaki dezavantajları da hesaba katmalısınız:

  • Sunucu güvenilirliği. Kesintisiz çalışmasını sağlayabilecek gerçekten yüksek kaliteli uzmanlara ihtiyaç vardır. Satıcının bu tür uzmanlar için hazır bir eğitim programından haberdar değilim. Uzmanlık sınavına hazırlanmak için dersler var ama bu bence yeterli değil.
  • Destek. Önceki paragrafa bakın. Satıcıdan destek almak için satın almanız gerekir. Bazı nedenlerden dolayı bu 1C endüstrisinde kabul edilmiyor. Ve SAP ile bu neredeyse bir zorunluluktur ve kimseyi rahatsız etmez. Kurumsal destek olmadan ve uzman personel olmadan 1C aksaklıklarıyla baş başa kalabilirsiniz.
  • Yine de 1C ile kesinlikle her şeyi yapamazsınız. Bu bir araçtır ve her araç gibi uygulanabilirliğinin sınırları vardır. 1C ortamında “1C olmayan” bir sistem mimarının olması çok arzu edilir.
  • İyi 1C takma adları, diğer dillerdeki iyi programcılardan daha ucuz değildir. Bununla birlikte, kötü programcıları, yazdıkları dil ne olursa olsun işe almak pahalıdır.

Noktaları noktalayalım

  • 1C, iş amaçlı bir hızlı uygulama geliştirme (RAD) çerçevesidir ve bunun için tasarlanmıştır.
  • Büyük DBMS'leri, istemci kullanıcı arayüzünü, çok iyi bir ORM'yi ve raporlamayı destekleyen üç katmanlı bağlantı
  • 1C'nin yapamadığını yapabilen sistemlerle entegrasyon için geniş olanaklar. Makine öğrenimi istiyorsanız Python'u alın ve sonucu http veya RabbitMQ aracılığıyla 1C'ye gönderin.
  • Her şeyi 1C kullanarak yapmaya çalışmanıza gerek yok, onun güçlü yönlerini anlamanız ve bunları kendi amaçlarınız için kullanmanız gerekir.
  • Teknolojik çerçeve aygıtlarını araştırmaya ve her N yılda bir yeni bir motora göre yeniden tasarlamaya yönelen geliştiriciler 1C'den sıkılıyor. Orada her şey çok muhafazakar.
  • Geliştiricilerin de canı sıkılıyor çünkü üreticinin onlar için çok az endişesi var. Sıkıcı dil, zayıf IDE. Modernizasyona ihtiyaçları var.
  • Öte yandan keyif aldığı başka bir teknolojiyi kullanarak ve öğrenerek eğlence bulamayan geliştiriciler de kötü geliştiricilerdir. Sızlanacaklar ve başka bir ekosisteme geçecekler.
  • 1C takma adlarının Python'da bir şeyler yazmasına izin vermeyen işverenler kötü işverenlerdir. Meraklı zihinlere sahip çalışanları kaybedecekler ve onların yerine her şeyi kabul ederken kurumsal yazılımı bataklığa sürükleyecek maymun kodlayıcılar gelecek. Yine de yeniden yazılması gerekecek, bu yüzden Python'a biraz daha erken yatırım yapmak daha iyi olabilir mi?
  • 1C ticari bir şirkettir ve özellikleri yalnızca kendi çıkarlarına ve çıkarlarına göre uygular. Bunun için onu suçlayamazsın, iş kârı düşünmeli, hayat bu
  • 1C, Vasya'nın geliştirici sorunlarına değil, iş sorunlarına çözüm satarak para kazanıyor. Bu iki kavram birbiriyle bağlantılı ama öncelik tam olarak benim söylediğim. Geliştirici Vasya, 1C: Resharper için kişisel lisans için ödeme yapmaya hazır olduğunda oldukça hızlı bir şekilde görünecek, A. Orefkova'nın "Resharper"ı bunun kanıtı. Satıcı bunu desteklerse ve ona karşı mücadele etmezse, geliştiricilere yönelik bir yazılım pazarı ortaya çıkacaktır. Şimdi bu pazarda sonuçları şüpheli olan bir buçuk oyuncu var ve bunun nedeni IDE ile entegrasyonun olumsuz olması ve her şeyin koltuk değnekleriyle yapılması.
  • Çoklu makine operatörünün uygulamaları unutulmaya yüz tutacaktır. Modern uygulamalar hem kod hem de iş kullanımı açısından hatırlanamayacak kadar büyüktür. 1C sunucusu da daha karmaşık hale geliyor; her türlü uzmanlığın tek bir çalışanda toplanması imkansız olacak. Bu, uzmanlara olan talebi gerektirmeli, bu da 1C mesleğinin çekiciliği ve maaşların artması anlamına geliyor. Daha önce Vasya bir maaş karşılığında üçü bir arada çalıştıysa, şimdi iki Vasya kiralamanız gerekiyor ve Vasyalar arasındaki rekabet, seviyelerinin genel büyümesini teşvik edebilir.

Sonuç

1C çok değerli bir üründür. Fiyat aralığımda hiçbir analog bilmiyorum, varsa yorumlara yazın. Ancak geliştiricilerin ekosistemden çıkışı giderek daha belirgin hale geliyor ve bu, nereden bakarsanız bakın bir “beyin göçü”. Sektör modernleşmeye aç.
Eğer geliştiriciyseniz 1C’ye takılıp kalmayın ve diğer dillerde her şeyin sihirli olduğunu düşünmeyin. Belki üçüncü sınıftayken. Daha büyük bir şeyin çözülmesi gerektiğinde, hazır çözümlerin daha uzun süre aranması ve daha yoğun bir şekilde tamamlanması gerekecektir. Bir çözümün inşa edilebileceği "blokların" kalitesi açısından 1C çok çok iyidir.

Ve bir şey daha - eğer bir 1C takma adı işe almak için size gelirse, o zaman 1C takma adı güvenli bir şekilde baş analistlerin pozisyonuna atanabilir. Görev, konu alanı ve ayrıştırma becerileri konusundaki anlayışları mükemmeldir. Bunun tam olarak 1C geliştirmede DDD'nin zorunlu kullanımından kaynaklandığından eminim. Kişi, öncelikle bir görevin anlamı, konu alanındaki nesneler arasındaki bağlantılar hakkında düşünecek şekilde eğitilir ve aynı zamanda entegrasyon teknolojileri ve veri değişim formatları konusunda teknik bir altyapıya sahiptir.

İdeal çerçevenin mevcut olmadığının farkında olun ve kendinize iyi bakın.
Her şey yolunda!

Not: çok teşekkür ederim spesurik Makalenin hazırlanmasında yardım için.

Ankete sadece kayıtlı kullanıcılar katılabilir. Giriş yapLütfen.

İşletmenizde 1C var mı?

  • %13,3Hiç de değil.71

  • %30,3Var ama sadece muhasebe departmanında bir yerlerde. Diğer platformlardaki çekirdek sistemler 162

  • %41,4Evet, ana iş süreçleri bunun üzerinde çalışıyor221

  • %15,01C ölmeli, gelecek %teknoloji_name%80'e ait

534 kullanıcı oy kullandı. 99 kişi çekimser kaldı.

Kaynak: habr.com

Yorum ekle