መድረክ "1C: ኢንተርፕራይዝ" - በመከለያው ስር ያለው ምንድን ነው?

ሃይ ሀብር!
በዚህ ጽሑፍ ውስጥ ስለ ውስጡ እንዴት እንደሚሰራ ታሪኩን እንጀምራለን መድረክ "1C: ኢንተርፕራይዝ 8" እና በእድገቱ ውስጥ ምን ዓይነት ቴክኖሎጂዎች ጥቅም ላይ ይውላሉ.

መድረክ "1C: ኢንተርፕራይዝ" - በመከለያው ስር ያለው ምንድን ነው?

ይህ ለምን አስደሳች ነው ብለን እናስባለን? በመጀመሪያ፣ የ1C፡ኢንተርፕራይዝ 8 መድረክ ትልቅ (ከ10 ሚሊዮን በላይ የኮድ መስመሮች) በC++ (ደንበኛ፣ አገልጋይ፣ ወዘተ)፣ ጃቫስክሪፕት (የድር ደንበኛ) እና በቅርቡ ደግሞ እና ጃቫ. ትላልቅ ፕሮጀክቶች ቢያንስ በመጠን መጠናቸው ሳቢ ሊሆኑ ይችላሉ, ምክንያቱም በትንሽ ኮድ መሰረት የማይታዩ ጉዳዮች በእንደዚህ ያሉ ፕሮጀክቶች ውስጥ ሙሉ በሙሉ ይነሳሉ. በሁለተኛ ደረጃ "1C: Enterprise" የሚደጋገም "በቦክስ" ምርት ነው, እና ስለ Habré ስለ እንደዚህ ያሉ እድገቶች በጣም ጥቂት ጽሑፎች አሉ. በሌሎች ቡድኖች እና ኩባንያዎች ውስጥ ህይወት እንዴት እንደሆነ ማወቅ ሁልጊዜም አስደሳች ነው.

ስለዚህ እንጀምር። በዚህ ጽሑፍ ውስጥ በመድረክ ውስጥ ጥቅም ላይ የሚውሉትን አንዳንድ ቴክኖሎጂዎች አጠቃላይ እይታ እና የመሬት አቀማመጥን እንገልፃለን, ወደ አተገባበሩ በጥልቀት ውስጥ ሳንገባ. በእርግጥ፣ ለብዙ አሠራሮች፣ ዝርዝር ታሪክ የተለየ ጽሑፍ፣ እና ለአንዳንዶች፣ ሙሉ መጽሐፍ ያስፈልገዋል!
ለመጀመር በመሠረታዊ ነገሮች ላይ መወሰን ጠቃሚ ነው - 1C: የኢንተርፕራይዝ መድረክ ምን እንደሆነ እና ምን ክፍሎች እንዳሉት. የዚህ ጥያቄ መልስ በጣም ቀላል አይደለም, ምክንያቱም "ፕላትፎርም" የሚለው ቃል (ለአጭር ጊዜ, እንደዚያ እንጠራዋለን) የንግድ ሥራ አፕሊኬሽኖችን, የሩጫ አከባቢን እና የአስተዳደር መሳሪያዎችን ለማዳበር ዘዴን ያመለክታል. የሚከተሉት ክፍሎች በግምት ሊለያዩ ይችላሉ-

  • የአገልጋይ ክላስተር
  • በ http እና በራሱ ሁለትዮሽ ፕሮቶኮል በኩል ከአገልጋዩ ጋር መገናኘት የሚችል "ቀጭን" ደንበኛ
  • ደንበኛ በሃርድ ድራይቭ ወይም በአውታረ መረብ አቃፊ ላይ ካለው የውሂብ ጎታ ጋር ባለ ሁለት-ደረጃ አርክቴክቸር ውስጥ ለመስራት
  • የድር ደንበኛ
  • የመተግበሪያ አገልጋይ አስተዳደር መሳሪያዎች
  • የልማት አካባቢ (አዋቅር በመባል ይታወቃል)
  • ለ iOS፣ አንድሮይድ እና ዊንዶውስ ፎን (የሞባይል መድረክ 1C) የሩጫ ጊዜ አካባቢ

እነዚህ ሁሉ ክፍሎች፣ ከድር ደንበኛ በስተቀር፣ በC++ ተጽፈዋል። በተጨማሪም ፣ በቅርቡ የታወጀው አለ። አዲስ ትውልድ አዋቅር፣ በጃቫ የተጻፈ።

ቤተኛ መተግበሪያዎች

