Гэр / Компьютер эзэмших / 1-р менежерийн модуль хаана байна. Ерөнхий модулиуд. Дахин ашиглах сонголт

1-р менежерийн модуль хаана байна. Ерөнхий модулиуд. Дахин ашиглах сонголт

Модуль гэж юу вэ, тэдгээр нь яг юунд зориулагдсан бэ? Модуль нь програмын кодыг агуулдаг. Нэмж дурдахад, 7.7 платформоос ялгаатай нь кодыг маягтын элементийн шинж чанар болон байршлын хүснэгтийн нүднүүдэд байрлуулж болох 8.x платформ дээр кодын дурын мөр байрлах ёстой гэдгийг тэмдэглэх нь зүйтэй. зарим модульд. Ерөнхийдөө модуль нь хувьсагчдыг тайлбарлах хэсэг, процедур, функцийг тайлбарлах хэсэг, үндсэн програмын хэсэг гэсэн гурван хэсгээс бүрдэнэ. Энэ бүтэц нь зарим үл хамаарах зүйлийг эс тооцвол бараг бүх платформ модулиудын хувьд ердийн зүйл юм. Зарим модуль нь хувьсагчийг зарлах хэсэг болон үндсэн програмын хэсэггүй байдаг. Жишээлбэл, сессийн модуль болон ерөнхий модуль.

Модулиудын гүйцэтгэлийн контекстийг ерөнхийдөө клиент болон серверийн контекст гэж хуваадаг. Нэмж дурдахад зарим модулиудыг үйлчлүүлэгч болон серверийн аль алинд нь нэгтгэж болно. Мөн зарим нь зөвхөн сервер эсвэл үйлчлүүлэгч талтай байдаг. Тэгэхээр:

Хэрэглээний модуль

Модуль нь програмыг эхлүүлэх (тохиргоог ачаалах) болон түүнийг дуусгах мөчүүдийг барихад зориулагдсан. Мөн холбогдох үйл явдлуудад та баталгаажуулах журмыг зохион байгуулж болно. Жишээлбэл, програмын эхэнд тохиргооны лавлагааны өгөгдлийг шинэчлэх, ажлын төгсгөлд үүнийг орхих нь зүйтэй эсэхийг асуу, магадгүй ажлын өдөр хараахан дуусаагүй байна. Нэмж дурдахад, энэ нь арилжааны болон санхүүгийн тоног төхөөрөмж гэх мэт гадны тоног төхөөрөмжөөс үйл явдлыг таслан зогсоодог. Програмын модуль нь зөвхөн интерактив хөөргөх тохиолдолд тайлбарласан үйл явдлыг таслан зогсоодог гэдгийг тэмдэглэх нь зүйтэй. Тэдгээр. програмын цонх өөрөө үүссэн үед. Хэрэв програмыг горимд ажиллуулсан бол энэ нь тохиолдохгүй com холболтууд.

8.2 платформ дээр хоёр өөр хэрэглээний модуль байдаг. Эдгээр нь нийтлэг хэрэглээний модуль ба удирддаг програмын модуль юм. Өөр өөр үйлчлүүлэгчдийг эхлүүлэх үед тэдгээр нь идэвхждэг. Вэб клиент, нимгэн клиент, зузаан клиентийг удирддаг програмын горимд ажиллуулах үед удирддаг програмын модуль ингэж ажилладаг. Мөн зузаан клиентийг ердийн хэрэглээний горимд ажиллуулах үед ердийн хэрэглээний модуль идэвхждэг.

Програмын модульд бүх хэсгүүдийг байрлуулж болно - хувьсагчийн тайлбар, процедур, функц, түүнчлэн үндсэн програмын тайлбар. Хэрэглээний модулийг үйлчлүүлэгчийн тал дээр эмхэтгэсэн тул энэ нь бидний олон төрлийн өгөгдлийн хүртээмжийг эрс хязгаарладаг. Та програмын модулийн контекстийг Дуудлагын серверийн шинж чанар бүхий хуваалцсан модулиудын аргуудаар өргөтгөж болно. Экспорт гэж тэмдэглэгдсэн бүх хувьсагч болон аргуудыг аль ч клиент талын тохиргооны модульд ашиглах боломжтой. Гэсэн хэдий ч сэтгэл татам ч гэсэн энд нийтлэх ёсгүй олон тооныаргууд. Илүү их код агуулсан байх тусам эмхэтгэлийн хугацаа уртасч, улмаар програмыг эхлүүлэх хугацаа нь хэрэглэгчдэд маш их бухимддаг.

Дээр дурдсанчлан, програмын модуль нь програмын эхлэл болон төгсгөлийн үйл явдлуудыг зохицуулдаг. Хэрэглээний модуль дээрх эдгээр үйл явдал бүрийг зохицуулахын тулд Өмнө ... ба Хэзээ ... гэсэн хэд хэдэн зохицуулагч байдаг. Тэдгээрийн ялгаа нь Өмнөх ... зохицуулагчийн кодыг гүйцэтгэх үед үйлдэл хараахан болоогүй байна. болсон бөгөөд бид үүнийг гүйцэтгэхээс татгалзаж болно. Татгалзах сонголт нь үүнд зориулагдсан юм. On handers-д үйлдэл аль хэдийн хийгдсэн бөгөөд бид програмыг эхлүүлэх эсвэл түүнээс гарахаас татгалзах боломжгүй.

Гадаад холболтын модуль

Модулийн зорилго нь хэрэглээний модулийн зорилготой төстэй. Энэ нь програмын эхлэл ба төгсгөлийн цэгүүдийг зохицуулдаг. Програмыг холболтын горимд ажиллуулах үед гадаад холболтын модуль идэвхждэг. Гаднах нэгдэх процесс нь өөрөө интерактив процесс биш юм. Энэ горимд програм нь ажилладаг мэдээллийн баазмөн програмын цонх нээгддэггүй бөгөөд энэ нь интерактив ажилд зориулагдсан аргуудыг ашиглахад тодорхой хязгаарлалт тавьдаг. Энэ горимд та харилцах хэлбэрийн дуудлага, анхааруулах мессеж гэх мэтийг ашиглах боломжгүй. Тэд зүгээр л ажиллахгүй.

Хэрэглээний модулийн нэгэн адил хувьсагч, аргуудыг тайлбарлах хэсэг, үндсэн програмын хэсгийг эндээс авах боломжтой. Та мөн экспортын хувьсагч болон аргуудыг зарлаж болно. Үүний ялгаа нь холболтын горимд мэдээллийн баазтай бүх ажил серверийн талд явагддаг тул гадаад холболтын модулийг зөвхөн сервер дээр хөрвүүлдэг. Үүний дагуу экспортын хувьсах хэмжигдэхүүн, үйлчлүүлэгчийн нийтлэг модулиудын аргууд үүнд байхгүй байна.

сесс модуль

Энэ бол маш нарийн мэргэшсэн модуль бөгөөд зөвхөн сессийн параметрүүдийг эхлүүлэхэд зориулагдсан болно. Та яагаад үүнд зориулж модуль хийх шаардлагатай болсон бэ? Энэ нь эхлүүлэх процесс нь зарим кодыг гүйцэтгэхийг шаарддагтай холбоотой бөгөөд үүнээс гадна програмыг өөр өөр үйлчлүүлэгчид ажиллуулж болно (энэ нь өөр өөр програмын модуль эсвэл гадаад холболтын модулийг ажиллуулахад хүргэдэг) бөгөөд сессийн параметрүүд нь заавал байх ёстой. ямар ч эхлүүлэх горимд эхлүүлэх боломжтой. Тиймээс ямар ч програм эхлүүлэх горимд ажилладаг нэмэлт модуль шаардлагатай байсан.

Сеансын модульд нэг "SetSessionParameters" үйл явдал байдаг бөгөөд энэ нь програмын модулийн BeforeSystemStart үйл явдлаас өмнө хамгийн түрүүнд идэвхждэг. Үүнд хувьсагчийг зарлах хэсэг, үндсэн програмын хэсэг байхгүй. Мөн түүнчлэн экспортын аргыг зарлах боломжгүй юм. Модуль нь серверийн тал дээр эмхэтгэсэн.

Програмыг эхлүүлэх бүрт энэ модулийг ажиллуулдаг гэсэн уруу таталтаас зайлсхийж, сессийн параметрүүдийг эхлүүлэхтэй шууд хамааралгүй кодыг түүнд байрлуул. Энэ нь системийн үйл ажиллагааны явцад SetSessionParameters зохицуулагчийг дахин дахин дуудах боломжтой байдагтай холбоотой юм. Жишээлбэл, бид эхлүүлээгүй параметрүүдэд хандах үед энэ нь тохиолддог. Хэдийгээр энэ үйл явдлыг анх эхлүүлэх мөчийг барьж авах боломжтой боловч (RequiredParameters нь тодорхойгүй төрөлтэй) боловч энэ модулийг давуу эрхтэй горимд хөрвүүлсэн гэдгийг тэмдэглэх нь зүйтэй. энэ нь нэвтрэх эрхийг хянадаггүй. Хоёрдахь зүйл бол системийг ажиллуулна гэдэгт бид зуун хувь итгэлтэй байж чадахгүй байна. Гэнэт програмын модуль бүтэлгүйтэх бөгөөд бид мэдээллийн сантай ямар нэгэн үйлдэл хийхийг оролдож байна.

