Սկսեք ֆոնային աշխատանք ծրագրային կերպով: Ֆոնային աշխատանքներ. առանձնահատկություններ, հնարավորություններ, կարգավորումներ Նախապատմական աշխատանք 1s 8.2

1C-ում աշխատելիս կան բազմաթիվ սովորական գործողություններ, որոնք պետք է գործարկվեն կամ ձևավորվեն ըստ ժամանակացույցի՝ այս կամ այն ​​գործողությունը կատարելու համար, օրինակ՝ փաստաթղթերի տեղադրում կամ վեբկայքից տվյալների բեռնում 1C-ում:

Վերջերս ես հրապարակեցի մի հոդված. Ժամանակն է ավտոմատացնել սա.

Սովորական և ֆոնային առաջադրանքներ

Աշխատանքային շարժիչը նախագծված է ցանկացած կիրառություն կամ գործառույթ իրականացնելու համար ժամանակացույցով կամ ասինխրոն կերպով:

Առաջադրանքի մեխանիզմը լուծում է հետևյալ խնդիրները.

  • Համակարգի կազմաձևման փուլում կարգավորող ընթացակարգեր սահմանելու ունակություն.
  • Նշված գործողությունների կատարումը ըստ ժամանակացույցի;
  • Տվյալ պրոցեդուրա կամ գործելու ասինխրոն զանգ կատարելը, այսինքն. առանց սպասելու դրա ավարտին;
  • Հետևել կոնկրետ առաջադրանքի առաջընթացին և ստանալ դրա ավարտի կարգավիճակը (արժեք, որը ցույց է տալիս, թե արդյոք այն հաջող էր, թե ոչ);
  • Ընթացիկ առաջադրանքների ցանկի ձեռքբերում;
  • Մեկ կամ մի քանի առաջադրանքների ավարտին սպասելու ունակություն;
  • Աշխատանքի կառավարում (չեղարկման հնարավորություն, կատարման արգելափակում և այլն):

Աշխատանքի մեխանիզմը բաղկացած է հետևյալ բաղադրիչներից.

  • Սովորական առաջադրանքների մետատվյալներ;
  • Կանոնավոր առաջադրանքներ;
  • Նախնական աշխատանք;
  • Առաջադրանքների ժամանակացույց.

Ֆոնային աշխատանքներ և նախագծված են կիրառական առաջադրանքները ասինխրոն կերպով կատարելու համար: Ֆոնային առաջադրանքներն իրականացվում են ներկառուցված լեզվով:

Պլանավորված առաջադրանքներ և նախատեսված են կիրառական առաջադրանքները ժամանակացույցով կատարելու համար: Սովորական առաջադրանքները պահվում են տեղեկատվական բազայում և ստեղծվում են կոնֆիգուրացիայի մեջ սահմանված մետատվյալների հիման վրա: Կարգավորող առաջադրանքի մետատվյալները պարունակում են տեղեկություններ, ինչպիսիք են անվանումը, մեթոդը, օգտագործումը և այլն:

Սովորական առաջադրանքն ունի ժամանակացույց, որը որոշում է, թե որ ժամերին պետք է կատարվի սովորական առաջադրանքի հետ կապված մեթոդը: Ժամանակացույցը, որպես կանոն, նշվում է տեղեկատվական բազայում, բայց կարող է նշվել նաև կազմաձևման փուլում (օրինակ՝ կանխորոշված ​​սովորական առաջադրանքների համար):

Առաջադրանքների ժամանակացույցն օգտագործվում է սովորական առաջադրանքների կատարումը պլանավորելու համար: Յուրաքանչյուր ծրագրված աշխատանքի համար ժամանակացույցը պարբերաբար ստուգում է, թե արդյոք ընթացիկ ամսաթիվը և ժամը համապատասխանում է պլանավորված աշխատանքի ժամանակացույցին: Եթե ​​այն համընկնում է, ժամանակացույցը հանձնարարում է այդ առաջադրանքը կատարմանը: Դա անելու համար այս պլանավորված առաջադրանքի համար ժամանակացույցը ստեղծում է ֆոնային առաջադրանք, որն իրականացնում է իրական մշակումը:

Կարծում եմ, որ դա բավարար է նկարագրությամբ. եկեք անցնենք իրականացմանը.

Սովորական առաջադրանքի ստեղծում

Մեթոդի անվանումը– ուղին դեպի ընթացակարգ, որը կկատարվի ֆոնային աշխատանքում՝ համաձայն տվյալ ժամանակացույցի: Ընթացակարգը պետք է լինի ընդհանուր մոդուլում: Խորհուրդ է տրվում չօգտագործել սովորական սովորական մոդուլներ, այլ ստեղծել ձերը: Մի մոռացեք, որ ֆոնային աշխատանքները աշխատում են սերվերում:

Օգտագործումը– սովորական առաջադրանք օգտագործելու նշան.

Կանխորոշված– ցույց է տալիս, թե արդյոք սովորական առաջադրանքը կանխորոշված ​​է:

Եթե ​​ցանկանում եք, որ սովորական առաջադրանքն աշխատի տվյալների բազայում տեղադրվելուց անմիջապես հետո, նշեք հատկանիշը Կանխորոշված. Հակառակ դեպքում, դուք պետք է օգտագործեք «Job Console» մշակումը կամ գործարկեք առաջադրանքը ծրագրային կերպով գործարկելու համար:

Կրկնվող փորձերի քանակը, երբ առաջադրանքն անսովոր կերպով ավարտվում է– քանի անգամ է վերագործարկվել ֆոնային աշխատանքը, եթե այն կատարվել է սխալմամբ:

Կրկին փորձեք ընդմիջում, երբ աշխատանքը անսովոր կերպով ավարտվում է– որքան հաճախ է ֆոնային աշխատանքը կվերագործարկվի, եթե այն ավարտված է սխալով:

Ժամանակացույցի ստեղծում

Ժամանակացույցառաջադրանքը կատարելով.

Ամեն ժամ, ընդամենը մեկ օրRepeatDays Period = 0, RepeatDays Period = 3600
Ամեն օր օրը մեկ անգամRepeatDays Period = 1, RepeatDays Period = 0
Մի օր, մեկ անգամPeriodRepeatDays = 0
Երկու օրը մեկ օրը մեկ անգամԺամանակաշրջան Կրկնվող Օրեր = 2
Ամեն ժամ 01.00-ից 07.00 ամեն օրPeriodRepeatDays = 1 RepeatPeriodDuringDay = 3600StartTime = 01.00

Ավարտի ժամը = 07.00

Ամեն շաբաթ և կիրակի ժամը 09.00RepeatDays Period = 1WeekDays = 6, 7StartTime = 09.00
Մեկ շաբաթ ամեն օր, մեկ շաբաթ բաց թողեքPeriodRepeatDays = 1 PeriodWeeks = 2
Ժամը 01.00 մեկ անգամՄեկնարկի ժամը = 01.00
Ամեն ամսվա վերջին օրը ժամը 9:00-ին:PeriodRepeatDays = 1DayInMonth = -1StartTime = 09.00
Ամսվա հինգերորդ օրը ժամը 9:00PeriodRepeatDays = 1 DayIn Month = 5 StartTime = 09.00
Յուրաքանչյուր ամսվա երկրորդ չորեքշաբթի ժամը 9:00PeriodRepeatDays = 1ՕրՇաբաթԱմիս = 2ՕրՇաբաթ = 3

Մեկնարկի ժամը = 09.00

Ֆայլի և հաճախորդ-սերվերի տարբերակներում ֆոնային աշխատանքների կատարման առանձնահատկությունները

Ֆայլի և հաճախորդ-սերվերի տարբերակներում ֆոնային աշխատանքների կատարման մեխանիզմները տարբեր են:

Ֆայլի տարբերակումդուք պետք է ստեղծեք հատուկ հաճախորդի գործընթաց, որը կկատարի ֆոնային աշխատանքներ: Դա անելու համար հաճախորդի գործընթացը պետք է պարբերաբար կանչի գլոբալ համատեքստի գործառույթը ExecuteJobProcessing: Միայն մեկ հաճախորդի գործընթաց յուրաքանչյուր տեղեկատվական բազայի համար պետք է մշակի ֆոնային աշխատանքները (և, համապատասխանաբար, կանչի այս գործառույթը): Եթե ​​հաճախորդի գործընթաց չի ստեղծվել ֆոնային աշխատանքների մշակման համար, ապա ծրագրային կերպով աշխատանքի շարժիչ մուտք գործելու ժամանակ կցուցադրվի «Աշխատանքի կառավարիչը ակտիվ չէ» սխալը: Խորհուրդ չի տրվում օգտագործել հաճախորդի գործընթաց, որը մշակում է ֆոնային աշխատանքները այլ գործառույթների համար:

Երբ հաճախորդի գործընթացի մշակման ֆոնային աշխատանքները սկսվեն, հաճախորդի այլ գործընթացները կարող են ծրագրային կերպով մուտք գործել ֆոնային աշխատանքների շարժիչ, այսինքն. կարող է գործարկել և կառավարել ֆոնային աշխատանքները:

Հաճախորդ-սերվեր տարբերակումՖոնային աշխատանքները կատարելու համար օգտագործվում է առաջադրանքների ժամանակացույց, որը ֆիզիկապես գտնվում է կլաստերի կառավարիչում: Բոլոր հերթագրված ֆոնային աշխատանքների համար ժամանակացույցը ստանում է ամենաքիչ բեռնված աշխատանքային գործընթացը և օգտագործում այն ​​համապատասխան ֆոնային աշխատանքը գործարկելու համար: Աշխատանքային գործընթացը կատարում է աշխատանքը և ծանուցում է ժամանակացույցին կատարման արդյունքների մասին:

Հաճախորդ-սերվեր տարբերակում հնարավոր է արգելափակել սովորական առաջադրանքների կատարումը։ Սովորական առաջադրանքների կատարումն արգելափակվում է հետևյալ դեպքերում.

  • Տեղեկատվական բազայում տեղադրվել է սովորական առաջադրանքների բացահայտ արգելափակում: Կողպեքը կարող է տեղադրվել կլաստերի վահանակի միջոցով;
  • Ինֆաբազայում միացման բլոկ կա: Կողպեքը կարող է տեղադրվել կլաստերի վահանակի միջոցով;
  • True պարամետրով SetExclusiveMode() մեթոդը կանչվել է ներկառուցված լեզվից;
  • Որոշ այլ դեպքերում (օրինակ, տվյալների բազայի կոնֆիգուրացիան թարմացնելիս):

Պլանավորված առաջադրանքների գործարկման և դիտման մշակումկարող եք ներբեռնել այստեղ:

Ասինխրոն ծրագրավորման հայեցակարգ

Ասինխրոն ծրագրավորման հայեցակարգն այն է, որ ֆունկցիայի արդյունքը անմիջապես հասանելի չէ, բայց որոշ ժամանակ անց ինչ-որ ասինխրոն (կատարման նորմալ կարգը խախտող) զանգի տեսքով:

Նրանք. Ասինխրոն ծրագրավորման հիմնական գաղափարն այն է, որ թողարկվեն անհատական ​​մեթոդով զանգեր և շարունակեն զուգահեռ կատարել այլ աշխատանքներ՝ չսպասելով զանգերի ավարտին:

Որոշ մեթոդներ, որոնք նվազագույնի են հասցնում բացառությունների հավանականությունը, չեն պահանջում ասինխրոն մոտեցում, իսկ մյուսները դա պահանջում են զարգացման հենց սկզբում:

Ինչպես երևում է գրաֆիկներից, համաժամանակյա ծրագրավորման մոդելով օգտատերերի օգտակար ինտերակտիվ գործողությունների գործակից չկա, քանի որ համակարգը արգելափակում է օգտագործողի միջերեսը, մինչդեռ ասինխրոն մոդելի դեպքում օգտվողը շարունակում է ակտիվորեն աշխատել համակարգում:

Սինքրոն աշխատելիս հավելվածն ունի միայն մեկ շղթա։ Ասինխրոն ծրագրավորման մոդելի միջոցով դուք կարող եք զուգահեռաբար գործարկել բազմաթիվ թելեր և արձագանքել օգտվողի նոր գործողություններին, երբ դրանք աշխատում են: n-thread-ը գործարկելուց հետո արդյունքը ցուցադրում եք էկրանին:

Ֆոնային առաջադրանքներ 1C:Enterprise 8-ում

1C:Enterprise 8-ում ֆոնային աշխատանքները նախատեսված են կիրառական առաջադրանքները ասինխրոն կերպով կատարելու համար: Նրանք կարող են ստեղծել մանկական ֆոնային աշխատանքներ, օրինակ՝ կլաստերի տարբեր աշխատող սերվերների վրա բարդ հաշվարկները զուգահեռեցնելու հաճախորդ-սերվերի ռեժիմում:

Հնարավոր է սահմանափակել ֆոնային աշխատանքների կատարումը, որոնք ունեն նույն մեթոդները՝ հիմնվելով կիրառման կոնկրետ չափանիշի վրա: Ծրագրային ֆոնային աշխատատեղերի ստեղծումն ու կառավարումը հնարավոր է ցանկացած օգտվողի միացումից համակարգի տեղեկատվական բազայի հետ: Ֆոնային աշխատանքն աշխատում է այն ստեղծած օգտատիրոջ անունից:

Առաջադրանքի մեխանիզմը գործում է և՛ հաճախորդ-սերվեր, և՛ ֆայլի գործողության ռեժիմներում, սակայն երկու տարբերակներում էլ առաջադրանքների կառավարման և կատարման հնարավորությունները փոքր-ինչ տարբեր են:

Հաճախորդ-սերվեր տարբերակ

Հաճախորդ-սերվեր տարբերակում առաջադրանքների պլանավորումն իրականացվում է առաջադրանքների ժամանակացույցի կողմից, որը ֆիզիկապես գտնվում է կլաստերի կառավարիչում:

Ժամանակացույցը պարբերաբար ստուգում է՝ տեսնելու, թե արդյոք ֆոնային աշխատանքներ գործարկելու հարցումներ են ստացվել: Եթե ​​կան աշխատանքներ, որոնք պետք է կատարվեն, ժամանակացույցը որոշում է կլաստերի ամենաքիչ բեռնված աշխատանքային գործընթացները և հաջորդաբար հանձնարարում է դրանցից յուրաքանչյուրին կատարել իր առաջադրանքը: Այսպիսով, միևնույն աշխատողի գործընթացը կարող է պոտենցիալ զուգահեռ կատարել բազմաթիվ աշխատանքներ: Աշխատանքային գործընթացի կողմից աշխատանք ստանալուց հետո աշխատանքային գործընթացը կապ է հաստատում տեղեկատվական բազայի հետ և կատարում է աշխատանքը այդ կապի շրջանակներում: Աշխատանքի ավարտից հետո աշխատանքային գործընթացը ծանուցում է ժամանակացույցին՝ աշխատանքը հաջողությամբ կամ անհաջող ավարտված լինելու մասին:

Ֆայլի տարբերակ

Սկսած պլատֆորմի 8.3.3.641 տարբերակից՝ մշակողները զգալիորեն պարզեցրել են աշխատանքը ֆոնային աշխատանքների հետ ֆայլային տարբերակում։

Նախկինում առաջադրանքները ավտոմատ կերպով կատարելու համար անհրաժեշտ էր գործարկել առանձին, լրացուցիչ 1C:Enterprise նիստ, որն օգտագործվում էր որպես առաջադրանքների ժամանակացույց: Եվ այս նիստում անհրաժեշտ էր պարբերաբար կատարել ներկառուցված լեզվի մեթոդը ExecuteTaskProcessing():Այս մոտեցումը բավականին ծանր էր, անհարմար և մեծապես սահմանափակեց ֆոնային և սովորական առաջադրանքների օգտագործումը աշխատանքի ֆայլային տարբերակում:

Այժմ ամեն ինչ շատ ավելի հեշտ է դարձել։ Եթե ​​սկսվում է բարակ կամ հաստ հաճախորդը, ինչպես նաև եթե վեբ սերվերն ունի հաճախորդի կապեր, ապա այս հավելվածներից յուրաքանչյուրում ավտոմատ կերպով գործարկվում է մեկ այլ թեմա տվյալների բազայի հետ կապով: Այս թելերը զբաղվում են ֆոնային և առօրյա առաջադրանքների կատարմամբ:

Թվարկված հավելվածներից յուրաքանչյուրը կատարում է իր ֆոնային առաջադրանքները: Եթե ​​դիմումը նախաձեռնել է մի քանի ֆոնային աշխատանքներ, դրանք կատարվում են հաջորդաբար՝ ըստ ստացման հերթականության:

1C ֆոնային աշխատանքների ակնհայտ թերությունըՔանի որ դրանք կատարվում են սերվերի կողմից, օգտատիրոջ հետ ինտերակտիվ աշխատանքի հնարավորություն չկա (օրինակ՝ անհնար է ցուցադրել հաղորդագրություն կամ որևէ այլ տեղեկատվություն. այս բոլոր տվյալները պետք է պահվեն տեղեկատվական բազայում և հետագայում մշակվեն: ինչ-որ կերպ):

Հարկ է նշել, որ ֆոնային աշխատանքները զուտ ծրագրային օբյեկտներ են և չեն կարող պահպանվել տվյալների բազայում: Այսինքն՝ մենք կարող ենք ստեղծել միայն դասի օրինակ, սկզբնավորել նրա հատկությունները և գործարկել այն կատարման համար։

1C:Enterprise 8-ում ասինխրոն կոդի կատարման օրինակ

«Ծրագրեր գրելը, որոնցում ֆունկցիայի կանչի արդյունքը հասնում է անհայտ, երբ շատ ավելի դժվար է, քան սովորականները: Ներդրված զանգեր, սխալների կառավարում, վերահսկում, թե ինչ է կատարվում, ամեն ինչ ավելի բարդ է դառնում», սա կասեն միայն նրանք, ովքեր չգիտեն, թե ինչպես ճիշտ օգտագործել հարթակի հնարավորությունները, բայց ոչ մենք:

Եկեք ցուցադրենք ասինխրոն կոդի կատարման պարզությունն ու նրբագեղությունը 1C:Enterprise 8-ում:

Քայլ 1.Եկեք ստեղծենք տեղեկատվական անվտանգության նոր համակարգ կոնֆիգուրացիայի մշակման համար

Քայլ 2.Կազմաձևում մենք կավելացնենք «Ասինխրոն կառավարիչներ» ընդհանուր մոդուլը

Ինչու՞ ենք մենք ավելացրել ընդհանուր մոդուլ: Այստեղ ամեն ինչ պարզ է. 1C:Enterprise 8-ում ասինխրոն գործողություններ կատարելու համար օգտագործվում են ֆոնային աշխատանքներ, որոնք ունեն իրենց սեփական մենեջերը՝ «BackgroundTask Manager»: Այս օբյեկտն ունի «Run» մեթոդ, որի օգնությամբ գործարկվում է ֆոնային առաջադրանքը։

Եկեք դիմենք շարահյուսության օգնականին:

Այսպիսով, մեզ անհրաժեշտ կլինի ընդհանուր մոդուլ:

Քայլ 3.«Asyncroous Handlers» ընդհանուր մոդուլում մենք կավելացնենք արտահանման ընթացակարգը OurLongOperation()

Ընթացակարգ OurLongOperation(Duration) Export // Երկարաժամկետ գործողության մոդելավորում (Duration sec.): OperationStartDate = CurrentDate(); Մինչ CurrentDate() - Գործողության մեկնարկի ամսաթիվը< Длительность Цикл КонецЦикла; КонецПроцедуры

Քայլ 4.Կազմաձևին ավելացրեք «Ասինխրոն ծրագրավորման հայեցակարգ» մշակումը (կարող եք ստեղծել արտաքին մշակում)

Ձևին ավելացրեք մեկ հատկանիշ.

Տևողությունը (համար)

և երկու թիմ

Կատարել LongOperation;

Կատարեք երկարատև գործողություն ասինխրոն կերպով:

Քայլ 5.Ըստ շարահյուսության օգնականի, լրացրեք ձևի մոդուլը

&Հաճախորդի ընթացակարգի վրա Կատարել Long-RunningOperation(Command) ExecuteLong-RunningOperationOnServer(); EndProcedure &OnServer Procedure ExecuteLongOperationOnServer() AsynchronousHandlers.OurLongOperation(Duration); Ընթացակարգի ավարտը &Հաճախորդի ընթացակարգի մասին Կատարել երկարատև գործողություն ասինխրոն (հրաման) Կատարել երկարատև գործողություն անսինխրոն սերվերում (); Ընթացակարգի ավարտը &Սերվերի ընթացակարգի վրա Կատարել երկարատև գործողություն՝ ասինխրոն կերպով Սերվերի վրա () Պարամետրեր = Նոր զանգված; Parameters.Add(Duration); BackgroundTasks.Execute ("AsynchronousHandlers.OurLongOperation", Parameters, New UniqueIdentifier, "Asynchronous ծրագրավորման հայեցակարգի օրինակ"); Ընթացակարգի ավարտը

Քայլ 6.Եկեք գործարկենք և ստուգենք:

Արդյունք:

Եթե ​​մենք սեղմում ենք «Կատարել երկար գործողություն» կոճակը, ապա օգտագործողի միջերեսը արգելափակվում է «Տևողություն» վայրկյանով;

Եթե ​​սեղմենք «Կատարել երկարատև աշխատանք ասինխրոն» կոճակը, ապա օգտատիրոջ միջերեսը արգելափակված չէ, և ծրագրի կոդը կատարվում է զուգահեռ:

Մենք կարող ենք ստուգել, ​​որ ծրագրի կոդը ասինխրոն է կատարվում՝ նայելով տեղեկամատյանը:

Մենք կարող ենք վրիպազերծել ծրագրի կոդը, որն աշխատում է «ֆոնում», եթե վրիպազերծման պարամետրերում սահմանենք համապատասխան հատկությունը:

1C:Enterprise 8-ում ասինխրոն կոդի կատարման օրինակ՝ օգտագործելով BSP

Դիտարկենք BSP-ում 1C:Enterprise 8-ում ասինխրոն ծրագրավորման հայեցակարգի իրականացման օրինակ՝ օգտագործելով «Ընթացիկ գործերի» մշակման օրինակը:

Տրամաբանությունը հետևյալն է. երբ ծրագիրը գործարկվում է, սկզբնավորվում է մեկնարկային էջի աշխատանքային տարածքը, որտեղ կարող է ցուցադրվել «Ընթացիկ գործեր» մշակման ձևը: Այս ձևը լրացվում է օգտագործողի ընթացիկ գործերով, և այն լրացնելու համար ժամանակ է պահանջվում: Եթե ​​մշակողները չունենան կոդի ասինխրոն գործարկման հնարավորություն, ապա օգտատիրոջ միջերեսը կարգելափակվի մշակման ձևը լրացնելիս:

Եկեք վերլուծենք ձևի ծրագրային կոդը։

«When CreatedOnServer» ձևի իրադարձությունը կոչում է «RunBackgroundTask» ընթացակարգը, սա այն է, ինչ մեզ անհրաժեշտ է:

Առանց նրբերանգներից շեղվելու, եկեք վերլուծենք այս ընթացակարգը

Եվ այստեղ մենք տեսնում ենք, որ օգտագործվում է ֆոնային աշխատանքի կառավարիչը և դրա «Run» մեթոդը: Նկատի ունեցեք, որ մշակողները պահում են եզակի ID ֆոնային աշխատանքի համար:

Դա անելու համար մշակողները օգտագործում են մեթոդը ConnectWaitHandler (<ИмяПроцедуры>, <Интервал>, <Однократно>).



Կապակցված ընթացակարգով Connectable_CheckTaskComplete()մշակողները կոչում են գործառույթը Աշխատանքն ավարտված է (TaskID)


Այս ֆունկցիան ստուգում է ֆոնային աշխատանքի կատարումն ըստ նույնացուցիչի:

Հարկ է նշել, որ BSP-ն մշակել է ընդհանուր մոդուլներ՝ երկարաժամկետ սերվերային գործառնություններն աջակցելու համար:

Այսպիսով, 1C:Enterprise 8-ում ասինխրոն ծրագրավորման հայեցակարգը մի փոքր մեծացնում է ծրագրավորողի համար խնդիրների լուծման բարդությունը, բայց զգալիորեն բարելավում է ծրագրի ֆունկցիոնալությունը օգտվողի տեսանկյունից:

Թույլ է տալիս մեզ համակարգում կատարել ցանկացած հաշվարկ՝ աննկատ օգտագործողի կողմից, այսինքն՝ հետին պլանում։ Ավելին, այս մեխանիզմը թույլ է տալիս զուգահեռացնել հաշվարկման գործընթացը։ Մենք նույնիսկ կարող ենք զուգահեռացնել այն ընթացակարգը, որը կատարվելու է։ Դա անելու համար մեր ֆոնային աշխատանքը պետք է գործարկի ևս մի քանի ֆոնային աշխատանք: Այս դեպքում պրոցեսները զուգահեռվում են, և եթե մենք ունենանք բազմապրոցեսորային, բազմամիջուկ համակարգ, մեր ալգորիթմը արդյունավետ կաշխատի։ Մի քանի գործընթացներ գործարկելուց հետո մենք կարող ենք համակարգին ասել, որ այն պետք է սպասի այս գործընթացների ավարտին, որպեսզի ինչ-որ կերպ համատեղի արդյունքը:

Օրինակ, տիպիկ կոնֆիգուրացիաներում, մինչ օգտատերը աշխատում է, տարբեր տեսակի ֆոնային սպասարկման աշխատանքներ են կատարվում: Դա կարելի է վկայել գրանցամատյանում գրանցված գրառումներով, որոնք արձանագրում են նման գործողությունների կատարման փաստը: Ավելին, դա որևէ կերպ չի ազդում օգտագործողի աշխատանքի վրա, նա պարզապես չի նկատում դրանք:

Իդեալում, ֆոնային աշխատանքն իրականացվում է հաճախորդ-սերվեր տարբերակում, որի դեպքում ամբողջ բեռը գնում է սերվեր: Ինչ վերաբերում է ֆայլի տարբերակին, ապա հնարավոր է ֆոնային աշխատանք, սակայն այն ունի որոշ առանձնահատկություններ։

Ահա թե ինչ կարտադրի համակարգը, եթե հաշվի չառնեք այս հատկանիշները և չգործարկեք ֆոնային աշխատանք տեղեկատվական բազայի ֆայլային տարբերակում:


1C ֆոնային աշխատանքը որոշ սահմանափակումներ ունի:Քանի որ այն աշխատում է սերվերի կողմից, օգտվողի հետ ինտերակտիվ աշխատանքի հնարավորություն չկա: Օրինակ, դուք չեք կարող ցուցադրել հաղորդագրություն կամ ընդհանրապես որևէ տեղեկատվություն: Այս բոլոր տվյալները պետք է պահվեն տեղեկատվական բազայում և ինչ-որ կերպ հետագա մշակվեն:
Կապվելով շարահյուսության օգնականի հետ՝ կարող եք ավելի մանրամասն տեղեկություններ ստանալ 1C ֆոնային աշխատանքների մասին: Այստեղ պետք է նշել, որ այս օբյեկտը զուտ ծրագրային է և այն որևէ կերպ չի պահվում տվյալների բազայում։ Այսինքն՝ մենք ստեղծում ենք դասի օրինակ, նախաստորագրում ենք հատկությունները և գործարկում ենք այն կատարման համար։

Ի՞նչ գործիքներ ունենք ֆոնային աշխատանքները կառավարելու համար: Այս հաստատությունը մետատվյալների օբյեկտ է «Background Task Manager». Այս օբյեկտն ունի մեթոդ «Վազիր», օգտագործելով այս մեթոդը, գործարկվում է ֆոնային աշխատանքը:

Այն ունի հետևյալ պարամետրերը.
«Մեթոդի անունը»- կատարվող ընթացակարգի կամ ֆունկցիայի անվանումը, և այն պետք է լինի սերվերի համատեքստի ընթացակարգ կամ գործառույթ.

