1c суурь даалгавар. Тогтмол болон суурь даалгавар. Суурь ба төлөвлөсөн ажил - энэ юу вэ, хаана тохируулагдсан бэ?

1 Ажлын механизм
2 Суурь ажил
3 Төлөвлөсөн ажил
4 Файл болон клиент-сервер хувилбарт далд ажлыг гүйцэтгэх онцлог
5 Ердийн даалгаварт мета өгөгдөл үүсгэх
6 Ажлын консол
7 Ердийн ажилтай ажиллах
7.1 Ажлын объектууд
7.2 Даалгаврын жагсаалтыг авах
7.3 Бүтээлт
7.4 Устгах
7.5 Ажлын объект авах

Ажлын механизм

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

Даалгаврын механизм нь дараахь ажлуудыг шийддэг.

  • Системийн тохиргооны үе шатанд зохицуулалтын журмыг тодорхойлох чадвар;
  • Заасан арга хэмжээг хуваарийн дагуу гүйцэтгэх;
  • Өгөгдсөн процедур эсвэл функц руу асинхрон дуудлага хийх, i.e. дуусгахыг хүлээхгүйгээр;
  • Тодорхой даалгаврын явцыг хянах, түүний гүйцэтгэлийн статусыг олж авах (амжилттай байсан эсэхийг харуулсан утга);
  • Одоогийн ажлуудын жагсаалтыг авах;
  • Нэг буюу хэд хэдэн ажлыг дуусгахыг хүлээх чадвар;
  • Ажлын менежмент (цуцлах боломж, гүйцэтгэлийг хаах гэх мэт).

Ажлын механизм нь дараахь бүрэлдэхүүн хэсгүүдээс бүрдэнэ.

  • Ердийн ажлуудын мета өгөгдөл;
  • Тогтмол даалгавар;
  • Суурь ажил;
  • Даалгавар хуваарьлагч.

Суурь ажлууд нь хэрэглээний даалгавруудыг асинхроноор гүйцэтгэхэд зориулагдсан. Суурь даалгавруудыг суулгасан хэлийг ашиглан гүйцэтгэдэг.

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

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

Даалгаврын хуваарьлагч нь ердийн ажлуудын гүйцэтгэлийг төлөвлөхөд ашиглагддаг. Төлөвлөсөн ажил бүрийн хувьд хуваарь гаргагч нь хийгдэж байгаа эсэхийг үе үе шалгадаг одоогийн огнооболон ердийн ажлын хуваарийн цаг. Хэрэв таарч байвал хуваарь гаргагч тэр даалгаврыг гүйцэтгэхэд онооно. Үүнийг хийхийн тулд энэ хуваарьт ажлын хувьд төлөвлөгч нь бодит боловсруулалтыг гүйцэтгэдэг суурь даалгаврыг үүсгэдэг.

Суурь ажил

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

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

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

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

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

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

Амжилттай эсвэл бүтэлгүйтсэн үндсэн ажлуудыг 24 цагийн турш хадгалж, дараа нь устгана. Гүйцэтгэсэн арын ажлын тоо 1000-аас хэтэрсэн тохиолдолд хамгийн хуучин дэвсгэр ажлуудыг мөн устгана.

Төлөвлөсөн ажлууд

Төлөвлөсөн ажлуудыг хуваарийн дагуу тодорхой үе үе эсвэл нэг удаагийн үйлдлүүдийг хийх шаардлагатай үед ашигладаг.

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

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

Анхаарна уу. Файлын хувилбар дээр ажиллахдаа даалгавар төлөвлөгчийг ажиллуулахгүйгээр ердийн ажлуудыг үүсгэж, засах боломжтой.

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

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

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

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

Ердийн ажлын хуваарийн жишээ:

Цаг бүр, нэг л өдөр

RepeatDays Period = 0, RepeatDays Period = 3600

Өдөр бүр өдөрт нэг удаа

RepeatDays Period = 1, RepeatDays Period = 0

Нэг өдөр, нэг удаа

Давтагдах өдрүүд = 0

Өдөр бүр, өдөрт нэг удаа

Давтагдах өдрүүд = 2

Өдөр бүр 01.00-07.00 цаг бүр

Давтагдах өдрүүд = 1
Өдрийн давталтын үе = 3600
Эхлэх цаг = 01.00
Дуусах цаг = 07.00

Бямба, Ням гараг бүр 09.00 цагаас

Давтагдах өдрүүд = 1
Долоо хоногийн өдрүүд = 6, 7
Эхлэх цаг = 09.00

Нэг долоо хоногийн турш өдөр бүр, долоо хоног алгасах

Давтагдах өдрүүд = 1
Долоо хоног = 2

01.00 цагт нэг удаа

Эхлэх цаг = 01.00

Сар бүрийн сүүлийн өдөр 9:00 цагт.

Давтагдах өдрүүд = 1
Сарын өдөр = -1
Эхлэх цаг = 09.00