Ерөнхий модулиуд

Модулиуд нь бусад тохиргооны модулиудаас дуудагдах зарим нийтлэг алгоритмуудыг тайлбарлах зорилготой юм. Ерөнхий модуль нь хувьсагчийн мэдэгдлийн хэсэг болон үндсэн програмын хэсгийг агуулаагүй болно. Та үүнд экспортын аргуудыг зарлаж болно, тэдгээрийн хүртээмжийн нөхцөлийг эмхэтгэлийн тугнуудаар тодорхойлно. Хувьсагчийн зарлалын хэсэг байхгүй байгаа тул хуваалцсан модулиудад глобал хувьсагчдыг тодорхойлох боломжгүй. Үүнийг хийхийн тулд буцах утгын кэштэй нийтлэг модулиудын функцууд эсвэл програмын модулийг ашиглах хэрэгтэй. Нийтлэг модулийн дахин ашиглалтын шинж чанарыг "Сурс үргэлжлэх хугацаанд" гэж тохируулсан байсан ч энэ тохиолдолд кэшлэгдсэн утгуудын ашиглалтын хугацаа нь тэдгээрээс хойш 20 минутаас хэтрэхгүй гэдгийг санах нь зүйтэй. хамгийн сүүлд хандсан.
Хуваалцсан модулийн үйл ажиллагаа нь тохируулсан параметрүүдээс хамаарна (дэлхийн эсвэл үгүй, янз бүрийн эмхэтгэлийн тугууд, серверийн дуудлага боломжтой эсэх гэх мэт). Энэ нийтлэлд бид үл хөдлөх хөрөнгийн тугуудыг үндэслэлгүй байрлуулах үед үүсдэг бүх төрлийн тохиргоо, зан үйлийн онцлог, бэрхшээлийг авч үзэхгүй. Энэ бол тусдаа өгүүллийн сэдэв юм. Тугуудыг байрлуулахдаа дагаж мөрдөх ёстой хэдэн зүйл дээр анхаарлаа хандуулцгаая.

  • "Дэлхийн" далбааг хаа сайгүй хэрэглэхгүй байх нь зөв дүрэм юм. Энэ нь програмыг эхлүүлэх хугацааг багасгахаас гадна кодыг унших чадварыг сайжруулах болно (мэдээжийн хэрэг, хэрэв нийтлэг модуль нь бүрэн утга учиртай нэртэй бол).
  • Нэгээс олон эмхэтгэлийн тугийг ашиглахыг зөвлөдөггүй. Янз бүрийн нөхцөлд хэрэгжүүлэх шаардлагатай олон арга байхгүй бөгөөд хэрэв ийм аргууд шаардлагатай байгаа бол тэдэнд зориулж тусдаа нийтлэг модулийг хуваарилж болно.
  • "Дуудлагын сервер" туг нь модулийг "Сервер дээр" эмхэтгэсэн тохиолдолд л утга учиртай болно. Тиймээс янз бүрийн асуудлаас зайлсхийхийн тулд бусад бүх эмхэтгэлийн тугуудыг арилгах хэрэгтэй.
  • Хэрэв модулийн аргууд нь өгөгдлийг их хэмжээгээр боловсруулах, өгөгдлийн санд унших, бичихэд ашиглагддаг бол ажлын хурдыг нэмэгдүүлэхийн тулд "Давуу эрхтэй" тугийг тохируулах замаар хандалтын хяналтыг идэвхгүй болгох нь дээр. Энэ горимыг зөвхөн сервер дээр эмхэтгэсэн хуваалцсан модулиудад ашиглах боломжтой.

Маягтын модуль

Энэ нь хэрэглэгчийн үйлдлийг боловсруулах зорилготой, i.e. өгөгдөл оруулах, тэдгээрийг оруулах зөв эсэхийг боловсруулахтай холбоотой янз бүрийн үйл явдлууд. Ердийн маягтын модулийг бүхэлд нь үйлчлүүлэгч дээр хөрвүүлдэг. Модуль удирдаж буй хэлбэрГүйцэтгэлийн контекстээр тодорхой зааглагдсан тул бүх хувьсагч болон аргууд эмхэтгэлийн заавартай байх ёстой. Хэрэв удирдамжийг тодорхой заагаагүй бол энэ хувьсагч эсвэл аргыг серверийн тал дээр эмхэтгэх болно. Маягтын модульд хувьсагч, аргуудыг тайлбарлах хэсгүүдээс гадна үндсэн програмын хэсэг байдаг.

Объект модуль

Энэ модуль нь олон тохиргооны объектуудын хувьд ердийн зүйл бөгөөд ерөнхийдөө объектын үйл явдлыг боловсруулахад зориулагдсан. Жишээлбэл, объект бичих, устгах үйл явдал, баримт бичгийг байршуулах үйл явдал гэх мэт.

Зарим объектын модулийн үйл явдлууд форм модулийн үйл явдлуудыг давхардуулдаг. Жишээлбэл, бичлэгтэй холбоотой үйл явдлууд. Гэсэн хэдий ч, маягтын модулийн үйл явдлууд зөвхөн тодорхой хэлбэрийн объект дээр хийгдэх болно гэдгийг ойлгох хэрэгтэй. Ерөнхийдөө эдгээр хэлбэрүүд хэд хэдэн байж болно. Мөн объектын модулийн үйл явдлууд ямар ч тохиолдолд, тэр ч байтугай одоогоор дуудагдах болно хөтөлбөрийн ажилобъекттой. Тиймээс, хэрэв бүх тохиолдолд зарим кодыг ажиллуулах шаардлагатай бол объектын модулийн үйл явдлыг ашиглах нь дээр.

Объект модулийг зөвхөн сервер дээр эмхэтгэсэн. Үүнд та бусад тохиргооны модулиудад ашиглах боломжтой экспортын хувьсагч болон аргуудыг тодорхойлж болно. Эдгээр шинж чанар, аргуудын тусламжтайгаар бид объектын үйл ажиллагааг ихээхэн өргөжүүлж чадна.

Объект менежерийн модуль

Энэ модуль нь олон тохиргооны объектуудад байдаг. Энэ модулийн гол зорилго нь оруулах үед тохиолддог стандарт сонголтын үйл явдлыг дахин тодорхойлох, менежерийн үйл ажиллагааг өргөжүүлэх явдал юм. Модуль нь серверийн тал дээр эмхэтгэсэн. Экспортын шинж чанар, аргыг тодорхойлох боломжтой. Менежерийн экспортын аргуудыг дуудах нь объектыг өөрөө үүсгэхийг шаарддаггүй.

Дээр дурдсан бүх зүйлд та зарим тохиргооны модулиудын зураг болон удирддаг програмын горимд аргуудыг харилцан дуудах аргуудыг нэмж болно. Сум нь харгалзах аргыг дуудахын тулд явах чиглэлийг заана. Диаграмаас харахад серверийн контекст бүрэн хаалттай байна. Гэхдээ үйлчлүүлэгчийн контекстээс серверийн аргууд руу хандах боломжтой.

Схем дээрх тэмдгүүд: O.M. Үйлчлүүлэгч - Үйлчлүүлэгчийн нийтлэг модуль; О.М. Сервер - Серверийн нийтлэг модуль; М.Ф. Client - Маягтын модулийн үйлчлүүлэгчийн процедур; М.Ф. Сервер - Маягтын модулийн серверийн процедур.

Програм хангамжийн модулиуд нь 1С хэл дээрх гүйцэтгэх кодыг агуулдаг бөгөөд энэ нь харааны хөгжүүлэлтийн хэрэгсэл хангалтгүй үед систем эсвэл хэрэглэгчийн үйлдэлд тодорхой хариу өгөхөд шаардлагатай байдаг. Мөн програмын модулиудад бид өөрсдийн аргыг (процедур ба функц) дүрсэлж болно.

Ерөнхийдөө програм хангамжийн модуль нь гурван хэсгээс бүрдэнэ.

  • хувьсах мэдэгдлийн талбар;
  • журам ба функцийн тодорхойлолтын талбар;
  • хөтөлбөрийн үндсэн текст.

Програмын модулийн бүтцийн жишээ:

//******************** ХУВЬСАГЧ ТОДОРХОЙЛОЛТЫН ТАЛБАЙ *************************

