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 da Windows Phone (dandalin wayar hannu 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 haɓaka aikace-aikacen asali. Don Windows, ana amfani da Microsoft Visual C++ 12 (bayanin martaba mai dacewa da Windows XP) azaman mai tarawa, kuma don Linux da Android - gcc 4.8, don iOS - clang 5.0. Daidaitaccen ɗakin karatu da aka yi amfani da shi iri ɗaya ne ga duk tsarin aiki da masu tarawa - STLPort. Wannan bayani yana rage yuwuwar aiwatar da takamaiman kurakurai na STL. A halin yanzu muna shirin ƙaura zuwa aiwatar da STL da aka aika tare da CLang, kamar yadda STLPort ya ƙare kuma bai dace da yanayin kunna Gcc na C ++11 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 daidaitawa, duk ayyuka sun kasu kashi-kashi, waɗancan ɗakunan karatu ne masu ƙarfi (*.dll don Windows, * .so don Linux). Akwai abubuwa sama da dari da hamsin a dunkule; 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 mai amfani da Windows - azuzuwan taga, samun damar 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

Af, game da musaya. Ba ma amfani da daidaitattun sarrafa Windows; ana aiwatar da abubuwan sarrafa mu kai tsaye akan Windows API. Don sigar Linux, an yi wani Layer wanda ke aiki ta cikin ɗ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 gidan yanar gizo na 1C: Enterprise wanda ke kwafin dabarun C++ na sarrafa JavaScript. Muna ƙoƙarin kiyaye daidaiton aiki tsakanin bakin ciki da abokan ciniki na yanar gizo. A cikin lokuta inda hakan ba zai yiwu ba, misali saboda iyakancewar API ɗin JavaScript (misali, ikon yin aiki tare da fayiloli yana da iyaka), sau da yawa muna aiwatar da aikin da ya dace ta amfani da kari na burauzar da aka rubuta a C++. A halin yanzu muna tallafawa Internet Explorer da Microsoft Edge (Windows), Google Chrome (Windows), Firefox (Windows da 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 dubawa akan Linux OS

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 dubawa a kan Windows OS

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

Open source

Ko da yake ba ma amfani da daidaitattun ɗakunan karatu don masu haɓaka C++ a ƙarƙashin Windows (MFC, sarrafawa daga WinAPI), ba mu rubuta duk abubuwan da kanmu suke 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

Add a comment