ការហៅក្រៅបរិបទនៃវិធីសាស្រ្តនៃវត្ថុដំណើរការ (របាយការណ៍) ក្នុងទម្រង់គ្រប់គ្រង។ ការហៅក្រៅបរិបទនៃវិធីសាស្រ្តនៃវត្ថុដំណើរការ (របាយការណ៍) ក្នុងទម្រង់គ្រប់គ្រង 1c ហៅនីតិវិធីទម្រង់ពីម៉ូឌុលវត្ថុ

នៅក្នុងកំណែថ្មីនៃ 1C: ការកំណត់រចនាសម្ព័ន្ធប្រព័ន្ធសហគ្រាស មុខងារ និងនីតិវិធីជាច្រើនបានផ្លាស់ប្តូរពីម៉ូឌុលវត្ថុ (ឯកសារ ថតឯកសារ។ល។) ទៅម៉ូឌុលគ្រប់គ្រង។ សូមក្រឡេកមើលភាពខុសគ្នារវាងម៉ូឌុលទាំងពីរនេះ។

យោងតាមទ្រឹស្ដីនៃការសរសេរកម្មវិធីតម្រង់ទិសវត្ថុ វិធីសាស្ត្រវត្ថុត្រូវបានបែងចែកជាពីរក្រុម៖ ឋិតិវន្ត និងសាមញ្ញ។ វិធីសាស្ត្រសាមញ្ញមានសិទ្ធិចូលប្រើឧទាហរណ៍ជាក់លាក់នៃថ្នាក់ប៉ុណ្ណោះ។ វិធីសាស្ត្រឋិតិវន្តមិនមានសិទ្ធិចូលប្រើទិន្នន័យវត្ថុទេ ប៉ុន្តែដំណើរការជាមួយថ្នាក់ទាំងមូល។

ប្រសិនបើយើងបកប្រែទាំងអស់នេះទៅជាប្រព័ន្ធ 1C:Enterprise នោះ ម៉ូឌុលវត្ថុមានវិធីសាស្រ្តសាមញ្ញ។ ដើម្បីប្រើពួកវា អ្នកត្រូវតែទទួលបានវត្ថុជាក់លាក់ជាមុនសិន៖ ធាតុនៃថតឯកសារ។ល។ ម៉ូឌុលអ្នកគ្រប់គ្រងមានវិធីសាស្រ្តឋិតិវន្ត។ ដើម្បីប្រើវា មិនចាំបាច់យកវត្ថុជាក់លាក់នីមួយៗដាច់ដោយឡែកពីគ្នាទេ វាអនុញ្ញាតឱ្យអ្នកធ្វើការជាមួយការប្រមូលទាំងមូលក្នុងពេលតែមួយ។

ម៉ូឌុលវត្ថុអាចមាននីតិវិធី និងមុខងារដែលអាចប្រើខាងក្រៅបាន។ ចំពោះគោលបំណងនេះ នីតិវិធី ឬមុខងារបែបនេះត្រូវបានតំណាងដោយពាក្យ នាំចេញ។

អនុគមន៍ NewFunction() នាំចេញ

ដើម្បីប្រើមុខងារបែបនេះពីម៉ូឌុលវត្ថុ ដំបូងអ្នកត្រូវតែមានតំណភ្ជាប់ទៅវត្ថុដែលត្រូវការ ទទួលបានវាដោយប្រើមុខងារ GetObject().



Per = វត្ថុ។ មុខងារថ្មី ();

ស្រដៀងគ្នានេះដែរ អ្នកអាចបង្កើតអថេរថ្មីដែលអាចប្រើបានពីវត្ថុកំណត់រចនាសម្ព័ន្ធផ្សេងៗ។

ការនាំចេញអថេរ NewVariable

Directory Element = បញ្ជីឈ្មោះ។ នាមត្រកូល។ FindByCode("000000001");
វត្ថុ = ធាតុថត។ GetObject();
វត្ថុ។ NewVariable = );

នៅក្នុងវិធីនេះ អ្នកអាចបន្ថែមនីតិវិធីស្តង់ដារ មុខងារ និងលក្ខណៈសម្បត្តិ (អថេរ) នៃវត្ថុ។ អថេរបែបនេះមានលក្ខណៈថាមវន្ត ពួកវាមិនត្រូវបានរក្សាទុកក្នុង infobase ហើយមាននៅពេលធ្វើការជាមួយវត្ថុដែលទទួលបានប៉ុណ្ណោះ។

ម៉ូឌុលអ្នកគ្រប់គ្រងមានសមត្ថភាពដូចគ្នាទាំងអស់ ភាពខុសគ្នាតែមួយគត់គឺថាដើម្បីប្រើវា អ្នកមិនចាំបាច់ទទួលបានវត្ថុជាក់លាក់មួយ ម៉ូឌុលអ្នកគ្រប់គ្រងអនុញ្ញាតឱ្យអ្នកធ្វើការជាមួយការប្រមូលវត្ថុទាំងមូលនៃប្រភេទជាក់លាក់មួយ។

នីតិវិធី NewProcedure() នាំចេញ

Directory Element = បញ្ជីឈ្មោះ។ នាមត្រកូល។ នីតិវិធីថ្មី ();

ឬសម្រាប់អថេរ៖

ការនាំចេញអថេរ NewVariable

Directory Element = បញ្ជីឈ្មោះ។ នាមត្រកូល។ អថេរថ្មី;

សូមក្រឡេកមើលភាពខុសគ្នានៃការប្រើប្រាស់ម៉ូឌុលវត្ថុ និងម៉ូឌុលគ្រប់គ្រងដោយប្រើឧទាហរណ៍នៃនីតិវិធីសម្រាប់បង្កើតទម្រង់បោះពុម្ពនៃឯកសារ។

នៅពេលប្រើម៉ូឌុលវត្ថុ កូដនឹងមើលទៅដូចនេះ៖

មុខងារបោះពុម្ពឯកសារ (តំណភ្ជាប់) នាំចេញ
// អ្នកត្រូវតែបញ្ជូនតំណទៅឯកសារជាក់លាក់មួយទៅកាន់មុខងារនេះ។
ត្រឡប់ TabDoc;
មុខងារបញ្ចប់

នៅលើទម្រង់ឯកសារ អ្នកត្រូវបង្កើតនីតិវិធីដែលនឹងបញ្ជូនតំណទៅឯកសារទៅមុខងារបោះពុម្ព។

បើកអតិថិជន
ដំណើរការបោះពុម្ព (ពាក្យបញ្ជា)
TabDoc = PrintOnServer();
ថេបឌុក។ បង្ហាញ ();
ចុងបញ្ចប់នៃនីតិវិធី
&OnServer
មុខងារ PrintOnServer()
Doc = FormAttributesValue("វត្ថុ");
ត្រឡប់ឯកសារ។ PrintDocument(Object.Link);
មុខងារបញ្ចប់

គុណវិបត្តិនៃវិធីសាស្រ្តនេះគឺថាវាបោះពុម្ពវត្ថុតែមួយប៉ុណ្ណោះ។ ប្រសិនបើអ្នកត្រូវការបោះពុម្ពឯកសារជាច្រើនក្នុងពេលតែមួយ នោះអ្នកត្រូវយកពួកវានីមួយៗ ហើយបន្ទាប់មកហៅមុខងារពីម៉ូឌុលវត្ថុ។ វាទាមទារធនធានប្រព័ន្ធសំខាន់ៗ ពីព្រោះនៅពេលដែលវត្ថុមួយត្រូវបានទាញយកមកវិញ វត្ថុទាំងមូលត្រូវបានដាក់ក្នុង RAM ។

តាមទស្សនៈនៃការអនុវត្ត វាជាការប្រសើរក្នុងការប្រើម៉ូឌុលអ្នកគ្រប់គ្រងនៅពេលណាដែលអាចធ្វើទៅបាន។ ក្នុងឧទាហរណ៍របស់យើង ដំណោះស្រាយចំពោះបញ្ហានឹងមើលទៅដូចនេះ។
មុខងារ PrintOnServer()
ត្រឡប់ឯកសារ។ ឯកសាររបស់យើង។ PrintDocument(ArrayLinks);
មុខងារបញ្ចប់

ប្រសិនបើអ្នកប្រើម៉ូឌុលអ្នកគ្រប់គ្រង ដំណើរការបោះពុម្ពអាចត្រូវបានហៅទាំងពីទម្រង់ឯកសារ និងពីទម្រង់បញ្ជី ដោយបញ្ជូនតំណទៅឯកសារជាច្រើនក្នុងអារេមួយ។ ក្នុងករណីនេះ ប្រព័ន្ធមិនចាំបាច់ទទួលបានឯកសារនីមួយៗពីអារេ ដែលរក្សាទុកធនធានប្រព័ន្ធយ៉ាងសំខាន់។

ដូច្នេះពេលណាត្រូវប្រើម៉ូឌុលវត្ថុ និងពេលណាត្រូវប្រើម៉ូឌុលគ្រប់គ្រង?

វាទាំងអស់គឺអាស្រ័យលើភារកិច្ច។ ប្រសិនបើសេចក្តីយោងទៅវត្ថុមួយគឺគ្រប់គ្រាន់ដើម្បីបំពេញវា (ឧទាហរណ៍ កិច្ចការបោះពុម្ព) នោះវាជាការប្រសើរក្នុងការប្រើម៉ូឌុលអ្នកគ្រប់គ្រង។ ប្រសិនបើភារកិច្ចគឺដើម្បីផ្លាស់ប្តូរទិន្នន័យឧទាហរណ៍ការបំពេញឯកសារនោះអ្នកត្រូវយកវាហើយប្រើម៉ូឌុលវត្ថុ។

អត្ថបទបន្តស៊េរី "ជំហានដំបូងក្នុងការអភិវឌ្ឍន៍លើ 1C" វាពិភាក្សាលម្អិតអំពីបញ្ហាខាងក្រោម៖

  • តើម៉ូឌុលកម្មវិធីគឺជាអ្វី ហើយតើវាមានផ្នែកអ្វីខ្លះ?
  • តើម៉ូឌុលកម្មវិធីសម្រាប់អ្វី? ហេតុអ្វីបានជាមានពួកគេពីរនាក់? តើមួយណាចាប់ផ្តើមនៅពេលណា? តើអ្វីទៅជា subtleties នៃការងារ?
  • តើព្រឹត្តិការណ៍អ្វីខ្លះដែលត្រូវបានផ្សារភ្ជាប់ជាមួយនឹងការចាប់ផ្តើមនៃប្រតិបត្តិការប្រព័ន្ធ របៀប និងកន្លែងដែលត្រូវដំណើរការពួកវា?
  • តើម៉ូឌុលតភ្ជាប់ខាងក្រៅសម្រាប់អ្វី? តើពេលណានិងរបៀបប្រើវា?
  • តើម៉ូឌុលសម័យត្រូវបានប្រើប្រាស់នៅពេលណា?
  • តើម៉ូឌុលទូទៅជាអ្វី? តើលក្ខណៈសម្បត្តិ និងច្បាប់ប្រតិបត្តិការរបស់វាមានអ្វីខ្លះ? ហេតុអ្វីត្រូវប្រើទ្រព្យសម្បត្តិ "ការប្រើប្រាស់ឡើងវិញនៃតម្លៃត្រឡប់មកវិញ"?
  • តើ​ម៉ូឌុល​ទម្រង់​ត្រូវ​បាន​ប្រើ​នៅ​ពេល​ណា ហើយ​តើ​ព្រឹត្តិការណ៍​អ្វី​ខ្លះ​អាច​ត្រូវ​បាន​ដំណើរការ​ក្នុង​វា?
  • តើម៉ូឌុលវត្ថុសម្រាប់អ្វី? តើវាមានផ្នែកអ្វីខ្លះ? តើខ្ញុំអាចមើលឃើញព្រឹត្តិការណ៍ម៉ូឌុលដែលមានដោយរបៀបណា?
  • តើអ្វីទៅជា subtleties នៃការធ្វើការជាមួយម៉ូឌុលគ្រប់គ្រងតម្លៃ (សម្រាប់ថេរ) និងម៉ូឌុលកំណត់កំណត់ត្រា (សម្រាប់ការចុះឈ្មោះ)?
  • តើអ្វីជាភាពខុសគ្នារវាងម៉ូឌុលវត្ថុ និងម៉ូឌុលគ្រប់គ្រង? តើនៅពេលណាដែលអ្នកគួរប្រើចុងក្រោយ?

ភាពអាចអនុវត្តបាន។

អត្ថបទពិភាក្សាអំពី 1C:Enterprise platform 8.3.4.496។ សម្ភារៈក៏ពាក់ព័ន្ធផងដែរសម្រាប់ការចេញផ្សាយវេទិកាបច្ចុប្បន្ន។

ម៉ូឌុលនៅក្នុង "1C: សហគ្រាស 8.3"

ម៉ូឌុលគឺជាវត្ថុទាំងនោះដែលមានកូដកម្មវិធី។

មានប្រភេទម៉ូឌុលមួយចំនួនធំនៅក្នុងវេទិកា ដែលនីមួយៗមានគោលបំណង និងមុខងារផ្ទាល់ខ្លួន។

