1С - Дабро і зло. Расстаноўка кропак у халіварах вакол 1С

1С - Дабро і зло. Расстаноўка кропак у халіварах вакол 1С

Сябры і калегі, у апошні час на Хабры пачасціліся артыкулы з хейтам у адрас 1С, як платформы для распрацоўкі, і выступамі яе абаронцаў. Гэтыя артыкулы пазначылі адну сур'ёзную праблему: часцей за ўсё, крытыкі 1С крытыкуюць яе з пазіцыі «не здужалі», лаючы праблемы, якія дэ-факта, лёгка вырашаюцца, і, наадварот, не кранаючы праблемы, якія сапраўды важныя, стаяць абмеркавання і не вырашаюцца вендарам . Мяркую, што мае сэнс правесці цвярозы і ўзважаны агляд платформы 1С. Таго, што яна ўмее, таго што яна не ўмее, таго што яна павінна б рабіць, але не робіць і, на салодкае - тое, што яна робіць на ўра, а вашыя распрацоўшчыкі на %technology_name% будуць рабіць стопіцот гадоў, выкінуўшы на вецер не адзін гадавы бюджэт.

У выніку, вы, як кіраўнік або архітэктар зможаце атрымаць дакладнае разуменне - для якой задачы вам будзе выгадна ўзяць 1С, і дзе яе трэба выпальваць калёным жалезам. Як распрацоўшчык свету «не 1С» вы зможаце паглядзець, а што ж там такога ў 1С ёсць з-за чаго сыр-бор. А як распрацоўшчык 1С – зможаце параўнаць сваю сістэму з экасістэмамі іншых моў і зразумець сваё размяшчэнне ў сістэме каардынат софтвернай распрацоўкі.

Пад катом - маса тоўстых накідаў на 1С, на крытыкаў 1С, на Java,. NET і наогул ... Вентылятар запраўлены, сардэчна запрашаем!

Пра сябе

Я знаёмы з прадметам размовы прыкладна з 2004 года. Праграмую напэўна гадоў з 6, з таго самага моманту, як у мяне з'явілася кніжка пра прафесара Фортрана з коміксамі пра ката, вераб'я і гусеніцу. Я разбіраў праграмы, якія пісаў кот з карцінак у кніжцы і высвятляў, што яны робяць. І так, сапраўднага кампутара ў мяне тады не было, але на развароце кніжкі быў намаляваны і я сапраўды націскаў папяровыя кнопкі, уводзячы каманды, падгледжаныя ў ката Ікса.

Далей быў БК0011 і Бэйсік у школе, З++ і асэмблеры ва ўніверы, потым 1С, а потым столькі ўсяго, што ўжо і ўспамінаць лянота. Апошнія 15 гадоў я, у асноўным, займаюся 1С, не толькі ў частцы кодынгу, а ўвогуле 1С. Пастаноўка задач, адмінства і дэвопс сюды ж. Апошнія гадоў 5 займаюся грамадска карыснай дзейнасцю ў плане развіцця інструментаў распрацоўкі і аўтаматызацыі для іншых 1С-нікаў, пішу артыкулы і кніжкі.

Вызначымся з прадметам абмеркавання

Для пачатку давайце вызначымся пра што пайдзе прамову, паколькі пад літарамі "1С" можна зразумець шмат усяго. У дадзеным выпадку, пад літарамі "1С" мы будзем разумець выключна фрэймворк распрацоўкі "1C: Прадпрыемства" сучаснай, восьмай версіі. Мы не будзем шмат казаць пра фірму-вытворцу і яе палітыку (але крыху-такі прыйдзецца), Мы не будзем абмяркоўваць канкрэтныя прыкладанні, напісаныя з ужываннем гэтага фрэймворка. Тэхналогія асобна, прыкладанні aka канфігурацыі - асобна.

Высокаўзроўневая архітэктура 1С: Прадпрыемствы

Я нездарма згадваю слова «фрэймворк». З пункту гледжання распрацоўніка платформа 1С гэта менавіта фрэймворк. І ставіцца да яго трэба менавіта як да фрэймворка. Лічыце, што гэта Spring ці ASP.NET, выкананы некаторым асяроддзем выканання (JVM або CLR адпаведна). Так атрымалася, што ў свеце звычайнага праграмавання (не 1С ) падзел на фрэймворкі, віртуальныя машыны і пэўныя прыкладанні атрымліваецца натуральным, у сілу таго, што гэтыя кампаненты звычайна распрацоўваюцца рознымі вытворцамі. У свеце 1С ж не прынята вылучаць у відавочным выглядзе фрэймворк распрацоўкі і ўласна рантайм, акрамя таго, пэўныя прыкладанні, напісаныя з ужываннем фрэймворка, па-асноўным, таксама распрацаваны самой жа фірмай 1С. У выніку і ўзнікае нейкая блытаніна. Таму, у рамках артыкула нам давядзецца разгледзець 1С адразу з некалькіх бакоў і класіфікаваць яе па некалькіх каардынатных восях. І ў кожнай восі каардынат мы пакладзем па лапаце карычневага рэчыва разгледзім асаблівасці, перавагі і недахопы наяўнага рашэння.

Пункты гледжання на 1С

1С для пакупніка

Пакупнік набывае сістэму аўтаматызацыі, на якой ён зможа хутка вырашыць задачы аўтаматызацыі ўласнага бізнэсу. Бізнэс можа быць маленькім шапікам, а можа быць буйным холдынгам. Зразумела, што запатрабаванні ў гэтых бізнэсаў розныя, але падтрымліваецца і тое і іншае адзінай кодавай базай платформы.

Для пакупніка 1С гэта хуткі time-to-market. Хуткі. Хутчэй чым на Java, C # ці JS. У сярэднім. Па бальніцы. Зразумела, што сайт-візітоўка на рэакце атрымаецца лепш, але бэкенд WMS-сістэмы - хутчэй запусціцца на 1С.