Rem овог экспорт; / /энэ нь глобал хувьсагч юм
Хувьсагчийн нэр, овог нэр; //энэ бол модулийн хувьсагч
Нэрийг өөрчлөх; //энэ нь бас модулийн хувьсагч бөгөөд хандах боломжтой

//манай модулийн аливаа процедур, функцээс

//**************** ЖУРАМ, ҮЙЛ АЖИЛЛАГААНЫ ТОДОРХОЙЛОЛТ ****************

Процедурын журам1 ()
Хувьсах нийт ; / /Нийт нь орон нутгийн хувьсагч (процедурын хувьсагч)

Нийт = Овог + "" + Овог + " "+ Эцгийн нэр;

Төгсгөлийн процедур

Функц Функц 1 ()

// функцийн мэдэгдлүүд

Буцах(Овог + " " + Нэр );

Төгсгөлийн функцууд

//**************************** ХӨТӨЛБӨРИЙН ҮНДСЭН Бичвэр ********************* *

Овог = "Иванов";
Нэр = "Иван";
Дунд нэр = "Иванович";

//******************************************************************************

Тодорхой програмын модулийн аль нэг хэсэг нь дутуу байж болно.
Хувьсах мэдэгдлийн хамрах хүрээмодулийн текстийн эхнээс Процедурын эхний өгүүлбэр эсвэл Функцийн мэдэгдэл эсвэл ямар нэгэн гүйцэтгэгдэх команд хүртэл байрлуулна. Энэ хэсэг нь зөвхөн хувьсах мэдэгдлийн мэдэгдлийг агуулж болно.

Процедур ба функцүүдийн тодорхойлолтын талбарПроцедур эсвэл Функцийн мэдэгдлийн эхний хэллэгээс процедур эсвэл функцийн мэдэгдлийн үндсэн хэсгээс гадуур ямар ч гүйцэтгэгдэх мэдэгдэл хүртэл байрлуулна.

Програмын үндсэн текстийн хэсэгПроцедур эсвэл функцийн гаднах эхний гүйцэтгэгдэх мэдэгдлээс модулийн төгсгөл хүртэл байрлана. Энэ хэсэг нь зөвхөн гүйцэтгэгдэх мэдэгдлүүдийг агуулж болно. Програмын үндсэн текстийн талбар нь модулийг эхлүүлэх үед гүйцэтгэгддэг. Ихэвчлэн програмын үндсэн хэсэгт модулийн процедур эсвэл функцийг дуудахын өмнө тодорхой утгатай хувьсагчдыг эхлүүлэх мэдэгдлийг байрлуулах нь утга учиртай байдаг.

Хөтөлбөрийн модулиуд нь тодорхой үйлдлийн алгоритмын тайлбарыг шаарддаг тохиргооны газруудад байрладаг. Эдгээр алгоритмууд нь урьдчилан тодорхойлсон нөхцөлд систем өөрөө дуудагдах процедур эсвэл функц хэлбэрээр хийгдсэн байх ёстой (жишээлбэл, лавлагааны маягтыг нээх, харилцах цонхны товчлуур дээр дарах, объектыг өөрчлөх гэх мэт).

Тусдаа програмын модуль бүрийг систем бүхэлдээ хүлээн авдаг тул програмын модулийн бүх процедур, функцуудыг нэг контекст дээр гүйцэтгэдэг.

Модулиудын гүйцэтгэлийн контекст нь клиент болон серверийн контекст гэж хуваагддаг. Нэмж дурдахад, зарим програм хангамжийн модулиудыг үйлчлүүлэгч болон серверийн аль алинд нь нэгтгэж болно.

Хэрэглээний модуль (удирдлагатай эсвэл тогтмол)

Хэрэглээний модуль нь системийн эхлэл ба төгсгөлд эхлүүлсэн үйл явдлын процедурыг (хариуцагч) тайлбарладаг. Жишээлбэл, та програмыг эхлүүлэхдээ зарим тохиргооны өгөгдлийг шинэчлэх боломжтой бөгөөд гарахдаа програмаас огт гарах эсэхээ асууж болно. Нэмж дурдахад, энэ модуль нь арилжааны болон санхүүгийн тоног төхөөрөмж гэх мэт гадны тоног төхөөрөмжөөс үйл явдлыг таслан зогсоодог. Програмын модуль нь зөвхөн програмыг интерактив эхлүүлсэн тохиолдолд, өөрөөр хэлбэл програмын цонх нээгдсэн тохиолдолд л ажиллана гэдгийг тэмдэглэх нь зүйтэй. Хэрэв програмыг холболтын горимд ажиллуулсан бол энэ нь тохиолдохгүй.
1С 8 платформ дээр хоёр өөр хэрэглээний модуль байдаг. Эдгээр нь нийтлэг хэрэглээний модуль ба удирддаг програмын модуль юм. Өөр өөр үйлчлүүлэгчдийг эхлүүлэх үед тэдгээр нь идэвхждэг. Жишээлбэл, вэб клиент, нимгэн клиент, зузаан клиентийг удирддаг програмын горимд ажиллуулах үед Удирддаг програмын модуль идэвхждэг. Мөн зузаан клиентийг ердийн хэрэглээний горимд ажиллуулах үед ердийн хэрэглээний модуль идэвхждэг. Програмыг эхлүүлэх горимын тохиргоог "Үндсэн эхлүүлэх горим" тохиргооны шинж чанарт тохируулсан.

Хэрэглээний модуль нь бүх 3 хэсгийг агуулж болно - хувьсагчийн мэдэгдэл, процедур, функцуудын тайлбар, мөн програмын үндсэн текст. Хэрэглээний модулийг үйлчлүүлэгчийн тал дээр эмхэтгэсэн бөгөөд энэ нь биднийг олон төрлийн өгөгдлийг ашиглахыг эрс хязгаарладаг. Та програмын модулийн контекстийг Дуудлагын серверийн шинж чанар бүхий хуваалцсан модулиудын аргуудаар өргөтгөж болно. Экспорт гэж тэмдэглэгдсэн хэрэглээний програмын модулийн бүх хувьсагч болон аргуудыг аль ч клиент талын тохиргооны модульд ашиглах боломжтой. Гэсэн хэдий ч сэтгэл татам байсан ч та энд олон тооны процедур, функцуудыг байрлуулж болохгүй. Өгөгдсөн модульд илүү олон код байх тусам эмхэтгэлийн хугацаа уртасч, улмаар програмыг эхлүүлэх хугацаа нэмэгддэг.

Дээр дурдсанчлан, програмын модуль нь програмын эхлэл болон төгсгөлийн үйл явдлуудыг зохицуулдаг. Хэрэглээний модуль дээрх эдгээр үйл явдал бүрийг зохицуулахын тулд Өмнө нь ... ба Хэзээ ... гэсэн хэд хэдэн зохицуулагч байдаг. Тэдгээрийн ялгаа нь дараах байдалтай байна: Өмнө нь зохицуулагчийн кодыг гүйцэтгэх үед үйлдэл нь дараах байдалтай байна. хараахан болоогүй байгаа бөгөөд бид үүнийг гүйцэтгэхээс татгалзаж болно. Татгалзах сонголт нь үүнд зориулагдсан юм. On handers-д үйлдэл аль хэдийн хийгдсэн бөгөөд бид програмыг эхлүүлэх эсвэл түүнээс гарахаас татгалзах боломжгүй.

Гадаад холболтын модуль

  • бүх 3 хэсгийг агуулж болно
  • тохиргооны үндсэн хэсэгт байрладаг

Модулийн зорилго нь хэрэглээний модулийн зорилготой төстэй. Энэ нь програмын эхлэл болон төгсгөлийн үйл явдлуудыг зохицуулдаг. Програмыг холболтын горимд ажиллуулах үед гадаад холболтын модуль идэвхждэг. Гаднах нэгдэх процесс нь өөрөө интерактив процесс биш юм. Энэ горимд мэдээллийн баазтай программчлагдсан ажил хийгдэж, програмын цонх нээгддэггүй бөгөөд энэ нь интерактив ажилд зориулагдсан аргуудыг ашиглахад тодорхой хязгаарлалт тавьдаг. Энэ горимд та харилцах хэлбэр, анхааруулга, хэрэглэгч рүү мессеж илгээх гэх мэт дуудлага хийх боломжгүй. Тэд зүгээр л гүйхгүй.

Хэрэглээний модулийн нэгэн адил бүх гурван талбарыг эндээс авах боломжтой: хувьсагчийн мэдэгдэл, журам, функцуудын тайлбар, мөн програмын үндсэн текст. Хэрэглээний модулийн гол ялгаа нь холболтын горимд мэдээллийн баазтай бүх ажил сервер тал дээр явагддаг тул гадаад холболтын модулийг сервер тал дээр нэгтгэдэг. Үүний дагуу экспортын хувьсах хэмжигдэхүүн, үйлчлүүлэгчийн нийтлэг модулиудын аргууд үүнд байхгүй байна.