បន្ទាត់នៃកូដណាមួយត្រូវតែមាននៅក្នុងម៉ូឌុលមួយចំនួន។ មានម៉ូឌុលគោលបំណងទូទៅ និងម៉ូឌុលវត្ថុ។ ម៉ូឌុលខ្លះអាចត្រូវបានចងក្រងទាំងនៅលើ Client និង Server ហើយខ្លះទៀតនៅលើ Server ប៉ុណ្ណោះ។

ម៉ូឌុលមួយអាចមានផ្នែកជាច្រើន។ ផ្នែកពិពណ៌នាអថេរពណ៌នាអថេរមូលដ្ឋាននៃម៉ូឌុលនេះ ដែលអាចប្រើជាបន្តបន្ទាប់ក្នុងនីតិវិធីណាមួយ។

ក្នុងនីតិវិធីនីមួយៗ អ្នកអាចចូលប្រើអថេរម៉ូឌុល។ លើសពីនេះទៀតនៅក្នុងនីតិវិធីខ្លួនវាអាចមានការប្រកាសអថេរមួយផ្សេងទៀតដែលមានឈ្មោះដូចគ្នា។ នេះនឹងជាអថេរមូលដ្ឋាននៃនីតិវិធីនេះ។

ទោះបីជាឈ្មោះដូចគ្នាក៏ដោយ ទាំងនេះគឺជាអថេរពីរផ្សេងគ្នា៖ មួយត្រូវបានប្រើនៅក្នុងនីតិវិធីជាក់លាក់មួយ ហើយមួយទៀតត្រូវបានប្រើនៅខាងក្រៅវា។

នៅក្នុងម៉ូឌុលមួយចំនួន អថេរអាចបង្ហាញពីទីតាំងនៃការចងក្រង (ភាពអាចរកបាន) នៅលើ Server ឬនៅលើ Client ។ ឧទាហរណ៍៖

ផ្នែកដែលពិពណ៌នាអំពីអថេរត្រូវបានបន្តដោយផ្នែកនៃនីតិវិធី និងមុខងារ ដែលវិធីសាស្ត្រមូលដ្ឋាននៃម៉ូឌុលនេះត្រូវបានចង្អុលបង្ហាញ។ ម៉ូឌុលមួយចំនួនត្រូវតែបញ្ជាក់កន្លែងដែលនីតិវិធី ឬមុខងារនឹងត្រូវបានចងក្រង។

ជាគោលការណ៍ ការណែនាំអំពីការចងក្រងអាចត្រូវបានលុបចោល។ ក្នុងករណីនេះ ការណែនាំការចងក្រងលំនាំដើមគឺ Server ។ ទោះយ៉ាងណាក៏ដោយ ដើម្បីភាពងាយស្រួលនៃការវិភាគកូដកម្មវិធី វាត្រូវបានណែនាំអោយបង្ហាញយ៉ាងច្បាស់ពីកន្លែងដែលដំណើរការដែលបានផ្តល់ឱ្យនឹងត្រូវបានចងក្រង។ លំដាប់ដែលនីតិវិធីត្រូវបានពិពណ៌នាមិនមានបញ្ហាទេ។

នៅចុងបញ្ចប់នៃម៉ូឌុល បន្ទាប់ពីបានពិពណ៌នាអំពីនីតិវិធី និងមុខងារទាំងអស់ មានផ្នែកមួយនៃកម្មវិធីមេ ដែលអាចផ្ទុកនូវប្រតិបត្តិករមួយចំនួន និងចាប់ផ្តើមអថេរមូលដ្ឋាននៃម៉ូឌុលទម្រង់។ ផ្នែកនេះត្រូវបានប្រតិបត្តិនៅពេលចូលប្រើម៉ូឌុល។

ដូច្នេះ ជាឧទាហរណ៍ នៅពេលបើកទម្រង់ធាតុមួយ ផ្នែកកម្មវិធីសំខាន់នៃម៉ូឌុលទម្រង់ត្រូវបានប្រតិបត្តិជាមុនសិន។

វាគួរតែត្រូវបានកត់សម្គាល់ថាផ្នែកប្រកាសអថេរ និងផ្នែកកម្មវិធីសំខាន់មិនមានសម្រាប់ម៉ូឌុលទាំងអស់ទេ (ឧ. ផ្នែកទាំងនេះមិនត្រឹមត្រូវនៅក្នុងម៉ូឌុលមួយចំនួន)។ ផ្នែកសម្រាប់ការពិពណ៌នាអំពីនីតិវិធី និងមុខងារអាចមាននៅក្នុងម៉ូឌុលណាមួយ។

ម៉ូឌុលកម្មវិធី

ម៉ូឌុលនេះត្រូវបានរចនាឡើងដើម្បីដោះស្រាយព្រឹត្តិការណ៍នៃការចាប់ផ្តើមកម្មវិធី និងការបញ្ចប់កម្មវិធី។ ឧទាហរណ៍ នៅពេលអ្នកបើកដំណើរការកម្មវិធី អ្នកអាចទាញយកអត្រារូបិយប័ណ្ណពីអ៊ីនធឺណិត។ នៅពេលបញ្ចប់កម្មវិធី អ្នកអាចបញ្ជាក់ជាមួយអ្នកប្រើប្រាស់ថាគាត់មានបំណងចាកចេញ។

ដូចគ្នានេះផងដែរនៅក្នុងម៉ូឌុលកម្មវិធីមានឧបករណ៍ដោះស្រាយពិសេសដែលអនុញ្ញាតឱ្យអ្នកស្ទាក់ចាប់ព្រឹត្តិការណ៍ខាងក្រៅពីឧបករណ៍។

ទាំងនេះអាចជាព្រឹត្តិការណ៍ពីកម្មវិធីអានកាតម៉ាញេទិក ឬមន្ត្រីអត្រានុកូលដ្ឋានសារពើពន្ធ។ ហើយព្រឹត្តិការណ៍ទាំងនេះក៏អាចត្រូវបានដំណើរការតាមមធ្យោបាយមួយចំនួនផងដែរ។

សូមចំណាំថាវាគឺជាការចាប់ផ្តើមអន្តរកម្មនៃប្រព័ន្ធដែលត្រូវបានត្រួតពិនិត្យនៅក្នុងម៉ូឌុលកម្មវិធី។

ម៉ូឌុលកម្មវិធីនឹងមិនដំណើរការទេ ប្រសិនបើកម្មវិធី 1C ត្រូវបានបើកដំណើរការ ឧទាហរណ៍នៅក្នុងរបៀបភ្ជាប់ com ។ ក្នុងករណីនេះបង្អួចកម្មវិធីមិនត្រូវបានបង្កើតទេ។

គួរកត់សំគាល់ថានៅក្នុង Platform 8.3 មានម៉ូឌុលកម្មវិធីពីរផ្សេងគ្នា៖ ម៉ូឌុលកម្មវិធីគ្រប់គ្រង និងម៉ូឌុលកម្មវិធីទៀងទាត់។ ព្រឹត្តិការណ៍ម៉ូឌុលកម្មវិធីដែលបានគ្រប់គ្រងត្រូវបានដំណើរការនៅពេលដែលកម្មវិធីគ្រប់គ្រងកម្មវិធីស្តើង និងក្រាស់ និងម៉ាស៊ីនភ្ញៀវគេហទំព័រត្រូវបានបើកដំណើរការ។

ម៉ូឌុល កម្មវិធីទៀងទាត់ដំណើរការនៅពេលដំណើរការ Thick Client នៅក្នុងរបៀប កម្មវិធីទៀងទាត់ដែលមានចំណុចប្រទាក់ពាក្យបញ្ជាធម្មតាក្នុងទម្រង់ ម៉ឺនុយមេ.

ប្រសិនបើកម្មវិធីកំពុងដំណើរការ គ្រប់គ្រងនិងនៅក្នុងរបៀប កម្មវិធីទៀងទាត់បន្ទាប់មក វាចាំបាច់ក្នុងការពណ៌នាអំពីដំណើរការអ្នកដោះស្រាយ ដូចជាសម្រាប់ម៉ូឌុល កម្មវិធីគ្រប់គ្រងនិងសម្រាប់ម៉ូឌុល កម្មវិធីទៀងទាត់.

ម៉ូឌុល កម្មវិធីគ្រប់គ្រងអាចត្រូវបានជ្រើសរើសពីម៉ឺនុយបរិបទនៃថ្នាំងកំណត់រចនាសម្ព័ន្ធឫស។

ម៉ូឌុលនេះក៏អាចត្រូវបានបើកពីក្ដារលាយលក្ខណសម្បត្តិនៃធាតុកំណត់រចនាសម្ព័ន្ធឫសផងដែរ។

ដើម្បីបើកម៉ូឌុល កម្មវិធីទៀងទាត់អ្នកគួរតែយោងទៅការកំណត់រចនាសម្ព័ន្ធ (ពាក្យបញ្ជា ជម្រើសនៅក្នុងម៉ឺនុយ សេវាកម្ម).

ទម្រង់នឹងបើក ជម្រើស. នៅលើចំណាំ ទូទៅរបៀបកែសម្រួលការកំណត់រចនាសម្ព័ន្ធត្រូវតែបញ្ជាក់ កម្មវិធីគ្រប់គ្រងនិង កម្មវិធីទៀងទាត់.

ក្នុងករណីនេះម៉ូឌុល កម្មវិធីទៀងទាត់វាក៏អាចបើកពីលក្ខណសម្បត្តិរបស់ថ្នាំងឫសផងដែរ។

បញ្ជីនៃព្រឹត្តិការណ៍ដែលអាចត្រូវបានដំណើរការសម្រាប់ គ្រប់គ្រងនិង កម្មវិធីទៀងទាត់គឺដូចគ្នា។

ម៉ូឌុលនេះអាចមានផ្នែកប្រកាសអថេរ ផ្នែកពិពណ៌នានៃនីតិវិធី និងមុខងារបំពាន និងផ្នែកកម្មវិធីសំខាន់។ ប៉ុន្តែបន្ថែមពីលើនីតិវិធី និងមុខងារដែលបំពាន អ្នកដោះស្រាយព្រឹត្តិការណ៍ពិសេសអាចមានទីតាំងនៅក្នុងម៉ូឌុល។

បញ្ជីនៃអ្នកដោះស្រាយដែលមានអាចត្រូវបានមើលដោយហៅបញ្ជីនៃនីតិវិធី និងមុខងារនៃម៉ូឌុលបច្ចុប្បន្ន នៅពេលដែលម៉ូឌុលបើក។

បង្អួចនីតិវិធី និងមុខងារដែលបើកបង្ហាញដំណើរការ និងមុខងារទាំងអស់នៃម៉ូឌុលនេះ ក៏ដូចជាព្រឹត្តិការណ៍ដែលអ្នកដោះស្រាយមិនទាន់ត្រូវបានបង្កើតនៅឡើយ។

មានព្រឹត្តិការណ៍ពីរដែលទាក់ទងនឹងការចាប់ផ្តើមនៃប្រព័ន្ធ ("មុន" និង "នៅ")។ ព្រឹត្តិការណ៍ពីរដែលទាក់ទងនឹងការបិទប្រព័ន្ធ ("មុន" និង "នៅ")។ និងដំណើរការនៃព្រឹត្តិការណ៍ខាងក្រៅផងដែរ (ឧទាហរណ៍ព្រឹត្តិការណ៍នៃឧបករណ៍ពាណិជ្ជកម្ម) ។

នៅពេលអ្នកដោះស្រាយព្រឹត្តិការណ៍ "មុន" ត្រូវបានប្រតិបត្តិ សកម្មភាពនេះត្រូវបានគេចាត់ទុកថាមិនទាន់បានប្រព្រឹត្តទៅនៅឡើយ។ នៅពេលដែលកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ "នៅ" ត្រូវបានប្រតិបត្តិ សកម្មភាពត្រូវបានបញ្ចប់រួចហើយ។

ព្រឹត្តិការណ៍ មុនពេលចាប់ផ្តើមប្រព័ន្ធកើតឡើងនៅពេល Enterprise 8.3 ត្រូវបានដាក់ឱ្យដំណើរការ ប៉ុន្តែកម្មវិធីខ្លួនឯងមិនទាន់បានបង្ហាញខ្លួននៅលើអេក្រង់នៅឡើយទេ។ ព្រឹត្តិការណ៍នេះមានប៉ារ៉ាម៉ែត្រដូចខាងក្រោមៈ ការបដិសេធ.

ប្រសិនបើប៉ារ៉ាម៉ែត្រនេះយកតម្លៃ ពិតបន្ទាប់មកកម្មវិធីនឹងមិនចាប់ផ្តើមទេ។ ព្រឹត្តិការណ៍ នៅពេលចាប់ផ្តើមប្រព័ន្ធសន្មតថាសកម្មភាពត្រូវបានបញ្ចប់ បង្អួចត្រូវបានបង្កើតរួចហើយ ហើយក្នុងករណីនេះ យើងអាចឧទាហរណ៍បង្ហាញទម្រង់ពិសេសមួយចំនួន។ វាមិនអាចបដិសេធការបាញ់បង្ហោះបានទេ។