1С як інструмент

Кожнае тэхналагічнае рашэнне мае межы дастасавальнасці. 1С гэта не мова агульнага прызначэння, яна не жыве асобна ад свайго фрэймворка. 1С мэтазгодна прымяняць калі вам трэба:

  • серверны дадатак
  • дадатак, дзе фігуруюць фінансы
  • з гатовым UI, ORM, Reporting, XML/JSON/COM/PDF/YourDataTransferingFormat
  • з падтрымкай фонавых працэсаў і заданняў
  • з сістэмай бяспекі на аснове роляў
  • са скрыптуемай бізнес-логікай
  • з магчымасцю хуткага стварэння прататыпа і нізкім time-to-market

1С вам не трэба, калі вы хочаце:

  • машыннае навучанне
  • разлікі на GPU
  • кампутарная графіка
  • матэматычныя разлікі
  • CAD-сістэму
  • апрацоўка сігналаў (гук, відэа)
  • highload http-выклікі з сотнямі тысяч rps

1С як фірма-вытворца

Варта разумець, у чым складаецца бізнэс фірмы 1С, як вытворцы софту. Фірма 1С прадае рашэнні праблем бізнесу за кошт аўтаматызацыі. Рознага бізнэсу, вялікага ці маленькага, але прадае яна менавіта гэта. Сродкам дасягнення гэтай мэты з'яўляюцца бізнес-дадаткі. Для бухгалтэрыі, для ўліку зарплаты і інш. Для напісання гэтых прыкладанняў фірма выкарыстоўвае ўласную платформу распрацоўкі бізнес-прыкладанняў. Адмыслова заменчаную пад распаўсюджаныя задачы гэтых самых бізнэс-прыкладанняў:

  • улік фінансаў
  • лёгкая кастамізацыя бізнес-логікі
  • шырокія магчымасці інтэграцыі ў гетэрагенных IT-ланшафтах

Як вытворца, фірма 1С лічыць, што менавіта такая стратэгія дае магчымасць працаваць з партнёрамі і кліентамі ў рэжыме win-win. Можна спрачацца з гэтым, але прыкладна так фірма сябе прасоўвае: гатовыя рашэнні праблем бізнэсу, якія можна хутка кастамізаваць сіламі партнёраў і ўбудаваць у любы IT-ландшафт.

Усе прэтэнзіі ці жаданні да 1С, як да фрэймворка варта разглядаць выключна праз гэтую прызму. "Хочам ААП у 1С" кажуць распрацоўшчыкі. «Колькі будзе нам каштаваць падтрымка ААП у платформе, ці дапаможа гэта нам павялічыць продажы скрынак?», кажа фірма 1С. Адкрывае сваю «прызму» продажу рашэння праблем бізнэсу:

- Гэй, бізнэс, хочаш, каб у тваёй 1С было ААП?
- Гэта дапаможа мне вырашыць мае праблемы?
- Як ведаць...
- Тады не трэба

Гэта падыход можа быць добрым ці дрэнным, у залежнасці ад таго, хто на яго глядзіць, але ён проста такі. Гаворачы аб тым, што ў 1С няма фічы Х, трэба разумець, што яе няма там не проста так, а ў кантэксце выбару "кошт рэалізацыі vs памер профіту".

Тэхналагічная класіфікацыя

«Насамрэч адзінэснікі на ўсю моц выкарыстоўваюць самыя лепшыя патэрны, старанна адабраныя клапатлівымі метадыстамі і распрацоўшчыкамі платформы 1С.
Калі ты пішаш свой тупы код для просценькай кіраванай формы, насамрэч ты юзаешь model-view-controller с double-way data binding в three-layered-data-app-engine, закрашаны высокі ўзровень object-relation-mapping на базе declarative metadata description, якая мае свой platform-independent query language, з declarative data-driven user interface, complete transparent serialization і domain-oriented program language.

У чым распрацоўшчыкі 1С адрозніваюцца ад заходніх калегаў, дык гэта ў піяры. Тыя любяць любы бздуры даць гучнае імя і насіцца з ёй, як з пісанай торбай.»
А. Арэфкаў

Платформа 1С мае класічную 3-звановую архітэктуру, у цэнтры якой сервер прыкладанняў (ці яго эмуляцыя за мала грошай для дробных крамнікаў). У якасці СКБД прымяняецца або MS SQL або Postgres. Ёсць яшчэ падтрымка Oracle і IBM DB2 але гэта, хутчэй за эзатэрыка, ніхто не ведае што будзе, калі ўкараняць 1С на гэтых базах пад сярэдняй і высокай нагрузкай. Мяркую, не ведае гэтага і сама фірма 1С.

У якасці кліенцкай часткі выступае або тонкі кліент, які ўстанаўліваецца на машыну карыстальніка, або вэб-кліент. Ключавая асаблівасць - праграмісты не пішуць 2 розных кода, яны пішуць адно прыкладанне, на адной мове, а вы можаце выставіць яго ў браўзэры, калі ёсць жаданне ці запатрабаванне. Хто там хацеў сапраўднага фулстэку і адзіную мову для фронту і бэкэнду, node.js? У іх да канца так і не ўдалося зрабіць зусім аднолькава. Сапраўдны фулстэк існуе, але пісаць давядзецца на 1С. Іронія лёсу, такія справы 🙂

У рэжыме браўзэра працуе таксама хмарнае SaaS рашэнне 1С: Fresh, у якім можна не купляць 1С, а ўзяць дробную базу сабе ў арэнду і весці там улік продажаў шаурмы. Проста ў браўзэры, не ўсталёўваючы і не наладжваючы сабе нічога.

Акрамя таго, ёсць легасі-кліент, які ў 1С называюць «звычайнае прыкладанне». Легасі яно і ёсць легасі, сардэчна запрашаем у свет прыкладанняў 2002 года, а мы ўсё ж такі пра сучасны стан экасістэмы.