C++03 ቤተኛ መተግበሪያዎችን ለማዘጋጀት ይጠቅማል። ለዊንዶውስ ማይክሮሶፍት ቪዥዋል ሲ ++ 12 (ከዊንዶውስ ኤክስፒ ጋር ተኳሃኝ የሆነ ፕሮፋይል) እንደ ማቀናበሪያ ጥቅም ላይ ይውላል, እና ለሊኑክስ እና አንድሮይድ - gcc 4.8, ለ iOS - clang 5.0. ጥቅም ላይ የዋለው መደበኛ ቤተ-መጽሐፍት ለሁሉም ኦፕሬቲንግ ሲስተሞች እና ማጠናቀቂያዎች ተመሳሳይ ነው - SLTPort. ይህ መፍትሔ የ STL ትግበራ-ተኮር ስህተቶችን እድል ይቀንሳል. STLPort የተቋረጠ እና ከgcc C++11 የነቃ ሁነታ ጋር የማይጣጣም ስለሆነ በአሁኑ ጊዜ ከCLang ጋር ወደተላከው የSTL ትግበራ ለመሸጋገር አቅደናል።
የአገልጋዩ ኮድ መሰረት 99% የተለመደ ነው, የደንበኛው - 95% ነው. ከዚህም በላይ የሞባይል መድረክ እንኳን ከ "ትልቅ" ጋር አንድ አይነት C ++ ኮድ ይጠቀማል, ምንም እንኳን እዚያ ያለው የመዋሃድ መቶኛ በተወሰነ ደረጃ ዝቅተኛ ነው.
እንደ አብዛኛዎቹ የC++ ተጠቃሚዎች የቋንቋውን እና የቤተ-መጻህፍትን ችሎታዎች 100% እንጠቀማለን ብለን አንናገርም። ስለዚህ፣ እኛ በተግባር Boost አንጠቀምም፣ እና ከቋንቋ ባህሪያቱ አንዱ ተለዋዋጭ ዓይነት መውሰድ ነው። በተመሳሳይ ጊዜ እኛ በንቃት እንጠቀማለን-

  • STL (በተለይ ሕብረቁምፊዎች፣ መያዣዎች እና ስልተ ቀመሮች)
  • ብዙ ውርስ፣ ጨምሮ። ባለብዙ ትግበራ ውርስ
  • አብነቶች
  • የማይካተቱ
  • ብልጥ ጠቋሚዎች (ብጁ ትግበራ)

የበርካታ የበይነገጽ ውርስ (ሙሉ በሙሉ ረቂቅ ክፍሎች) በመጠቀም የአንድ አካል ሞዴል የሚቻል ይሆናል፣ ይህም ከዚህ በታች ይብራራል።

ክፍለ አካላት

ሞዱላሪነትን ለማረጋገጥ ሁሉም ተግባራት ተለዋዋጭ ቤተ-መጻሕፍት (* .dll ለዊንዶውስ * . ለሊኑክስ) ወደ ክፍሎች ይከፈላሉ. በጠቅላላው ከመቶ ሃምሳ በላይ አካላት አሉ፡ የአንዳንዶቹ መግለጫዎች እነሆ፡-

ደጀን
የመድረክ ሜታዳታ ሞተርን ይዟል

አክሰንት
የመተግበሪያ ገንቢዎች የሂሳብ መዝገቦችን ለመገንባት የሚጠቀሙባቸው ነገሮች (የሂሳብ ሠንጠረዥ እና የሂሳብ መመዝገቢያ)

BSl
የተከተተ የቋንቋ ማስፈጸሚያ ሞተር

ኒኮ
የማህደረ ትውስታ አከፋፋይ ብጁ ትግበራ

dbeng8
የፋይል ዳታቤዝ ሞተር. በ ISAM ላይ የተመሰረተ ቀላል የፋይል አገልጋይ ዳታቤዝ ሞተር፣ እሱም ቀላል የSQL ፕሮሰሰርንም ያካትታል

wbase
የዊንዶውስ ተጠቃሚ በይነገጽን ለመተግበር መሰረታዊ ክፍሎችን እና ተግባራትን ይዟል - የመስኮት ክፍሎች ፣ የጂዲአይ መዳረሻ ፣ ወዘተ.

ወደ ብዙ አካላት መከፋፈል ከበርካታ እይታዎች ጠቃሚ ነው-

  • መለያየት የተሻለ ንድፍ ያበረታታል, በተለይ የተሻለ ኮድ ማግለል
  • ከተለያዩ ክፍሎች ስብስብ የተለያዩ የመላኪያ አማራጮችን በተለዋዋጭነት መሰብሰብ ይችላሉ-
    • ለምሳሌ፣ ቀጭን የደንበኛ ጭነት wbase ይይዛል፣ ነገር ግን የኋላ ጀርባ አይኖረውም።
    • ነገር ግን በ wbase አገልጋይ ላይ, በተቃራኒው, አይሆንም
    • ሁለቱም አማራጮች ኑክ እና ቢኤስኤልን ይይዛሉ

