Platform "1C: Enterprise" - menene ke ƙarƙashin kaho?

Hai Habr!
A cikin wannan labarin za mu fara labarin yadda yake aiki a ciki dandamali "1C: Enterprise 8" da kuma irin fasahar da ake amfani da su wajen ci gabanta.

Platform "1C: Enterprise" - menene ke ƙarƙashin kaho?

Me yasa muke tunanin wannan yana da ban sha'awa? Da fari dai, saboda dandalin 1C: Enterprise 8 babban aikace-aikace ne (fiye da layin lamba miliyan 10) a cikin C++ (abokin ciniki, uwar garken, da sauransu), JavaScript (abokin yanar gizo), kuma, kwanan nan, Kuma Java. Manyan ayyuka na iya zama mai ban sha'awa aƙalla saboda ma'aunin su, saboda batutuwan da ba a iya gani a cikin ƙaramin tushe na lamba suna tashi da ƙarfi a cikin irin waɗannan ayyukan. Abu na biyu, "1C: Kasuwanci" samfuri ne mai maimaitawa, "akwatin", kuma akwai kaɗan kaɗan game da irin waɗannan ci gaban akan Habré. Hakanan yana da ban sha'awa koyaushe sanin yadda rayuwa ke cikin wasu ƙungiyoyi da kamfanoni.

Don haka mu fara. A cikin wannan labarin za mu ba da taƙaitaccen bayani game da wasu fasahohin da ake amfani da su a cikin dandamali da kuma zayyana yanayin ƙasa, ba tare da nutsewa sosai a cikin aiwatarwa ba. Lallai, don hanyoyin da yawa, cikakken labari zai buƙaci labarin daban, kuma ga wasu, cikakken littafi!
Da farko, yana da kyau a yanke shawara akan mahimman abubuwa - menene 1C: dandamali na kasuwanci da kuma abubuwan da ya ƙunshi. Amsar wannan tambayar ba ta da sauƙi, saboda kalmar "Platform" (don taƙaitaccen bayani, za mu kira shi) yana nufin hanyar bunkasa aikace-aikacen kasuwanci, yanayin lokaci, da kayan aikin gudanarwa. Za'a iya bambanta abubuwan da ke gaba:

  • tarin uwar garke
  • Abokin ciniki na “bakin ciki” yana iya haɗawa da uwar garken ta hanyar http da nasa tsarin binary
  • abokin ciniki don yin aiki a cikin gine-gine mai hawa biyu tare da bayanan da ke kan rumbun kwamfutarka ko babban fayil na cibiyar sadarwa
  • abokin ciniki na yanar gizo
  • aikace-aikace uwar garken kayan aikin gudanarwa
  • yanayin ci gaba (wanda aka sani da Configurator)
  • yanayin aiki don iOS, Android и Windows Waya (dandalin wayar hannu na 1C)

Duk waɗannan sassan, ban da abokin ciniki na yanar gizo, an rubuta su a cikin C++. Bugu da ƙari, akwai sanarwar kwanan nan Sabon tsara tsara tsara, an rubuta da Java.

Apps na asali