Серверная частка 1С падтрымлівае кластарызацыю і маштабуецца пасродкам дадання новых машын у кластар. Тут зламана даволі шмат копій і пра гэта будзе асобны раздзел у артыкуле. Калі сцісла, тое гэта не зусім тое ж, што і дадаць пару сапраўды такіх жа інстансаў ззаду HAProxy.

Фрэймворк прыкладной распрацоўкі выкарыстоўвае ўласную мову праграмавання, якая прыкладна нагадвае злёгку палепшаны VB6, перакладзены на рускую мову. Людзям, якія ненавідзяць усё рускае, якія не вераць, што "if" перакладаецца, як "калі" прапануецца другі варыянт сінтаксісу. Г.зн. пры жаданні на 1С можна пісаць так, што з выгляду ад VB не адрозніць.

1С - Дабро і зло. Расстаноўка кропак у халіварах вакол 1С

Вось гэта самая мова праграмавання і з'яўляецца асноўным чыннікам хейту 1С-нікаў у бок сваёй платформы. Скажам прама, не беспадстаўна. Мова задумвалася, як максімальна простая, закліканая выканаць мантру "DEVELOPERS, DEVELOPERS" у маштабах хаця б СНД. Камерцыйная сутнасць такога рашэння, на мой погляд, праглядаецца дакладна: больш распрацоўшчыкаў, больш ахоп рынку. Гэта спраўдзілася па розных ацэнках ад 45% да 95%. Адразу скажу, што пісаць на той мове, на якой думаеш - рэальна лягчэй. А я ведаю даволі шмат моваў праграмаваньня.

З мовы, мабыць і пачнем.

Мова праграмавання 1С

Адначасова моцнае і слабое месца сістэмы. Забяспечвае лёгкае ўваходжанне, чытэльнасць. З іншага боку, не абнаўляўся з моманту выхаду версіі 8 у 2002 годзе і маральна састарэлы. Хтосьці скажа «галоўны недахоп - няма ААП» і будзе няправы. Па-першае, ААП не любіць не толькі Нураліеў, але і Торвальдс. А па-другое, ААП усё ж такі ёсць.

З пункту гледжання распрацоўшчыка, у яго распараджэнні ёсць фрэймворк з базавымі класамі, якія адлюстроўваюцца на СКБД. Распрацоўнік можа ўзяць базавы клас "Даведнік" і атрымаць у спадчыну ад яго даведнік "Кліенты". Можа дадаць да яго новыя палі класа, напрыклад, ІНАЎ і Адрас, а таксама, калі трэба — можа перавызначыць (override) метады базавага класа, напрыклад метад OnWrite/ПрыЗапісы.

Фрэймворк складзены такім чынам, што больш глыбокае ўспадкоўванне патрабуецца рэдка, і абмежаванне ў ААП, на мой погляд, мае сэнс. 1С арыентуецца на Domain Driven Development і прымушае думаць, у першую чаргу, аб прадметнай вобласці распрацоўванага рашэння і гэта добра. Адсутнічае не толькі спакуса, але і неабходнасць пісаць 10 розных DTO і ViewModel толькі для таго, каб недзе паказаць нейкія дадзеныя з дамена. Распрацоўнік 1С аперуе заўсёды адной сутнасцю, не забіваючы сабе кантэкст успрымання дзясяткам класаў з падобнымі назвамі, уяўлялымі адну і тую ж сутнасць, але з іншага боку. Любое .NET дадатак, напрыклад, будзе абавязкова змяшчаць пятак-іншы ViewModel-яй і DTO для серыялізацыі ў JSON і перадачы даных з кліента на сервер. І прыкладна 10-15% кода вашага прыкладання зойме перакладанне дадзеных з аднаго класа ў іншы ручкамі ці мыліцамі накшталт AutoMapper. Гэты код трэба напісаць і праграмістам заплаціць за яго стварэнне і суправаджэнне.

Выходзіць, што мову 1С складана развіваць, не ўскладніўшы яе да ўзроўню мэйнстрымных моў, страціўшы такім чынам перавага прастаты. Якая ж па сутнасці вырашаецца задача вендара: выдаць тыпавое рашэнне, якое зможа кастамізаваць любы адлоўлены на вуліцы студэнт з належным узроўнем якасці (г.зн. кейс ахопу ад ларка да буйнога завода выконваецца). Калі ты ларок - вазьмі студэнта, калі ты завод - вазьмі гуру ў партнёра-ўкараняка. Тое, што партнёры-ўкараняльнікі прадаюць студэнтаў па кошце гуру, гэта не праблема фрэймворка. Архітэктурна фрэймворк павінен вырашаць задачы і тых, і іншых, код тыпавых канфігурацый (якія мы прадалі бізнэсу з абяцаннем кастамізацыі) павінен умець разумець студэнт, а гуру і так што жадаеш зразумее.