Сар бүрийн тав дахь өдрийн 9:00 цагаас

Давтагдах өдрүүд = 1
Сарын өдөр = 5
Эхлэх цаг = 09.00

Сар бүрийн хоёр дахь Лхагва гарагийн 9:00 цагаас

Давтагдах өдрүүд = 1
DayWeekInMonth = 2
Долоо хоногийн өдрүүд = 3
Эхлэх цаг = 09.00

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

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

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

Үүнийг санах нь чухал Дуусах цагзаавал заасан хугацаанд үндсэн ажлыг дуусгах албагүй. Зарим мэдэгдэл:
* Арын ажил гацаагүй ч ямар нэг шалтгаанаар үргэлжлүүлэн ажиллаж байвал автоматаар цуцлагдахыг үл тоомсорлож болно
бүх платформын үйл ажиллагааг буцаах боломжгүй. Хэрэв биелүүлсэн бол мөчлөгийн кодсуулгасан хэл, дараа нь ажлыг цуцлах
үгүй ч байж магадгүй. Энэ бүхэн тухайн ажил юу хийхээс хамаарна.
* Дуусах цаг - ажил дуусахаас илүү эхэлж болох хил хязгаар вэ?
* Даалгаврыг албадан дуусгах нь гүйлгээний эхлэлд хийсэн өөрчлөлтийг буцаах уу?

Файл болон клиент-серверийн хувилбарт далд ажлыг гүйцэтгэх онцлогууд

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

  • Файлын хувилбарт та үндсэн ажлуудыг гүйцэтгэх тусгай клиент процессыг үүсгэх хэрэгтэй. Үүнийг хийхийн тулд үйлчлүүлэгчийн процесс нь ExecuteJobProcessing глобал контекст функцийг үе үе дуудах ёстой. Нэг мэдээллийн баазад зөвхөн нэг клиент процесс нь далд ажлуудыг боловсруулах ёстой (мөн үүний дагуу дуудлага хийх энэ функц). Хэрэв үндсэн ажлуудыг боловсруулах үйлчлүүлэгчийн процесс үүсгээгүй бол ажлын хөдөлгүүрт программчлан нэвтрэх үед "Ажлын менежер идэвхгүй байна" гэсэн алдаа гарч ирнэ. Бусад функцүүдэд далд ажлыг боловсруулдаг клиент процессыг ашиглахыг зөвлөдөггүй.

Үйлчлүүлэгчийн процессын үндсэн ажлуудыг боловсруулж эхэлмэгц бусад үйлчлүүлэгчийн процессууд үндсэн ажлын хөдөлгүүрт программчлагдсан байдлаар хандах боломжтой, i.e. суурь ажлуудыг ажиллуулж, удирдах боломжтой.

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

Үйлчлүүлэгч-сервер хувилбарт ердийн даалгаврын гүйцэтгэлийг хаах боломжтой. Дараах тохиолдолд ердийн даалгаврын гүйцэтгэлийг хаадаг.

  • Мэдээллийн санд ердийн ажлуудыг тодорхой хориглохыг суулгасан. Түгжээг кластерийн консолоор тохируулж болно;
  • Мэдээллийн сан дээр холболтын блок байдаг. Түгжээг кластерийн консолоор тохируулж болно;
  • True параметртэй SetExclusiveMode() аргыг суулгасан хэлнээс дуудсан;
  • Бусад зарим тохиолдолд (жишээлбэл, мэдээллийн сангийн тохиргоог шинэчлэх үед).

Ердийн даалгаварт мета өгөгдөл үүсгэх

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

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

Аргын нэр - ердийн ажлын аргын нэрийг заана.

Түлхүүр - хуваарьт даалгаврын түлхүүр болгон ашиглах дурын мөрийн утгыг зааж өгнө.

Хуваарь - ердийн ажлын хуваарийг заана. Хуваарь үүсгэхийн тулд "Нээх" холбоос дээр товшоод нээгдэх хуваарийн хэлбэрт шаардлагатай утгыг тохируулна уу.

"Ерөнхий" таб дээр даалгаврын эхлэх, дуусах огноо, давтагдах горимыг зааж өгсөн болно.

"Өдөр тутмын" таб дээр ажлын өдрийн хуваарийг зааж өгсөн болно.

Хуваарийг зааж өгнө үү:

  • ажил эхлэх, дуусах цаг;
  • даалгаврыг дуусгах хугацаа, дараа нь албадан дуусгах болно;
  • даалгаврын давталтын хугацаа;
  • давталтын хоорондох завсарлага;
  • гүйцэтгэх хугацаа.

Нөхцөлүүдийн дурын хослолыг зааж өгөхийг зөвшөөрнө.

"Долоо хоног бүр" таб дээр ажлын долоо хоногийн хуваарийг зааж өгсөн болно.