сесс модуль

  • сервер тал дээр гүйцэтгэнэ
  • тохиргооны үндсэн хэсэгт байрладаг

Энэ нь зөвхөн сессийн параметрүүдийг эхлүүлэхэд зориулагдсан өндөр мэргэшсэн модуль юм. Та яагаад үүнд зориулж модуль хийх шаардлагатай болсон бэ? Үүний хэрэглээ нь програмыг өөрөө эхлүүлэх боломжтой байдагтай холбоотой юм янз бүрийн горимууд(удирдлагатай програмын модуль, ердийн хэрэглээний модуль эсвэл гаднах холболтын модулийг ажиллуулахад хүргэдэг) болон сессийн параметрүүдийг эхлүүлэх горимоос үл хамааран эхлүүлэх шаардлагатай. Эдгээр гурван модульд ижил програмын код бичихгүйн тулд програмыг эхлүүлэх горимоос үл хамааран нэмэлт модуль хэрэгтэй болсон.

Сеансын модульд нэг "SetSessionParameters" үйл явдал байдаг бөгөөд энэ нь програмын модулийн PreSystemBegin үйл явдлаас өмнө хамгийн түрүүнд идэвхждэг. Үүнд хувьсагчийг зарлах хэсэг, үндсэн програмын хэсэг байхгүй. Мөн түүнчлэн экспортын аргыг зарлах боломжгүй юм. Модуль нь серверийн тал дээр эмхэтгэсэн.

Ерөнхий модулиуд

  • журам, функцийг тайлбарлах талбарыг агуулж болно
  • сервер эсвэл клиент тал дээр гүйцэтгэгддэг (модулийн тохиргооноос хамаарна)
  • "Ерөнхий" - "Ерөнхий модулиуд" тохиргооны объектын модны мөчир дээр байрладаг.

Нийтлэг модулиуд нь бусад тохиргооны модулиудаас дуудагдах зарим нийтлэг алгоритмуудыг тайлбарлах зорилготой юм. Ерөнхий модуль нь хувьсах мэдэгдлийн талбарууд болон програмын үндсэн хэсгийг агуулаагүй болно. Та үүнд экспортын аргуудыг зарлаж болох бөгөөд тэдгээрийн бэлэн байдал нь модулийн тохиргооноос тодорхойлогдоно (энэ нь аль талд нь хийгдсэн: сервер эсвэл үйлчлүүлэгч тал дээр). Хувьсагчийн зарлалын хэсэг байхгүй байгаа тул хуваалцсан модулиудад глобал хувьсагчдыг тодорхойлох боломжгүй. Үүний тулд та програмын модулийг ашиглаж болно.

Хуваалцсан модулийн үйл ажиллагаа нь тохируулсан параметрүүдээс хамаарна (дэлхийн эсвэл үгүй, янз бүрийн эмхэтгэлийн тугууд, серверийн дуудлага боломжтой эсэх гэх мэт). Хуваалцсан модулиудыг тохируулах зарим зөвлөмжийг энд оруулав.

"Дэлхийн" далбааг хаа сайгүй хэрэглэхгүй байх нь сайн туршлага юм. Энэ нь програмыг эхлүүлэх хугацааг багасгахаас гадна кодыг унших чадварыг сайжруулах болно (мэдээжийн хэрэг, хэрэв нийтлэг модуль нь бүрэн утга учиртай нэртэй бол);
- Нэгээс олон эмхэтгэлийн туг ашиглахыг зөвлөдөггүй. Өөр өөр нөхцөл байдалд хийх шаардлагатай олон арга байхгүй бөгөөд хэрэв ийм аргууд шаардлагатай байгаа бол тэдэнд зориулж тусдаа нийтлэг модулийг хуваарилж болно;
- "Серверийн дуудлага" туг нь зөвхөн модулийг "Сервер дээр" эмхэтгэсэн тохиолдолд л утга учиртай болно. Тиймээс янз бүрийн асуудлаас зайлсхийхийн тулд бусад бүх эмхэтгэлийн тугуудыг арилгах хэрэгтэй;
- Хэрэв модулийн аргуудад өгөгдлийг бөөнөөр нь боловсруулах, мэдээллийн санд унших, бичих үйл ажиллагаа явагддаг бол ажлын хурдыг нэмэгдүүлэхийн тулд "Давуу эрхтэй" тугийг тохируулах замаар хандалтын хяналтыг идэвхгүй болгох нь дээр. Энэ горимыг зөвхөн сервер дээр эмхэтгэсэн хуваалцсан модулиудад ашиглах боломжтой.

Маягтын модуль

  • бүх 3 хэсгийг агуулж болно
  • сервер болон үйлчлүүлэгч тал дээр гүйцэтгэнэ

Маягтын модуль нь энэ маягтаар хэрэглэгчийн үйлдлийг зохицуулах зориулалттай (товчлуур товших үйлдлийг зохицуулах, маягтын шинж чанарыг өөрчлөх гэх мэт). Мөн маягттай шууд холбоотой үйл явдлууд байдаг (жишээлбэл, нээх эсвэл хаах). Удирдагдсан маягтын модулиуд болон ердийн маягтын модулиуд нь үндсэндээ удирддаг маягтын модулийг контекстэд тодорхой тусгаарласнаараа ялгаатай. Процедур эсвэл функц бүр эмхэтгэлийн удирдамжтай байх ёстой. Хэрэв эмхэтгэлийн удирдамж тодорхойлогдоогүй бол энэ процедур эсвэл функцийг серверийн талд гүйцэтгэдэг. Ердийн хэлбэрээр бүх кодыг үйлчлүүлэгч тал дээр гүйцэтгэдэг.

Удирдагдсан маягтын бүтэц нь хувьсагчийн мэдэгдлийн хэсэг, процедур, функцуудын тайлбар, програмын үндсэн хэсгийг (маягтыг эхлүүлэх үед гүйцэтгэнэ) агуулдаг. Бид маягтын хүлээгдэж буй процедур, функцуудын жагсаалтаар дамжуулан стандарт маягтын үйл явдлуудад хандах боломжтой (Ctrl+Alt+P), эсвэл маягтын өөрийнх нь шинж чанаруудын палитраар дамжуулан.

Хэрэв үндсэн шинж чанарыг формд өгсөн бол үндсэн шинж чанар болгон ашигласан програмын объектын шинж чанар, аргуудыг маягтын модульд ашиглах боломжтой болно.

Объект модуль

  • бүх 3 хэсгийг агуулж болно
  • сервер тал дээр гүйцэтгэнэ

Энэ модуль нь ихэнх тохиргооны объектуудад байдаг бөгөөд ерөнхийдөө объекттой шууд холбоотой үйл явдлуудыг боловсруулахад зориулагдсан. Жишээлбэл, объектыг бүртгэх, устгах, объектын дэлгэрэнгүй мэдээллийг бөглөсөн эсэхийг шалгах, баримт бичгийг байршуулах гэх мэт.

Зарим объектын модулийн үйл явдлууд форм модулийн үйл явдлуудыг давхардуулдаг. Жишээлбэл, бичлэгтэй холбоотой үйл явдлууд. Гэсэн хэдий ч, маягтын модулийн үйл явдлууд нь зөвхөн тухайн объектын тодорхой хэлбэрт, өөрөөр хэлбэл тодорхой маягт нээгдэх үед л хийгдэх болно гэдгийг ойлгох хэрэгтэй. Мөн объектын модулийн үйл явдлууд ямар ч тохиолдолд, тэр ч байтугай программ объекттой ажиллах үед дуудагдах болно. Тиймээс, хэрэв танд объектын тодорхой хэлбэрт холбоогүй объекттой холбоотой аргууд хэрэгтэй бол үүний тулд объектын модулийг ашиглах нь дээр.

Объект менежерийн модуль

  • бүх 3 хэсгийг агуулж болно
  • сервер тал дээр гүйцэтгэнэ

Объект менежерийн модуль нь зөвхөн 1С 8.2 хувилбараас эхлэн гарч ирсэн. Менежерийн модуль нь бүх програмын объектод байдаг бөгөөд энэ объектыг тохиргооны объект болгон удирдахад зориулагдсан. Менежерийн модуль нь өгөгдлийн сангийн объектын тодорхой жишээнд хамаарахгүй, харин тохиргооны объектод хамаарах процедур, функцуудыг нэвтрүүлэх (бичих) замаар объектын үйл ажиллагааг өргөтгөх боломжийг олгодог. Объект менежерийн модуль нь тухайн объектын нийтлэг журам, функцуудыг байрлуулж, тэдгээрийг гаднаас, жишээлбэл, боловсруулалтаас авах боломжийг олгодог (мэдээж хэрэг, хэрэв энэ процедур эсвэл функц Export түлхүүр үгтэй бол). Энэ нь бидэнд шинэ зүйл юу өгч байна вэ? Ерөнхийдөө процедурыг объектоор нь зохион байгуулж, тусдаа газар хадгалахаас өөр зүйл байхгүй - Объект менежерийн модулиуд. Бид эдгээр процедур, функцуудыг нийтлэг модулиудад байршуулж болох боловч 1С нь Объект менежерийн модульд объектуудын нийтлэг журам, функцуудыг байрлуулахыг зөвлөж байна. Объект менежерийн модулийн журам, функцийг ашиглах жишээ: тодорхой нөхцөлд лавлах эсвэл баримт бичгийн дэлгэрэнгүй мэдээллийг анх удаа бөглөх, тодорхой нөхцөлд лавлах эсвэл баримт бичгийн дэлгэрэнгүй мэдээллийг бөглөх зэргийг шалгах гэх мэт.