Чаго, на мой погляд, рэальна бракуе ў мове, што змушае пісаць больш чым можна было б, тое што прапальвае час, які аплачваецца замоўцам.

  • Магчымасць тыпізацыі на ўзроўні, напрыклад, TypeScript (як следства больш развітыя сродкі аналізу кода ў IDE, рэфактарынг, менш крыўдных вушакоў)
    Наяўнасць функцый як аб'ектаў першага класа. Крыху больш за складаная канцэпцыя, але колькасць boilerplate-code з тыпавых можна было б моцна скараціць. Разуменне кода студэнтам, имхо, нават павысілася б за кошт скарачэння аб'ёму
  • Літаралы ўніверсальных калекцый, ініцыялізатары. Тое ж самае - зніжэнне аб'ёму кода, які трэба напісаць і / або прагледзець вачыма. Напаўненне калекцый гэта over 9000% часу праграмавання на 1С. Пісаць гэта без сінтаксічнага цукру доўга, дорага і error-prone. Наогул, колькасць LOC у рашэннях на 1С пераўзыходзіць усе мажлівыя межы ў параўнанні з даступнымі адчыненымі фреймворками і наогул, усіх вашых энтерпрайз Джаў разам узятых. Мова шматслоўная, а гэта выраджаецца ў аб'ём дадзеных, памяць, тормазы IDE, час, грошы….
  • канструкцыі finally У мяне ёсць гіпотэза, што гэтая канструкцыя адсутнічае з-за таго, што не падабралі ўдалага перакладу яе на рускую мову 🙂
  • Уласных тыпаў дадзеных (без ААП), аналагаў Type з VB6. Дазволіць не тыпізаваць структуры з дапамогай каментароў у БСП і чароўных метадаў, якія канструююць гэтыя структуры. Атрымліваем: менш кода, падказку праз кропку, хутчэйшае рашэнне задачы, менш памылак па памылках друку і адсутным уласцівасцям структур. Цяпер тыпізацыя карыстацкіх структур ляжыць цалкам на камандзе распрацоўкі Бібліятэкі Стандартных Падсістэм, якая, да гонару для сябе, старанна піша каментарыі па чаканых уласцівасцях структур, якія перадаюцца параметраў.
  • Адсутнасць цукру пры працы з асінхроннымі выклікамі на вэб-кліенце. callback-hell у выглядзе АпрацоўкаАпавяшчэнні гэта часовы мыліца, выкліканы раптоўнай зменай API асноўных браўзэраў, але жыць так увесь час - нельга, перавага «разумення студэнтам» асінхроннага кода губляецца ўсё мацней. Дадайце сюды ніякую падтрымку гэтай парадыгмы ў асноўны IDE і ўсё стане яшчэ горш.

Гэта з надзённых праблем, зразумела, што спіс можа быць куды больш, але не трэба забываць, што гэта ўсёткі не мова агульнага прызначэння, тамака не трэба шматструменнасці, лямбда-функцый, доступу да GPU і хуткіх вылічэнняў з якая плавае кропкай. Гэта мова скрыптавання бізнес-логікі.

Праграмісту, які ўжо шмат папрацаваў з гэтай мовай, зазірнуў у js ці c# становіцца сумна ў рамках гэтай мовы. Гэта факт. Яму неабходна развіццё. На іншай чары шаляў у вендара ляжыць кошт рэалізацыі паказаных фіч vs павелічэнне выручкі пасля іх укаранення. Тут у мяне няма ніякай інфармацыі аб тым, што ў вачах фірмы ў дадзены момант перавешвае.

Серада распрацоўкі

Тут усё таксама не гладка. Асяроддзе распрацоўкі існуе дзве. Першая, гэта які ўваходзіць у склад пастаўкі Канфігуратар. Другая – распрацоўваная на базе Eclipse асяроддзе Enterprise Development Tools, скарочана EDT.

Канфігуратар забяспечвае поўны спектр задач распрацоўкі, падтрымлівае ўсе фічы і з'яўляецца асноўным асяроддзем на рынку. Таксама маральна састарэў, не развіваецца, па чутках - з-за аб'ёму тэхдоўгу ўнутры сябе. Сітуацыю магло б палепшыць адкрыццё ўнутранага API (у выглядзе сяброўства са Снегапатам А. Арэфкава ці на самастойнай аснове), але гэтага няма. Практыка паказала, што супольнасць сама напілуе сабе фіч у IDE, абы вендар не мяшаў. Але маем што маем. Канфігуратар быў выдатны ў 2004-2005, вельмі нагадваў Visual Studio тых часоў, месцамі нават быў страмчэй, але так і затрымаўся ў тых часах.

Акрамя таго, аб'ём сярэдняга тыпавога рашэння з тых часоў вырас у некалькі разоў і сёння IDE тупа не спраўляецца з тым аб'ёмам кода, якім яе кормяць. Юзабіліці і магчымасці рэфактарынгу нават не на нулі, яны ў мінусе. Усё гэта не дадае энтузіязму распрацоўнікам і яны мараць зваліць у іншыя экасістэмы і працягваць гаўнакадзіць тамака, але ўжо ў прыемным асяроддзі, якая не плюе табе ў пысу сваімі паводзінамі.

Як альтэрнатыва прапануецца напісаная з нуля IDE, пабудаваная на базе Eclipse. Там зыходнікі, як і ў любым іншым софце жывуць у выглядзе тэкставых файлаў, захоўваюцца ў GIT, галінкі-пулрэквесты, усё вось гэта вось. З мінусаў - ужо які год не выходзіць са статусу бэты, хоць з кожным рэлізам становіцца ўсё лепш. Пра мінусы EDT пісаць не буду, што сёння мінус, заўтра выпраўленая фіча. Актуальнасць такога апісання хутка сыдзе на нішто. На сённяшні дзень распрацоўваць у EDT можна, але нязвыкла, трэба быць гатовым да некаторай колькасці багаў IDE.

Калі паглядзець на сітуацыю праз згаданую «прызму 1С», тое атрымліваецца прыкладна наступнае: продажы скрынак вынахад новай IDE не падвышае, але адток DEVELOPERS-ов магчыма скароціць. Што чакае экасістэму з пункта гледжання камфорту распрацоўніка сказаць складана, але Microsoft ужо аднойчы прафукаў мабільных распрацоўнікаў, занадта позна прапанаваўшы ім свае паслугі.

Упраўленне распрацоўкай