ለዚህ የማስጀመሪያ አማራጭ የሚያስፈልጉት ሁሉም ክፍሎች ፕሮግራሙ ሲጀምር ይጫናሉ። ይህ በተለይ የ SCOM ክፍሎችን ለመመዝገብ አስፈላጊ ነው, ይህም ከዚህ በታች ይብራራል.

ኤስ.ኤም.ኤም.

በዝቅተኛ ደረጃ ላይ ለመበስበስ, የ SCOM ስርዓት ጥቅም ላይ ይውላል, በርዕዮተ ዓለም ከ ATL ጋር ተመሳሳይ የሆነ ቤተ-መጽሐፍት. ከኤቲኤል ጋር ላልሠሩት, ዋና ዋና ችሎታዎችን እና ባህሪያትን በአጭሩ እንዘረዝራለን.
በልዩ ሁኔታ ለተነደፈ SCOM ክፍል፡-

  • ስሙን ብቻ እያወቁ (አተገባበሩን ሳይገልጹ) ከሌላ አካል ክፍል እንዲፈጥሩ የሚያስችልዎ የፋብሪካ ዘዴዎችን ያቀርባል።
  • የማጣቀሻ ቆጠራ ብልጥ ጠቋሚ መሠረተ ልማት ያቀርባል። የ SCOM ክፍል የህይወት ዘመን በእጅ ክትትል አያስፈልገውም
  • አንድ ነገር የተወሰነ በይነገጽ መተግበሩን እና አለመሆኑን ለማወቅ እና ጠቋሚን ወደ ዕቃው ወደ በይነገጽ ጠቋሚ እንዲቀይሩ ያስችልዎታል
  • ሁልጊዜ በget_አገልግሎት ዘዴ፣ ወዘተ የሚደረስ የአገልግሎት ዕቃ ይፍጠሩ።

ለምሳሌ፣ JSON ለማንበብ ክፍልን (ለምሳሌ፣ JSONStreamReader) በ json.dll ክፍል ውስጥ መግለጽ ይችላሉ።
ክፍሎች እና ምሳሌዎች ከሌሎች አካላት ሊፈጠሩ ይችላሉ፣ በ SCOM ማሽን ውስጥ መመዝገብ አለባቸው፡-

SCOM_CLASS_ENTRY(JSONStreamReader)

ይህ ማክሮ ልዩ የማይንቀሳቀስ መቅጃ ክፍልን ይገልፃል።
ከዚህ በኋላ ፣ በሌላ አካል ውስጥ የእሱን ምሳሌ መፍጠር ይችላሉ-

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

አገልግሎቶችን ለመደገፍ SCOM ተጨማሪ፣ ይልቁንም ውስብስብ መሠረተ ልማት ያቀርባል። ለእሱ ማዕከላዊ የ SCOM ሂደት ፅንሰ-ሀሳብ ነው ፣ እሱም አገልግሎቶችን ለማስኬድ እንደ መያዣ (ማለትም ፣ የአገልግሎት መፈለጊያውን ሚና ይጫወታል) እና እንዲሁም ከአካባቢያዊ ሀብቶች ጋር አስገዳጅነት አለው። የ SCOM ሂደቱ ከስርዓተ ክወናው ክር ጋር የተሳሰረ ነው። ለዚህም ምስጋና ይግባውና በመተግበሪያው ውስጥ እንደዚህ ያሉ አገልግሎቶችን ማግኘት ይችላሉ-

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

በተጨማሪም ፣ ሎጂካዊ (SCOM) ሂደቶችን ከክር ጋር በማገናኘት ከመረጃ ቦታ እይታ አንፃር በተግባር ነፃ የሆኑ በተመሳሳይ ክር ውስጥ የሚሰሩ መተግበሪያዎችን ማግኘት ይችላሉ። የእኛ ቀጭን ደንበኛ በፋይል ዳታቤዝ የሚሠራው በዚህ መንገድ ነው - በአንድ የስርዓተ ክወና ሂደት ውስጥ ሁለት የ SCOM ሂደቶች አሉ ፣ አንደኛው ከደንበኛው ጋር የተገናኘ እና ሁለተኛው ከአገልጋዩ ጋር። ይህ አቀራረብ በአካባቢያዊ የፋይል ዳታቤዝ እና በ "እውነተኛ" የደንበኛ-አገልጋይ ስሪት ውስጥ የሚሰራውን የኮድ አጻጻፍ አንድ ለማድረግ ያስችለናል. ለእንደዚህ አይነት ተመሳሳይነት ያለው ዋጋ ከመጠን በላይ ነው, ነገር ግን ልምምድ እንደሚያሳየው ዋጋ ያለው መሆኑን ያሳያል.