Даалгаврыг гүйцэтгэх долоо хоногийн өдрүүдийн нүдийг сонго. Хэрэв та даалгавраа давтахыг хүсч байвал давталтын интервалыг долоо хоногоор зааж өгнө үү. Жишээлбэл, даалгаврыг 2 долоо хоногийн дотор гүйцэтгэдэг, давталтын утга нь 2 байна.

"Сар бүр" таб дээр ажлын сарын хуваарийг зааж өгсөн болно.

Даалгаврыг гүйцэтгэх саруудын нүдийг сонго. Шаардлагатай бол тухайн сар/долоо хоногийн эхэн эсвэл эцэс хүртэл гүйцэтгэх тодорхой өдрийг (сар эсвэл долоо хоног) зааж өгч болно.

Хэрэглээ - хэрэв тохируулсан бол даалгаврыг хуваарийн дагуу гүйцэтгэнэ.

Урьдчилан тодорхойлсон - хэрэв тохируулсан бол даалгавар нь урьдчилан тодорхойлсон ажил болно.

Хэвийн бус дуусгавар болсон тохиолдолд дахин оролдох тоо - хэвийн бус дуусгавар болсон тохиолдолд дахин оролдлого хийх тоог заана.

Хэвийн бус дуусгавар болох дахин оролдох интервал - хэвийн бус дуусгавар болох үед дахин оролдох интервалыг заана. Жишээ

"Бүтэн текст хайлтын индексийг шинэчлэх" суурь ажлыг үүсгэх:

BackgroundTasks.Run("UpdatingFullTextSearchIndex");

"Дараалалыг сэргээх" ердийн даалгавар үүсгэх:

Хуваарь = Шинэ хуваарь даалгавар;
Schedule.PeriodRepeatDays = 1;
Schedule.RepeatPeriodDuringDay = 0;

Task = RoutineTasks.CreateRoutineTask("Дараалалыг сэргээх");
Ажлын хуваарь = Цагийн хуваарь;
Task.Write();

Ажлын консол

ITS-ээр боловсруулж, ердийн ажлуудыг удирддаг: ConsoleTasks.epf

Ердийн даалгавартай ажиллах

Ажлын объектууд

Ажлын объектууд нь лавлагаагүй боловч мэдээллийн санд зарим тусгай санд хадгалагддаг.

Хэрэв мета өгөгдөлд "Урьдчилан тодорхойлсон" туг идэвхжсэн бол 1C: Enterprise програмыг ажиллуулахад ийм объект автоматаар үүсгэгддэг бөгөөд яг нэг тохиолдолд үргэлж байдаг. Ийм объектыг устгах боломжгүй.

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

Даалгавруудын жагсаалтыг авч байна

Даалгаврын жагсаалтыг аргыг ашиглан авч болно Ердийн даалгавар авахдэлхийн ажлын менежер Ердийн даалгавар

Хуваарьт ажлын менежер

Хуваарьт ажлын байр авах (GetScheduledJobs)

Синтакс:

Ердийн даалгавар авах(<Отбор>)

Параметрүүд:

<Отбор>(заавал биш)

Төрөл: бүтэц. Сонголтыг тодорхойлох бүтэц. Бүтцийн утгууд нь: UniqueIdentifier, Түлхүүр, Мета өгөгдөл, Урьдчилан тодорхойлсон, Хэрэглээ, Нэр байж болно. Сонголтыг заагаагүй бол бүх ердийн ажлуудыг авна.

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

Буцах утга:

Төрөл: Массив.

Тодорхойлолт:

Өгөгдсөн сонголтын олон тооны ердийн ажлуудыг хүлээн авдаг. Төлөвлөсөн ажлуудыг зөвхөн админ хүлээн авах боломжтой.

Боломжтой байдал:

Зохицуулалтын мөчлөгийн тогтмол үе бүрийн хувьд
NewLine = Хуваарьт ажлын жагсаалт.Add();
NewRow.Metadata = Regular.Metadata.View();
NewLine.Name = Regular.Name;
NewString.Key = Regular.Key;
NewLine.Schedule = Schedule.Schedule;
NewLine.User = Regular.UserName;
NewString.Predefined = Regular.Predefined;
NewString.Use = Regular.Use;
NewString.Identifier = Regular.UniqueIdentifier;

LastTask = Regular.LastTask;
Хэрэв LastTask тодорхойгүй бол
NewLine.Running = LastTask.Start;
NewRow.State = LastTask.State;
endIf;
Төгсгөлийн мөчлөг;

Бүтээл

Тогтмол даалгаврын менежерт зориулсан Хэвийн даалгавар үүсгэх аргаар үүсгэсэн:

RoutineTask = RoutineTasks.CreateRoutineTask(MetadataSelection);

RegularTask.Name = Нэр;
RegularTask.Key = Түлхүүр;
RegularTask.Use = Хэрэглээ;
RoutineTask.UserName = UsersSelection;
Ердийн даалгавар.Онцгой байдлын үед дуусгах давталтын тоо =Онцгой байдлын үед дуусгах давталтын тоо;
ScheduledTask.RepeatIntervalAtEmergencyCompletion = Дахин оролдохIntervalAtEmergencyCompletion;
ScheduleTask.Schedule = Хуваарь;
RegularTask.Record();