Тут усё істотна лепш, чым у напісанні кода, асабліва ў апошні час, калі стараннямі супольнасці на святло былі выцягнутыя праблемы аўтаматызацыі адміністравання, запушчаныя прататыпы, якія заклікаюць выкінуць на звалку сховішча 1С і карыстацца git, хуткім blame, code-review, статычным аналізам, аўтадэплоем і etc. У платформу былі дададзены шматлікія фічы, якія падвышаюць узровень аўтаматызацыі задач распрацоўкі. Аднак, усе гэтыя фічы былі дададзены толькі і выключна для распрацоўкі ўласных буйных прадуктаў, калі стала відавочна, што без аўтаматызацыі ўжо ніяк. З'явіліся аўта-зліцці, трохбаковае параўнанне KDiff-ом і ўсякае такое. На гітхабе запушчаны gitconverter, які, паклаўшы руку на сэрца, быў ідэалагічна сцягнуты з праекта gitsync, Але дапрацаваны пад працэсы кампаніі-вендара. Дзякуючы зацятым хлопцам з open-source аўтаматызацыя распрацоўкі ў 1С ссунулася з мёртвай кропкі. Адкрытае API канфігуратара, имхо, ссунула б і маральную адсталасць асноўнай IDE.

На сённяшні дзень, захоўванне зыходнікаў 1С у git з прывязкай коммітаў да задач у Jira, рэўю ў Crucible, накатка кнопкай з Джэнкінс і справаздачы Allure аб тэставанні кода ў 1С і нават статычны аналіз у SonarQube - гэта ўжо далёка не навіна, а, хутчэй, мэйнстрым у кампаніях дзе ёсць шмат распрацоўкі на 1С.

адміністраванне

Вось тут ёсць шмат пра што сказаць. Па-першае, гэта, вядома ж сервер (кластар сервераў 1С). Выдатная штука, але за кошт таго, што гэта цалкам чорная скрыня, дакументаваная досыць падрабязна, але спецыфічным чынам - здужаць запуск бесперабойнай працы ў рэжыме highload на некалькіх серверах - гэта доля абраных, якія носяць медаль з надпісам "Эксперт па тэхналагічных пытаннях". Варта адзначыць, што ў прынцыпе, адміністраванне сервера 1С не адрозніваецца ад адміністравання якога-небудзь іншага сервера. Гэта сеткавае шматструменнае прыкладанне, якое спажывае памяць, працэсар і дыскавыя рэсурсы. Дае шырокія магчымасці для збору тэлеметрыі і дыягностыкі.

Праблему тут складае тое, што вендар не прапануе нічога асаблівага ў частцы гатовых рашэнняў для гэтай самай дыягностыкі. Так, ёсць 1С: СТОСАЎ і ЦУП, яны нават і нядрэнныя, але моцна платныя і ёсць не ва ўсіх. У супольнасці ёсць шэраг напрацовак па падлучэнні графаны, заббікса, ELK і іншага з тыпавога набору адміна, але адзінага рашэння, якое задаволіць большасць - не. Задача чакае свайго героя. А калі вы бізнэс, які плануе запусціцца на кластары 1С - вам патрэбен Эксперт. Свой усярэдзіне ці са боку, але патрэбен. Гэта нармальна, што ёсць асобная роля, з кампетэнцыямі па працы сервера, не кожны 1С-нік павінен гэта ведаць, проста трэба разумець, што такая роля патрэбна. Возьмем да прыкладу SAP. Тамака праграміст, хутчэй за ўсё, нават са крэсла не ўстане, калі яму на серверы прыкладанняў прапануюць нешта наладзіць. Ён можа тупа не ўмець і яму сорамна не будзе. У метадалогіі SAP ёсць асобная роля супрацоўніка пад гэта. Чамусьці ў галіне 1С лічыцца, што гэта павінна спалучацца ў адным супрацоўніку за той жа заробак. Гэта памылка.

Мінусы сервера 1С

Мінус роўна адзін - надзейнасць. Або, калі заўгодна, непрадказальнасць. Раптоўныя дзівацтвы паводзін сервера ўжо сталі прыпавесцю ва языцех. Універсальнае сродак - прыпынак сервера і чыстка ўсіх кэшаў нават апісаны ў настольнай кнізе эксперта і нават рэкамендаваны батнічак, які робіць гэта. Калі ў вас 1С пачала рабіць тое, чаго не павінна рабіць нават тэарэтычна - час чысціць кэш сеансавых дадзеных. Па маёй адзнацы, людзей, якія ўмеюць эксплуатаваць сервер 1С без гэтай працэдуры – ва ўсёй краіне чалавека тры і яны не дзеляцца сакрэтамі, т.к. з гэтага жывуць. Магчыма, іх сакрэт у тым, што яны чысцяць сеансавыя дадзеныя, але нікому не гавораць пра гэта, гыгыгы.

У астатнім, сервер 1С гэта такое ж дадатак, як любое іншае і адмініструецца прыкладна гэтак жа, з дапамогай чытання дакументацыі і груку ў бубен.

Докер

Карыснасць ужывання кантэйнерызаванага сервера 1С у прадакшэне пакуль не даказаная. Сервер не кластарызуецца простым даданнем нод за балансавальнікам, што зводзіць перавагі кантэйнерызацыі прадакшэна да мінімуму, а практыка паспяховай эксплуатацыі ў кантэйнерах у рэжыме highload – не напрацаваная. У выніку, докерам +1С карыстаюцца толькі распрацоўшчыкі для ўзняцця тэставых асяроддзяў. Там гэта зело карысна, прымяняецца, дазваляе гуляць з сучаснымі тэхналогіямі і адпачываць ад засмучэння канфігуратара.

Камерцыйны складнік

З пункту гледжання інвестыцый - 1С дазваляе закрыць задачу хуткага запуску бізнес-ідэй за кошт шырокіх магчымасцяў прыкладных класаў. 1С са скрынкі дае вельмі годны Reporting, інтэграцыю з чым заўгодна, вэб-кліент, мабільны кліент, мабільнае прыкладанне, падтрымку розных СКБД, у т.л. бясплатных, кросплатформеннасць як сервера, так і ўсталёўваных кліенцкіх частак. Так, UI прыкладанняў будзе жоўтым, часам гэта мінус, але не заўсёды.
Выбіраючы 1С, бізнэс атрымлівае набор праграмных рашэнняў, якія дазваляюць будаваць вельмі шырокі спектр прыкладанняў, а таксама масу распрацоўнікаў на рынку, якія жадаюць грошай менш чым джавісты і пры гэтым хутчэй выдаюць вынік.

