Սկսեք ֆոնային աշխատանք ծրագրային կերպով: Ֆոնային աշխատանքներ. առանձնահատկություններ, հնարավորություններ, կարգավորումներ Նախապատմական աշխատանք 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.00 | RepeatDays Period = 1WeekDays = 6, 7StartTime = 09.00 |
Մեկ շաբաթ ամեն օր, մեկ շաբաթ բաց թողեք | PeriodRepeatDays = 1 PeriodWeeks = 2 |
Ժամը 01.00 մեկ անգամ | Մեկնարկի ժամը = 01.00 |
Ամեն ամսվա վերջին օրը ժամը 9:00-ին: | PeriodRepeatDays = 1DayInMonth = -1StartTime = 09.00 |
Ամսվա հինգերորդ օրը ժամը 9:00 | PeriodRepeatDays = 1 DayIn Month = 5 StartTime = 09.00 |
Յուրաքանչյուր ամսվա երկրորդ չորեքշաբթի ժամը 9:00 | PeriodRepeatDays = 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-ից օրը մեկ անգամ