ដូចគ្នានេះដែរមុនពេលបិទប្រព័ន្ធកម្មវិធីនៅតែបើកហើយអ្នកអាចបដិសេធមិនបិទវា។ នៅពេលដែលប្រព័ន្ធបិទ បង្អួចកម្មវិធីបានបិទរួចហើយ។ វាអាចធ្វើទៅបានដើម្បីអនុវត្តសកម្មភាពបន្ថែម ឧទាហរណ៍ ការលុបឯកសារមួយចំនួន ឬផ្ញើអ៊ីមែល។

នៅក្នុងម៉ូឌុល កម្មវិធីគ្រប់គ្រងសេចក្តីណែនាំសម្រាប់ដំណើរការចងក្រង និងមុខងារមិនត្រូវបានបញ្ជាក់ទេ ព្រោះម៉ូឌុលត្រូវបានចងក្រងទាំងស្រុងនៅខាងអតិថិជន។ នេះមានន័យថានៅក្នុងនីតិវិធី និងមុខងារនៃម៉ូឌុល យើងនឹងមិនអាចចូលដោយផ្ទាល់បានទេ ឧទាហរណ៍ សៀវភៅយោង។

ប្រសិនបើពីម៉ូឌុល កម្មវិធីគ្រប់គ្រងត្រូវការធ្វើការហៅទៅកាន់ Server បន្ទាប់មកសម្រាប់ការនេះអ្នកនឹងត្រូវបង្កើតពិសេស ជាមួយនឹងទង់មួយ។ .

នៅក្នុងម៉ូឌុល កម្មវិធីទៀងទាត់មិនមានការរឹតបន្តឹងបែបនេះទេ ដោយសារម៉ូឌុលនេះនឹងត្រូវបានចងក្រងនៅពេលផ្ទុកម៉ាស៊ីនភ្ញៀវស្តើង។ ទិន្នន័យស្ទើរតែគ្រប់ប្រភេទមាននៅក្នុង Thick Client។

នីតិវិធី មុខងារ និងអថេរនៃម៉ូឌុលកម្មវិធីអាចត្រូវបានពិពណ៌នាថាជាការនាំចេញ។

ដោយសារម៉ូឌុលត្រូវបានចងក្រងទាំងស្រុងលើម៉ាស៊ីនភ្ញៀវ នេះមានន័យថានៅក្នុងនីតិវិធីរបស់អតិថិជន យើងអាចចូលប្រើវិធីសាស្ត្រនេះ និងលក្ខណៈសម្បត្តិនេះ។

ឧទាហរណ៍ អ្នកអាចហៅនីតិវិធី ឬមុខងារនៃម៉ូឌុលកម្មវិធីពីម៉ូឌុលទម្រង់នៃវត្ថុមួយ។ ទោះយ៉ាងណាក៏ដោយ វាត្រូវបានណែនាំឱ្យប្រើម៉ូឌុលទូទៅ ដើម្បីពិពណ៌នាអំពីក្បួនដោះស្រាយទូទៅ។ គោលបំណងសំខាន់នៃម៉ូឌុលកម្មវិធីគឺដើម្បីដំណើរការចំណុចចាប់ផ្តើម និងចំណុចបញ្ចប់។

ដោយភាពស្រដៀងគ្នាជាមួយម៉ូឌុលកម្មវិធី ម៉ូឌុលនេះត្រូវបានរចនាឡើងដើម្បីដំណើរការព្រឹត្តិការណ៍បើកកម្មវិធី និងព្រឹត្តិការណ៍បិទ។

មិនដូចម៉ូឌុលកម្មវិធីដែលត្រូវបានផ្តួចផ្តើមនៅពេលនៃការចាប់ផ្តើមអន្តរកម្មនៃកម្មវិធីទេ ម៉ូឌុលការតភ្ជាប់ខាងក្រៅដំណើរការក្នុងរបៀបតភ្ជាប់ COM ពោលគឺឧ។ នៅពេលដែលវត្ថុ 1C:Enterprise 8 ត្រូវបានបង្កើត និងភ្ជាប់ទៅមូលដ្ឋានទិន្នន័យជាក់លាក់។

ម៉ូឌុលនេះមានព្រឹត្តិការណ៍៖ នៅពេលចាប់ផ្តើមប្រព័ន្ធនិង នៅពេលបិទប្រព័ន្ធ.

ម៉ូឌុលការតភ្ជាប់ខាងក្រៅអាចត្រូវបានបើកដោយប្រើម៉ឺនុយបរិបទនៅកម្រិតវត្ថុកំណត់រចនាសម្ព័ន្ធឫស ឬក្ដារលាយលក្ខណសម្បត្តិសម្រាប់ថ្នាំងឫស។

ដំណើរការនៃការតភ្ជាប់ខាងក្រៅខ្លួនវាគឺជាដំណើរការនៃការងារតាមកម្មវិធីជាមួយមូលដ្ឋានព័ត៌មាន ហើយមិនមានអន្តរកម្មទេ។ ដូច្នេះហើយ នៅពេលនេះ អ្នកមិនអាចប្រើទម្រង់ប្រអប់ ឬបង្ហាញសារព្រមានបានទេ ដោយសារមិនមានចំណុចប្រទាក់អ្នកប្រើ។

នៅក្នុងម៉ូឌុលការតភ្ជាប់ខាងក្រៅ វាអាចពិពណ៌នាអំពីអថេរនាំចេញ និងវិធីសាស្ត្រនាំចេញ ដែលនឹងមាននៅចំហៀងដែលការហៅខាងក្រៅទៅកាន់ 1C:Enterprise 8.3 កើតឡើង។

ដោយសារមិនមានចំណុចប្រទាក់អ្នកប្រើនៅក្នុងផ្នែកខាងក្រៅទេ ម៉ូឌុលចូលរួមខាងក្រៅត្រូវបានចងក្រងទាំងស្រុងនៅលើម៉ាស៊ីនមេ។

ម៉ូឌុលសម័យ

ម៉ូឌុលនេះត្រូវការជាចាំបាច់ដើម្បីចាប់ផ្តើមប៉ារ៉ាម៉ែត្រសម័យ។ ប៉ារ៉ាម៉ែត្រសម័យគឺជាអថេរសកលរហ័សដែលតម្លៃរបស់វាអាចរកបានគ្រប់ទីកន្លែងក្នុងការកំណត់។

អ្នកអាចបើកម៉ូឌុលវគ្គតាមរយៈម៉ឺនុយបរិបទ ឬតាមរយៈក្ដារលាយលក្ខណសម្បត្តិនៃថ្នាំងឫស។

Session Module ផ្តល់នូវព្រឹត្តិការណ៍មួយ។ ប៉ារ៉ាម៉ែត្រ SessionParameters.

នៅពេលដែលកម្មវិធីចាប់ផ្តើម នីតិវិធីនេះត្រូវបានហៅជាដំបូង។ ប៉ារ៉ាម៉ែត្រសម័យគឺត្រូវការសម្រាប់ប្រតិបត្តិការកម្មវិធីណាមួយ៖ ទាំងនៅពេលបើកដំណើរការអន្តរកម្ម និងនៅពេលបើកដំណើរការក្នុងរបៀបតភ្ជាប់ខាងក្រៅ។

ម៉ូឌុលវគ្គពិពណ៌នាអំពីសកម្មភាពផ្សេងៗ ដើម្បីចាប់ផ្តើមប៉ារ៉ាម៉ែត្រវគ្គ អាស្រ័យលើលក្ខខណ្ឌផ្សេងៗ។

ម៉ូឌុលនេះជាក្បួនពិពណ៌នាអំពីនីតិវិធីជាច្រើនដែលត្រូវបានហៅចេញពីនីតិវិធី ប៉ារ៉ាម៉ែត្រ SessionParameters. ដូច្នេះ នីតិវិធី​ទាំង​អស់​នេះ​ត្រូវ​បាន​បំបែក​ជា​ម៉ូឌុល​ដាច់​ដោយ​ឡែក។

ម៉ូឌុលសម័យតែងតែដំណើរការក្នុងរបៀបដែលមានសិទ្ធិ។ នេះមានន័យថាគ្មានការត្រួតពិនិត្យការអនុញ្ញាតនឹងត្រូវបានអនុវត្តនៅពេលចូលប្រើមូលដ្ឋានទិន្នន័យ។ ម៉ូឌុលសម័យត្រូវបានចងក្រងនៅលើ Server, i.e. វាអាចទៅរួចក្នុងការចូលប្រើវិធីសាស្រ្តម៉ាស៊ីនមេណាមួយ (រួមទាំងការអានតម្លៃពីមូលដ្ឋានទិន្នន័យ) ។

នៅក្នុង Session Module វាអាចកំណត់បានតែនីតិវិធី និងមុខងារប៉ុណ្ណោះ ពោលគឺឧ។ មិនមានផ្នែកពិពណ៌នាអថេរ និងមិនមានផ្នែកកម្មវិធីសំខាន់។ វិធីសាស្ត្រនាំចេញមិនអាចកំណត់នៅក្នុងម៉ូឌុលសម័យបានទេ។

ប្រសិនបើនៅពេលចាប់ផ្តើមប្រព័ន្ធ វាចាំបាច់ក្នុងការអនុវត្តសកម្មភាពមួយចំនួននៅលើ Server ឧទាហរណ៍ បង្កើតធាតុនៃថត បន្ទាប់មកជាជម្រើសមួយ វាអាចប្រើ Session Module ពីព្រោះ វាត្រូវបានចងក្រងនៅលើ Server ហើយតែងតែត្រូវបានប្រតិបត្តិដោយភាពជឿជាក់នៅពេលចាប់ផ្តើមប្រព័ន្ធ។ ទោះយ៉ាងណាក៏ដោយ ចំណុចខាងក្រោមត្រូវយកមកពិចារណា៖

  • នីតិវិធី ប៉ារ៉ាម៉ែត្រ SessionParametersត្រូវបានប្រតិបត្តិមិនត្រឹមតែនៅពេលចាប់ផ្ដើមប្រព័ន្ធប៉ុណ្ណោះទេ ប៉ុន្តែក៏នៅពេលចូលប្រើប៉ារ៉ាម៉ែត្រនៃសម័យដែលមិនបានចាប់ផ្ដើមផងដែរ។ ទាំងនោះ។ ឧបករណ៍ដោះស្រាយ SetSessionParameters អាចត្រូវបានហៅម្តងហើយម្តងទៀតក្នុងអំឡុងពេលប្រតិបត្តិការកម្មវិធី។
  • ប្រសិនបើចំនួនធាតុនៅក្នុងអារេប៉ារ៉ាម៉ែត្រវគ្គគឺសូន្យ (អារេនៃប៉ារ៉ាម៉ែត្រដែលត្រូវការមានប្រភេទទិន្នន័យដែលមិនបានកំណត់) នោះគឺជាពេលដែលកម្មវិធីត្រូវបានចាប់ផ្តើម។
  • ដោយសារម៉ូឌុលសម័យដំណើរការក្នុងរបៀបដែលមានសិទ្ធិ ហើយនឹងមិនមានការត្រួតពិនិត្យសិទ្ធិចូលប្រើទេ អ្នកគួរតែធ្វើការដោយប្រុងប្រយ័ត្នជាមួយវត្ថុមូលដ្ឋានទិន្នន័យ ព្រោះអ្នកប្រើប្រាស់អាចចូលប្រើទិន្នន័យដែលមិនគួរផ្តល់ឱ្យគាត់។
  • នៅពេលដែលប្រព័ន្ធចាប់ផ្តើម វាមិនទាន់ដឹងច្បាស់ថាតើកម្មវិធីនឹងត្រូវបានដាក់ឱ្យដំណើរការឬយ៉ាងណានោះទេ។ ក្នុងករណីនេះ សកម្មភាពដែលមិនចាំបាច់អាចត្រូវបានអនុវត្តនៅក្នុងកម្មវិធីដោះស្រាយព្រឹត្តិការណ៍ SetSessionParameters។

ម៉ូឌុលទាំងនេះតំណាងឱ្យការពិពណ៌នាអំពីក្បួនដោះស្រាយទូទៅមួយចំនួន i.e. នីតិវិធី និងមុខងារដែលអាចហៅបានពីកន្លែងផ្សេងៗ។

វិធីសាស្ត្រដែលទាក់ទងតាមឡូជីខលអាចត្រូវបានដាក់ជាក្រុមទៅជាម៉ូឌុលទូទៅផ្សេងៗគ្នា។ ម៉ូឌុលទាំងនេះត្រូវបានបង្កើតនៅខាងក្នុងសាខាទូទៅ។

អ្នកអាចបន្ថែមម៉ូឌុលដែលបានចែករំលែកណាមួយ។ ដើម្បីធ្វើឱ្យវិធីសាស្ត្រម៉ូឌុលទូទៅមាននៅកន្លែងផ្សេងទៀតក្នុងការកំណត់រចនាសម្ព័ន្ធ ពួកគេត្រូវតែកំណត់ដោយប្រើពាក្យគន្លឹះនាំចេញ។ នីតិវិធីអតិថិជននៃម៉ូឌុលទូទៅនឹងមាននៅលើម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេ - នៅលើម៉ាស៊ីនមេ។