በ SCOM አካል ሞዴል ላይ በመመስረት ሁለቱም የቢዝነስ አመክንዮ እና የ1C፡ ኢንተርፕራይዝ የበይነገጽ ክፍል ተተግብረዋል።

የተጠቃሚ በይነገጽ

በነገራችን ላይ ስለ መገናኛዎች. መደበኛ የዊንዶውስ መቆጣጠሪያዎችን አንጠቀምም፤ የእኛ መቆጣጠሪያዎች በቀጥታ በዊንዶውስ ኤፒአይ ላይ ተፈጻሚ ይሆናሉ። ለሊኑክስ ስሪት በwxWidgets ቤተ-መጽሐፍት በኩል የሚሰራ ንብርብር ተሠርቷል።
የቁጥጥር ቤተ-መጽሐፍት በሌሎች የ1C፡ኢንተርፕራይዝ ክፍሎች ላይ የተመካ አይደለም እና በሌሎች በርካታ ትናንሽ የውስጥ መገልገያዎች ውስጥ እንጠቀማለን።

በ 1C: ኢንተርፕራይዝ ልማት ዓመታት ውስጥ የቁጥሮች ገጽታ ተለውጧል, ነገር ግን በመሠረታዊ መርሆዎች ላይ ከባድ ለውጥ የተከሰተው አንድ ጊዜ ብቻ ነው, በ 2009, ስሪት 8.2 ሲወጣ እና "የሚተዳደሩ ቅጾች" መምጣት. መልክን ከመቀየር በተጨማሪ የቅጽ አቀማመጥ መርህ በመሠረቱ ተቀይሯል - የንጥረ-ነገሮችን ፍሰት-አቀማመጥን የሚደግፍ የፒክሰል-በ-ፒክስል አቀማመጥ ውድቅ ነበር። በተጨማሪም, በአዲሱ ሞዴል, መቆጣጠሪያዎች በቀጥታ ከጎራ እቃዎች ጋር አይሰሩም, ነገር ግን በልዩ DTOs (የውሂብ ማስተላለፍ ነገሮች).
እነዚህ ለውጦች የጃቫስክሪፕት መቆጣጠሪያዎችን የC++ አመክንዮ የሚደግም 1C:Enterprise ድረ-ገጽ ደንበኛን መፍጠር አስችለዋል። በቀጭን እና በድር ደንበኞች መካከል የተግባር እኩልነትን ለመጠበቅ እንሞክራለን። ይህ የማይቻል በሚሆንበት ጊዜ ለምሳሌ በጃቫ ስክሪፕት ኤፒአይ ውስንነት ምክንያት (ለምሳሌ ከፋይሎች ጋር የመሥራት ችሎታ በጣም የተገደበ ነው) ብዙውን ጊዜ በ C ++ ውስጥ የተፃፉ የአሳሽ ቅጥያዎችን በመጠቀም አስፈላጊውን ተግባር እንተገብራለን። በአሁኑ ጊዜ ኢንተርኔት ኤክስፕሎረር እና ማይክሮሶፍት ጠርዝ (ዊንዶውስ)፣ ጎግል ክሮም (ዊንዶውስ)፣ ፋየርፎክስ (ዊንዶውስ እና ሊኑክስ) እና ሳፋሪ (ማክኦኤስ) እንደግፋለን።

በተጨማሪም, የሚተዳደሩ ቅጾች ቴክኖሎጂ በ 1C መድረክ ላይ ለሞባይል አፕሊኬሽኖች በይነገጽ ለመፍጠር ጥቅም ላይ ይውላል. በሞባይል መሳሪያዎች ላይ የመቆጣጠሪያዎች አተረጓጎም የሚተገበረው ለስርዓተ ክወናው ተወላጅ የሆኑ ቴክኖሎጂዎችን በመጠቀም ነው, ነገር ግን ለቅጽ አቀማመጥ አመክንዮ እና የበይነገጽ ምላሽ ተመሳሳይ ኮድ በ "ትልቅ" 1C: የድርጅት መድረክ ላይ ጥቅም ላይ ይውላል.