Напрыклад, задача даслаць кліенту рахунак у PDF вырашаецца за гадзіну працы студэнта. Тая ж задача на. Часам, і тое, і другое адразу. І так, я казаў толькі пра фармаванне PDF. Мы не сказалі, адкуль гэты конт увогуле з'явіцца. Вэб-франтэндэр павінен нагнаць формачку, куды аператар уваб'е дадзеныя, бэкендэр павінен будзе стварыць dto-мадэлі ў для перадачы JSON, мадэлі для складавання ў базу дадзеных, структуру самой базы дадзеных, міграцыі на яе, фармаванне графічнага адлюстравання гэтага самага рахунку і толькі потым. PDF. На 1С, уся задача цалкам, з поўнага нуля робіцца за гадзіну роўна.

Паўнавартасная ўліковая сістэма дробнага ларка з адным бізнес-працэсам купіў/прадаў робіцца гадзіны за 3. З справаздачнасцю па продажах, улікам тавара па пакупной і прадажнай цэнах, у разбіўцы па складах, кантролем правоў доступу, вэб-кліентам і мабільным дадаткам. Добра, пра дадатак загнуў, з дадаткам не за 3 гадзіны, за шэсць.

Колькі часу зойме гэтая задача ў распрацоўніка. NET з моманту ўсталёўкі visual studio на чысты комп да дэманстрацыі замоўцу? А па кошце распрацоўкі? То ж бо.

Моцныя бакі 1С, як платформы

1С моцная не таму што ў ёй нешта канкрэтнае лепшае ў свеце. Наадварот, у кожнай асобнай падсістэме можна знайсці цікавейшы аналаг у сусветным софце. Аднак, па сукупнасці фактараў я не бачу платформы аналагічнай 1С. Менавіта ў гэтым заключаецца камерцыйны поспех. Плюсы платформы раскіданыя па ёй і найболей добра бачныя, калі бачыш, як гэта робіцца ў іншых платформах. У-асноўным, гэта нават не фічы, а наадварот - адмова ад фіч на карысць адной канкрэтнай парадыгмы. Некалькі прыкладаў:

  1. Unicode. Што, блін, можа быць прасцей? Не трэба ў 2019 годзе выкарыстоўваць аднабайтныя ASCII кадоўкі (акрамя інтэграцыі з дрымучымі legacy). Ні за што. Але ж няма. Усё роўна хтосьці ў якой-небудзь табліцы выкарыстоўвае аднабайтны varchar і дадатак займее праблемы з кадоўкамі. У 2015 годзе ў gitlab адвальвалася LDAP-аўтарызацыя з-за няправільнай працы з кадоўкамі, у JetBrains IDE да гэтага часу не ўсюды працуе з кірыліцай у імёнах файлаў. У 1С якасная ізаляцыя прыкладнога кода ад пласта працы з БД. Там нельга тыпізаваць табліцы на нізкім узроўні і вушакі малакампетэнтных джуніёраў на ўзроўні БД там немагчымыя. Так, там магчымыя іншыя вушакі малакампетэнтных джуніёраў, але разнастайнасць праблем моцна меншая. Вы мне зараз скажаце, што ў вас-то дадатак спраектавана правільна і пласт доступу да БД ізаляваны як належыць. Паглядзіце ў свой карпаратыўны самапісны Java-дадатак яшчэ раз. Пільна і сумленна. Сумленне не мучыць? Тады я за вас рады.
  2. Нумарацыя дакументаў/даведнікаў. У 1С яна сапраўды не самая гнуткая і не самая лепшая. Але што робяць у банкаўскім софце і ў самапісных сістэмах ўліку - ну гэта ж проста змрок. То identity уваткнуць (і потым "ой, а чаму ў нас дзіркі"), то наадварот, зробяць генератар, які працуе з блакіроўкай на ўзроўні СКБД (і стане вузкім месцам). Насамрэч, даволі складана зрабіць гэтую, здавалася б, простую задачку – скразны нумаратар сутнасцяў, з разрэзам унікальнасці па некаторым наборы ключоў, прэфіксацыяй, так каб гэта не блакавала базу пры раўналежным уводзе дадзеных.
  3. Ідэнтыфікатары запісаў у БД. 1С прыняла валявое рашэнне - усе ідэнтыфікатары спасылак абсалютна сінтэтычныя і ўсё тут. І няма праблем з размеркаванымі базамі і абменамі. Распрацоўнікі іншых сістэм упарта лепяць нешта тыпу identity (яна ж карацей!), цягнуць іх у GUI, пакуль не прыйдзе сітавіна рабіць некалькі злучаных інстансаў (і тут іх чакае адкрыццё). У вас такога няма? Шчыра?
  4. Спісы. У 1С ёсць дастаткова ўдалыя механізмы гартання (вялікіх) спісаў і навігацыі па іх. Адразу абмоўлюся - пры правільным ужыванні механізму! Наогул тэма досыць непрыемная, яна ідэальна не вырашаецца: тут альбо інтуітыўна і проста (але рызыка велізарных рэкардсетаў на кліенце), альбо той ці іншай крывулі пэйджынг. Тыя, хто робяць пэйджынг часта робяць яго крыва. Тыя, хто робіць сумленны скролбар - кладуць базу дадзеных, канал і кліента.
  5. Кіраваныя формы. Спрэчцы няма, у вэб-кліенце інтэрфейс працуе не тое каб ідэальна. Але працуе. А вось для многіх іншых уліковых і банкаўскіх сістэм зрабіць выдаленае працоўнае месца - гэта праект ўзроўню прадпрыемства. Агаворка: на шчасце для тых, хто першапачаткова зрабіў на інтэрнэце гэта не закране.
  6. Мабільнае прыкладанне. З нядаўніх часоў вы можаце пісаць і мабільныя прыкладанні, знаходзячыся ў той жа самай экасістэме. Тут крыху складаней, чым з вэб-кліентам, спецыфіка прылад прымушае пісаць спецыяльна пад іх, але, тым не менш – вы не наймаеце асобную каманду мабільных распрацоўшчыкаў. Калі трэба прыкладанне для ўнутраных патрэб кампаніі (калі мабільнае рашэнне карпаратыўнай задачы важней жоўтага дызайну UI) - проста карыстаецеся той жа платформай са скрынкі.
  7. Reporting. Пад гэтым словам я разумею не BI-сістэму з вялікімі дадзенымі і лагам на ETL-працэс. Маюцца на ўвазе аператыўныя справаздачы персаналу, якія дазваляюць ацаніць стан уліку тут і зараз. Рэшткі, узаемаразлікі, перасартыцу і да т.п. У 1С са скрынкі пастаўляецца сістэма справаздач з гнуткай наладай груповак, фільтраў, візуалізацыі на баку карыстальніка. Так, на рынку ёсць аналагі страмчэй. Але не ў рамках рашэння ўсё-у-адным і за кошт часам вышэй, чым рашэнне ўсё-у-адным. А гушчару нават наадварот: толькі reporting, але даражэй, чым платформа цалкам, і горш па якасці.
  8. Друкаваныя формы. Ну-ка вырашыце на. NET задачу адпраўкі зарплатнай ведамасці ў PDF супрацоўнікам на пошту. А зараз задачу друку таварных накладных. А з захаваннем іх дзід у той жа PDF? Для 1С-ніка вывад у PDF любога макета гэта +1 радок кода. А значыць + 40 секунд працоўнага часу, замест дзён ці тыдняў на іншай мове. Макеты друкаваных форм у 1С надзвычай зручныя ў распрацоўцы і дастаткова магутныя, каб канкурыраваць з платнымі аналагамі. Так, мусіць, у таблічных дакументах 1С не так шмат магчымасцяў па інтэрактыве, нельга хутка атрымаць 3D дыяграму з маштабаваннем пры дапамозе OpenGL. Але яно сапраўды трэба?