Тушаалын модуль

  • журам, чиг үүргийг тодорхойлсон хэсгийг агуулж болно
  • үйлчлүүлэгч тал дээр гүйцэтгэнэ

Командууд нь програмын объектууд эсвэл бүхэлдээ тохиргоонд захирагддаг объектууд юм. Тушаал бүр нь тушаалын модультай бөгөөд та уг тушаалыг гүйцэтгэхийн тулд урьдчилан тодорхойлсон CommandProcess() процедурыг тайлбарлаж болно.

Аливаа програм нь програмын кодоос бүрддэг, өөрөөр хэлбэл ямар ч хэлээр бичсэн үйлдлийн дарааллаас бүрддэг.

Гэсэн хэдий ч яг энэ програмыг хаа нэг газар бичсэн байх ёстой, өөрөөр хэлбэл хаа нэг газар байрлах ёстой. Ихэнх тохиолдолд програмын кодыг энгийн текст файлд бичдэг. Ганц ялгаа нь тэдгээрийн өргөтгөл нь .txt биш, харин .cpp эсвэл .php юм.

1С програм хаана бичигдсэн бэ?

Модуль 1С гэж юу вэ?

Мэдээжийн хэрэг, 1С кодыг зарим текст файлд бичиж болно. Гэсэн хэдий ч 1С тохиргооны тухай ойлголт байдаг - энэ нь зөвхөн тохиргооны жагсаалт, маягтын загвар болон бусад зүйлсээс гадна 1С програмын кодыг агуулдаг. Тиймээс 1С кодыг тохиргоонд хадгалдаг.

Тохиргоо нь 1С объектуудаас бүрдэх бөгөөд бид өмнөх хичээлүүдэд аль хэдийн авч үзсэн болно. 1С объект бүр нь үүрлэсэн объектуудыг агуулдаг, жишээлбэл, лавлах хэд хэдэн хэлбэртэй байдаг.

1С объект бүр, түүний дотор зарим үүрлэсэн объектууд нь өөрийн гэсэн модультай байдаг - тодорхой текст файлпрограмын кодыг агуулсан .

Мөн тодорхой объектоос хамааралгүй програмын код бичих боломжтой объектоос хамааралгүй модулиуд байдаг.

Тиймээс 1С-д "ганц" програм байдаггүй. 1С тохиргооны объект бүрт програмын код бичих модулиудын багц байдаг.

1С модулийг хэрхэн ашигладаг вэ?

Бүх програмыг ойролцоогоор хоёр төрөлд хувааж болно:

  • Объект арга
  • Үйл явдалд үзүүлэх хариу үйлдэл.

Арга зүй. Өмнө дурьдсанчлан 1С объект нь өгөгдөл, тэдгээрийг боловсруулах аргуудыг багтаасан салшгүй бүтэц юм. Эдгээр аргууд нь өгөгдлийг боловсруулахад дуудаж болох үйлдлүүдийн багц (арга) юм. Ийм үйлдлийн жишээ DirectoryObject.Write() – сангийн элементийг мэдээллийн санд бичнэ.

1С-ийн олон объектын аргууд нь стандарт байж болно (жишээ нь, 1С платформ дээр програмчлагдсан) бөгөөд програмист 1С хэл дээр бичигдсэн байдаг. Сүүлчийн тусламжтайгаар та 1С объектын функцийг хүссэнээрээ өргөжүүлж болно.

Үйл явдал. Үйл явдал бусад олон хөгжүүлэлтийн хэрэглүүрээс олддог. Хөтөлбөрийн зорилго нь зөвхөн эхлүүлэх үед ямар нэг зүйлийг тооцоолохоос гадна хэрэглэгчийн ажилд дэмжлэг үзүүлэх явдал юм.

Хэрэглэгчийн үйл явдал - хэрэглэгч товчлуурыг дарсан. Үүний хариуд кодын зарим хэсэг нь хэрэглэгчийн үйлдэлд хариу үйлдэл үзүүлэх болно.

Системийн үйл явдлууд - бид мэдээллийн санд 1С объектыг бичсэн. "Бичлэг хийх объект" системийн үйл явдал болсон. Хэрэглэгчээс (товчлуур дээр дарсан эсвэл өөр зүйл хийсэн) бус харин систем өөрөөс нь үүссэн үйл явдлуудад гарах хариу үйлдлийг тохируулах боломжтой. Ийм үйл явдлын тод жишээ бол хөтөлбөр эхлэх явдал юм.

1С модулиудыг гүйцэтгэх дараалал

Олон хэл дээр "нэвтрэх цэг" гэж байдаг. Энэ бол програмыг эхлүүлэх үед гүйцэтгэх хамгийн эхний мөр эсвэл функц юм.

1С-д хэд хэдэн ийм нэвтрэх цэгүүд байдаг - үйлчлүүлэгч бүрийн хувьд. Өөрөөр хэлбэл, зузаан үйлчлүүлэгчийг эхлүүлэхэд нэвтрэх цэг нь нэг, нимгэн үйлчлүүлэгчийг эхлүүлэхэд өөр байдаг. Энэ нь танд өөр өөр функцуудыг програмчлах боломжийг олгодог янз бүрийн төрөлүйлчлүүлэгчид.

Харгалзах модулийн орох цэг нь системийн үйл явдлын зохицуулагчийн BeforeSystemStart() ба AtSystemStart() тус тус (өөрөөр хэлбэл, дарааллаар) юм. Эдгээр функцуудыг эхлээд гүйцэтгэдэг, тэд ямар нэг зүйлийг автоматаар эхлүүлэх боломжтой.

Хэрэв юу ч автоматаар эхлүүлээгүй бол 1С интерфейс нь хэрэглэгчийн өмнө нээгдэж, бүх зүйл үүнээс хамаарна. Тэр товчлуур дээр дардаг - энэ товчлуурыг дарах зохицуулагчийг ажиллуулдаг (энэ нь эргээд ямар нэг зүйлийг автоматаар эхлүүлэх боломжтой).

1С модулиудтай ажиллах

Тохируулагчид үйлдвэрлэсэн. Та тохиргооны цонхыг ашиглан модулийг нээж болно.

Бараг бүх тохиргооны объектуудад менежерийн модуль байдаг ба ихэнх объектуудын хувьд объектын модуль байдаг. Ихэнхдээ шинэхэн програмистууд эдгээр хоёр модулийн зорилгын ялгааг ойлгодоггүй.

Тэдгээрийн зорилгын ялгааг ойлгох нь бүтцийн хувьд илүү зөв програмын код бичих боломжийг олгодог бөгөөд зарим тохиолдолд 1С серверийн нөөцийг хэмнэж, хэрэглээний шийдлийн гүйцэтгэлийг нэмэгдүүлдэг.

Нийтлэлд бид эдгээр модулиудын үндсэн ялгааг онолын талаас болон тодорхой практик жишээн дээр авч үзэх болно.

Онол

Объект хандалтат програмчлалын (OOP) үндсүүд рүү эргэж, жишээнээсээ аналоги зурцгаая. OOP-д объект дээрх аргуудыг хувааж болно статик (статик) ба энгийн. Энгийн аргуудЗөвхөн одоогийн кодын контекстэд хандах боломжтой тодорхой объект дээр дуудаж болно. Статик аргууд нь объектын өгөгдөлд шууд хандах эрхгүй. Объект руу хандахын тулд эхлээд түүний жишээг үүсгэх хэрэгтэй. 1C: Enterprise 8.x платформд мөн адил хамаарна.

Объектын модульд платформ нь зөвхөн тодорхой объекттой, жишээлбэл, "Нэршил" лавлах элементийн объекттой ажиллах үед л дуудаж болох процедур, функцуудыг хадгалдаг. Менежерийн модуль нь өгөгдсөн төрлийн бүх объектод хэрэглэгдэх журам, функцуудыг агуулдаг, гэхдээ энэ объектын жишээг анх үүсгэсэн тохиолдолд. Өөрөөр хэлбэл, энэ модулийн нэр томъёоны элементийг өөрчлөхийн тулд эхлээд тухайн элементэд хандахын тулд "GetObject ()" аргыг ажиллуулаад дараа нь түүнтэй хамт ажиллана.

Онолоос практик руу шилжье.