Ana amfani da C++03 don ƙirƙirar aikace-aikacen asali. Windows Ana amfani da Microsoft Visual C++ 12 (bayanin martaba mai dacewa da shi) azaman mai tarawa Windows XP), kuma a ƙarƙashin Linux и Android — gcc 4.8, don iOS — clang 5.0. Laburaren da aka yi amfani da su iri ɗaya ne ga duk tsarin aiki da masu tarawa: STLPort. Wannan mafita tana rage yuwuwar kurakurai na musamman na aiwatarwa. A halin yanzu muna shirin ƙaura zuwa aiwatar da STL da aka bayar tare da CLang, saboda STLPort ta daina haɓakawa kuma ba ta dace da tallafin C++11 da aka kunna a cikin gcc ba.
Tushen lambar uwar garken shine 99% na kowa, abokin ciniki - 95%. Haka kuma, hatta dandali na wayar hannu yana amfani da lambar C++ iri ɗaya da ta “babban”, kodayake yawan haɗin kai akwai ɗan ƙasa.
Kamar yawancin masu amfani da C++, ba ma da'awar yin amfani da 100% na iyawar harshe da ɗakunan karatu. Don haka, a zahiri ba ma amfani da Boost, kuma ɗayan fasalulluka na harshe shine nau'in simintin gyare-gyare. A lokaci guda, muna amfani da rayayye:

  • STL (musamman kirtani, kwantena da algorithms)
  • gado mai yawa, gami da. gadon aiwatarwa da yawa
  • alamu
  • ware
  • smart pointers (aiki na al'ada)

Ta yin amfani da gada da yawa na musaya (cikakkiyar azuzuwan abstract), samfurin bangaren zai yiwu, wanda za'a tattauna a ƙasa.

Kayan aiki

Don tabbatar da daidaito, dukkan ayyuka an raba su zuwa sassa, waɗanda su ne ɗakunan karatu masu ƙarfi (*.dll a ƙarƙashin Windows, *.so — a ƙarƙashin Linux) Akwai abubuwa sama da ɗari da hamsin a jimilla; ga bayanin wasu daga cikinsu:

backend
Ya ƙunshi injin metadata na dandamali

accnt
Abubuwan da masu haɓaka aikace-aikacen ke amfani da su don gina bayanan lissafin kuɗi (charts na asusu da rajistar lissafin kuɗi)

ku bsl
Injin aiwatar da harshe da aka haɗa

nuke
Aiwatar da al'ada na ƙwaƙwalwar ajiya

dbe 8
Injin fayil ɗin bayanai. Injin bayanan uwar garken fayil mai sauƙi wanda ya dogara da ISAM, wanda kuma ya haɗa da mai sarrafa SQL mai sauƙi

wbase
Ya ƙunshi azuzuwan tushe da ayyuka don aiwatar da hanyar haɗin mai amfani Windows - azuzuwan taga, damar shiga GDI, da sauransu.

Rarraba zuwa sassa da yawa yana da amfani daga ra'ayoyi da yawa:

  • Rabuwa yana haɓaka mafi kyawun ƙira, musamman mafi kyawun keɓewar lamba
  • Daga saitin abubuwan ɓangarorin za ku iya haɗa zaɓuɓɓukan bayarwa daban-daban cikin sassauƙa:
    • Misali, shigarwar abokin ciniki na bakin ciki zai ƙunshi wbase, amma ba zai sami baya ba
    • amma akan uwar garken wbase, akasin haka, ba zai kasance ba
    • Zaɓuɓɓukan biyu ba shakka za su ƙunshi nuke da bsl

Ana loda duk abubuwan da ake buƙata don wannan zaɓin ƙaddamarwa lokacin da shirin ya fara. Wannan, musamman, yana da mahimmanci don yin rijistar azuzuwan SCOM, wanda za'a tattauna a ƙasa.

SCOM

Don bazuwar a ƙananan matakin, ana amfani da tsarin SCOM, ɗakin karatu mai kama da akida zuwa ATL. Ga waɗanda ba su yi aiki tare da ATL ba, mun lissafa manyan iyawa da fasali.
Don ƙirar SCOM na musamman:

  • Yana ba da hanyoyin masana'anta waɗanda ke ba ku damar ƙirƙirar aji daga wani ɓangaren sanin sunansa kawai (ba tare da bayyana aiwatarwa ba)
  • Yana ba da kayan aikin ma'ana mai kaifin kirga. Rayuwar ajin SCOM baya buƙatar kulawa da hannu
  • Yana ba ku damar gano ko wani abu yana aiwatar da ƙayyadaddun ƙayyadaddun ƙayyadaddun ƙayyadaddun bayanai kuma ta atomatik canza mai nuni zuwa abu zuwa mai nuni zuwa mahaɗin.
  • Ƙirƙirar abin sabis wanda koyaushe ake samun dama ta hanyar get_service, da sauransu.

Misali, zaku iya kwatanta aji don karanta JSON (misali, JSONStreamReader) a cikin sashin json.dll.
Ana iya ƙirƙira azuzuwan da misalai daga wasu abubuwan haɗin gwiwa; suna buƙatar yin rajista a cikin injin SCOM:

SCOM_CLASS_ENTRY(JSONStreamReader)

Wannan macro zai kwatanta aji na musamman na rikodi, wanda za'a kira mai ginin sa lokacin da aka loda kayan cikin ƙwaƙwalwar ajiya.
Bayan wannan, zaku iya ƙirƙirar misalinsa a cikin wani ɓangaren:

IJSONStreamReaderPtr jsonReader = create_instance<IJSONStreamReader>(SCOM_CLSIDOF(JSONStreamReader));

Don tallafawa ayyuka, SCOM yana ba da ƙarin ƙarin kayan aiki masu rikitarwa. Tsakanin shi shine manufar tsarin SCOM, wanda ke aiki azaman akwati don gudanar da ayyuka (watau, yana taka rawar Sabis Locator), kuma yana ƙunshe da ɗauri ga albarkatun gida. An haɗa tsarin SCOM zuwa zaren OS. Godiya ga wannan, a cikin aikace-aikacen za ku iya karɓar ayyuka kamar haka:

SCOM_Process* process = core::current_process();
if (process)
         return get_service<IMyService>(process);

Haka kuma, ta hanyar canza tsarin ma'ana (SCOM) da ke daure da zaren, zaku iya samun aikace-aikacen da ke da zaman kansu a zahiri daga mahangar sararin bayanai, suna gudana cikin zaren guda ɗaya. Wannan shine yadda abokin cinikinmu na bakin ciki ke aiki tare da bayanan fayil - a cikin tsarin OS guda ɗaya akwai hanyoyin SCOM guda biyu, ɗayan yana da alaƙa da abokin ciniki, na biyu kuma tare da uwar garken. Wannan hanya tana ba mu damar haɗa rubutun lambar da za ta yi aiki duka a kan bayanan fayil na gida da kuma a cikin sigar abokin ciniki-uwar garken "ainihin". Farashin irin wannan daidaituwa ya wuce sama, amma aikin yana nuna cewa yana da daraja.

Dangane da samfurin ɓangaren SCOM, duka dabarun kasuwanci da ɓangaren haɗin gwiwar 1C: Ana aiwatar da ciniki.

Mai amfani da dubawa

Da yake magana game da hanyoyin sadarwa, ba ma amfani da na'urorin sarrafawa na yau da kullun. Windows, ana aiwatar da ikonmu kai tsaye a kan Windows API. Don Linux-version yana da wani tsari wanda ke aiki ta hanyar ɗakin karatu na wxWidgets.
Laburare na sarrafawa baya dogara da wasu sassa na 1C: Kasuwanci kuma mu muna amfani da su a wasu ƙananan kayan aiki na ciki da yawa.

A cikin shekaru na ci gaba na 1C: Kasuwanci, bayyanar da sarrafawa ya canza, amma babban canji a cikin ka'idoji ya faru sau ɗaya kawai, a cikin 2009, tare da sakin 8.2 na sigar da kuma zuwan "saukan sarrafawa". Baya ga canza bayyanar, ƙa'idar shimfidar tsari ta canza asali - an sami ƙin sakawa pixel-by-pixel na abubuwa don goyon bayan kwarara-tsarin abubuwa. Bugu da ƙari, a cikin sabon samfurin, sarrafawa ba sa aiki kai tsaye tare da abubuwan yanki, amma tare da DTO na musamman (Abubuwan Canja wurin Bayanai).
Waɗannan canje-canjen sun ba da damar ƙirƙirar abokin ciniki na yanar gizo na 1C:Enterprise wanda ke kwaikwayon dabarun C++ na sarrafa JavaScript. Muna ƙoƙari don kiyaye daidaiton aiki tsakanin sirara da abokan cinikin yanar gizo. A cikin yanayin da wannan ba zai yiwu ba, misali saboda iyakokin JavaScript API (misali, ikon sarrafa fayiloli yana da iyaka sosai), sau da yawa muna aiwatar da ayyukan da ake buƙata ta amfani da ƙarin abubuwan bincike da aka rubuta a cikin C++. A halin yanzu muna tallafawa Internet Explorer da Microsoft Edge (Windows), Google Chrome(Windows(Firefox),Windows и Linux) da Safari (MacOS).

Bugu da kari, ana amfani da fasahar fom da aka sarrafa don ƙirƙirar hanyar sadarwa don aikace-aikacen hannu akan dandalin 1C. A kan na'urorin tafi-da-gidanka, ana aiwatar da tsarin sarrafawa ta hanyar amfani da fasaha na asali zuwa tsarin aiki, amma don tsarin tsarin tsari da kuma amsawar dubawa, ana amfani da lambar guda ɗaya kamar yadda yake a cikin "babban" 1C: Dandalin Kasuwanci.

Platform "1C: Enterprise" - menene ke ƙarƙashin kaho?
1C interface akan OS Linux

Platform "1C: Enterprise" - menene ke ƙarƙashin kaho?
1C dubawa akan na'urar hannu

1C dubawa akan sauran dandamali Platform "1C: Enterprise" - menene ke ƙarƙashin kaho?
1C interface akan OS Windows

Platform "1C: Enterprise" - menene ke ƙarƙashin kaho?
Interface 1C - abokin ciniki na yanar gizo

Open source

Duk da cewa ba ma amfani da ɗakunan karatu na masu haɓaka C++ na yau da kullun, Windows (MFC, WinAPI ke sarrafa), ba mu rubuta dukkan abubuwan da muka haɗa da kanmu ba. An riga an ambaci ɗakin karatu. wxWidgets, kuma muna amfani da:

  • curl don aiki tare da HTTP da FTP.
  • OpenSSL don aiki tare da cryptography da kafa haɗin TLS
  • libxml2 da libxslt don nazarin XML
  • libpan don aiki tare da ka'idojin wasiƙa (POP3, SMTP, IMAP)
  • kwaikwayo don rarraba saƙonnin imel
  • sqlite don adana bayanan mai amfani
  • ICU domin kasa da kasa

Jerin ya ci gaba.
Bugu da ƙari, muna amfani da sigar da aka gyara sosai Gwajin Google и Google Mock lokacin haɓaka gwajin naúrar.
Dakunan karatu sun buƙaci daidaitawa don dacewa da ƙirar ƙungiyar ɓangaren SCOM.
Yaɗuwar 1C yana sa dandamali ya zama kyakkyawan gwaji na ƙarfi ga ɗakunan karatu da aka yi amfani da su a ciki. Daban-daban masu amfani da yanayi suna bayyana kurakurai da sauri a cikin wuraren da ba a cika amfani da su na lamba ba. Muna gyara su da kanmu kuma muna ƙoƙarin mayar da su ga marubutan ɗakin karatu. Kwarewar hulɗar ta zama daban.
Masu haɓaka curl и libpan amsa da sauri ga buƙatun ja, amma facin, misali, a ciki OpenSSL Ba mu taba gudanar da mayar da shi ba.

ƙarshe

A cikin labarin mun tabo abubuwa da yawa na ci gaban 1C: dandamali na kasuwanci. A cikin iyakacin iyaka na labarin, mun tabo wasu abubuwa masu ban sha'awa kawai, a ra'ayinmu, bangarori.
Ana iya samun cikakken bayanin hanyoyin dandamali daban-daban a nan.
Wadanne batutuwa ne za su fi sha'awar ku a cikin labarai na gaba?

Ta yaya ake aiwatar da dandalin wayar hannu na 1C?
Bayanin tsarin ciki na abokin ciniki na yanar gizo?
Ko wataƙila kuna sha'awar tsarin zaɓin fasali don sabbin abubuwan fitarwa, haɓakawa da gwaji?

Rubuta a cikin sharhi!

source: www.habr.com

Sayi amintaccen masauki don shafuka tare da kariyar DDoS, sabar VPS VDS 🔥 Sayi ingantaccen masaukin yanar gizo tare da kariyar DDoS, sabar VPS VDS | ProHoster