នៅក្នុងម៉ូឌុលទូទៅ មានតែផ្នែកដែលពិពណ៌នាអំពីនីតិវិធី និងមុខងារប៉ុណ្ណោះដែលអាចប្រើបាន។ ទាំងនោះ។ នៅក្នុង General Module អ្នកមិនអាចពណ៌នាអថេរបានទេ ហើយអ្នកមិនអាចពិពណ៌នាផ្នែកនៃកម្មវិធីមេបានទេ។

ប្រសិនបើអថេរសកលគឺចាំបាច់ អ្នកអាចប្រើប៉ារ៉ាម៉ែត្រសម័យ ឬអថេរនាំចេញម៉ូឌុលកម្មវិធី។

សម្រាប់ម៉ូឌុលទូទៅ អ្នកអាចកំណត់ប៉ារ៉ាម៉ែត្រមួយចំនួនដែលនឹងប៉ះពាល់ដល់ឥរិយាបថរបស់ម៉ូឌុលនេះ។ ប្រសិនបើលក្ខណសម្បត្តិសកលត្រូវបានកំណត់សម្រាប់ម៉ូឌុលទូទៅ នោះវិធីសាស្ត្រនាំចេញដែលបានប្រកាសនៅក្នុងម៉ូឌុលនេះនឹងអាចចូលប្រើបានពីខាងក្រៅដោយផ្ទាល់ ដោយគ្មានការណែនាំបន្ថែមណាមួយឡើយ។

ទាំងនោះ។ បានផ្តល់ឱ្យ ម៉ូឌុលទូទៅនឹងចូលរួមក្នុងការបង្កើតបរិបទនៃការកំណត់រចនាសម្ព័ន្ធសកល។

ទ្រព្យសម្បត្តិ សកលសម្រាប់ម៉ូឌុលទូទៅវាអាចមានប្រយោជន៍។ ទោះយ៉ាងណាក៏ដោយ អ្នកមិនគួរប្រើវានៅគ្រប់ទីកន្លែងសម្រាប់ម៉ូឌុលទូទៅទាំងអស់។

ទាំងនោះ ដែលត្រូវបានសម្គាល់ដោយសញ្ញា សកលនឹងត្រូវបានចងក្រងនៅពេលចាប់ផ្តើមប្រព័ន្ធ។ ម៉ូឌុលបែបនេះកាន់តែច្រើន កម្មវិធីនឹងចាប់ផ្តើមយឺត។

ប្រសិនបើទង់ សកលសម្រាប់ ម៉ូឌុលទូទៅមិនត្រូវបានបញ្ជាក់ទេ បន្ទាប់មកការចងក្រងម៉ូឌុលនេះនឹងត្រូវបានអនុវត្តនៅពេលនៃការហៅលើកដំបូងទៅកាន់វា (ឧ. បន្ទាប់ពីប្រព័ន្ធចាប់ផ្តើម)។

លើសពីនេះទៀត ការប្រើប្រាស់ម៉ូឌុលទូទៅជាសកលប៉ះពាល់ដល់ការយល់ដឹងអំពីកូដ។ វិធីសាស្រ្តនៃម៉ូឌុលទូទៅដែលមិនមែនជាសកលត្រូវបានហៅតាមឈ្មោះ ម៉ូឌុលទូទៅនិងឈ្មោះវិធីសាស្រ្តឧទាហរណ៍៖
ម៉ូឌុលគណនាថ្លៃដើម.DistributeIndirectCosts();

ក្នុងករណីនេះ ឈ្មោះនៃម៉ូឌុលទូទៅត្រូវតែឆ្លុះបញ្ចាំងពីខ្លឹមសារនៃនីតិវិធីដែលបានពិពណ៌នានៅក្នុងពួកវា។ ការបញ្ជាក់ឈ្មោះនៃម៉ូឌុលទូទៅនៅពេលហៅនីតិវិធីជួយឱ្យយល់កាន់តែច្បាស់អំពីកូដ។

សម្រាប់ ម៉ូឌុលទូទៅក្ដារលាយលក្ខណសម្បត្តិអ្នកអាចកំណត់ទ្រព្យសម្បត្តិ ឯកសិទ្ធិ.

ម៉ូឌុលដែលមានសិទ្ធិមិនគ្រប់គ្រងសិទ្ធិចូលប្រើទេ។ នេះគឺចាំបាច់ប្រសិនបើ ម៉ូឌុលទូទៅវាត្រូវបានទាមទារដើម្បីធ្វើដំណើរការទិន្នន័យដ៏ធំ ការទទួលបានទិន្នន័យពីមូលដ្ឋានទិន្នន័យ។

ការគ្រប់គ្រងសិទ្ធិចូលប្រើបង្កើនពេលវេលាដែលវាត្រូវការដើម្បីចូលប្រើមូលដ្ឋានទិន្នន័យ ហើយក្បួនដោះស្រាយដ៏ធំជាញឹកញាប់ត្រូវដំណើរការឱ្យបានលឿនតាមដែលអាចធ្វើទៅបាន។

ឧទាហរណ៍ ការបើកប្រាក់បៀវត្សរ៍គឺជាប្រតិបត្តិការដែលពឹងផ្អែកលើធនធាន។ វាត្រូវធ្វើឱ្យបានលឿនតាមដែលអាចធ្វើទៅបាន។ ដើម្បីធ្វើដូច្នេះ ក្បួនដោះស្រាយដែលគណនាប្រាក់ឈ្នួលត្រូវបានដាក់ជាឯកសិទ្ធិ .

ទន្ទឹមនឹងនេះ នីតិវិធីទាំងអស់ដែលធានាការបំពេញឯកសារបើកប្រាក់បៀវត្សរ៍គឺនៅខាងក្រៅទាំងនេះ ម៉ូឌុលទូទៅ. វាស្ថិតនៅក្នុងនីតិវិធីទាំងនេះដែលការគ្រប់គ្រងសិទ្ធិចូលដំណើរការត្រូវបានអនុវត្ត។

តាមវិធីនេះ ការកែលម្អការអនុវត្តសំខាន់ៗអាចសម្រេចបាន។ នេះជាការពិតជាពិសេសនៅពេលប្រើយន្តការសម្រាប់ការគ្រប់គ្រងការចូលដំណើរការពីជួរដេកមួយទៅជួរដេកទៅកាន់កំណត់ត្រាតារាង។

ប្រសិនបើម៉ូឌុលទូទៅមានសិទ្ធិ នោះនីតិវិធីនៃម៉ូឌុលនេះអាចត្រូវបានចងក្រងតែនៅលើ Server ប៉ុណ្ណោះ។

មានស្ថានភាពនៅពេលដែលវត្ថុមួយចំនួនមិនគួរចូលប្រើសម្រាប់អ្នកប្រើប្រាស់ ឧទាហរណ៍ ថតជាក់លាក់មួយ។ ប៉ុន្តែនៅពេលអនុវត្តឯកសារណាមួយ ឯកសារយោងនេះគឺចាំបាច់។

ទាំងនោះ។ មានតម្រូវការក្នុងការពង្រីកសិទ្ធិអ្នកប្រើប្រាស់ជាបណ្ដោះអាសន្ន ហើយបន្ទាប់មកពួកគេត្រឡប់ទៅសភាពដើមវិញ។ ប្រសិទ្ធភាពនេះអាចទទួលបានដោយប្រើឯកសិទ្ធិ ម៉ូឌុលទូទៅ.

ដើម្បីធ្វើរឿងនេះដោយឯកសិទ្ធិ ម៉ូឌុលទូទៅអ្នកគួរតែបង្កើតនីតិវិធីដែលចូលប្រើទិន្នន័យដែលត្រូវការ។

នីតិវិធីនេះនឹងត្រូវបានហៅចេញពីឯកសារដែលត្រូវគ្នា។ ទាំងនោះ។ អ្នក​ប្រើ​ត្រូវ​បាន​ផ្តល់​សិទ្ធិ​បន្ថែម​នៅ​ពេល​ដែល​នីតិវិធី​នេះ​ត្រូវ​បាន​ហៅ។

សម្រាប់ ម៉ូឌុលទូទៅវាអាចធ្វើទៅបានដើម្បីបញ្ជាក់ទីតាំងចងក្រង។ ទង់ត្រូវបានប្រើដើម្បីកំណត់ថាតើម៉ូឌុលទូទៅនឹងមាននៅលើម៉ាស៊ីនភ្ញៀវ (កម្មវិធីដែលបានគ្រប់គ្រង) នៅលើម៉ាស៊ីនមេ ឬនៅក្នុងរបៀបការតភ្ជាប់ខាងក្រៅ។

លើសពីនេះទៀត ប្រសិនបើអ្នកប្តូររបៀបកែសម្រួលការកំណត់ទៅជាកម្មវិធីគ្រប់គ្រង និងកម្មវិធីធម្មតា នោះបរិបទនៃការចងក្រងមួយផ្សេងទៀតនឹងអាចធ្វើទៅបាន - ម៉ាស៊ីនភ្ញៀវ (កម្មវិធីធម្មតា) ។

ដូច្នេះមានជម្រើសបួនសម្រាប់ដំណើរការនៃកម្មវិធី។ អាស្រ័យលើកម្មវិធីដែលកំពុងដំណើរការ អាស្រ័យលើការងារនៅលើម៉ាស៊ីនភ្ញៀវ ឬនៅលើម៉ាស៊ីនមេ ម៉ូឌុលទូទៅមួយចំនួននឹងមាន ឬមិនអាចប្រើបាន។

បន្ថែមពីលើសមត្ថភាពក្នុងការបញ្ជាក់ទង់ចងក្រង វាអាចធ្វើទៅបានដើម្បីបញ្ជាក់ការណែនាំអំពីការចងក្រងសម្រាប់នីតិវិធី និងមុខងារដែលមាននៅក្នុងម៉ូឌុលទូទៅ។

ប្រសិនបើការណែនាំអំពីការចងក្រងត្រូវបានបញ្ជាក់សម្រាប់វិធីសាស្ត្រមួយ នោះទោះបីជាម៉ូឌុលទូទៅមាននៅក្នុងបរិបទដែលបានបញ្ជាក់ទាំងអស់ក៏ដោយ ភាពអាចរកបាននៃវិធីសាស្ត្រជាក់លាក់នឹងត្រូវបានកំណត់ដោយការណែនាំចងក្រង។

ក្នុង​ករណី​នេះ ដំណើរការ​មិន​អាច​ចូល​ដំណើរការ​ក្នុង​បរិបទ​ដែល​មិន​អាច​ចូល​ដំណើរការ​បាន​ចំពោះ​ម៉ូឌុល​ទាំងមូល។

ប្រសិនបើអ្នកមិនបញ្ជាក់ការណែនាំអំពីការចងក្រងសម្រាប់នីតិវិធី (មុខងារ) វានឹងត្រូវបានចងក្រងនៅក្នុងគ្រប់បរិបទដែលបានកំណត់សម្រាប់ម៉ូឌុល។

ទាំងនោះ។ សំខាន់ ច្បាប់ចម្លងជាច្រើននៃនីតិវិធីនឹងត្រូវបានធ្វើឡើង។ ជម្រើសនៃវត្ថុដែលបានចងក្រងជាក់លាក់អាស្រ័យលើកន្លែងដែលនីតិវិធីត្រូវបានហៅ (ដោយច្បាប់ហៅជិតបំផុត) ។ វាគួរតែត្រូវបានយកទៅក្នុងគណនីដែលកូដនៃនីតិវិធីបែបនេះត្រូវតែត្រូវបានសរសេរដោយគិតគូរពីភាពអាចរកបានរបស់វានៅក្នុងគ្រប់បរិបទដែលបានកំណត់សម្រាប់ម៉ូឌុល។

ម៉ូឌុលទូទៅដែលអាចចូលដំណើរការបានក្នុងពេលដំណាលគ្នាក្នុងបរិបទផ្សេងគ្នាជាច្រើនត្រូវបានរចនាឡើងជាចម្បងដើម្បីបង្កើតនីតិវិធីដែលអាចចូលប្រើបានក្នុងបរិបទជាច្រើន។

នៅពេលបង្កើត Module ទូទៅ វាត្រូវបានចាត់ទុកថាជាការអនុវត្តល្អដែលមិនបញ្ជាក់ការណែនាំអំពីការចងក្រង។ ទាំងនោះ។ ភាពអាចរកបាននៃនីតិវិធី និងមុខងារគួរតែត្រូវបានកំណត់ដោយលក្ខណៈសម្បត្តិរបស់ម៉ូឌុលខ្លួនឯង។

ជាមួយនឹងវិធីសាស្រ្តនេះ នីតិវិធីអតិថិជននឹងមានទីតាំងនៅក្នុងម៉ូឌុលទូទៅដាច់ដោយឡែក ហើយនីតិវិធីម៉ាស៊ីនមេនឹងមានទីតាំងនៅក្នុងម៉ូឌុលទូទៅដាច់ដោយឡែក។