Дасгал хийх

Дараа нь үргэлжлүүлье практик жишээ. Барааны жагсаалтыг хэвлэх асуудлыг шийдэх хэрэгтэй гэж бодъё.Хэрэглэгч бүтээгдэхүүнийг лавлах элементээс шууд эсвэл бүтээгдэхүүний жагсаалтын маягтаас хэвлэдэг. Даалгаврыг биелүүлэх хоёр аргыг авч үзье.

Объект модуль дахь хэвлэх процедур

Сангийн объектын модульд нэмнэ үү дараагийн функц:

// Функцид лавлах элементийн лавлагааг дамжуулнаФункц PrintSelectedItems(Link) Export TabDoc = New TabDoc; Layout = Лавлах. Бараа. GetLayout("Layout"); Хүсэлт = Шинэ хүсэлт; Хүсэлт. Текст = " СОНГОХ | Зүйлс . Танилцуулга AS Бараа,| Бараа . Устгах гэж тэмдэглэх,| Бараа . худалдагчийн код |FROM| Лавлах . Бүтээгдэхүүн AS Бүтээгдэхүүн|ХААА | Бараа . B холбоос(& ItemsArray)" ; Хүсэлт. SetParameter(" Барааны массив " , Лавлагаа) ; // Лавлагаагаар сонголт хийх

Хөтөлбөрийн кодыг хэвлэгч дизайнер бүрэн бүтээдэг. Анхаарах цорын ганц зүйл бол хүсэлт дэх "Бүтээгдэхүүний" лавлах элементийн лавлагаагаар харагдах явдал юм. Лавлагааг функцэд параметр болгон дамжуулдаг. "PrintSelectedItems" функцийг дуудсаны үр дүнд буцаж ирнэ хүснэгтийн баримт бичигдүүргэсэн зүйлтэй.

"Хэвлэх" маягтын команд дээр "PrintSelectedProducts" объектын аргыг дуудах програмын кодыг дараах жагсаалтад үзүүлэв.

& OnClient Процедур Хэвлэх(Тушаал) // Үүсгэсэн хүснэгтийн баримтыг авахын тулд серверийн процедурыг дууд TabDoc = PrintServer(); // Үүсгэсэн хүснэгтийн баримтыг харуулах TabDoc. Show(); EndProcedure & OnServer функц PrintServer() // Объектийн модулиас функцийг дуудахын тулд маягтын объектыг "Бүтээгдэхүүн" лавлахын объект руу хөрвүүлнэ ItemObject = FormAttributeToValue(" Объект " ); // Сангийн одоогийн элементийн лавлагааг дамжуулж объектын модулийн процедурыг дууд. Үр дүн // үйлчлүүлэгч тал руу буцах ObjectItem-ийг буцаана уу. PrintSelectedItems(Object.Reference) ; Төгсгөлийн функцууд

Тиймээс бид лавлахын одоогийн элементийг түүний объекттой ажиллаж хэвлэсэн. Гэхдээ даалгаварт хэрэглэгч өөрөө сонгох ёстой бүтээгдэхүүний жагсаалтыг хэвлэх ёстой гэж хэлсэн. Объекттой ажиллахдаа ийм боломжийг хэрэглэгчдэд энгийн байдлаар олгох боломжгүй. "Бараа" лавлахын элементүүдийн жагсаалтаас хэвлэх нь хамгийн зөв байх болно.

Менежерийн модуль дахь хэвлэх журам

Лавлах менежерийн модульд дараах экспортын процедурыг нэмнэ үү:

// Бүтээгдэхүүний олон тооны холбоосыг дамжуулж байнаФункц PrintSelectedItems(ItemsArray) Export TabDoc = Шинэ SpreadsheetDocument; Layout = Лавлах. Бараа. GetLayout("Layout"); Хүсэлт = Шинэ хүсэлт; Хүсэлт. Текст = " СОНГОХ | Зүйлс . Танилцуулга AS Бараа,| Бараа . Устгах гэж тэмдэглэх,| Бараа . худалдагчийн код |FROM| Лавлах . Бүтээгдэхүүн AS Бүтээгдэхүүн|ХААА | Бараа . B холбоос(& ItemsArray)" ; Хүсэлт. SetParameter(" Items Array " , Items Array) ; // Шүүлтүүрийг массиваар тохируулнаҮр дүн = Хүсэлт. Гүйцэтгэх (); AreaTitle = Зохион байгуулалт. GetRegion(" Гарчиг " ); AreaFooter = Layout. GetRegion("Зоорь"); TableHeader талбар = Layout. GetArea("Хүснэгтийн толгой"); AreaFooterTables = Layout. GetRegion("Хүснэгтийн хөл"); AreaDetailRecords = Layout. GetRegion("Дэлгэрэнгүй мэдээлэл"); TabDoc. Clear(); TabDoc. Гаралт (AreaHeader); TabDoc. Гаралт (RegionTableHeader); TabDoc. StartAutoGroupRows() ; SampleDetailRecords = Үр дүн. Choose(); Нарийвчилсан бүртгэлийг түүвэрлэх явцад. Next() LoopDetailRecordsArea. Сонголтууд. Бөглөх(SelectionDetailRecords); TabDoc. Гаралт(RegionDetailRecords, SelectionDetailRecords. Level() ); EndCycle; TabDoc. EndAutoGroupRows() ; TabDoc. Гаралт (RegionFooterTables); TabDoc. Гаралт (Талбайн хөл); TabDoc-г буцаах; Төгсгөлийн функцууд

Объектын модуль дахь функцээс гол ялгаа нь функцийн параметр юм. Одоо хэвлэх шаардлагатай бүтээгдэхүүний холбоос бүхий массивыг параметр болгон дамжуулж байна.

"Хэвлэх" маягтын командын модулийн програмын код нь дараах байдалтай байна.

& Үйлчлүүлэгчийн процедур дээр Print(Command) TabDoc = PrintServer() ; TabDoc. Show(); EndProcedure & OnServer функц PrintServer() // Хайлтын жагсаалтад сонгосон бүтээгдэхүүний холбоосуудын массивыг дамжуулж байна // "PrintSelectedItems" менежерийн модулийн функц рууБуцах гарын авлага. Бараа. PrintSelectedItems(Зүйлс. Жагсаалт. Сонгосон мөр) ; Төгсгөлийн функцууд

Энэ тохиолдолд 1С: Аж ахуйн нэгжийн горимд тушаалыг гүйцэтгэх үр дүн дараах байдалтай байна.

Менежерийн модулийн аргыг ашиглах тохиолдолд бид холбоос бүрт объект авахгүйгээр "Бүтээгдэхүүн" каталогийн өгөгдөлд хандах боломжтой. Объектыг авах нь мэдээллийн сангаас бүх өгөгдлийг лавлах элементээр авч, хүлээн авсан өгөгдлийг RAM-д байрлуулахыг хэлдэг тул даалгаврыг хоёр дахь аргаар хэрэгжүүлэх нь гүйцэтгэлд эерэгээр нөлөөлнө. Үнэн хэрэгтээ, энэ тохиолдолд бид хамгийн бага нөөцийг ашиглах болно ( санамсаргүй хандалт санах ой) серверийн машин.

Юу хэрэглэх вэ?

Ердийнх шиг бүх зүйл тодорхой даалгавараас хамаарна. Хэрэв та баримт хэвлэхийг хүсвэл илүү их хамгийн сайн сонголт- менежерийн модулийг ашиглах. Хэрэв та объектыг дүүргэх шаардлагатай бол, жишээлбэл, гадаад боловсруулалтдүүргэх хүснэгтийн хэсгүүд, дараа нь энэ тохиолдолд объектын модульд процедур, функцуудыг байрлуулах нь дээр, учир нь тэдгээрийн ажил нь объекттой яг холбоотой байдаг.

Ердийн тохиргооны "Худалдааны менежмент" хувилбар 11-д баримт бичиг хэвлэх менежерийн модулийг хаа сайгүй ашигладаг. Хэрэв та "Үйлдвэрлэлийн аж ахуйн нэгжийн менежмент" тохиргоог харвал менежерийн модулийг бараг ашигладаггүй, учир нь тохиргоог платформын хуучин хувилбаруудад бичсэн бөгөөд энэ механизмыг бүрэн дэмждэггүй байсан.

Өгүүллийн жишээнүүдийн дагуу тохиргоо.

Хэвлэх (Ctrl+P)