TaskObject = RoutineTasks.CreateRoutineTask("ExchangeExchange");

TaskObject.Name = Нэр;
JobObject.Use = Үнэн;

Даалгаврын объект нь аргын параметрүүдийг заасан "Параметрүүд" талбартай:

Хуваарьт ажил

Параметрүүд

Хэрэглээ:

Унших, бичих.

Тодорхойлолт:

Төрөл: Массив. Төлөвлөсөн ажлын параметрийн массив. Параметрүүдийн тоо, найрлага нь ердийн ажлын аргын параметртэй тохирч байх ёстой.

Боломжтой байдал:

Сервер, зузаан үйлчлүүлэгч, гаднах нэгдэл.

Жич:

Унших, бичих чадварыг зөвхөн админ ашиглах боломжтой.

Устгах

Даалгаврын объектын Delete() аргыг ашиглан устгасан:

ScheduledTask.Delete();

Ажлын объект авах

  • GetRoutineTasks аргаар жагсаалт:
    Routine = RoutineTasks.GetRoutineTasks(Сонголт);
  • Ажлын менежерийн аргын FindByUniqueIdentifier-ээр дамжуулан:
    Task = ScheduledTasks.FindByUniqueIdentifier(UID);

[Та холбоосыг үзэхийн тулд бүртгүүлэх ёстой]

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

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

Хамгийн тохиромжтой нь арын ажил нь клиент-сервер хувилбарт хэрэгждэг бөгөөд энэ тохиолдолд ачаалал бүхэлдээ серверт очдог. Файлын сонголтын хувьд суурь ажил хийх боломжтой боловч зарим онцлог шинж чанартай байдаг.

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


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

Суурь ажлыг удирдахад бидэнд ямар хэрэгсэл байна вэ? Энэ байгууламж нь мета өгөгдлийн объект юм "Арын даалгаврын менежер". Энэ объект нь аргатай "Гүйх", энэ аргыг ашиглан суурь ажлыг эхлүүлнэ.

Энэ нь дараах параметрүүдтэй:
"Аргын нэр"- гүйцэтгэх процедур эсвэл функцийн нэр бөгөөд энэ нь серверийн контекстийн процедур эсвэл функц байх ёстой;

"Сонголтууд"- элементийн тоо нь параметрт заасан манай процедур/функцийн параметрүүдийн тоотой тохирч байх ёстой параметрүүдийн массив. "Аргын нэр";

"Түлхүүр"- тодорхой өвөрмөц байдлын түлхүүр, энэ нь арын даалгаврыг эхлүүлэх шаардлагатай эсэх, эсвэл ийм ажил аль хэдийн ажиллаж байгаа эсэхийг систем ойлгох шугам юм;

"Нэр"- энд та манай аргын дур зоргоороо тайлбарыг зааж өгч болно.

Буцах утга нь объект юм "Арын даалгавар", одоогийн аргын нэр, одоогийн түлхүүр болон өөр хэд хэдэн шинж чанар, аргуудыг агуулсан. Ийм аргуудын нэг нь арга юм "Бүрэн хүлээнэ үү". Үүний зорилго нь арын ажил дуусах хүртэл системд юу ч хийхгүй байхыг хэлж чадна.

Суурь ажил 1С 8.2, 8.3 - Ашиглалтын жишээ

1С суурь ажилтай ажиллах жишээг өгье. Нэгдүгээрт, бид 1С системийг богино хугацаанд ачаалах энгийн алгоритмыг бий болгох бөгөөд энэ үед бид юу ч хийж чадахгүй.

Үүнийг хийхийн тулд:

1. Нийтлэг модуль үүсгэцгээе "Арын дэвсгэр даалгавар зохицуулагчид", серверийн тал дээр эмхэтгэх болно;


2. Бид түүнд экспортын журмыг тайлбарлах болно "ProduceBackgroundCalculation(Parameter)", энэ нь мөрийн төрлийн нэг параметрийг авдаг;