ម៉ូឌុលដែលមានកំណត់ទង់ចងក្រងជាច្រើនត្រូវបានគេប្រើកម្រណាស់ក្នុងការអនុវត្ត។ ទាំងនេះគឺជាសកម្មភាពទូទៅមួយចំនួនដែលមាននៅលើម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេ។ ជាធម្មតាទាំងនេះគឺជាការគណនាសាមញ្ញមួយចំនួន។

សំខាន់! វាអាចទៅរួចសម្រាប់ Client ដើម្បីចូលប្រើវិធីសាស្ត្រ export server នៃ Common Module ប៉ុន្តែប្រសិនបើ Module ទូទៅនេះត្រូវបានចងក្រងតែនៅលើ Server ប៉ុណ្ណោះ។ ក្នុងករណីនេះ ទង់ពិសេសមួយត្រូវបានផ្តល់ជូនដើម្បីផ្តល់ការចូលប្រើពីអតិថិជន .

សម្រាប់ម៉ូឌុលទូទៅដែលមិនមែនជាសកល វាអាចធ្វើទៅបានក្នុងឃ្លាំងសម្ងាត់តម្លៃដែលត្រឡប់ដោយមុខងារ។ ទាំងនោះ។ បន្ទាប់ពីការហៅលើកដំបូងនៃមុខងារមួយ ប្រព័ន្ធអាចចងចាំលទ្ធផលនៃការប្រតិបត្តិរបស់វា។ ប្រសិនបើមុខងារនេះត្រូវបានហៅម្តងទៀតជាមួយនឹងប៉ារ៉ាម៉ែត្រដូចគ្នានោះ ប្រព័ន្ធនឹងត្រឡប់តម្លៃពីឃ្លាំងសម្ងាត់។

គោលបំណងនៃយន្តការនេះគឺដើម្បីបង្កើនល្បឿនការហៅម្តងទៀត។ ដើម្បីកំណត់រចនាសម្ព័ន្ធឥរិយាបថនេះអ្នកត្រូវធ្វើ ក្ដារលាយលក្ខណសម្បត្តិ module កំណត់តម្លៃសមរម្យសម្រាប់ Reuse of return values ​​property។

តាមលំនាំដើម លក្ខណសម្បត្តិនេះត្រូវបានកំណត់ទៅកុំប្រើ។ តម្លៃដែលអាចមានផ្សេងទៀត៖ ឃ្លាំងសម្ងាត់ ក្នុងអំឡុងពេលហៅ, ឬ សម្រាប់រយៈពេលនៃសម័យប្រជុំ.

លក្ខណសម្បត្តិនេះសមហេតុផលក្នុងការប្រើសម្រាប់តែមុខងារទាំងនោះដែលលទ្ធផលរបស់វាអាស្រ័យតែលើប៉ារ៉ាម៉ែត្របញ្ចូលប៉ុណ្ណោះ។ យន្តការនេះអាចប្រើបានសម្រាប់តែម៉ូឌុលទូទៅដែលមិនមែនជាសកលប៉ុណ្ណោះ។

ប្រសិនបើតម្លៃនៃប៉ារ៉ាម៉ែត្រដែលត្រូវគ្នា សម្រាប់រយៈពេលនៃការហៅទូរស័ព្ទត្រូវបានជ្រើសរើស ឃ្លាំងសម្ងាត់នឹងដំណើរការដរាបណានីតិវិធីដែលវិធីសាស្ត្រម៉ូឌុលទូទៅត្រូវបានហៅកំពុងដំណើរការ។ ប្រសិនបើរយៈពេលនៃតម្លៃសម័យត្រូវបានជ្រើសរើស នោះវាត្រូវបានសន្មត់តាមលក្ខខណ្ឌថាឃ្លាំងសម្ងាត់នឹងដំណើរការខណៈពេលដែលអ្នកប្រើប្រាស់កំពុងធ្វើការ។

ទោះយ៉ាងណាក៏ដោយ មានការកំណត់ពេលវេលាជាក់លាក់។ ឃ្លាំងសម្ងាត់ត្រូវបានជម្រះដោយស្វ័យប្រវត្តិ 20 នាទីបន្ទាប់ពីតម្លៃចូលទៅក្នុងឃ្លាំងសម្ងាត់។

ម៉ូឌុលទម្រង់

ម៉ូឌុលនេះត្រូវបានរចនាឡើងដើម្បីដំណើរការសកម្មភាពអ្នកប្រើប្រាស់។ ជាឧទាហរណ៍ សូមពណ៌នាអំពីក្បួនដោះស្រាយសម្រាប់របៀបដែលកម្មវិធីមួយមានប្រតិកម្មនៅពេលចុចប៊ូតុង។ ឬឧទាហរណ៍ នៅពេលបញ្ចូលតម្លៃក្នុងវាល សូមពិនិត្យមើលភាពត្រឹមត្រូវភ្លាមៗ។

បន្ថែមពីលើព្រឹត្តិការណ៍ដែលភ្ជាប់ជាមួយការគ្រប់គ្រងទម្រង់ (ប៊ូតុង វាលបញ្ចូល) មានព្រឹត្តិការណ៍ដែលទាក់ទងដោយផ្ទាល់ជាមួយទម្រង់ខ្លួនឯង។

ឧទាហរណ៍ អ្នកអាចដោះស្រាយព្រឹត្តិការណ៍បើកទម្រង់បែបបទ និងអនុវត្តការចាប់ផ្តើមដំបូងមួយចំនួន។ អ្នកក៏អាចដោះស្រាយព្រឹត្តិការណ៍បិទទម្រង់ និងពិនិត្យមើលថាតើអ្នកប្រើប្រាស់បានបញ្ចូលអ្វីគ្រប់យ៉ាងត្រឹមត្រូវដែរឬទេ។

មានទម្រង់គ្រប់គ្រង និងទម្រង់ទៀងទាត់។ ម៉ូឌុលនៃទម្រង់ទាំងនេះខុសគ្នាជាចម្បងដែលម៉ូឌុលទម្រង់ដែលបានគ្រប់គ្រងត្រូវបានបែងចែកយ៉ាងច្បាស់ទៅក្នុងបរិបទ។ នីតិវិធីនីមួយៗ (មុខងារ) ត្រូវតែមានការណែនាំអំពីការចងក្រង។ ក្នុងទម្រង់ធម្មតា កូដទាំងអស់ត្រូវបានប្រើប្រាស់នៅលើម៉ាស៊ីនភ្ញៀវ។

នៅក្នុងម៉ូឌុលទម្រង់ដែលបានគ្រប់គ្រង អ្នកអាចប្រកាសនីតិវិធី និងមុខងារ អ្នកអាចប្រកាសអថេរ ហើយអ្នកអាចពណ៌នាផ្នែកមួយនៃកម្មវិធីមេ។

កូដកម្មវិធីនៃកម្មវិធីមេនឹងត្រូវបានប្រតិបត្តិនៅពេលចាប់ផ្តើមទម្រង់ ពោលគឺឧ។ នៅពេលដែលអ្នកប្រើប្រាស់ចាប់ផ្តើមបើកវា។ តួលេខបង្ហាញបញ្ជីព្រឹត្តិការណ៍ស្តង់ដារសម្រាប់ទម្រង់គ្រប់គ្រង។

បញ្ជីនៃព្រឹត្តិការណ៍នៃទម្រង់ដែលបានគ្រប់គ្រងក៏អាចមើលឃើញនៅក្នុងបញ្ជីនៃលក្ខណៈសម្បត្តិដោយផ្ទាល់សម្រាប់ទម្រង់ខ្លួនឯងផងដែរ។ បញ្ជីនេះត្រូវបានហៅនៅក្នុងកម្មវិធីនិពន្ធទម្រង់ដែលបានគ្រប់គ្រង។

នៅក្នុងទម្រង់ដែលបានគ្រប់គ្រង អ្នកអាចដោះស្រាយព្រឹត្តិការណ៍សរសេររបស់ធាតុ។ ព្រឹត្តិការណ៍នេះមានវត្តមានសម្រាប់តែទម្រង់វត្ថុ (ថតឯកសារ និងមួយចំនួនផ្សេងទៀត)។ ប្រសិន​បើ​ទម្រង់​មិន​ត្រូវ​បាន​ចង​ភ្ជាប់​ទៅ​នឹង​វត្ថុ​ជាក់លាក់​នោះ​មិន​មាន​ព្រឹត្តិការណ៍​សរសេរ​ទេ។

សម្រាប់ម៉ូឌុលនៃទម្រង់ធម្មតា បញ្ជីនៃព្រឹត្តិការណ៍ស្ដង់ដារគឺតូចជាងបន្តិច ពីព្រោះ នៅក្នុងទម្រង់ដែលបានគ្រប់គ្រង ព្រឹត្តិការណ៍ជាច្រើនត្រូវបានបង្កើតឡើងដើម្បីផ្គូផ្គង (មួយត្រូវបានប្រតិបត្តិនៅលើម៉ាស៊ីនភ្ញៀវ និងមួយទៀតនៅលើម៉ាស៊ីនមេ)។ នៅក្នុងទម្រង់ធម្មតារបស់វា កូដទាំងអស់ត្រូវបានប្រតិបត្តិលើម៉ាស៊ីនភ្ញៀវ។

ម៉ូឌុលវត្ថុ

ម៉ូឌុលទាំងនេះគឺជាតួយ៉ាងសម្រាប់ថតឯកសារ ផែនការសម្រាប់ប្រភេទនៃការគណនា តារាងគណនី និងវត្ថុជាច្រើនទៀត។ ម៉ូឌុលវត្ថុត្រូវបានរចនាឡើងដើម្បីដោះស្រាយព្រឹត្តិការណ៍ស្តង់ដារ។ ឧទាហរណ៍ ព្រឹត្តិការណ៍​សម្រាប់​បញ្ចូល​ធាតុ​ថត ព្រឹត្តិការណ៍​សម្រាប់​សរសេរ​ធាតុ លុប ប្រកាស​ឯកសារ ។ល។

ជាគោលការណ៍ ព្រឹត្តិការណ៍សរសេរក៏មាននៅក្នុងម៉ូឌុលទម្រង់ផងដែរ។ ប៉ុន្តែព្រឹត្តិការណ៍សរសេរនៅក្នុងម៉ូឌុលទម្រង់កើតឡើងក្នុងអំឡុងពេលដំណើរការថតអន្តរកម្ម នៅពេលធ្វើការជាមួយទម្រង់ជាក់លាក់មួយ។

ព្រឹត្តិការណ៍សរសេរនៅក្នុងម៉ូឌុលវត្ថុនឹងត្រូវបានប្រតិបត្តិលើការសរសេរណាមួយពីទម្រង់ណាមួយនៃវត្ថុដែលបានផ្តល់ឱ្យ។ លើសពីនេះទៀត ប្រសិនបើវត្ថុត្រូវបានសរសេរតាមកម្មវិធី ព្រឹត្តិការណ៍ម៉ូឌុលរបស់វត្ថុនឹងឆេះ។

នៅក្នុងព្រឹត្តិការណ៍សរសេររបស់ Object Module អ្នកអាចបង្កើតនៅក្នុងការត្រួតពិនិត្យទាំងអស់សម្រាប់ភាពត្រឹមត្រូវនៃទិន្នន័យដែលកំពុងត្រូវបានសរសេរ ចាប់តាំងពីនីតិវិធីនេះនឹងត្រូវបានប្រតិបត្តិនៅពេលនៃការថតណាមួយ។

ម៉ូឌុលនៃវត្ថុនេះអាចត្រូវបានហៅតាមរយៈម៉ឺនុយបរិបទ ពីក្ដារលាយលក្ខណសម្បត្តិវត្ថុ និងពីបង្អួចកែសម្រួលវត្ថុ។

រូបខាងក្រោមបង្ហាញពីបញ្ជីនៃព្រឹត្តិការណ៍ម៉ូឌុលថតដែលមាន។

នៅក្នុង Object Module អ្នកអាចដាក់ផ្នែកមួយសម្រាប់ពណ៌នាអថេរ ដោយពណ៌នាអំពីមុខងារដែលបំពានដែលអាចនឹងមិនត្រូវបានផ្សារភ្ជាប់ជាមួយនឹងព្រឹត្តិការណ៍មួយ ក៏ដូចជាផ្នែកនៃកម្មវិធីសំខាន់ផងដែរ។

នៅក្នុងផ្នែកកម្មវិធីចម្បង អ្នកអាចឧទាហរណ៍ ចាប់ផ្តើមអថេរមូលដ្ឋាននៃម៉ូឌុលដែលបានផ្តល់ឱ្យ។ កូដកម្មវិធីនេះនឹងត្រូវបានប្រតិបត្តិនៅពេលដែលម៉ូឌុលវត្ថុនេះត្រូវបានចូលប្រើ។