Тохируулгын модны мөчир дээр байрлах объектууд Нийтлэг модулиуд нь бусад тохиргооны модулиас дуудаж болох функц, процедурын текстийг агуулсан байхаар бүтээгдсэн.
АНХААР! Ерөнхий модуль нь зөвхөн процедур болон функцийн тодорхойлолтыг агуулж болно.
Толгой хэсэгт заасан нийтлэг модулийн журам ба функцууд түлхүүр үгЭкспорт бол дэлхийн нөхцөл байдлын нэг бүрэлдэхүүн хэсэг юм. Та 1C: Enterprise хэлний тусламжийн "Програмын модулийн эх текстийн формат" болон "Операторууд" хэсгээс нийтлэг модульд бичих журмын талаар илүү ихийг мэдэж болно.
Нийтлэг модулийг засварлахын тулд "Тохиргоо" цонхны "Common modules"-ийн объектын шинж чанаруудын палитр, "Module" шинж чанарт "Нээх" холбоос дээр дарна уу. Ерөнхий модулийн текстийг 1C: Enterprise текст засварлагч програмын модулийн текст засварлах горимд засварлахаар олгоно.
Тохиргооны нэг хэсэг болох нийтлэг модуль нь зөвхөн тохиргооны нэг хэсэг болгон хадгалагддаг.
Глобал шинж чанар нь хуваалцсан модулийн экспортын аргууд нь дэлхийн контекстийн нэг хэсэг эсэхийг тодорхойлдог.
Хэрэв Глобал шинж чанарыг Үнэн гэж тохируулсан бол хуваалцсан модулийн экспортын аргуудыг дэлхийн контекстийн аргууд болгон ашиглах боломжтой.
Хэрэв Глобал шинж чанарыг худал гэж тохируулсан бол мета өгөгдлийн хуваалцсан модулийн нэртэй харгалзах нэрээр дэлхийн контекстэд өмч үүсгэгдэнэ. Энэ өмчийг зөвхөн унших боломжтой. Энэ шинж чанарын утга нь GenericModule объект юм. Энэ объектоор дамжуулан энэхүү нийтлэг модулийн экспортын аргуудыг ашиглах боломжтой. Тиймээс, дэлхийн бус хуваалцсан модулиудын аргууд руу хандах нь XXXXX.YYYYYY шиг харагдах бөгөөд XXXXX нь хуваалцсан модулийн контекст харгалзах өмчийн нэр, YYYYY нь хуваалцсан модулийн экспортолсон аргын нэр юм.
Жишээ:

WorkWithTradeEquipment.ConnectBarcodeScanner();

Төрөл бүрийн контекст ба нийтлэг модулиуд

Нийтлэг модулиудын шинж чанарууд болон урьдчилсан процессорын зааврыг ашиглан та гүйцэтгэлийг зохион байгуулж болно янз бүрийн аргазөв контекстэд нийтлэг модулиудыг.
Нийтлэг модулийн өмч бүр нь нийтлэг модулийг тодорхой нөхцөлд эмхэтгэх (мөн гүйцэтгэх) чадварыг хариуцдаг.
Хуваалцсан модулийн аргуудыг ашиглах нөхцөлийг хариуцах дараах шинж чанарууд байдаг.
Үйлчлүүлэгч ( тогтмол програм) – нийтлэг модулийн аргууд нь ердийн хэрэглээний горимд зузаан үйлчлүүлэгчдэд боломжтой болно;
● – нийтлэг модулийн аргууд нь нимгэн клиент, вэб клиент, мөн зузаан үйлчлүүлэгчдэд боломжтой болно
удирддаг програмын горим;
● Сервер - нийтлэг модулийн аргууд сервер дээр байх болно;
Гаднах нэгдэл- нийтлэг модулийн аргууд нь гаднах холболтод боломжтой болно.
Хэрэв олон шинж чанарыг нэгэн зэрэг тохируулсан бол энэ нь хуваалцсан модулийн аргуудыг олон контекстэд ашиглах боломжтой гэсэн үг юм.
Хэрэв хуваалцсан модуль нь Серверийн өмч болон бусад өмчийн багцтай бол энэ нь хуваалцсан модуль нь сервер болон сонгосон клиент дээр нэгэн зэрэг боломжтой болно гэсэн үг юм. Үүний зэрэгцээ, энэ нь үнэндээ эмхэтгэсэн кодын хэд хэдэн хувилбар байх болно гэдгийг ойлгох хэрэгтэй (сонгосон үйлчлүүлэгчдийн тоо болон серверийн хувьд).
Энэ тохиолдолд ийм нийтлэг модульд байрлах аргыг клиент талаас дуудвал нийтлэг модулийн клиент хуулбарыг, серверээс бол серверийн хуулбарыг ашиглана. Энэ тохиолдолд урьдчилан процессорын удирдамжийг ашиглан (дэлгэрэнгүй мэдээллийг эндээс үзнэ үү) серверийг үүн дээр ажиллах боломжгүй кодоос "хамгаалах" боломжтой.
Жишээ авч үзье. Хуваалцсан модульд (үүнийг дээр ажиллуулж болно нимгэн үйлчлүүлэгчболон сервер дээр) нимгэн клиент тал болон сервер тал дээр арай өөр үйлдэлтэй арга байдаг. Үүнийг хэрхэн хийж болохыг харцгаая:



#Хэрэв НимгэнҮйлчлүүлэгч бол
// Анхааруулга харуулах
ShowAlertUser("Үйлчлүүлэгч дээр");
#EndIf
Төгсгөлийн процедур
Дараа нь сервер тал дээр код дараах байдлаар харагдах болно.
Процедур CommonModule Method()Экспорт
// Энд янз бүрийн чухал кодууд орно
Төгсгөлийн процедур
Нимгэн үйлчлүүлэгчийн тал дээр код нь иймэрхүү харагдах болно.
Процедур CommonModule Method() Экспорт
// Энд янз бүрийн чухал кодууд орно
// Анхааруулга харуулах
ShowUserAlert("Клиент дээр");
Төгсгөлийн процедур

Хяналтыг үйлчлүүлэгчээс сервер рүү шилжүүлэх хэд хэдэн арга байдаг:
● серверийн нийтлэг модулийн аргыг дуудах;
● маягт эсвэл командын модульд эмхэтгэлийн удирдамжийн өмнө байгаа аргыг дуудна &AtServer, &AtServerWithoutContext

Гэсэн хэдий ч серверийн процедураас үйлчлүүлэгчийн нийтлэг модулиудын аргууд (Серверийн өмчийн багц байхгүй) болон маягтын модулийн клиентийн аргууд эсвэл командын модулийг дуудах боломжгүй юм. Сервер рүү залгах арга дууссаны дараа хяналт нь үйлчлүүлэгч рүү буцаж ирнэ.
Үл хамаарах зүйл бол эмхэтгэлийн удирдамжийн өмнө байдаг маягтын модуль ба тушаалын модулийн аргууд юм. &Клиент дээр Сервер дээр, &ClientAt the ServerWithoutContext
Дараахь зүйлийг мөн дурдах хэрэгтэй.
● Хэрэв хуваалцсан модулийг нэгээс олон үйлчлүүлэгч ашиглах боломжтой бол код бичихдээ үйлчлүүлэгчид тавьж болох хамгийн дээд хязгаарлалтыг анхаарч үзэх эсвэл үйлчлүүлэгчийн тусгай кодыг "тусгаарлах" урьдчилсан процессорын зааврыг ашиглана уу.
● Нийтлэг модуль нь гадаад холболт болон нимгэн клиент, эсвэл (илүү түгээмэл) клиент болон сервер зэрэг олон гүйцэтгэх контексттэй үед урьдчилсан процессорын зааварчилгаа нь утга учиртай байдаг. Энэ тохиолдолд урьдчилсан процессорын заавар нь сервер дээр ашиглах боломжгүй, гэхдээ үйлчлүүлэгч дээр боломжтой интерактив кодыг ороосон болно (дээрх жишээг үзнэ үү).
Процессорын заавар, эмхэтгэлийн зааврын талаар нэмэлт мэдээлэл авахыг хүсвэл 1С: Аж ахуйн нэгжийн хэлний тусламжийн Процедур ба функцийг гүйцэтгэх хэсгээс үзнэ үү.
Server Invocation шинж чанар нь серверийн нийтлэг модулийн экспортын аргуудыг үйлчлүүлэгчийн кодоос дуудаж болох эсэхийг хянадаг.
Хэрэв өмчийг тохируулсан бол сервер талын хуваалцсан модулийн экспортын аргуудыг үйлчлүүлэгч дуудах боломжтой. Хэрэв өмчийг тохируулаагүй бол ийм экспортын аргуудыг зөвхөн серверийн аргуудаас дуудаж болно (серверийн нийтлэг модулиудын аргууд ба маягтын модуль ба тушаалын модулиудын серверийн аргууд).
Зөвлөгөө. Сервер талын нийтлэг модуль нь үйлчлүүлэгчээс дуудахыг хүсэхгүй байгаа аргуудыг агуулсан тохиолдолд (жишээлбэл, аюулгүй байдлын үүднээс) Server Invocation шинж чанарыг худал болгож тохируулахыг зөвлөж байна.
Анхаарна уу. Хэрэв шинж чанаруудыг нэгэн зэрэг тохируулсан бол Үйлчлүүлэгч (ердийн програм), Үйлчлүүлэгч (удирдлагатай програм), Гаднах нэгдэл, дараа нь Дуудлагын серверийн шинж чанар автоматаар дахин тохируулагдана. Хэрэв дуудлагын серверийн шинж чанарыг тохируулсан бол шинж чанарууд автоматаар дахин тохируулагдана Үйлчлүүлэгч (ердийн програм), Үйлчлүүлэгч (удирдлагатай програм)Тэгээд Гаднах нэгдэлхэрэв эдгээр шинж чанаруудыг нэгэн зэрэг тохируулсан бол.
Өмч Давуу эрхтэйнийтлэг модулийн аргуудыг гүйцэтгэх үед хандалтын хяналтыг идэвхгүй болгох зорилготой юм.
ЖИЧ. Хэрэв өмч Давуу эрхтэйтохируулагдсан бол серверийн шинж чанарыг нийтлэг модульд автоматаар тохируулж, бусад шинж чанаруудыг дахин тохируулна ( Үйлчлүүлэгч (ердийн програм), Үйлчлүүлэгч (удирдлагатай програм)болон Б гадаад холболт). Давуу эрхтэй хуваалцсан модуль нь зөвхөн сервер дээр ажиллах боломжтой.