«Ընտրանքներ»- պարամետրերի զանգված, որոնց տարրերի թիվը պետք է համապատասխանի մեր պրոցեդուրա/ֆունկցիայի պարամետրերի քանակին, որը նշված է պարամետրում «Մեթոդի անունը»;

"Բանալի"- որոշակի եզակիության բանալի, որը գիծ է, որով համակարգը հասկանում է, թե արդյոք ֆոնային առաջադրանքը պետք է գործարկվի, թե արդյոք այդպիսի առաջադրանքն արդեն աշխատում է.

"Անուն"- այստեղ դուք կարող եք նշել մեր մեթոդի կամայական նկարագրությունը:

Վերադարձի արժեքը օբյեկտ է «Հետին պլան», որը պարունակում է ընթացիկ մեթոդի անունը, ընթացիկ բանալին և ևս մի քանի հատկություններ և մեթոդներ: Այդպիսի մեթոդներից մեկը մեթոդն է «Սպասել ավարտված է». Դրա նպատակն այն է, որ մենք կարող ենք համակարգին ասել, որ ոչինչ չանի, քանի դեռ ֆոնային աշխատանքը չի ավարտվել:

Նախապատմական աշխատանք 1C 8.2, 8.3 - Օգտագործման օրինակ

Եկեք 1C ֆոնային աշխատանքների հետ աշխատելու օրինակ բերենք: Նախ, մենք կստեղծենք մի պարզ ալգորիթմ, որը համառոտ կբեռնի 1C համակարգը այնպես, որ մենք այս պահին ոչինչ չենք կարող անել:

Սրա համար:

1. Ստեղծենք ընդհանուր մոդուլ «Background Task Handlers», որը կկազմվի սերվերի կողմից;


2. Մենք դրանում կնկարագրենք արտահանման կարգը «ProduceBackgroundCalculation (Parameter)», որը վերցնում է լարային տեսակի մեկ պարամետր;

Ընթացակարգ PerformBackgroundCalculation(Parameter) ExportStartTime = CurrentDate() ; Մինչդեռ CurrentDate() - Մեկնարկի ժամանակը< = 6 Цикл КонецЦикла ; КонецПроцедуры Процедура КнНажатие() ОбработчикиФоновыхЗаданий. ПроизветиФоновоеВычисление(«Որոշ պարամետր») ; Ընթացակարգի ավարտը
Պատրաստ. Այժմ, երբ սկսում եք մշակել և սեղմել կոճակը, համակարգը սառեցնում է մի քանի վայրկյան, որի ընթացքում ոչինչ անել հնարավոր չէ: Սա հենց այն է, ինչ մենք պետք է անեինք:

Այժմ մենք կապահովենք, որ այս հաշվարկները կատարվեն հետին պլանում, այսինքն, որպեսզի 1C 8.2, 8.3 ֆոնային առաջադրանքը կատարվի, բայց չխանգարի մեզ:

Սրա համար:

1. Մշակման ժամանակ կոճակի սեղմման իրադարձությունում գրեք հետևյալ կոդը.

Ընթացակարգ KnPress() Պարամետրեր = Նոր զանգված; Ընտրանքներ. Ավելացնել ( «Որոշ պարամետր») ; BackgroundTask. Վազիր ( «BackgroundTask Handlers. Perform Background Computation», Պարամետրեր, Նոր եզակի նույնացուցիչ, "Փորձարկում") ; Ընթացակարգի ավարտը