Усё гэта толькі жменька прыкладаў, калі абмежаванне функцыянальных магчымасцяў або рэалізацыя з кампрамісамі аказваецца важнай архітэктурнай перавагай у будучыні. Нават кампрамісны ці не самы эфектыўны варыянт - ён ужо ёсць у скрынцы і прымаецца як дадзенасць. Яго самастойная рэалізацыя будзе альбо немагчымай (бо такія рашэнні трэба прымаць у пачатку праекта, а там не да таго, ды і наогул архітэктара няма), альбо некалькімі дарагімі ітэрацыямі. У кожным з пералічаных пунктаў (а гэта далёка не поўны пералік архітэктурных рашэнняў) можна накасячыць і закласці абмежаванні, якія блакуюць маштабаванне. У любым выпадку, вам, як бізнэсмэну, трэба пераканацца, што вашыя праграмісты, робячы "сістэму з нуля", маюць прамыя рукі і зробяць тонкія сістэмныя моманты адразу добра.

Так, як і ў любой іншай складанай сістэме сама 1С сапраўды гэтак жа мае рашэнні, якія ў тых ці іншых аспектах блакуюць маштабаванне. Аднак, паўтаруся, па сукупнасці фактараў, па кошце валодання, па колькасці ўжо загадзя вырашаных праблем - я не бачу на рынку годнага канкурэнта. За адну і тую ж цану вы атрымліваеце фрэймворк фінансавага прыкладання, кластарызуемы балансуемы сервер, з UI і вэб-мордай, з мабільным дадаткам, са справаздачнасцю, інтэграцыяй і кучай яшчэ чаго. У свеце Java вы наймаеце каманду фронт-енда, бэкенда, адладжваеце нізкаўзроўневыя вушакі самапіснага сервернага кода і асобна плаціце за 2 мабільных прыкладання пад 2 мабільныя АС.

Я не кажу, што 1С вырашыць усе кейсы, але для ўнутранага карпаратыўнага прыкладання, калі не трэба брэндаваць UI - што яшчэ трэба?

Лыжка дзёгцю

Напэўна, склалася ўражанне, што 1С выратуе свет і ўсе іншыя спосабы напісання карпаратыўных сістэм - няправільныя. Гэта зусім ня так. З пункту гледжання бізнэсмэна, калі вы выбіраеце 1С, то апроч хуткага time-to-market неабходна ўлічыць і наступныя мінусы:

  • Надзейнасць сервера. Патрабуюцца сапраўды якасныя адмыслоўцы, здольныя забяспечваць яго бесперабойную працу. Мне невядомая гатовая праграма падрыхтоўкі такіх спецыялістаў ад вендара. Ёсць курсы для падрыхтоўкі да здачы экзамену "Эксперт", але гэтага, на мой погляд, недастаткова.
  • Падтрымка. Глядзі папярэдні пункт. Каб мець падтрымку ад вендара, яе трэба купіць. Чамусьці ў галіны 1С гэта не прынята. А ў SAP - амаль абавязкова да набыцця і нікога гэта не бянтэжыць. Без карпаратыўнай падтрымкі і без эксперта ў штаце - з глюкамі 1С можна застацца сам-насам.
  • Усёткі на 1С нельга зрабіць зусім усё. Гэта інструмент і як у кожнага інструмента ў яго ёсць межы дастасавальнасці. У ландшафце з 1С вельмі пажадана мець "не 1С-нутага" сістэмнага архітэктара.
  • Добрыя 1С-нікі каштуюць не танней добрых праграмістаў на іншых мовах. Хоць, дрэнных праграмістаў наймаць дорага незалежна ад мовы, на якой яны пішуць.