መድረክ "1C: ኢንተርፕራይዝ" - በመከለያው ስር ያለው ምንድን ነው?
1C በይነገጽ በሊኑክስ ኦኤስ

መድረክ "1C: ኢንተርፕራይዝ" - በመከለያው ስር ያለው ምንድን ነው?
በተንቀሳቃሽ መሣሪያ ላይ 1C በይነገጽ

በሌሎች መድረኮች ላይ 1C በይነገጽ መድረክ "1C: ኢንተርፕራይዝ" - በመከለያው ስር ያለው ምንድን ነው?
1C በይነገጽ በዊንዶውስ ኦኤስ

መድረክ "1C: ኢንተርፕራይዝ" - በመከለያው ስር ያለው ምንድን ነው?
በይነገጽ 1C - የድር ደንበኛ

ክፍት ምንጭ

ምንም እንኳን መደበኛ ቤተ-መጻሕፍትን ለ C++ ገንቢዎች በዊንዶውስ (MFC, መቆጣጠሪያዎች ከዊንኤፒአይ) ባንጠቀምም, ሁሉንም ክፍሎች በራሳችን አንጽፍም. ቤተ መፃህፍቱ አስቀድሞ ተጠቅሷል wxWidgets, እና እኛ ደግሞ እንጠቀማለን:

  • ከፈት ከኤችቲቲፒ እና ኤፍቲፒ ጋር ለመስራት።
  • OpenSSL ከክሪፕቶግራፊ ጋር ለመስራት እና የ TLS ግንኙነቶችን ለመመስረት
  • libxml2 እና libxslt ለኤክስኤምኤል ትንተና
  • ሊቤትፓን ከደብዳቤ ፕሮቶኮሎች (POP3፣ SMTP፣ IMAP) ጋር ለመስራት
  • ማስመሰል የኢሜል መልዕክቶችን ለመተንተን
  • sqlite የተጠቃሚ ምዝግብ ማስታወሻዎችን ለማከማቸት
  • ICU ለአለምአቀፍነት

ዝርዝሩ ይቀጥላል።
በተጨማሪም፣ በጣም የተሻሻለ ስሪት እንጠቀማለን። ጉግል ሙከራ и ጎግል ሞክ የክፍል ሙከራዎችን ሲያዳብሩ.
ቤተ መፃህፍቶቹ ከSCOM አካል አደረጃጀት ሞዴል ጋር ተኳሃኝ እንዲሆኑ መላመድ ያስፈልጋሉ።
የ1C መስፋፋት መድረኩን በውስጡ ለሚጠቀሙት ቤተ-መጻሕፍት የጥንካሬ ፈተና እንዲሆን ያደርገዋል። የተለያዩ ተጠቃሚዎች እና ሁኔታዎች በጣም አልፎ አልፎ ጥቅም ላይ በሚውሉ የኮድ ቦታዎች ላይ ስህተቶችን በፍጥነት ያሳያሉ። እኛ እራሳችንን እናርማቸዋለን እና ወደ ቤተመጽሐፍት ደራሲዎች ለመመለስ እንሞክራለን። የመስተጋብር ልምድ በጣም የተለየ ሆኖ ተገኝቷል።
ገንቢዎች ከፈት и ሊቤትፓን ለመጎተት-ጥያቄዎች በፍጥነት ምላሽ ይስጡ ፣ ግን ማጣበቂያው ፣ ለምሳሌ ፣ ውስጥ OpenSSL መልሰን መስጠት አልቻልንም።

መደምደሚያ

በአንቀጹ ውስጥ የ 1C: የድርጅት መድረክ እድገትን በርካታ ዋና ዋና ጉዳዮችን ነካን። በአንቀጹ ውስን ወሰን ውስጥ ፣ በእኛ አስተያየት ፣ አንዳንድ አስደሳች ጉዳዮችን ብቻ ነክተናል።
የተለያዩ የመድረክ አሠራሮችን አጠቃላይ መግለጫ ማግኘት ይቻላል እዚህ.
ወደፊት በሚወጡት መጣጥፎች ላይ የትኞቹ ርዕሶች ትኩረት ሊሰጡህ ይችላሉ?

የ1C የሞባይል መድረክ እንዴት ነው የሚተገበረው?
የድር ደንበኛ ውስጣዊ መዋቅር መግለጫ?
ወይም ደግሞ ለአዲስ የተለቀቁ ባህሪያትን የመምረጥ ሂደት፣ ማዳበር እና መሞከር ሊፈልጉ ይችላሉ?

በአስተያየቶቹ ውስጥ ይፃፉ!

ምንጭ: hab.com

አስተያየት ያክሉ