គួរកត់សំគាល់ថា រាល់ដំណើរការរបស់ Object Module ត្រូវបានចងក្រងនៅលើ Server។ ដូច្នោះហើយ សេចក្តីណែនាំអំពីការចងក្រងសម្រាប់នីតិវិធី និងមុខងារនៃម៉ូឌុលវត្ថុមិនត្រូវបានទាមទារទេ។ វត្ថុកំណត់រចនាសម្ព័ន្ធមួយចំនួនមិនមានម៉ូឌុលវត្ថុទេ។

នេះគឺដោយសារតែលក្ខណៈនៃវត្ថុខ្លួនឯង។ វត្ថុទាំងនោះរួមមាន ថេរនិង ចុះឈ្មោះ. សម្រាប់ ថេរមិនមានម៉ូឌុលវត្ថុទេ ប៉ុន្តែមានម៉ូឌុលស្រដៀងគ្នាមួយហៅថា ម៉ូឌុលគ្រប់គ្រងតម្លៃ.

IN ម៉ូឌុលគ្រប់គ្រងតម្លៃអ្នកអាចគ្រប់គ្រងព្រឹត្តិការណ៍ ថេរនិងការបំពេញដំណើរការផ្ទៀងផ្ទាត់។

បរិបទម៉ូឌុលទាំងមូលត្រូវបានប្រតិបត្តិនៅលើម៉ាស៊ីនមេ។

សម្រាប់ការចុះឈ្មោះមានម៉ូឌុលកំណត់កំណត់ត្រា។

ម៉ូឌុលនេះក៏មានសមត្ថភាពក្នុងការគ្រប់គ្រងព្រឹត្តិការណ៍សរសេរ និងធ្វើការត្រួតពិនិត្យការកាន់កាប់ផងដែរ។

នៅក្នុងម៉ូឌុលវត្ថុ ម៉ូឌុលកម្មវិធីគ្រប់គ្រងតម្លៃ (សម្រាប់ថេរ) និងម៉ូឌុលកំណត់កំណត់ត្រា (សម្រាប់ការចុះឈ្មោះ) អ្នកអាចពិពណ៌នាអំពីវិធីសាស្រ្តដែលអាចនាំចេញបាន ហើយវិធីសាស្ត្រទាំងនេះនឹងអាចចូលប្រើបានពីខាងក្រៅ។

ទាំងនោះ។ បន្ថែមពីលើការប្រើ method ថេរនៃ object class អ្នកអាចបង្កើត method បន្ថែមសម្រាប់ object ក្នុង Object Module ។ ម៉ូឌុលនេះគួរតែពណ៌នាអំពីនីតិវិធីដែលត្រូវគ្នាជាមួយនឹងពាក្យគន្លឹះ នាំចេញ.

បន្ទាប់មកវានឹងអាចចូលដំណើរការនីតិវិធីនេះពីខាងក្រៅបាន។ លើសពីនេះទៅទៀត វិធីសាស្ត្រនេះនឹងត្រូវបានបង្ហាញនៅក្នុងព័ត៌មានជំនួយបរិបទ។ វិធីសាស្រ្តថ្មីនៅក្នុងព័ត៌មានជំនួយបរិបទត្រូវបានបន្លិចជាពុម្ពអក្សរពណ៌ខៀវ (រូបតំណាងពណ៌ខៀវ p()សម្រាប់នីតិវិធី និង f()សម្រាប់មុខងារ) ។

ស្រដៀងគ្នានេះដែរ អ្នកអាចបង្កើតទ្រព្យសម្បត្តិថ្មីដោយប្រកាសអថេរជាមួយពាក្យគន្លឹះ នាំចេញ. ទ្រព្យសម្បត្តិនេះក៏អាចចូលបានពីខាងក្រៅផងដែរ។

តាមវិធីនេះ វាអាចពង្រីកមុខងាររបស់វត្ថុ (ដើម្បីកំណត់វិធីសាស្រ្តថ្មី និងលក្ខណៈសម្បត្តិថ្មី)។ ទោះយ៉ាងណាក៏ដោយ លក្ខណៈសម្បត្តិមានលក្ខណៈថាមវន្ត ហើយមិនត្រូវបានរក្សាទុកក្នុងមូលដ្ឋានទិន្នន័យទេ។

ប្រសិនបើអ្នកត្រូវការប្រើលក្ខណសម្បត្តិសម្រាប់វត្ថុដែលនឹងត្រូវបានរក្សាទុកក្នុងមូលដ្ឋានទិន្នន័យ អ្នកគួរតែបង្កើតគុណលក្ខណៈវត្ថុមួយ។

ម៉ូឌុលអ្នកគ្រប់គ្រង

ម៉ូឌុលនេះមានសម្រាប់វត្ថុជាច្រើន (ថតឯកសារ បញ្ជីឈ្មោះ។ល។)។ ម៉ូឌុលត្រូវបានបើកតាមរយៈម៉ឺនុយបរិបទសម្រាប់វត្ថុ ឬតាមរយៈ ក្ដារលាយលក្ខណសម្បត្តិឬតាមរយៈបង្អួចកែសម្រួល។

នៅក្នុងម៉ូឌុលកម្មវិធីគ្រប់គ្រង អ្នកអាចបដិសេធព្រឹត្តិការណ៍ស្តង់ដារមួយចំនួន ឧទាហរណ៍ ក្នុង ដំណើរការទទួលទិន្នន័យជ្រើសរើសនៅពេលដែលធាតុមួយត្រូវបានជ្រើសរើសពីថត ការត្រង ឬការត្រួតពិនិត្យបន្ថែមមួយចំនួនអាចធ្វើបាន។

លើសពីនេះទៀត អ្នកអាចបង្កើតវិធីសាស្រ្តបន្ថែមនៅក្នុងម៉ូឌុលគ្រប់គ្រង ហើយបង្ហាញថាពួកវាជាវិធីសាស្ត្រនាំចេញ។ ក្នុងករណីនេះវាអាចចូលប្រើវិធីសាស្រ្តទាំងនេះពីខាងក្រៅ។

ដើម្បីធ្វើការហៅទូរសព្ទនេះ ចាំបាច់ត្រូវទទួលបានប្រភេទទិន្នន័យ DirectoryManager.

ភាពខុសគ្នារវាងវិធីសាស្ត្រនាំចេញនៃម៉ូឌុលគ្រប់គ្រង និងម៉ូឌុលវត្ថុគឺថា ដើម្បីចូលប្រើវិធីសាស្ត្រនៃម៉ូឌុលវត្ថុ អ្នកត្រូវទទួលបានវត្ថុដោយខ្លួនឯងជាមុនសិន (នោះមានន័យថា ដូចម្ដេចបានតំណ ហើយបន្ទាប់មកបម្លែងតំណនេះទៅជាវត្ថុ) .

បន្ទាប់ពីនេះ អថេរនាំចេញ និងវិធីសាស្ត្រនៃម៉ូឌុលវត្ថុនឹងមាន។ សម្រាប់ម៉ូឌុលអ្នកគ្រប់គ្រង ការហៅទូរសព្ទគឺសាមញ្ញជាង ឧទាហរណ៍៖
Directories.Counterparties.MethodName

នេះគឺជាការអំពាវនាវពីរផ្សេងគ្នា។ បម្លែងពីឯកសារយោងទៅជាវត្ថុ (វិធីសាស្រ្ត GetObject) គឺជាសកម្មភាពដ៏ធ្ងន់ធ្ងរមួយសម្រាប់ប្រព័ន្ធ ចាប់តាំងពីពេលដែលទទួលវត្ថុមួយ ទិន្នន័យទាំងអស់នៃវត្ថុនេះត្រូវបានអាន ដែលអាចមានរយៈពេលវែង។

ភាពខុសគ្នាទីពីរគឺថា ម៉ូឌុលវត្ថុបានហៅនៅក្នុងបរិបទនៃធាតុជាក់លាក់មួយ។ ដូច្នោះហើយ យើងអាចសន្មត់ថាវាអាចអនុវត្តបានសម្រាប់ធាតុដែលបានផ្តល់ឱ្យ (ក្នុងករណីភាគច្រើន នេះគឺពិតជាតក្កវិជ្ជាដែលបានប្រើ)។

សម្រាប់ម៉ូឌុលអ្នកគ្រប់គ្រង វាពិពណ៌នាអំពីសកម្មភាពទូទៅមួយចំនួនសម្រាប់ក្រុម ឬសម្រាប់ធាតុទាំងអស់នៃថតឯកសារ ឬឯកសារមួយចំនួន។ ឧទាហរណ៍ ប្រសិនបើអ្នកត្រូវការបោះពុម្ពធាតុថត អ្នកអាចប្រើម៉ូឌុលវត្ថុ។

ប៉ុន្តែនៅក្នុងម៉ូឌុលគ្រប់គ្រងវាអាចធ្វើទៅបានដើម្បីបង្កើតយន្តការសកលបន្ថែមទៀតដែលនឹងបោះពុម្ពក្នុងចំណោមរបស់ផ្សេងទៀតក្រុមនៃធាតុមួយ។

លើសពីនេះទៀត ការចូលប្រើម៉ូឌុលវត្ថុនៅតែជាសកម្មភាពយូរជាងនេះ។ ដូច្នេះ វាជាការប្រសើរក្នុងការដោះស្រាយបញ្ហានេះនៅក្នុងម៉ូឌុលអ្នកគ្រប់គ្រង។

នេះបញ្ចប់ការស្គាល់គ្នារបស់យើងជាមួយនឹងម៉ូឌុលនៅក្នុង 1C: ការកំណត់រចនាសម្ព័ន្ធប្រព័ន្ធសហគ្រាស។ ប្រសិនបើយើងសង្ខេបទាំងអស់ខាងលើដោយសង្ខេប ចំនុចខាងក្រោមគឺជាការសន្និដ្ឋានដូចខាងក្រោម៖

  • ម៉ូឌុលសូហ្វវែរគឺជាផ្នែកមួយនៃការកំណត់រចនាសម្ព័ន្ធដែលអាចផ្ទុកតែអត្ថបទនៅក្នុងភាសា 1C ដែលភ្ជាប់មកជាមួយប៉ុណ្ណោះ។
  • ម៉ូឌុលកម្មវិធីត្រូវបានចាត់ថ្នាក់តាមប្រភេទដែលយើងបានពិភាក្សានៅក្នុងអត្ថបទនេះ។ ទិដ្ឋភាពនីមួយៗត្រូវបានកំណត់ដោយការដាក់របស់វា និងបរិបទកម្មវិធីដែលមាន។
  • រចនាសម្ព័ន្ធនៃម៉ូឌុលមានផ្នែកជាច្រើនដែលត្រូវបានរៀបចំតាមលំដាប់ជាក់លាក់មួយ។ សមាសភាពនៃផ្នែកត្រូវបានកំណត់ដោយប្រភេទនៃម៉ូឌុល។

សូមចំណាំផងដែរថា យើងបានលុបម៉ូឌុលមួយប្រភេទ ពោលគឺម៉ូឌុលពាក្យបញ្ជា។ វាមិនមានអ្វីគួរឱ្យកត់សម្គាល់នោះទេ ហើយយើងសូមអញ្ជើញអ្នកឱ្យស្គាល់ខ្លួនអ្នកជាមួយនឹងមុខងាររបស់វា។

រហូតមកដល់ពេលនេះ យើងបានពិចារណាកូដកម្មវិធីទាំងអស់របស់យើងដាច់ដោយឡែកពីដំណោះស្រាយកម្មវិធី ហើយជាក្បួនយើងបានសរសេរវានៅក្នុងការកំណត់រចនាសម្ព័ន្ធសាកល្បងតូចមួយរបស់យើងផ្ទាល់។ តើអ្នកដឹងទេថា "អ្នកមិនអាចទៅបាន" ហើយចាប់ផ្តើមកែសម្រួលកូដនៃការកំណត់រចនាសម្ព័ន្ធស្តង់ដារ? ទេ? រួច​នៅ​អត្ថបទ​បន្ទាប់ យើង​នឹង​ពន្យល់​ទាំង​អស់​គ្នា!

អាក 693 22.12.13 22:44 បច្ចុប្បន្នលើប្រធានបទ

() ចូរចាប់ផ្តើមជាមួយនឹងរឿងសំខាន់។ មិនសមហេតុសមផលនិងសមហេតុសមផលគឺជាការប៉ុនប៉ងដើម្បីបង្ហាញពណ៌ជាមួយនឹងអារម្មណ៍។ ដែលពិបាកធ្វើតាមរយៈប្រភេទ epistolary ។ ដូច្នេះ​នេះ​ជា​ការ​បង្ហាញ​ពី​ការ​យល់​ខុស​របស់​ខ្ញុំ ហើយ​មិន​មែន​ជា​ការ​ប៉ុនប៉ង​ធ្វើ​ឱ្យ​ខូច​ចិត្ត​នោះ​ទេ។ វាជាការល្អក្នុងការដោះស្រាយជាមួយនរណាម្នាក់ដែលយល់ពីរឿងនេះ។ បើខ្ញុំធ្វើបាបអ្នក ខ្ញុំសុំទោស។