Расставім кропкі

  • 1С гэта фрэймворк хуткай распрацоўкі прыкладанняў (RAD) для бізнесу і заменчаны пад гэта.
  • Трохзвянка з падтрымкай асноўных СКБД, кліенцкім UI, вельмі нядрэнным ORM і рэпартынгам
  • Шырокія магчымасці па інтэграцыі з сістэмамі, якія ўмеюць тое, чаго 1С не ўмее. Хочаце машыннага навучання - вазьміце Python, а вынік зліце ў 1С па http або RabbitMQ
  • Не трэба імкнуцца рабіць усё на 1С, трэба разумець яе моцныя бакі і выкарыстоўваць іх у сваіх мэтах
  • Распрацоўнікі, якія імкнуцца да капання ў тэхналагічных фремворках-гаджэтах, і да перарабляння кожныя N гадоў на новы рухавічок - у 1С сумуюць. Тамака ўсё вельмі кансерватыўна.
  • Нудзяцца распрацоўшчыкі і ў сілу вельмі маленькага клопату пра іх з боку фірмы вытворцы. Сумная мова, слабая IDE. Яны патрабуюць мадэрнізацыі.
  • З іншага боку, распрацоўшчыкі, якія не могуць знайсці сабе забаў з дапамогай прымянення і вывучэння іншай падабаецца тэхналогіі – дрэнныя распрацоўшчыкі. Яны будуць ныць і перайшоўшы ў іншую экасістэму.
  • Працадаўцы, якія не дазваляюць сваім 1С-нікам запілаваць нешта на Пітон - дрэнныя працадаўцы. Яны страцяць супрацоўнікаў з дапытлівым розумам, а на іх месца прыйдуць monkey-кодэры якія, будучы з усім згодны, зацягнуць карпаратыўны софт у балота. Яго ўсё роўна прыйдзецца перапісаць, дык можа было б лепш крыху раней крыху інвеставаць у Пітон?
  • 1С камерцыйная кампанія і ўкараняе фічы выключна зыходзячы з уласных інтарэсаў і мэтазгоднасці. Яе нельга ў гэтым вінаваціць, бізнэс павінен думаць аб прыбытку, такое жыццё
  • 1С зарабляе тым, што прадае рашэнні праблем бізнесу, а не праблем распрацоўшчыка Васі. Два гэтыя паняцці карэлююць, але прыярытэт менавіта такі, які я сказаў. Калі распрацоўшчык Вася стане гатовы плаціць за асабістую ліцэнзію на 1С: Решарпер - ён з'явіцца даволі хутка, «Рэшарпер» А. Арэфкава таму пацвярджэнне. Калі б вендар падтрымліваў яго, а не змагаўся з ім – глядзіш узнік бы рынак софту для распрацоўшчыкаў. Цяпер на гэтым рынку паўтара гульца з сумнеўнымі вынікамі і ўсё з-за таго, што інтэграцыя з IDE адмоўная і ўсё робіцца на мыліцах.
  • Практыка спецыяліста-шматстаночніка сыдзе ў нябыт. Сучасныя прыкладанні занадта аб'ёмныя, каб памятаць іх і з боку кода і з боку бізнесавога выкарыстання. Сервер 1С таксама ўскладняецца, утрымаць усе віды экспертызы ў адным супрацоўніку будзе нельга. Гэта павінна пацягнуць за сабой запатрабаванасць адмыслоўцаў, а значыць прывабнасць прафесіі 1С-ніка і рост акладаў. Калі раней Вася тры-у-адным працаваў за адну зарплату, то зараз трэба наймаць двух Вась і канкурэнцыя сярод Вась можа падштурхнуць агульны рост іх узроўню.

Заключэнне

1С вельмі годны прадукт. У сваім коштавым дыяпазоне я ўвогуле не ведаю аналагаў, напішыце ў каментарах, калі такія ёсць. Аднак, адток распрацоўшчыкаў з экасістэмы становіцца ўсё больш прыкметнымі, а гэта «уцечка мазгоў», як ні круці. Галіна прагне мадэрнізацыі.
Калі вы распрацоўшчык - не зацыкляйцеся на 1С і не думайце, што ў іншых мовах усё чароўна. Пакуль ты джун - можа быць. Неяк трэба вырашаць нешта буйнейшае — гатовыя рашэнні давядзецца шукаць даўжэй і дапілоўваць больш інтэнсіўна. Па ўзроўні якасці «кубікаў» з якіх можна пабудаваць рашэнне - 1С вельмі і вельмі добрая.

І яшчэ - калі да вас прыйшоў наймацца 1С-нік, то 1С-ніка можна смела ставіць на пасаду ліда аналітыкаў. Разуменне задачы, прадметнай вобласці, навыкаў дэкампазіцыі ў іх развіта цудоўна. Упэўнены, што гэта менавіта за кошт прымусовага прымянення DDD у распрацоўцы на 1С. Чалавек навучаны думаць аб сэнсе задачы ў першую чаргу, аб сувязях паміж аб'ектамі прадметнай вобласці, пры гэтым мае тэхнічны бэкграўнд па інтэграцыйных тэхналогіях і фарматах абмену дадзенымі.

Аддавайце сабе справаздачу, што ідэальнага фрэймворка не існуе і беражыце сябе.
Добра ўсім!

PS: вялікі дзякуй speshuric за дапамогу ў падрыхтоўцы артыкула.

Толькі зарэгістраваныя карыстачы могуць удзельнічаць у апытанні. Увайдзіце, Калі ласка.

У вас ёсць 1С на прадпрыемстве?

  • 13,3%Наогул не.

  • 30,3%Ёсць, але толькі ў бухгалтэрыі недзе. Асноўныя сістэмы на іншых платформах162

  • 41,4%Так, асноўныя бізнес-працэсы працуюць на ёй221

  • 15,0%1С павінна памерці, будучыня за %technology_name%80

Прагаласавалі 534 карыстальніка. Устрымаліся 99 карыстальнікаў.

Крыніца: habr.com

Дадаць каментар