Hai Habr!
A cikin wannan labarin za mu fara labarin yadda yake aiki a ciki da kuma irin fasahar da ake amfani da su wajen ci gabanta.

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 . 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 , 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 ().
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.

1C interface akan OS Linux

1C dubawa akan na'urar hannu
1C dubawa akan sauran dandamali 
1C interface akan OS Windows

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. , kuma muna amfani da:
- don aiki tare da HTTP da FTP.
- don aiki tare da cryptography da kafa haɗin TLS
- don nazarin XML
- don aiki tare da ka'idojin wasiƙa (POP3, SMTP, IMAP)
- don rarraba saƙonnin imel
- don adana bayanan mai amfani
- domin kasa da kasa
Jerin ya ci gaba.
Bugu da ƙari, muna amfani da sigar da aka gyara sosai и 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 и amsa da sauri ga buƙatun ja, amma facin, misali, a ciki 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 .
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