ភាពស្រដៀងគ្នានេះគឺមិនសមរម្យទេ ដោយសារតែធម្មជាតិនៃ OOP។ OOP គឺជាអ្នកស្នងមរតកក្នុងការសរសេរកម្មវិធីតាមនីតិវិធី។ ប្រៀប​ដូច​ជា​ការ​ប្រៀប​ធៀប​ឪពុក​និង​កូន​ដោយ​លើក​កូន​ប្រុស​ជា​គំរូ​ដល់​ឪពុក។

វាពិបាកក្នុងការប្រកែកជាមួយសេចក្តីថ្លែងការណ៍។ ប៉ុន្តែ​អត្ថន័យ​នៃ​ការ​លើក​ឡើង​នេះ​គឺ​មាន​ទំនាក់ទំនង​ខ្សោយ​ទៅ​នឹង​អត្ថបទ​ដែល​បាន​អធិប្បាយ​ក្នុង​អត្ថបទ។

នេះទាក់ទងនឹងឧទាហរណ៍ដែលបានផ្តល់ឱ្យក្នុងអត្ថបទ។ នៅទីនោះ វិធីសាស្ត្រមានការណែនាំអំពីការចងក្រង ហើយសម្រាប់ហេតុផលមួយចំនួន ពាក្យគន្លឹះ "នាំចេញ" ត្រូវបានលុបចោល។

ដោយ​សារ​តែ​គាត់​មិន​ដែល​ធ្វើ​អ្វី​មួយ មិន​មែន​មាន​ន័យ​ថា​មិន​ពាក់ព័ន្ធ ឬ​អ្នក​ដទៃ​មិន​ធ្វើ​នោះ​ទេ។

បាទ។ ខ្ញុំមិនចាំបាច់ផ្លាស់ប្តូរម៉ូឌុលទូទៅសម្រាប់ដំណើរការខាងក្រៅទេ។ វាចាំបាច់ក្នុងការបង្កើតកំណែផ្សេងៗគ្នាសម្រាប់ការកំណត់រចនាសម្ព័ន្ធផ្សេងៗគ្នា។

នៅក្នុងកម្មវិធីធម្មតា ពួកវាត្រូវបានប្រើជាញឹកញាប់ដើម្បីដោះស្រាយបញ្ហាចំណុចប្រទាក់សុទ្ធសាធ៖

នោះហើយជាវាតាមរបៀបធម្មតា។ ខ្ញុំមិនទស្សន៍ទាយការស្លាប់របស់វាទេ (ជាដំណោះស្រាយដ៏ល្អ និងបង្ហាញឱ្យឃើញ) ប៉ុន្តែនិន្នាការគឺដូចជាថា 1C កំពុងផ្លាស់ប្តូរបន្ថែមទៀតឆ្ពោះទៅរកការចែកចាយកុំព្យូទ័រ ដោយមានការបែងចែកកូដច្បាស់លាស់ទៅតាមកន្លែងដែលវាដំណើរការ។ វាកម្រដំណើរការនៅទីនេះ (ប្រសិនបើវាដំណើរការទាំងអស់): "អ្វីគ្រប់យ៉ាងគឺនៅលើម៉ាស៊ីនភ្ញៀវ ហើយយើងនឹងដោះស្រាយវាចេញ" ឬ "តោះទាញម៉ាស៊ីនមេពីរបីដង - បន្ទាប់ពីទាំងអស់ យើងមានជីហ្គាប៊ីត។"

ខ្ញុំគិតថាវានឹងមានប្រយោជន៍ក្នុងការពង្រីកអរូបីដែលមាននៅក្នុងគំនិតនៃ "GeneralModule" ហើយណែនាំវាទៅក្នុងការកំណត់រចនាសម្ព័ន្ធ
ធាតុនៃប្រភេទថ្មី និយាយថា "ExecutableModule" ស្រដៀងទៅនឹងវត្ថុ Module ពី MS VBA ។
"GeneralModules" នឹងក្លាយជាករណីពិសេសនៃវត្ថុ "ExecutableModule" ដែលមានទីតាំងនៅប្រហែល
នៅក្នុងទំនាក់ទំនងដូចគ្នានឹងវត្ថុ "ទម្រង់ទូទៅ" និងសាមញ្ញ "ទម្រង់" ...

ដើម្បីចាប់ផ្តើមជាមួយ វានឹងជាការល្អក្នុងការអនុវត្ត namespaces និង module metadata ក្នុង 1C ហើយមិនមែនដូចពេលនេះទេ (ដកស្រង់ពីអ្នកជំនួយវាក្យសម្ព័ន្ធ)។ "មិនបានកំណត់ - ព្រោះវាមិនត្រូវបានរំពឹងថានឹងដំណើរការពីភាសាដែលភ្ជាប់មកជាមួយ"

ចូរសន្មត់ថាចំនួនរដ្ឋដែលប្រើក្នុងទម្រង់គឺធំ ហើយសូមសន្មតថា
នៅពេលប្រើទម្រង់ ប្រូបាប៊ីលីតេនៃការសម្រេចបាននូវស្ថានភាពជាក់លាក់មួយគឺទាប។

នៅក្នុងការសរសេរកម្មវិធីតាមគេហទំព័របុរាណ វាត្រូវបានដោះស្រាយដោយសមត្ថភាពក្នុងការបង្កប់ទម្រង់បែបបទ និងការហៅអសមកាល (AJAX) ជាអកុសលវាត្រូវបានមិនអើពើដោយ 1C ។ ដូច្នេះមានជម្រើសបីដែលនៅសល់៖

1. ប្រើទម្រង់ផ្សេងៗគ្នា
2. ផ្ទេរទិន្នន័យចាំបាច់ទាំងអស់ទៅអតិថិជន
3. ទាញម៉ាស៊ីនមេ។

ជាទូទៅ ការហៅម៉ាស៊ីនមេក្រៅបរិបទមិនត្រូវបានចាត់ទុកថាជារឿងអាក្រក់ទេ ហើយគួរជៀសវាង។
- ជាគោលការណ៍ មានសូម្បីតែមតិមួយ (ដែលខ្ញុំពិតជាមិនយល់ស្រប) ដែលប្រភេទនៃលេខ "បន្ថែម" មួយចំនួន
ការហៅតាមបរិបទរបស់ម៉ាស៊ីនមេគឺអាក្រក់តិចជាងប្រសិនបើការបង្កើនប្រសិទ្ធភាពរបស់ពួកគេ "ផងដែរ" ច្រឡំ "លទ្ធភាពអាន" នៃកូដ។


ការហៅម៉ាស៊ីនមេក្រៅបរិបទត្រូវបានរចនាឡើងដើម្បីកាត់បន្ថយចរាចរណ៍នៅពេលផ្ទេរទិន្នន័យពីម៉ាស៊ីនភ្ញៀវទៅម៉ាស៊ីនមេ។ នេះគឺជាវិធីតែមួយគត់ដែលពួកគេខុសពីបរិបទ។

ឧទាហរណ៍ទី 1: អ្នកត្រូវទទួលបានសមភាគីដោយផ្អែកលើឯកសារ។

ម៉ាស៊ីនបម្រើអតិថិជន
1. ទម្រង់បែបបទជ្រើសរើស --> ទទួលបានទម្រង់
2. នៅពេលផ្លាស់ប្តូរ<--
3. ទទួលបានដៃគូរ --> DocumentBase["Counterparty"]

នៅ​ជំហាន​ទី​បី វា​គ្មាន​ចំណុច​ណា​មួយ​ក្នុង​ការ​អូស​សំណុំ​បែបបទ​ទាំង​មូល ដោយ​មាន​ព័ត៌មាន​លម្អិត​ទាំងអស់​ទៅ​កាន់​ម៉ាស៊ីន​មេ។ ដូច្នេះ គួរប្រើ OnServerWithoutContext។

នៅក្នុងកំណែរបស់អ្នកអ្នកអាចប្រើយ៉ាងសាមញ្ញ:

សម្រាប់វិធីសាស្រ្តម៉ូឌុលវត្ថុ៖

&OnServerដោយគ្មានបរិបទ
អនុគមន៍ Something_with_something(ProcessingObject, ProcessingTypeString, Parameters)
ត្រឡប់ FormDataValue(ProcessingObject, Type(ProcessingTypeString)).FunctionWe Need(Parameters);
មុខងារបញ្ចប់

សម្រាប់វិធីសាស្រ្តគ្រប់គ្រងម៉ូឌុល៖

&OnServerដោយគ្មានបរិបទ
អនុគមន៍ Something_with_something(ឈ្មោះ ប៉ារ៉ាម៉ែត្រ)
ដំណើរការត្រឡប់[Name].FunctionWeNeed(Parameters);
មុខងារបញ្ចប់

សំណួរ៖ តើខ្ញុំអាចហៅមុខងារមួយពីទម្រង់គ្រប់គ្រងដែលមាននៅក្នុងម៉ូឌុលនៃវត្ថុផ្សេងទៀតដោយរបៀបណា?


តើធ្វើដូចម្តេចដើម្បីហៅមុខងារពីទម្រង់ដែលបានគ្រប់គ្រងដែលមាននៅក្នុងម៉ូឌុលនៃវត្ថុមួយផ្សេងទៀត?

ខ្ញុំកំពុងព្យាយាម៖
&OnServer
ដំណើរការ MyProcedure() ដំណើរការ = Form AttributesValue("Record", Type("ProcessingObject.NecessaryProcessing"));

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1ចម្លើយ៖

ហើយនេះអនុវត្តមិនត្រឹមតែចំពោះដំណើរការ - ប៉ុន្តែជាទូទៅជាគោលការណ៍សូម្បីតែចំពោះវត្ថុណាមួយ។


អ្នកក៏អាចបំពេញព័ត៌មានលំអិត និងល្បិចផ្សេងទៀតដែលមាននៅទីនោះពីដំណើរការមួយទៅដំណើរការមួយទៀត។
សួស្តី!
សូមផ្តល់ឱ្យខ្ញុំនូវឧទាហរណ៍កូដមួយអំពីរបៀបដែលអ្នកអាចហៅតាមកម្មវិធីជាទម្រង់ដែលបានបោះពុម្ពដែលបានបញ្ចប់ដោយប្រើតំណភ្ជាប់ទៅកាន់វត្ថុមួយ
ឧ.
...
link=Documents.InvoiceIssued.FindByCode(...);
តំណភ្ជាប់...ទទួលបានទិន្នន័យទម្រង់ដែលអាចបោះពុម្ពបាន...

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1ល។

ហៅពាក្យបញ្ជាដែលការបោះពុម្ពឯកសារនេះត្រូវបានគេហៅថា ហើយនៅក្នុងវាមានប៉ារ៉ាម៉ែត្រមួយ - នេះគឺជាឯកសាររបស់អ្នក។


សំណួរ៖ ទម្រង់ដែលបានគ្រប់គ្រងនៅក្នុង UPP 1.3

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1អរុណសួស្តី នៅក្នុងកម្មវិធីកំណត់រចនាសម្ព័ន្ធ ខ្ញុំបង្កើតដំណើរការជាមួយទម្រង់គ្រប់គ្រង (ប្តូរទង់ទៅគ្រប់គ្រង)។ នៅក្នុងរបៀបសហគ្រាសវាមិនបើកទាល់តែសោះ។ តើអ្នកណាបានឆ្លងកាត់វា? របៀបបើកទម្រង់គ្រប់គ្រងដែលបានបង្កើត?

<<К сожалению, это невозможно. Свойство "Использовать управляемые формы в обычном приложении" не влияет на внешние обработки и отчёты. В обычном приложении можно открывать только обычные формы таких объектов, а в управляемом только управляемые. Это ограничение платформы.>>

+() បុរាណនៃប្រភេទ៖


សំណួរ៖ [SOLVED] ការហៅដំណើរការម៉ូឌុលទម្រង់ពីម៉ូឌុលទម្រង់ដែលបានគ្រប់គ្រងដំណើរការខាងក្រៅ
8.3.9.2170
អ្នកជំនាញជាទីគោរព សូមប្រាប់ខ្ញុំ៖
តើធ្វើដូចម្តេចដើម្បីហៅនីតិវិធីនៃម៉ូឌុលទម្រង់នៃឯកសារនេះពីនីតិវិធីអតិថិជននៃម៉ូឌុលទម្រង់ដំណើរការខាងក្រៅ (EF) ដែលចងភ្ជាប់ទៅនឹងឯកសារ?

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1

សូមអរគុណ

ទទួលទម្រង់ឯកសារ ហើយហៅមុខងារនាំចេញដែលចង់បាននៅក្នុងម៉ូឌុលទម្រង់លទ្ធផល។