Буцах утгыг дахин ашиглаж байна

Хэрэв хуваалцсан модуль нь глобал биш бол буцаах утгыг дахин ашиглах шинж чанар боломжтой болно. Энэ өмч нь дараах утгыг авч болно:
● Бүү ашигла - Энэ хуваалцсан модулийн функцүүдэд буцаах утгыг дахин ашиглахгүй.
● Дуудлага тус бүр ба сесс бүр - Хуваалцсан модуль нь өгөгдлийг дахин ашиглах илрүүлэх аргыг ашигладаг. Энэ аргын мөн чанар нь кодыг гүйцэтгэх явцад систем нь функцийн эхний дуудлагын дараа параметрүүд болон функцүүдийн үр дүнг санаж байдагт оршино. Функцийг ижил параметрүүдээр дахин дуудах үед функцийг өөрөө гүйцэтгэхгүйгээр хадгалагдсан утгыг (эхний дуудлагаас) буцаана. Хэрэв функц гүйцэтгэх явцад параметрийн утгыг өөрчилсөн бол функцийг дахин дуудах нь үүнийг хийхгүй.
Дуудлагын үр дүнг хадгалах дараах шинж чанаруудыг ялгаж салгаж болно.
● Хэрэв функц сервер дээр ажиллаж, серверийн кодоос дуудагдсан бол параметрийн утгууд болон дуудлагын үр дүнг серверийн тал дахь одоогийн сессийн хувьд санах болно;
● Хэрэв функц нь зузаан эсвэл нимгэн үйлчлүүлэгч дээр ажилладаг бол параметрийн утгууд болон дуудлагын үр дүнг клиент талд хадгална;
● Хэрэв функц серверийн талд хэрэгжиж, үйлчлүүлэгчийн кодоос дуудагдсан бол дуудлагын параметрүүдийн утгууд нь үйлчлүүлэгч болон серверийн талд (одоогийн сессийн хувьд) хоёуланд нь санах болно.
Хадгалагдсан утгуудыг устгасан:
● Хэрэв тухайн өмчийг Дуудлагын хугацаанд гэж тохируулсан бол:
● сервер талд – серверээс хяналт буцаж ирэх үед;
● үйлчлүүлэгчийн талд – дээд түвшний 1С: Аж ахуйн нэгжийн процедур эсвэл функц дуусах үед (системээс өөр 1С: Аж ахуйн нэгжийн процедур эсвэл функцээс биш интерфейсээс дууддаг);
● хэрэв хуваалцсан модулийн шинж чанарыг сессийн хугацаанд гэж тохируулсан бол:
● сервер талд – сессийн төгсгөлд;
● үйлчлүүлэгч талд – үйлчлүүлэгчийн програм хаагдсан үед.
Хадгалсан утгууд устах болно:
● сервер, зузаан клиент, гадаад холболт, нимгэн клиент болон вэб клиент дээр хэвийн хурдхолболтууд - хадгалагдсан утгыг тооцоолсны дараа 20 минутын дараа эсвэл сүүлчийн ашиглалтаас 6 минутын дараа;
● нимгэн клиент болон холболтын хурд багатай вэб клиент дээр - хадгалагдсан утгыг тооцоолсны дараа 20 минутын дараа;
● серверийн ажиллах явцад RAM дутагдалтай үед;
● ажлын урсгалыг дахин эхлүүлэх үед;
● Үйлчлүүлэгч өөр ажлын урсгал руу шилжих үед.
Утгыг устгасны дараа экспортолсон функц руу залгах нь эхний дуудлагатай адил хийгдэнэ.
Процедурыг хэрэгжүүлэх өмч өгсөннийтлэг модулиудад өртөхгүй - процедурыг үргэлж гүйцэтгэдэг.

Хэрэв хуваалцсан модуль нь буцаах утгыг дахин ашиглах тохиргоотой бол экспортолсон функцийн параметрийн төрөлд хэд хэдэн хязгаарлалт тавигдана. Параметрийн төрлүүд нь зөвхөн:
● Анхдагч төрлүүд ( Тодорхойгүй, NULL, Boolean, Тоо, мөр, огноо).
● Өгөгдлийн сангийн объектуудын лавлагаа.
● Дээрх төрлийн өмчийн утгатай бүтэц. Энэ тохиолдолд параметрүүдийн таних чанарыг бүтцийн "агуулгаар" хянадаг.
Хэрэв экспортлогдсон функц нь ямар нэгэн объектыг буцаавал кэшэд хадгалагдсан объектын лавлагааг буцаана. Хэрэв энэ лавлагааг хүлээн авсны дараа объектын төлөв өөрчлөгдвөл ижил функц руу залгах нь функцийг бодитоор гүйцэтгэхгүйгээр аль хэдийн өөрчлөгдсөн объектын лавлагааг буцаана. Хадгалсан утгыг арилгах хүртэл (ямар ч шалтгаанаар) энэ үйлдэл үргэлжлэх болно. Өөрөөр хэлбэл, буцаах утгуудыг дахин ашиглах замаар хуваалцсан модулиас функц дуудсаны үр дүнд олж авсан объектын төлөвийг өөрчлөх нь уг функцийг бодитоор дуудах үндэс суурь биш юм. Мөн буцаж ирсэн объектын кэш нь хайхрамжгүй ханддаг гэдгийг санаарай
буцаах утгуудыг дахин ашигласан функц дуудлагын үеийн давуу горимын төлөв. Энэ шинж чанар нь дараах зан үйлд хүргэж болно.
● Буцах утгыг дахин ашиглах функцийн дуудлагын бодит гүйцэтгэл (эхний дуудлага) давуу эрхтэй горимыг идэвхжүүлсэн үед хийгдсэн.
● Функцийг гүйцэтгэх үед давуу горимыг идэвхгүй болгосноор хүлээн авах боломжгүй объект хүлээн авсан.
● Функц руу дараагийн дуудлага нь давуу горимыг тохируулахгүйгээр хийгдсэн.
● Гэсэн хэдий ч буцаж ирсэн объектуудын кэшийг цэвэрлэх эсвэл бодит дуудлага дахин хийх хүртэл функц нь албан ёсоор хандах боломжгүй объектыг буцаана.
● Урвуу үйлдэл нь бас үнэн бөгөөд анхны дуудлага нь давуу горимыг тохируулахгүйгээр хийгдсэн бөгөөд давуу горим нь давуу горимд авсан байж болзошгүй объектыг буцааж өгөхгүй.

Хэрэв нийтлэг модуль нь өмчтэй бол Буцах утгыг дахин ашиглаж байнасессийн хугацаанд гэж тохируулсан бол ийм модулийн функцээр буцаж ирсэн утгууд нь төрлийн утгыг ашиглах боломжгүй. Түр зуурын ширээний менежер.
Хэрэв дахин ашиглах багц бүхий хуваалцсан модулийн функцийг ижил хуваалцсан модулиас дуудсан бол (жишээлбэл, SharedModule гэсэн нэрээр) та дараах функцийг санах хэрэгтэй: хэрэв функц MyFunction() нэрээр дуудагдсан бол, дараа нь функцийг дуудах болгонд уг функцийг гүйцэтгэх болно. Хадгалагдсан утгуудыг ашиглахын тулд функцийг бүрэн нэрээр нь дуудах ёстой:
GeneralModule.MyFunction().
Глобал контекст арга нь тухайн аргыг хаана дуудсанаас үл хамааран серверийн болон үйлчлүүлэгчийн бүх дахин ашигласан утгыг устгадаг. Уг аргыг хэрэгжүүлсний дараа UpdateReusableValues()Эхний функцийн дуудлага бүрэн гүйцэтгэгдэх болно.