Այստեղ մենք ընդունում ենք ընդհանուր մոդուլի ընթացակարգի անվանումը որպես առաջին պարամետր, իսկ պարամետրերի զանգվածը՝ որպես երկրորդ։ Երրորդ պարամետրին անհրաժեշտ է փոխանցել յուրահատուկ բանալի, իսկ չորրորդ պարամետրին` մեր ընթացակարգի որոշ նկարագրություն:

Հարթակներ 1C:Enterprise 8.3, 1C:Enterprise 8.2, 1C:Enterprise 8.1
Կոնֆիգուրացիաներ: Բոլոր կոնֆիգուրացիաները

2012-11-13
53989

Փաստաթղթերի կառավարման մեջ կան խնդիրներ, որոնք պահանջում են պարբերական կատարում, օրինակ՝ քսաներորդին կամ ամեն օր: Որպես կանոն, ընկերությունները հատուկ այդ նպատակով ստեղծում են որոշակի կանոններ, որոնք ցույց են տալիս, թե երբ և ինչպես պետք է կատարվի անհրաժեշտ առաջադրանքը, և ով պետք է վերահսկի գործընթացը: Նման առաջադրանքները կատարվում են ըստ կանոնակարգերի և կոչվում են կարգավորվող։

Բավականին հաճախ ՏՏ ոլորտում պահպանվում են մոնիտորինգի կանոնակարգեր։ Այս մեթոդը շատ ծանոթ է ադմինիստրատորներին, քանի որ դրա համար կան հատուկ ծրագրեր, որոնք օգտագործվում են ցանցային ենթակառուցվածքի և սերվերների ֆունկցիոնալությունը պարբերաբար ստուգելու համար: Նրանք ադմինիստրատորին տեղեկացնում են հայտնաբերված խնդիրների մասին SMS-ի կամ էլփոստի միջոցով:

Նմանատիպ համակարգ գործում է վեբ վարպետների համար, և կայքի հասանելիությունը ստուգվում է 24 ժամվա ընթացքում։ Օգտագործելով «Ռուտինային առաջադրանքներ» մեխանիզմը 1C-ում, իրականացվում են մոնիտորինգի առաջադրանքներ, ինչպես նաև պարբերական առաջադրանքներ, որոնք կատարվում են ըստ ժամանակացույցի ավտոմատ ռեժիմով 1C-ում: Եկեք մանրամասն նայենք այս թեմային:

Պլանավորված առաջադրանքներ 1C

1C օբյեկտը, որը կոչվում է «Routine tasks», հնարավորություն է տալիս տեղեկատվությունը մշակել ոչ թե խնդրի առաջանալուց հետո, այլ ըստ ժամանակացույցի: Կազմաձևիչում սովորական առաջադրանքը կարգավորումներ սահմանելու և ժամանակացույց սահմանելու միջոց է: Բացի այդ, հնարավոր է հետագայում փոխել ժամանակացույցը 1C Enterprise ռեժիմում:

Ֆայլերի տվյալների շտեմարան օգտագործելիս աշխատանքները ինքնաբերաբար չեն կատարվում: Գործընթացը սկսելու համար դուք պետք է սկսեք 1C նիստ 1C Enterprise ռեժիմով և սկսեք կատարել սովորական առաջադրանք դրանում:

Բոլոր ստանդարտ կոնֆիգուրացիաներն ունեն օգտվողի կարգավորում, որը թույլ է տալիս նշել, որ երբ 1C-ն աշխատում է, սովորական առաջադրանքները կկատարվեն ավտոմատ կերպով:

1C-ի հաճախորդ-սերվեր տարբերակի օգտագործումը հնարավորություն է տալիս ավտոմատ կերպով կատարել առաջադրանքները սերվերի վրա: Նախատեսված ժամին գործարկվում է ֆոնային աշխատանք, որը կատարում է անհրաժեշտ գործողությունները: Սերվերի վրա զուգահեռ հաշվարկների համար ծրագրի տեքստից կարող է ստեղծվել ֆոնային աշխատանք՝ օգտագործելով 1C լեզուն՝ առանց պլանավորված 1C աշխատանքի օգտագործման: Պլանավորված առաջադրանքի գործողությունը կարող է ժամանակավորապես անջատվել 1C սերվերի կառավարման վահանակի միջոցով:

Պլանավորված առաջադրանքի ավելացում

Սովորական առաջադրանքները գտնվում են - Կազմաձևիչ - Ընդհանուր - Սովորական առաջադրանքներ: Ավելացրեք նոր «առաջադրանք» և նշեք անուն: Հաջորդը, դուք պետք է գնաք «Առաջադրանքներ» հատկությունները: Եվ ընտրեք մեթոդի անվանումը: Այստեղ դուք պետք է նշեք կարգավորիչի գործառույթը, ինչպես դա տեղի է ունենում իրադարձության բաժանորդագրության մեջ: Այս ֆունկցիան կտեղակայվի ընդհանուր մոդուլում և կնշվի «թռչուն» սերվերով հատկությունների մեջ: Սա նշանակում է, որ անհրաժեշտ մոդուլը պետք է նախապես ավելացվի։

Պլանավորված առաջադրանքի հատկությունների մեջ առաջադրանքի անվանումը թույլ է տալիս սահմանել դրա անունը, որն այնուհետ կհայտնվի առաջադրանքների կառավարման գործիքներում: Routine Task Properties ֆունկցիան բանալի է, որը թույլ է տալիս խմբավորել մի քանի տարբեր սովորական առաջադրանքներ: Այս դեպքում կարող է միաժամանակ գործարկվել նույն հիմնական արժեքով միայն մեկ առաջադրանք: Այստեղ արժեքը կարող է լինել կամայական, բայց այն պետք է լրացվի, քանի որ դատարկ արժեքը հաշվի չի առնվում համակարգի կողմից:

Հաշվապահական հրատարակություն 2.0-ում, որը ստանդարտ կոնֆիգուրացիա է, սովորական առաջադրանքները, ինչպիսիք են՝ «Գումարների վերահաշվարկը» և «Կազմաձևի թարմացումը», նախապես սահմանված են, բայց, օրինակ, «Հետաձգված շարժումներ» և «Տվյալների փոխանակում» նախապես սահմանված չեն:

Նորից փորձեք աննորմալ դադարեցում - վերսկսում է ընթացիկ աշխատանքը: Նախագծված է առաջին անգամ չհաջողված մեկնարկը կատարելու համար: Այստեղ նշվում է, թե քանի անգամ կարող եք վերագործարկել և ինչ ժամանակ է անցել աննորմալ դադարեցումից հետո:

Մոնիտորինգի և կառավարման գործիքներ սովորական առաջադրանքների համար 1C

Ստանդարտ մշակման «Task Console»-ը, որը կարելի է գտնել ITS սկավառակների վրա, պատասխանատու է սովորական առաջադրանքի կառավարման համար: Այս մշակումը համընդհանուր արտաքին ստանդարտ մշակման 1C է: Որպես կանոն, այն ներառված չէ կոնֆիգուրացիայի մեջ, բայց գնվում է առանձին:

Նրա օգնությամբ դուք կարող եք կատարել հետևյալ գործողությունները.

Միացնել և անջատել պլանավորված առաջադրանքը;

Նշանակել և փոխել գրաֆիկները;

Նշեք օգտվողի անունը, որով կկատարվի սովորական առաջադրանքը.

Տեսեք ավարտված առաջադրանքները (երբ և ինչ արդյունքով), ինչպես նաև առաջադրանքների սխալները.

Սովորական առաջադրանք և տվյալների շտեմարանների պատճեններ

1C սերվեր օգտագործելիս կարող է առաջանալ հետևյալ պահը.

Ծրագրավորման համար անհրաժեշտ է ստեղծել աշխատանքային տվյալների բազայի պատճենը.

Տվյալների բազայի պատճեններում աշխատելու անհրաժեշտությունը (թեստավորում);

Չգիտես ինչու, պլանավորված առաջադրանքը չի ներառվել թեստային տվյալների բազայում:

Եթե ​​այս իրավիճակներից մեկն առաջացել է սովորական առաջադրանքով առաջադրանքների կատարման ժամանակ, որոնք կապված են միայն իրենց տվյալների բազայի հետ, ապա դա բացասական հետևանքներ չի ունենում: Բայց, հաճախ, սովորական առաջադրանքը կարող է պահպանել ֆայլեր կամ այլ տվյալներ, ուղարկել էլ. նամակներ և կատարել փոխանակումներ: Այս դեպքում կարող է շփոթություն առաջանալ «աշխատանքի» և պատճենների արդյունքների միջև: Որպեսզի դա տեղի չունենա, դուք պետք է անջատեք «առաջադրանքները» սերվերի կառավարման վահանակում:

Կատարված և չկատարված կարգավորող առաջադրանքներ

Սովորական առաջադրանքներ ստեղծելիս կարևոր է ստուգել՝ արդյոք առաջադրանքը կարող է կատարվել որպես սովորական առաջադրանք: Կարևոր է իմանալ, որ սերվերի մոդուլը շատ բաներ չի անում, որոնք հնարավոր են հաճախորդի վրա: Ավելին, առաջադրանքը, որը վերաբերում է մի բանի, որը գտնվում է տվյալների բազայից դուրս, դրանում կարևոր դեր է խաղում Windows-ի օգտագործողի իրավունքները, որոնց ներքո առաջադրանքը կատարվում է:

Վերջին գործոնը հատկապես կարևոր է, քանի որ եթե մոդուլը չի ​​կատարվում սերվերի վրա, ապա խնդիրը սկզբունքորեն չի կարող ավարտվել: Ստուգելու համար դուք պետք է կատարեք մեկ առաջադրանք և գնահատեք արդյունքը:

1C Enterprise-ն իր կոնֆիգուրացիաներում ունի սովորական և ֆոնային առաջադրանքներ: Այս աշխատանքները կատարվում են ըստ ժամանակացույցի՝ հաշվի առնելով յուրաքանչյուր աշխատանքի ժամանակացույցը: Որոշ առաջադրանքներ ի սկզբանե կատարվում են ժմչփի վրա որոշակի վայրկյանից հետո, ինչը կարող է բացասաբար ազդել աշխատանքի վրա և ակնհայտորեն խանգարել տեղեկատվական բազայի աշխատանքին:

Ընթացիկ և ֆոնային առաջադրանքները խմբագրելու համար վարչակազմի ներդիրում ձախ կողմում ընտրեք «առօրյա և ֆոնային առաջադրանքներ»: Կհայտնվի առկա առաջադրանքների ցանկը, դրանց կարգավիճակը, ժամանակացույցը և այլ տեղեկություններ:

Առաջադրանքներից որևէ մեկի վրա մի քանի անգամ սեղմելով, կբացվի այս առաջադրանքի հատկություններով պատուհան: Այստեղ դուք կարող եք փոխել բազմաթիվ կարգավորումներ ձեր ճաշակով, ներառյալ այս առաջադրանքի ժամանակացույցը: Առաջադրանքն անջատելու համար «Միացված» վանդակը պետք է մաքրվի: Բայց եթե առաջադրանքը պետք է կատարվի ըստ ժամանակացույցի, չափազանց կարևոր է օգտագործել առանձին օգտվող, որն ունի լիարժեք իրավունքներ բոլոր ֆոնային առաջադրանքների համար:

Առաջադրանքների ժամանակացույցի պարամետրերը շատ ճկուն են, բայց այնուամենայնիվ խորհուրդ է տրվում բոլոր առաջադրանքները դնել այնպես, որ միաժամանակ կատարվի միայն 1 առաջադրանք և գերադասելի է ոչ աշխատանքային ժամերին: Միակ բացառությունը կարող է լինել մի քանի հարակից տեղեկատվական բազաների համաժամացումը, օրինակ՝ ձեռնարկությունների հաշվապահական հաշվառում + աշխատավարձի և անձնակազմի կառավարում:

Բեռնվում է բանկային դասակարգիչը - կիրակի, 4:30
Արտարժույթի փոխարժեքների բեռնում - ամեն օր; 7։00
Տեքստի արդյունահանում - ամեն օր; 6։00։
Փաստաթղթերի կառավարման հաշիվների միջոցով հաղորդագրությունների փոխանակում - ամեն օր; յուրաքանչյուր 10800 վայրկյանում:
Միավորները թարմացվում են ամեն օր; ժամը 5:00:00-ից օրը մեկ անգամ
Թարմացրեք հաշվապահի առաջադրանքները - ամեն օր; 6:30:00-ից օրը մեկ անգամ
PPD ինդեքսի թարմացում (ամբողջական տեքստի որոնում) - ամեն օր; յուրաքանչյուր 10800 վայրկյանում:
Ստորաբաժանումների վերակառուցում - ամեն օր, շաբաթվա օրը [շաբաթ]; ժամը 3:00:00-ից օրը մեկ անգամ
Փոփոխությունների արգելման հարաբերական ամսաթվերի ընթացիկ արժեքների վերահաշվարկ - ամեն օր. ժամը 7:00:00-ից օրը մեկ անգամ
PPD ինդեքսի միաձուլում (ամբողջական տեքստի որոնում) - ամեն օր; ժամը 4:00:00-ից օրը մեկ անգամ
Համաժամացման անհամապատասխան տեղեկատվության հեռացում - ամեն օր; ժամը 3:30:00-ից օրը մեկ անգամ
Հաշվարկված գումարների ժամկետի սահմանում - ամեն օր, ամսվա 5-ը; ժամը 1:00:00-ից օրը մեկ անգամ