សួស្តី!
ទីបំផុតខ្ញុំចាប់ផ្តើមធ្វើការជាមួយទម្រង់ដែលបានគ្រប់គ្រង ក៏ដូចជាទម្រង់បន្ថែម។ ព័ត៌មានលម្អិតនៃថតដែលត្រូវបានបញ្ចូលក្នុងរបៀបសហគ្រាស។
1C: សហគ្រាស 8.3 (8.3.8.2054), 1C: ស្វ័យប្រវត្តិកម្មរួមបញ្ចូលគ្នា 2 (2.2.3.196) ។
ជាអកុសល ខ្ញុំបានជួបប្រទះបញ្ហា ហើយមិនអាច Google រកដំណោះស្រាយបានទេ។
ខ្លឹមសារគឺនេះ - មានដំណើរការខាងក្រៅនៅក្នុងវា អ្នកប្រើប្រាស់ជ្រើសរើសធាតុមួយ បន្ទាប់ពីនោះវាលផ្សេងទៀតនៃដំណើរការនេះគួរតែត្រូវបានបំពេញដោយស្វ័យប្រវត្តិជាមួយនឹងធាតុបន្ថែម។ ព័ត៌មានលម្អិតនៃនាមត្រកូលនេះ។ ខ្ញុំបានជំពប់ដួលនៅដើមដំបូង - ខ្ញុំកំពុងព្យាយាមដើម្បីទទួលបានការបន្ថែមទាំងនេះជាមួយនឹងសំណើមួយ។ ព័ត៌មានលម្អិត។
1C
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 នៅលើ Client Procedure NomenclatureOnChange(Element)AdditionalDetails = RequestAdditionalDetails(Object. nomenclature); ចុងបញ្ចប់នៃនីតិវិធី & នៅលើមុខងារម៉ាស៊ីនមេ សំណើសម្រាប់ព័ត៌មានលម្អិតបន្ថែម (នាមត្រកូល) សំណើសម្រាប់ព័ត៌មានលម្អិតបន្ថែម = សំណើថ្មី (); ស្នើសុំព័ត៌មានលម្អិតបន្ថែម។ អត្ថបទ = "ជ្រើសរើស | Nomenclature ព័ត៌មានលម្អិតបន្ថែម.Link, | នាមត្រកូល ព័ត៌មានលម្អិតបន្ថែម។ អចលនទ្រព្យ,| នាមត្រកូល ព័ត៌មានលម្អិតបន្ថែម។ តម្លៃ, | Nomenclature ព័ត៌មានលម្អិតបន្ថែម។TextString| ពី | Directory.Nomenclature.Additional Details AS Nomenclature ព័ត៌មានលម្អិតបន្ថែម| កន្លែងណា | NomenclatureAdditional Details.Link = &Nomenclature";

ស្នើសុំព័ត៌មានលម្អិតបន្ថែម។

កំណត់ប៉ារ៉ាម៉ែត្រ
("នាមនាម", វត្ថុ។ នាមនាម);
ResultRequest for Additional Details = សំណើរសុំព័ត៌មានលម្អិតបន្ថែម។ ប្រតិបត្តិ () ។ ដោះចេញ ();
ត្រឡប់លទ្ធផលស្នើសុំព័ត៌មានលម្អិតបន្ថែម;
ResultRequest for Additional Details = សំណើរសុំព័ត៌មានលម្អិតបន្ថែម។ ប្រតិបត្តិ () ។ ដោះចេញ ();
ការបញ្ចប់មុខងារ
បញ្ហា
ResultRequest for Additional Details = សំណើរសុំព័ត៌មានលម្អិតបន្ថែម។ ប្រតិបត្តិ () ។ ដោះចេញ ();
"(ExternalProcessing.PrintLabels.Form.Form.Form(11)): មានកំហុសនៅពេលហៅវិធីសាស្ត្របរិបទ (RequestAdditionalDetails)
ព័ត៌មានលម្អិតបន្ថែម = សំណើសម្រាប់ព័ត៌មានលម្អិតបន្ថែម(Object.Nomenclature);

ដោយសារ៖

កំហុសក្នុងការផ្ទេរទិន្នន័យរវាងម៉ាស៊ីនភ្ញៀវ និងម៉ាស៊ីនមេ។ តម្លៃ​គឺ​ជា​ប្រភេទ​មិន​ត្រឹមត្រូវ។
កំហុសក្នុងការបំប្លែងទិន្នន័យ XDTO៖

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1 HomeProperties: ret Form: Element Type: (http://www.w3.org/2001/XMLSchema)anyType

កំហុសក្នុងការគូសផែនទីប្រភេទ៖

មិនមានការបង្ហាញសម្រាប់ប្រភេទ "(http://v8.1c.ru/8.1/data/core)ValueTable""

សូមជួយ!
ខ្ញុំនឹងព្យាយាមបង្កើតផ្ទាំង។ ផ្នែកនៃដំណើរការ (ដោយមិនដាក់វានៅលើទម្រង់) ហើយផ្ទុកលទ្ធផលទៅក្នុងវា។

ហើយដូច្នេះវាបានកើតឡើង! សូមអរគុណ!

សំណួរ៖ ធ្វើការជាមួយតារាងតម្លៃក្នុងទម្រង់គ្រប់គ្រង


ថ្ងៃល្អ។ តារាងតម្លៃមិនដែលឈប់ធ្វើឱ្យខ្ញុំភ្ញាក់ផ្អើលទេ។ នេះគឺជាសំណួរជាក់ស្តែង៖ ខ្ញុំកំពុងបង្កើតដំណើរការខាងក្រៅ (ទម្រង់គ្រប់គ្រង)។ ខ្ញុំកំពុងបង្កើតគុណលក្ខណៈ "TK" ជាមួយនឹងប្រភេទ "តារាងតម្លៃ"។ ហើយខ្ញុំអូសវាទៅលើទម្រង់។ បន្ទាប់នៅក្នុងម៉ូឌុលទម្រង់ ខ្ញុំសរសេរ "TZ" ហើយបន្ទាប់ពីចំនុចក្នុងបញ្ជីទម្លាក់ចុះ ខ្ញុំមិនឃើញលក្ខណសម្បត្តិ "ជួរឈរ" ទេ។ បន្ទាប់ខ្ញុំបង្កើតកម្មវិធី៖

ហើយសរសេរ "TZ" នៅក្នុងបញ្ជីទម្លាក់ចុះ មានទ្រព្យសម្បត្តិ "ជួរឈរ". សំនួរសួរថាហេតុអ្វី????????

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1

សារពី ប្រីរ៉ូលីន

ហើយ 1C ត្រូវធ្វើដើម្បីឱ្យវាត្រូវបានសរសេរដោយផ្ទាល់នៅក្នុង configurator ដែល attribute នៅលើ form មានប្រភេទទិន្នន័យ DataFormsCollection!

បន្ទាប់មក វានឹងមិនច្បាស់ថា វត្ថុកម្មវិធីណាអាចបកប្រែបាន។

សំណួរ៖ ទម្រង់គ្រប់គ្រង (ភាពងាយស្រួលនៃធាតុ)


ដោយប្រើវេទិកា UTeshki 10.3.40.1 8.3.9.2033 ខ្ញុំកំពុងបង្កើតទម្រង់ជ្រើសរើសផលិតផលនៅលើគេហទំព័រ។ ខ្ញុំ​បាន​បង្កើត​តួនាទី​ថ្មី ហើយ​ចាប់ផ្តើម​បើក​ការ​ចូល​ប្រើប្រាស់​វត្ថុ​ជា​បណ្តើរៗ។ អ្វីគ្រប់យ៉ាងគឺល្អរហូតដល់ខ្ញុំឈានដល់ថតតម្លៃនៃលក្ខណៈសម្បត្តិនៃវត្ថុ។ វាច្បាស់ណាស់ថាក្នុង 10 មិនមានទម្រង់គ្រប់គ្រងទេ ទាំងអស់ត្រូវបានបង្កើតនៅក្នុងដំណើរការ ប៉ុន្តែប្រសិនបើទម្រង់សម្រាប់ជ្រើសរើស "លក្ខណៈសម្បត្តិវត្ថុ" ដូចគ្នាត្រូវបានបង្កើតជាធម្មតា នោះទម្រង់សម្រាប់ជ្រើសរើស "តម្លៃនៃលក្ខណៈសម្បត្តិវត្ថុ" ត្រូវបានបង្កើត។ ជាមួយនឹងធាតុអសកម្ម... ហើយអ្វីដែលខ្ញុំមិនបានសាកល្បង - សិទ្ធិក្នុងការអាន ដោយមើលទាំងសៀវភៅយោង និងផែនការនៃប្រភេទលក្ខណៈ។ លក្ខណៈសម្បត្តិនៃវត្ថុ... គ្មានអ្វីជួយបានទេ។ កន្លែងដែលត្រូវជីក? ជម្រើសដើម្បីបង្កើតទម្រង់ដាច់ដោយឡែកមួយ ហើយសរសេរអ្វីគ្រប់យ៉ាងនៅទីនោះ មិនចាំបាច់ត្រូវបានផ្តល់ជូនទេ ខ្ញុំបានទុកវាចោលក្នុងករណីដែលហេតុផលនៅតែមិនច្បាស់លាស់។

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1ប្រហែលជាលទ្ធភាពប្រើប្រាស់ត្រូវបានកំណត់ក្នុងទម្រង់ដោយខ្លួនវាតាមលក្ខខណ្ឌមួយចំនួន?

សំណួរ៖ នៅពេលបិទទម្រង់ថតឯកសារដែលគ្រប់គ្រង ខ្ញុំសរសេរទៅចុះឈ្មោះព័ត៌មាន


នៅពេលបិទទម្រង់ថតឯកសារដែលគ្រប់គ្រង ខ្ញុំសរសេរទៅបញ្ជីព័ត៌មាន
ប្រសិន​បើ​ធាតុ​ថត​ថ្មី​ត្រូវ​បាន​បង្កើត នោះ​កំហុស​គឺ​ថា​វត្ថុ​ថត​មិន​ទាន់​ត្រូវ​បាន​បង្កើត​នៅ​ឡើយ​ទេ។ ខ្ញុំ​មិន​យល់​ពី​របៀប​រង់ចាំ​ឱ្យ​វត្ថុ​ថត​ត្រូវ​បាន​បង្កើត។
យ៉ាងណាមិញខ្ញុំហៅវានៅពេលបិទទម្រង់ថត?

&OnServer
នីតិវិធីនៅពេល ClosingOnServer() Set=InformationRegisters.ContactInformation.CreateRecordSet();

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1() ប្រហែលជាវាមិនចាំបាច់ក្នុងការអនុវត្តរបស់វា។ () ខ្ញុំគិតថាគាត់មិនបានបង្ហាញពីខ្លួនគាត់ត្រឹមត្រូវទេ។ នេះមានន័យថាទិន្នន័យដែលបានកែប្រែ។ លោក U បានធ្វើអ្វីមួយដែលស្រដៀងគ្នានៅពេលគាត់ណែនាំអំពីអន្តរភាវូបនីយកម្ម ដោយរក្សាទុកខ្សែអក្សរលម្អិតជាមួយភាសាអង់គ្លេស/អេស្ប៉ាញ និងឈ្មោះផ្សេងទៀត។ ដើម្បី​កុំ​ឱ្យ​ផលិត​ឧបករណ៍​សម្រាប់​វត្ថុ​សម្រាប់​ភាសា​នីមួយៗ ខ្ញុំ​បាន​ដាក់​អ្វី​គ្រប់​យ៉ាង​ក្នុង​បញ្ជី។ ហើយ​ការ​ថត​ត្រូវ​បាន​ធ្វើ​ឡើង​ស្រប​នឹង​ការ​ថត​ថត​ណា​មួយ​ក៏​មាន​ដូច​នេះ​ដែរ។

សំណួរ៖ រចនាសម្ព័ន្ធនៃធាតុនៅលើទម្រង់គ្រប់គ្រង។ តើធ្វើដូចម្តេចដើម្បីស្វែងរកធាតុដែលចង់បានដោយមិនចាំបាច់ស្វែងរកតាមរយៈធាតុ?


អ្នកត្រូវស្វែងរកវាលតារាងនៅលើទម្រង់ដែលបានគ្រប់គ្រង។ ខ្ញុំ​ធ្វើ​វា​ដោយ​ការ​ធ្វើ​ឡើងវិញ​លើ​ធាតុ​ទម្រង់​ទាំង​អស់។ ប្រហែលជាមានវិធីផ្សេងទៀតដើម្បីស្វែងរកធាតុដែលចង់បាននៃទម្រង់គ្រប់គ្រង?
ឧទាហរណ៍នៃការស្វែងរកដោយបង្ខំ៖
//***** FlFoundTablePart = មិនពិត;<>សម្រាប់ El នីមួយៗពី _ThisForm.Elements Cycle ប្រសិនបើ TypeValue(El)

វាយ ("តារាងទម្រង់") បន្ទាប់មកបន្ត;


បញ្ចប់ប្រសិនបើ;

ប្រសិនបើ El.DataPath = "វត្ថុ។" + _TablePartName បន្ទាប់មក FlFoundTabularPart = True;
រំលូតកូន;

បញ្ចប់ប្រសិនបើ;
វដ្តបញ្ចប់; //*****

លទ្ធផល = Processing.ExportProcedureInNecessaryProcessingModule("NecessaryParameter"); ចុងបញ្ចប់នៃដំណើរការកំហុស៖ ប៉ារ៉ាម៉ែត្រមិនត្រឹមត្រូវលេខ 1សំណួរ៖ សរសេរ() ក្នុងទម្រង់គ្រប់គ្រង

ស្ថានភាពមានដូចខាងក្រោម៖