Процедур PerformBackgroundCalculation(Параметр) ExportStartTime = CurrentDate() ;< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление(While CurrentDate() - Эхлэх цаг"Зарим параметр"
Бэлэн. Одоо та боловсруулалт хийж, товчлуур дээр дарахад систем хэдэн секундын турш хөлддөг бөгөөд энэ хугацаанд юу ч хийх боломжгүй юм. Энэ бол яг бидний хийх ёстой зүйл байсан юм.

Одоо бид эдгээр тооцооллыг арын дэвсгэр дээр, өөрөөр хэлбэл 1С 8.2, 8.3-ийн даалгаврыг гүйцэтгэх боловч бидэнд саад болохгүй байх болно.

Үүнийг хийхийн тулд:

1. Боловсруулах явцад товчлуур дарах үйл явдалд дараах кодыг бичнэ.

Procedure KnPress() параметрүүд = Шинэ массив; While CurrentDate() - Эхлэх цагСонголтууд. нэмэх( );Суурь даалгавар. Гүйх ( "Арын даалгаврын зохицуулагчид. Арын тооцоолол хийх""Зарим параметр"

, Параметрүүд, Шинэ UniqueIdentifier, "Туршилтын даалгавар"Энд бид нийтлэг модулийн процедурын нэрийг эхний параметр болгон, хоёр дахь параметрийн массивыг дамжуулдаг. Гурав дахь параметрийг нэвтрүүлэх ёстой

өвөрмөц түлхүүр

  • Дөрөвдүгээрт, бидний үйл ажиллагааны зарим тайлбар.
  • Ихэнхдээ бүртгэл хөтлөхдөө хэрэглэгчийн оролцоогүйгээр тодорхой үйлдлийг үе үе хийх шаардлагатай байдаг. 1С дахь ердийн болон суурь даалгавар нь хөтөлбөрийн найм дахь хувилбарт энэ зорилгоор өгөгдсөн механизмууд бөгөөд дараахь боломжийг олгодог.
  • Баримт бичгийг цаг тухайд нь хүргэх ажлыг зохион байгуулах;
  • Үлдэгдэл болон нийт дүнг тооцоолох;

Шуудангийн давтамжийг баталгаажуулах;

Үл хамаарах өгөгдлийг шалгаж устгана уу.

Суурь ба төлөвлөсөн ажил - энэ юу вэ, хаана тохируулагдсан бэ?

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

  • Суурь ажил нь ердийн үйлдлээр үүсгэгддэг үйлдэл бөгөөд хэрэглэгчийн шууд оролцоог шаарддаггүй.
  • Тохируулагчийн горимд ердийн даалгавар үүсдэг:
  • Тохиргооны модны цонхонд бид харгалзах салбарыг олдог (Зураг 1);

Нэмэх товчийг дарна уу;

  • Нээгдсэн цонхонд та тохиргоонд байгаа объектыг таних боломжийг олгодог нэрийг зааж өгөх ёстой;

Зураг 2

  • "Хуваарь" гэсэн бичээсийн эсрэг талд (Зураг 2) "Нээлттэй" гэсэн бичээс байгаа бөгөөд үүн дээр дарснаар зохицуулагчийн гүйцэтгэх хугацаа, давтамжийг тохируулах цонх нээгдэнэ (Зураг 3);
  • Зураг 3
  • Мөн "Аргын нэр" -ийг бөглөх шаардлагатай (ерөнхий модулиас дуудагдсан, програмын зан үйлийн алгоритмыг тодорхойлсон процедурын нэрийг энд оруулна);
  • Хэрэв зохицуулагчийг өгөгдлийн санд нэмсний дараа шууд эхлүүлэх шаардлагатай бол "Урьдчилан тодорхойлсон" тохиргоог хийх ёстой, эс тэгвээс эхлүүлэхийг харгалзах боловсруулалтаас хийж болно (энэ талаар доор дэлгэрэнгүй үзнэ үү);
  • "Дахин оролдлого хийх тоо" болон "Дахин оролдох интервал" параметрүүд нь үндсэн ажлыг гүйцэтгэх явцад үл хамаарах зүйл тохиолдвол програмын үйл ажиллагааг тодорхойлдог.

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

Суурь ажлын онцлог

Энэ механизмын гол онцлог нь арын процесс асинхроноор ажилладагт оршино.

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

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

Үйлчлүүлэгч-сервер горимд ажиллах онцлог

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

Файл горим дахь арын ажил

8.3.3.641 платформ хувилбараас өмнө файлын хувилбарт суурь ажлуудтай ажиллахад зарим хүндрэл бэрхшээл тулгарч байсан:

  1. Хуваарьлагчийг сольж, өдрийн цагаар ажиллах тусдаа сесс эхлүүлэх шаардлагатай байв;
  2. Энэ сесс нь RunJobProcessing() аргыг үе үе гүйцэтгэх ёстой.

Шинэчлэгдсэний дараа зузаан, нимгэн клиентүүдийн эхлэл бүр нь "Нэмэлт" талбарт эхлүүлэх тохиргоонд (Зураг 4) AllowExecuteScheduledJobs товчлуурыг зааж өгсөн бол мэдээллийн санд холбогдох нэмэлт урсгалыг эхлүүлдэг бөгөөд энэ нь мэдээллийн санд нөлөөлөхгүй. хэрэглэгчийн ажлыг ямар ч байдлаар хийдэг, гэхдээ зөвхөн үндсэн үйлдлүүдийг гүйцэтгэдэг.

Зураг 4

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

Төлөвлөсөн ажлуудыг хэрхэн идэвхгүй болгох вэ

Ашиглагдаагүй ажлуудыг объектын шинж чанар дахь "Ашиглах" нүдийг сонгосноор идэвхгүй болгож болно.

Администратор нь бүхэл бүтэн мэдээллийн санд ердийн болон суурь үйлдлүүдийг ашиглахыг хориглох шаардлагатай тохиолдолд (жишээлбэл, хэд хэдэн мэдээллийн сан сервер дээр хадгалагддаг бөгөөд тэдгээрийн зөвхөн нэг нь гол нь, үлдсэн нь зөвхөн ашиглагддаг. хөгжүүлэлтийн хувьд), мэдээллийн сангийн удирдлагын хэрэгслийг ашиглах шаардлагатай. Та мөн сервер дээр үүсгэсэн мэдээллийн сан дахь "Ердийн ажлуудыг блоклох" нүдийг чагтална уу.

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

Асинхрон програмчлалын үзэл баримтлал

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

Тэдгээр. Асинхрон програмчлалын гол санаа нь дуудлагыг дуусгахыг хүлээлгүйгээр бие даасан аргын дуудлагуудыг гаргаж, бусад ажлыг зэрэгцүүлэн хийх явдал юм.

Онцгой тохиолдлын магадлалыг бууруулдаг зарим аргууд нь асинхрон хандлагыг шаарддаггүй, харин бусад нь хөгжлийн эхэн үед үүнийг шаарддаг.

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

Синхроноор ажиллах үед програм нь зөвхөн нэг урсгалтай байдаг. Асинхрон програмчлалын загвараар та олон урсгалыг зэрэгцүүлэн ажиллуулж, хэрэглэгчийн шинэ үйлдэлд хариу үйлдэл үзүүлэх боломжтой. n-thread-ыг гүйцэтгэсний дараа та үр дүнг дэлгэц дээр харуулна.

1С: Enterprise 8 дахь үндсэн даалгавар

1C: Enterprise 8-д суурь ажлууд нь хэрэглээний даалгавруудыг асинхроноор гүйцэтгэхэд зориулагдсан. Тэд жишээлбэл, клиент-серверийн горимд кластерын өөр өөр серверүүд дээр нарийн төвөгтэй тооцооллыг зэрэгцүүлэхийн тулд хүүхдийн суурь ажлыг үүсгэж болно.

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

Даалгаврын механизм нь клиент-сервер болон файлын үйлдлийн горимд хоёуланд нь ажилладаг боловч хоёр хувилбарын даалгаврыг удирдах, гүйцэтгэх чадвар нь арай өөр юм.

Үйлчлүүлэгч-серверийн сонголт

Үйлчлүүлэгч-серверийн хувилбарт даалгаврын хуваарийг кластер менежерт физик байдлаар байрлуулсан даалгавар төлөвлөгч гүйцэтгэдэг.

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

Файлын сонголт

Платформын 8.3.3.641 хувилбараас эхлэн хөгжүүлэгчид файлын хувилбарт суурь ажлуудтай ажиллах ажлыг ихээхэн хялбаршуулсан.

Өмнө нь даалгавруудыг автоматаар гүйцэтгэхийн тулд даалгаврын хуваарь болгон ашигладаг тусдаа, нэмэлт 1C: Enterprise сессийг эхлүүлэх шаардлагатай байв. Мөн энэ хуралдаанд суулгасан хэлний аргыг үе үе гүйцэтгэх шаардлагатай байв ExecuteTaskProcessing().Энэ арга нь нэлээд төвөгтэй, тохиромжгүй байсан бөгөөд ажлын файлын хувилбарт суурь болон ердийн ажлуудын хэрэглээг ихээхэн хязгаарласан.

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

Жагсаалтад орсон програмууд бүр өөрийн үндсэн даалгавруудыг гүйцэтгэдэг. Хэрэв өргөдөл хэд хэдэн үндсэн ажлыг эхлүүлсэн бол тэдгээрийг хүлээн авсан дарааллаар нь дараалан гүйцэтгэнэ.

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

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

1C: Enterprise 8 дээр асинхрон кодыг гүйцэтгэх жишээ

"Функцийн дуудлагын үр дүн хэзээ мэдэгдэхгүй ирдэг програм бичих нь энгийн програмуудаас хамаагүй хэцүү байдаг. Оруулсан дуудлага, алдаатай ажиллах, юу болж байгааг хянах - бүх зүйл илүү төвөгтэй болж байна" гэж платформын чадварыг хэрхэн зөв ашиглахаа мэдэхгүй хүмүүс л хэлэх болно, гэхдээ бид биш!

1С: Enterprise 8 дээр асинхрон код гүйцэтгэх энгийн бөгөөд дэгжин байдлыг харуулцгаая!

Алхам 1.Тохиргоог боловсруулах мэдээллийн аюулгүй байдлын шинэ системийг бий болгоё

Алхам 2.Тохиргоонд бид "Асинхрон зохицуулагчид" ерөнхий модулийг нэмнэ.

Бид яагаад хуваалцсан модулийг нэмсэн бэ? Энд бүх зүйл энгийн: 1C: Enterprise 8-д асинхрон үйлдлүүдийг гүйцэтгэхийн тулд өөрийн менежер болох "BackgroundTask Manager" бүхий суурь ажлуудыг ашигладаг. Энэ объект нь "Run" аргатай бөгөөд үүний тусламжтайгаар далд ажлыг эхлүүлдэг.

Синтакс туслах руу хандъя.

Тиймээс бидэнд нийтлэг модуль хэрэгтэй болно.

Алхам 3."Асинкрон зохицуулагчид" ерөнхий модульд бид OurLongOperation() экспортын процедурыг нэмнэ.

Процедур OurLongOperation(Duration) Export // Урт хугацааны үйл ажиллагааны загварчлал (Үргэлжлэх хугацаа сек.).< Длительность Цикл КонецЦикла; КонецПроцедуры

OperationStartDate = CurrentDate(); While CurrentDate() - Үйл ажиллагаа эхлэх огноо

Алхам 4.

"Асинхрон програмчлалын үзэл баримтлал" боловсруулалтыг тохиргоонд нэмнэ (та гадаад боловсруулалтыг үүсгэж болно)

Маягтанд нэг атрибут нэмнэ үү:

Үргэлжлэх хугацаа (Тоо)

ба хоёр баг

LongOperation хийх;Урт хугацааны үйлдлийг асинхроноор гүйцэтгэнэ.

&Клиентийн процедур дээр Long-RunningOperation(Command)-г гүйцэтгэх ExecuteLong-RunningOperationOnServer(); EndProcedure &OnServer Procedure ExecuteLongOperationOnServer() AsynchronousHandlers.OurLongOperation(Duration); Процедурын төгсгөл & Үйлчлүүлэгчийн Процедур дээр Удаан ажиллаж буй үйлдлийг асинхроноор гүйцэтгэх (Тушаал) Сервер дээр удаан үргэлжилсэн үйлдлийг асинхроноор гүйцэтгэх (); Процедурын төгсгөл &Сервер дээр Процедур Сервер() дээр удаан үргэлжилсэн үйлдлийг асинхронгүйгээр гүйцэтгэх Параметрүүд = Шинэ массив;

Параметрүүд.Нэмэх(Үргэлжлэх хугацаа); BackgroundTasks.Execute("AsynchronousHandlers.OurLongOperation", Параметрүүд, Шинэ UniqueIdentifier, "Асинхрон програмчлалын ойлголтын жишээ"); Процедурын төгсгөл

Алхам 6.

Эхэлж, шалгацгаая!

Үр дүн: Хэрэв бид "Урт ажиллагаа гүйцэтгэх" товчийг дарвал хэрэглэгчийн интерфейс "Үргэлжлэх хугацаа" секундын турш хаагдана;Хэрэв бид "Удаан хугацааны үйл ажиллагааг асинхроноор гүйцэтгэх" товчийг дарвал хэрэглэгчийн интерфэйс хаагдахгүй, гэхдээ

програмын код

зэрэгцээ ажилладаг.

Програмын код асинхроноор биелэгдэж байгаа эсэхийг бид бүртгэлээс харж болно.

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

BSP ашиглан 1C: Enterprise 8 дээр асинхрон кодыг гүйцэтгэх жишээ

"Одоогийн үйл явдлууд" боловсруулалтын жишээг ашиглан BSP дахь 1C: Enterprise 8 дахь асинхрон програмчлалын үзэл баримтлалыг хэрэгжүүлэх жишээг авч үзье.

Логик нь дараах байдалтай байна: програмыг эхлүүлэх үед "Одоогийн үйл явдал" боловсруулах маягтыг харуулах эхлэл хуудасны ажлын талбарыг эхлүүлнэ. Энэ маягт нь хэрэглэгчийн одоогийн үйлдлээр бөглөгдсөн бөгөөд үүнийг бөглөхөд цаг хугацаа шаардагдана. Хэрэв хөгжүүлэгчид кодыг асинхроноор гүйцэтгэх чадваргүй байсан бол боловсруулах маягтыг бөглөх бүх хугацаанд хэрэглэгчийн интерфейс хаагдах болно!

Маягтын програмын кодыг шинжилье.

"When CreatedOnServer" маягтын үйл явдал нь "RunBackgroundTask" процедурыг дууддаг - энэ нь бидэнд хэрэгтэй зүйл юм.

Нарийн мэдрэмжинд сатааралгүйгээр энэ процедурт дүн шинжилгээ хийцгээе Энд бид үндсэн ажлын менежер болон түүний "Run" аргыг ашиглаж байгааг харж байна. Хөгжүүлэгчид үндсэн ажилд зориулсан өвөрмөц ID-г хадгалдаг гэдгийг анхаарна уу.<ИмяПроцедуры>, <Интервал>, <Однократно>).



Үүнийг хийхийн тулд хөгжүүлэгчид энэ аргыг ашигладаг ConnectWaitHandler(Холбогдсон процедурт Connectable_CheckTaskComplete()


Энэ функц нь арын ажлын гүйцэтгэлийг танигчаар шалгадаг.

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

Тиймээс 1C: Enterprise 8 дахь асинхрон програмчлалын үзэл баримтлал нь хөгжүүлэгчийн асуудлыг шийдвэрлэх нарийн төвөгтэй байдлыг бага зэрэг нэмэгдүүлдэг боловч хэрэглэгчийн үүднээс програмын үйл ажиллагааг эрс сайжруулдаг.

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

Та доорх жишээг ашиглан дэлгэрэнгүй зааврыг олох болно.

1С дахь ердийн болон үндсэн ажлууд гэж юу вэ

  • Төлөвлөсөн ажлууднь өгөгдсөн хуваарийн дагуу тодорхой үйлдлийг гүйцэтгэхэд зориулагдсан тусгай 1С Enterprise 8.3 механизм юм.
  • Суурь ажил- Хэрэглэгч эсвэл 1С 8.2 програмистын оролцоогүйгээр төлөвлөсөн үйлдлийг шууд гүйцэтгэдэг ердийн даалгавраар үүсгэгдсэн объектууд.

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

1С клиент-сервер горимд далд ажлыг тохируулах

Эхлээд шинэ мета өгөгдлийн объект - ердийн даалгавар үүсгэцгээе. Би даалгавраа "Валютын ханшийг ачаалах" гэж нэрлэх болно. Энэ тохиргооны объектын шинж чанаруудын палитрыг харцгаая:

1С дээр 267 видео хичээлийг үнэгүй аваарай:

  • Аргын нэр- өгөгдсөн хуваарийн дагуу үндсэн ажилд гүйцэтгэх процедурын зам. Процедур нь нийтлэг модульд байх ёстой. Стандартыг ашиглахгүй, харин өөрөө бүтээхийг зөвлөж байна. Арын даалгаврууд сервер дээр ажилладаг гэдгийг бүү мартаарай!
  • Хэрэглээ- ердийн ажлыг ашиглаж байгаа шинж тэмдэг.
  • Урьдчилан тодорхойлсон- ердийн ажил урьдчилан тодорхойлсон эсэхийг заана. Хэрэв та ердийн ажлыг мэдээллийн санд байршуулсны дараа шууд ажиллахыг хүсвэл энэ тугийг зааж өгнө үү. Үгүй бол та Job Console боловсруулалтыг ашиглах эсвэл ажлыг программын дагуу ажиллуулах шаардлагатай болно.
  • Ажил хэвийн бусаар дуусгавар болох үед дахин оролдох тоо- алдаатай гүйцэтгэсэн бол арын ажлыг хэдэн удаа дахин эхлүүлсэн бэ.
  • Ажил хэвийн бусаар дуусах үед дахин оролдох интервал- хэрэв арын ажил алдаатай дууссан бол хэр олон удаа дахин эхлүүлэх вэ.

Мөн хамгийн сонирхолтой тохиргоо нь Хуваарь:

Энд та "Аргын нэр" талбарт заасан процедурын эхлүүлэх интервалыг тохируулна уу. Би тохируулсан гэж бодъё

Анхаар! DBMS түвшинд ердийн болон суурь даалгавруудыг хаахаа бүү мартаарай!

Үүнийг клиент-серверийн хувилбарын удирдлагын хэрэгслээр эсвэл шинэ мэдээллийн сан үүсгэх үед хийж болно.

1С файлын горимд ердийн ажлуудыг тохируулах

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

Файлын горимд "RunTaskProcessing()" аргыг эхлүүлэх үед ердийн ажлыг эхлүүлдэг.

Тодорхой хэрэглэгчийн хувьд та энэ аргыг өөр аргыг ашиглан ажиллуулахаар тохируулж болно -

Энд бид үндсэн ажлын менежер болон түүний "Run" аргыг ашиглаж байгааг харж байна. Хөгжүүлэгчид үндсэн ажилд зориулсан өвөрмөц ID-г хадгалдаг гэдгийг анхаарна уу. <ИмяПроцедуры>, <Интервал>, <Однократно>).

  • Процедурын нэр— хүлээлтийн зохицуулагчаар холбогдсон процедурын нэр. Экспортолсон модулийн процедурын нэр удирддаг програм(ердийн хэрэглээний модуль) эсвэл дэлхийн нийтлэг модуль. Процедур нь үйлчлүүлэгч дээр байрлах ёстой.
  • Интервал- үйлдлийн гүйцэтгэлийн хоорондох хугацаа секундээр.
  • Нэг удаа- даалгаврыг нэг удаа эсвэл үгүй ​​хийж дуусгах.

ConnectWaitHandler, 3600);

1С тохируулагч дээр ердийн ажлыг хэрхэн тохируулахыг харуулсан хоёр минутын видео:

Шүүмж