Համակարգիչներ և ժամանակակից գաջեթներ

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

Ինչպես են պարամետրերը փոխանցվում կանոնավոր ձևերով

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

երկու դեպքում էլ ձևի կանչը այսպիսի տեսք ուներ.

Form = Object.GetForm ("SelectionForm",FormOwner, UniquenessKey);
Form.Parameter = ParameterValue;
Form.Open();

Ինչպես են պարամետրերը փոխանցվում կառավարվող ձևերով

Կառավարվող ձևերն այժմ հնարավորություն ունեն անմիջապես փոխանցել պարամետրերը, երբ ձևը ստացվի: Պարամետրերը փոխանցվում են որպես կառուցվածք.

Պարամետրեր = Նոր կառուցվածք ("CurrentValue", LastElement);
SelectionForm = GetForm ("Directory. Nomenclature.SelectionForm", Parameters);
FoundItem = SelectionForm.OpenModal();

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

Մշակողը նաև հնարավորություն ունի սահմանելու իր սեփական պարամետրերը (կառավարվող ձևի դիզայներում՝ «Պարամետրեր» ներդիրում): Պարամետրերի ծառայության ժամկետը սահմանափակվում է OnCreationOnServer կարգավորիչով, ինչը տրամաբանական է, քանի որ պարամետրերը պահանջվում են միայն ձև ստեղծելու ժամանակ, բայց եթե այս պարամետրը որոշում է ձևի յուրահատկությունը («հիմնական պարամետր» դրոշը դրված է պարամետրերի հատկություններում), այն հասանելի կլինի այլ մշակիչներում:

Հատուկ մանիպուլյացիայի պարամետր փոխանցելու համար հարկավոր է մի փոքր ավելին անել.

1) Սահմանեք պարամետրը վերահսկվող ձևով:
OnCreationOnServer կարգավորիչում սահմանեք այս պարամետրի մշակումը (մատչել անցած պարամետրերին «Պարամետրեր» հատկության միջոցով, որն ունի FormDataStructure տեսակը)
2) Նկարագրեք ձևի ստացումը և նոր պարամետրի արժեքը փոխանցեք GetForm ֆունկցիայի պարամետրերում:
Այսպիսով, ծածկագիրը կունենա հետևյալ տեսքը.
- Այն վայրում, որտեղ դուք ստանում եք ձևաթուղթը

Պարամետրեր = Նոր կառուցվածք ("NewParameter", LastElement);
SelectionForm = GetForm ("Directory. Nomenclature.SelectionForm", Parameters);

Կառավարվող ձևի մոդուլում

&Սերվերի վրա
Ընթացակարգը, երբ ստեղծվում է սերվերում (ձախողում, ստանդարտ մշակում)
If Parameters.Property("NewParameter") Ապա
// ահա պարամետրի մշակման կոդը
վերջԵթե;
Ընթացակարգի ավարտը

Եզրակացություն

Միգուցե այս հոդվածը ինչ-որ մեկին օգտակար լինի, այն կխնայի ժամանակն ու կազատի ձեզ ավելորդ կոդից։ Կառավարվող ձևի պարամետրերի ամբողջական ցանկի մասին ավելի մանրամասն տեղեկությունների համար խորհուրդ է տրվում դիտել «Կառավարվող միջերես\Կառավարվող ձև» օգնությունը:

[Հղումը դիտելու համար պետք է գրանցվել]

Կառավարվող 1C հավելվածում ծրագրային ձևերը բացելը զգալիորեն տարբերվում է սովորական հավելվածում դրանք բացելուց: Եկեք նախ նայենք հին մեթոդին: Այն բաղկացած է ձև ստանալուց և այնուհետև այն նորմալ կամ մոդալ ռեժիմում բացելուց (մոդալ ռեժիմում բացվելիս ձևը արգելափակում է ծրագիրը):

GetForm(). Բաց ()

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

Ձև = GetForm ( «Փաստաթուղթ. Ապրանքների և ծառայությունների ստացում. Փաստաթղթի ձև».) ;
//Այստեղ մենք կատարում ենք գործողություններ ձևի հետ
Ձև. Open();

Պետք է հաշվի առնել, որ ձևը ստանալուց հետո կիրականացվի այլ իրադարձության ընթացակարգ WhenCreatedOnServer.

Դիտարկենք այլ մեթոդներ, որոնք թույլ են տալիս ավելի արագ և հարմար ձևեր բացել կառավարվող 1C հավելվածում: Կախված կոնկրետ իրավիճակից, կարող են օգտագործվել տարբեր մեթոդներ:

1. Ինչպես բացել օբյեկտի ձևը կառավարվող հավելվածում, եթե կա դրա հղումը:

Այս դեպքում ամեն ինչ չափազանց պարզ է.

RefLink = Գրացուցակներ: Անվանակարգ. FindByCode ("000000001");
OpenValue (RefLink);

2. Ինչպես բացել ընտրության ձևը և հետո ստանալ ընտրված արժեքը:

Դրա համար կա գործառույթ EnterValue ().Ֆունկցիան ունի 3 պարամետր.

  • Փոփոխական, որի մեջ կգրվի ընտրված արժեքը.
  • Հուշում, որը կցուցադրվի ընտրության պատուհանում.
  • Ընտրված արժեքների տեսակների նկարագրությունը. Կարող են լինել մի քանի տեսակներ, որոնց դեպքում ձեզ կառաջարկվի ընտրել տեսակ՝ նախքան որոշակի արժեք ընտրելը:

Ֆունկցիան գործարկելու արդյունքում կբացվի նշված տիպի օբյեկտի լռելյայն ընտրության ձևը։

Փոփոխական արժեք;
Array= նոր զանգված;
Զանգված. Ավելացնել (տեսակ ( «DirectoryLink.Nomenclature») ) ;
Զանգված. Ավելացնել (տեսակ ( «DirectoryLink. Counterparties») ) ;

TypeDescription= new TypeDescription(Array) ;

Res = EnterValue(Value, "Hint" , TypeDescription) ;

Նախորդ մեթոդները թույլ էին տալիս բացել միայն օբյեկտների լռելյայն ձևերը (օբյեկտի ձև կամ ընտրության ձև): Եթե ​​Ձեզ անհրաժեշտ է բացել հատուկ ձև, կարող եք օգտագործել գործառույթը OpenForm ().

Այս ֆունկցիան ունի բավականին մի քանի պարամետրեր։ Դիտարկենք դրանցից մի քանիսը.

  • Ձևի անվանումը— այստեղ կարող եք ընտրել օբյեկտի ստանդարտ ձևերից որևէ մեկը, օրինակ. Ընտրության ձևկամ Ցուցակի ձև. Կամ մշակողների կողմից ստեղծված կոնկրետ ձև:
  • Ընտրանքներ— թույլ է տալիս այն փոխանցել ձևաթղթին կառույցներըորոշ պարամետրեր նախքան այն բացելը, դրանով իսկ որոշելով ելքային տվյալները: Պարամետրերը կարող են լինել ցանկացած տվյալ, որը կարող է փոխանցվել հաճախորդից սերվեր: Ձևը բացելիս փոխանցված պարամետրերը կարող են մշակվել ընթացակարգում WhenCreatingOnServer ()բացվող ձևաթղթում։
  • Ձևի բացման ռեժիմ— ունի 3 տարբերակ՝ անկախ, արգելափակել ամբողջ ինտերֆեյսը, արգելափակել սեփականատիրոջ ձևը։

Եկեք նայենք, թե ինչպես է օգտագործվում գործառույթը OpenForm ()տարբեր իրավիճակներում.

3. Ինչպես բացել գոյություն ունեցող օբյեկտի ձեւը

Յուրաքանչյուր ձև ունի մեկ հիմնական հատկանիշ: Ձևի մանրամասների ցանկում այն ​​ընդգծված է թավով և սովորաբար կոչվում է Օբյեկտտեղեկատու գրքերի և փաստաթղթերի տարրերի տեսքով: Այլ առարկաներ կարող են ունենալ այլ անվանում: Գոյություն ունեցող օբյեկտի ձևը բացելու համար անհրաժեշտ է բացվող ձևին պարամետր փոխանցել Բանալիարժեքը՝ որպես օբյեկտի հղում:

&OnClient
Ընթացակարգի հրաման 1 (հրաման)
Պարամետր = նոր կառուցվածք;
Պարամետր. Տեղադրեք("Բանալին" , FindC() );
OpenForm(, պարամետր);
Ընթացակարգի ավարտը

&Սերվերի վրա
FindC();
Վերադարձի դիրեկտորիաներ: Կողմնակիցներ. FindByRequisites («TIN», «745107734623»)
EndFunction

4. Ինչպես բացել նոր օբյեկտի ձև

Այստեղ կկատարվի պարզ գործառույթ OpenForm ()առանց որևէ պարամետրի։

&OnClient
Ընթացակարգի հրաման 1 (հրաման)
OpenForm ( «Տեղեկագիր. Կողմնակիցներ. Օբյեկտի ձև») ;
Ընթացակարգի ավարտը

5. Ինչպես բացել նոր օբյեկտի ձև և լրացնել այն ինչ-որ բանի հիման վրա

Դուք պետք է փոխանցեք պարամետր Հիմք, որի արժեքը կլինի հղում լցոնման բազային օբյեկտին։ Սա կսկսի ընթացակարգը ProcessFill().

&OnClient
Ընթացակարգի հրաման 1 (հրաման)
Պարամետր = նոր կառուցվածք;
Պարամետր. Տեղադրեք («Base», LinkToBuyerAccount) ;
OpenForm ( «Փաստաթուղթ. Ապրանքների և ծառայությունների վաճառք. Օբյեկտի ձև», պարամետր);
Ընթացակարգի ավարտը

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

6. Ինչպես բացել ձևաթուղթը և դրա վրա ընտրություն դնել

1C ձևերի ընտրությունը կարող է լինել պարզ կամ բարդ: Պարզ ընտրությունը ներառում է այնպիսի արտահայտություններ, ինչպիսիք են Կազմակերպություն = Horns and Hooves LLC.Համալիր ընտրությունը ներառում է համեմատության այլ տեսակներ, օրինակ. Ցուցակում. Այս հոդվածում մենք կքննարկենք պարզ ընտրության կազմակերպումը, և առանձին հոդված կնվիրվի բարդ ընտրությանը:

Պարզ ընտրություն կազմակերպելու համար անհրաժեշտ է բացվող ձևի բանալիով պարամետր փոխանցել Ընտրություն, արժեքը կլինի կառույց, որի բանալին դինամիկ ցուցակի դաշտի անունն է, իսկ արժեքը՝ փնտրվող տվյալները:

Օրինակ՝ բացենք գրացուցակի ցուցակի ձևը GTD համարներև այնտեղ ընտրություն կատարեք ըստ սեփականատիրոջ՝ գրացուցակի տարրի Անվանակարգ.

&OnClient
Ընթացակարգի հրաման 1 (հրաման)
Պարամետր = նոր կառուցվածք;

Ընտրություն= նոր կառուցվածք;
Ընտրություն. Տեղադրեք («Սեփականատեր», LinkToNomenclature) ;

Պարամետր. Տեղադրեք («Ընտրություն», Ընտրություն) ;

OpenForm ( «Directory.GTD numbers.List form», պարամետր);
Ընթացակարգի ավարտը

7. Ինչպես բացել տեղեկատվական ռեգիստրի մուտքի ձևը

Դա անելու համար ձեզ հարկավոր է տեղեկատվական ռեգիստրի մուտքագրման բանալի:

Ձայնագրման բանալի- սրանք բոլոր չափումների և ժամանակաշրջանի արժեքներն են (եթե ռեգիստրը պարբերական է): Այսինքն, ռեկորդային բանալին այն պարամետրերն են, որոնց միջոցով գրառումը կարող է եզակիորեն նույնականացվել:

Բացման ալգորիթմը հետևյալն է.

  1. Մենք մուտքագրում ենք ռեկորդային բանալի տվյալները անհրաժեշտ արժեքներով կառուցվածքի մեջ:
  2. Ստացված կառուցվածքը տեղադրում ենք զանգվածի մեջ։
  3. Զանգվածից ստեղծում ենք ձայնագրման բանալի։
  4. Մենք պարամետր ենք փոխանցում բացվող ձևին Բանալի 3-րդ քայլից գրանցման բանալիով որպես արժեք:

&OnClient
Ընթացակարգի հրաման 1 (հրաման)
Պարամետր = նոր կառուցվածք;

KeyParameters= նոր կառուցվածք;
Հիմնական պարամետրեր. Տեղադրեք («Անվանակոչ», LinkToNomenclature) ;
Հիմնական պարամետրեր. Տեղադրեք ("PriceType", LinkToPriceType) ;
Հիմնական պարամետրեր. Ներդիր («Ժամանակաշրջան», Ամսաթիվ);

KeyArray = Նոր զանգված;
KeyArray. Ավելացնել (հիմնական պարամետրեր);

EntryKey = Նոր ( «Տեղեկատվական ռեգիստր Գրառման բանալի. Գների անվանակարգ», KeyArray) ;

Պարամետր. Տեղադրեք («Բանալին», Գրառման բանալի) ;

OpenForm ( «Տեղեկատվության գրանցամատյան. նոմենկլատուրայի գներ. գրանցման ձև», պարամետր);
Ընթացակարգի ավարտը

Մենք ունենք վերամշակում այս հիմնական ձևով.

Այս ձևից մենք պետք է բացենք լրացուցիչ ձև, և ձևի դաշտից տեքստը պետք է տեղափոխվի բացված ձև: Լրացուցիչ ձևը հետևյալն է.

Այսպիսով, երբ սեղմում եք «Գործարկել» կոճակը, դաշտում արդեն մուտքագրված տեքստով լրացուցիչ ձև է բացվում.

Դիտարկենք նման խնդրի լուծման տարբերակ։

Լուծում

Պարամետրերը սովորական ձևերի միջև փոխանցելու համար կարող եք կամ օգտագործել ձևի մոդուլի գլոբալ արտահանման փոփոխականը կամ ստեղծել ձևի հատկանիշ: Եկեք դիտարկենք մեր առաջադրանքի երկու մեթոդները:

1. Օգտագործելով ձևի մոդուլի գլոբալ արտահանման փոփոխականը:

«Run» կոճակի մշակման ընթացակարգի հիմնական ձևին ավելացրեք հետևյալ կոդը.

Ընթացակարգի կոճակԿատարել սեղմել(կոճակ)Ձև = GetForm(" Լրացուցիչ ձև" ) ; // «Տեքստը» բացվող ձևի մոդուլի գլոբալ արտահանման փոփոխական էՁև. Տեքստ = FormElements. Տեքստ. Իմաստը; Ձև. Open(); Ընթացակարգի ավարտը

Տեքստային փոփոխականն ավելացվել է բացվող ձևի մոդուլին «BeforeOpen» իրադարձությունների մշակման հետ միասին.

Փոփոխական տեքստի արտահանում; // Փոփոխական, որին փոխանցվում է մեկ այլ ձևի արժեքըԸնթացակարգը նախքան բացելը (ձախողում, ստանդարտ մշակում) FormElements: Փոխանցված տեքստ: Արժեք = Տեքստ; Ընթացակարգի ավարտը

Խնդիրը լուծված է, և շատ պարզ!

2. Օգտագործելով ձևի մանրամասները:

Երկրորդ մեթոդի համար մենք նույնիսկ կարիք չունենք վերաշարադրելու «Run» և «BeforeOpen» կոճակների մշակիչները: Ընդամենը անհրաժեշտ է բացված ձևին ավելացնել «Text» հատկանիշը տողի տիպով։

եզրակացություններ

Կառավարվող ձևերում պարամետրերի փոխանցումը շատ ավելի հեշտ է: Պայմանական ձևերով նկարագրված մոտեցումը օգտագործվում է շատ դեպքերում:

Օրինակը կարող եք մշակել հոդվածից ներբեռնել հղումից.

Ձևաթղթերի միջև ավտոմատ փոխազդեցությանը աջակցելու համար համակարգը տրամադրում է մի շարք ստանդարտ պարամետրեր, որոնք օգտագործվում են ձևաթղթերը բացելիս կառավարելու համար: Օգտագործելով այս պարամետրերը, համակարգը ձևի դաշտերում իրականացնում է ընտրության ձևերից ընտրությունը, օբյեկտի ձևերի բացումը, ստանդարտ հրամանների գործարկումը և այլն: Այսինքն, դրանք ապահովում են համակարգում ներկառուցված ինտերֆեյսի շահագործման տարբեր սցենարներ: Բայց մշակողը կարող է նաև օգտագործել այս պարամետրերը ներկառուցված լեզվում՝ փոխանցելով դրանք OpenForm() մեթոդը կանչելիս։

Մենք թվարկում ենք համակարգի կողմից տրամադրված պարամետրերը և դրանց նպատակը.

  • Ընտրության ռեժիմ– ձևը բացվում է ընտրության ռեժիմում: Տրամադրվում է դինամիկ ցանկի կառավարվող ձևի ընդլայնմամբ:
  • CurrentRow– տող, որը բացվելիս կակտիվանա ցանկում: Փոխանցվում է արժեք, որը նույնականացնում է տողը: Տրամադրվում է դինամիկ ցանկի կառավարվող ձևի ընդլայնմամբ:
  • Ընտրելով խմբեր և տարրեր– այս պարամետրը սահմանում է ձևի հիմնական հատկանիշի աղյուսակի խմբերի և տարրերի ընտրություն: Տրամադրվում է դինամիկ ցանկի կառավարվող ձևի ընդլայնմամբ:
  • AllowSelectRoot– սահմանում է ծառի տեսքով ցուցադրվող դինամիկ ցուցակով արմատ ընտրելու հնարավորությունը: Տրամադրվում է կառավարվող ձևի ընդլայնմամբ՝ ծառի տեսքով ցուցադրվող դինամիկ ցուցակի համար:
  • Ընտրություն– ընտրությունը դրված է դինամիկ ցանկում: Ներկայացնում է կառույց. Տարրերի անվանումները համապատասխանում են այն դաշտերի անուններին, որոնցով կատարվում է ընտրությունը, իսկ արժեքները պարունակում են ընտրության արժեքները: Տրամադրվում է դինամիկ ցանկի կառավարվող ձևի ընդլայնմամբ:
  • Բանալի– արժեք, որը նույնականացնում է ձևի մեջ խմբագրվող օբյեկտը: Եթե ​​արժեքը բացակայում է կամ սխալ է, ապա մնացած պարամետրերով ստեղծվում է նոր օբյեկտ: Տրամադրվում է օբյեկտի ձևերի ընդարձակման և տեղեկատվական ռեգիստրի գրանցման կառավարչի կողմից:
  • Պատճենման արժեքը– արժեք, որը նույնականացնում է այն օբյեկտը, որը կօգտագործվի նոր օբյեկտ ստեղծելիս պատճենելու համար: Տրամադրվում է օբյեկտի ձևերի ընդարձակման և տեղեկատվական ռեգիստրի գրանցման կառավարչի կողմից:
  • Լրացրեք արժեքները- արժեքներ նոր օբյեկտի մանրամասները լրացնելու համար: Ներկայացնում է կառույց. Տարրերի անվանումները համապատասխանում են մանրամասների անվանումներին, իսկ արժեքները պարունակում են այն տվյալները, որոնք կօգտագործվեն նշված մանրամասները լրացնելու համար: Տրամադրվում է օբյեկտի ձևերի ընդարձակման և տեղեկատվական ռեգիստրի գրանցման կառավարչի կողմից:
  • Հիմք– արժեք, որը նույնականացնում է այն օբյեկտը, որը կօգտագործվի որպես հիմք՝ հիմքի վրա մուտքագրելով նոր օբյեկտ ստեղծելիս: Տրամադրվում է օբյեկտի ձևի ընդարձակմամբ:
  • Այս խումբը– սահմանում է նոր օբյեկտի տեսակը՝ խումբ կամ տարր: Տրամադրվում է օբյեկտի ձևի ընդարձակմամբ:

Ձևի պարամետրերի հետ աշխատելու օրինակ

Ցույց տալու համար, թե ինչպես են աշխատում ձևի պարամետրերը, հաշվի առեք մուտքագրման դաշտում տարրի ընտրության իրականացումը: Օրինակի էությունը կլինի ներկառուցված լեզվով ցանկից տարր ընտրելու մեխանիզմի իրականացումը:

Մինչ դուք սկսում եք աշխատել օրինակի հետ, դուք պետք է կազմաձևեք հետևյալ հատկություններով.

  • Գործարկման հիմնական ռեժիմ – Կառավարվող հավելված;
  • կա տեղեկատու Ապրանքներ խմբերի և տարրերի հիերարխիայով.
  • կա տեղեկատու Analogues՝ DirectoryLink.Products տիպի SelectedProduct հատկանիշով;
  • երկու դիրեկտորիաներն էլ ունեն կառավարվող տարրերի ձևեր:

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

Ավելացնենք լրացուցիչ դրոշակ, որը կվերահսկի ընտրության ձևի փակումը տարր ընտրելուց հետո: Եկեք այս դրոշն անվանենք CloseAfterSelection (տիպ Բուլյան): Եկեք այն ավելացնենք որպես ձևի պարամետր Form՝ Ապրանքների գրացուցակը ընտրելու համար:

Տարրերի ընտրության ձևը բացելու համար դուք պետք է ստեղծեք իրադարձությունների մշակիչ Ընտրության մեկնարկի իրադարձության համար Ընտրված արտադրանքի ձևի տարրի համար՝ Անալոգներ գրացուցակի տարրի տեսքով.

&OnClient

Ընթացակարգը SelectedProductStartSelection (նյութ, ստանդարտ մշակում)

StandardProcessing = False;

SelectionParameters = Նոր կառուցվածք; SelectionParameters.Insert("SelectionMode", True); SelectionParameters.Insert("SelectingGroupsAndElements", UsingGroupsAndElements.Elements); SelectionParameters.Insert("AllowRootSelection", False); SelectionParameters.Insert("CurrentRow", Object.SelectedProduct); SelectionParameters.Insert("CloseAfterSelection", False); OpenForm ("Directory.Products.SelectionForm", SelectionParameters, Elements.SelectedProduct);

Ընթացակարգի ավարտը

Անհրաժեշտ է առանձին անդրադառնալ OpenForm() մեթոդի երրորդ պարամետրին։ Այս պարամետրը որոշում է, թե ով է լինելու ընտրության ձևի սեփականատերը և ով կտեղեկացվի կատարված ընտրության մասին: Այս դեպքում մենք նշել ենք ձևի տարրը որպես ընտրության ձևի սեփականատեր, բայց մենք կարող ենք նաև նշել ինքնին ձևը այս պարամետրով: Այս դեպքում անհրաժեշտ կլինի ներդնել Form Module Selection Processing մշակողը և դրանում որոշել, թե որ ձևի հատկանիշով տեղադրել ընտրված տվյալները:

Տպել (Ctrl+P)

Ձևի ընտրանքներ

1. Ընդհանուր տեղեկություններ

Ձևի պարամետրերը (Ընտրանքներ ներդիր) ծառայում են երկու նպատակի.
● Նկարագրեք տվյալների մի շարք, որոնք կազդեն ձևի բացման վրա (ձևի պարամետրացում): Դա անելու համար անհրաժեշտ է թվարկել բոլոր անհրաժեշտ պարամետրերը և նշել դրանց տեսակները:
● Որոշեք այն պարամետրերը, որոնք կազդեն ձևի եզակիության բանալին: Դա անելու համար դուք պետք է սահմանեք գույքը Հիմնական պարամետրայն պարամետրերը, որոնք պետք է մասնակցեն ձևի եզակիության բանալի ձևավորմանը: Երբ փորձում եք բացել ձևը, համակարգը որոնում է գոյություն ունեցող ձև՝ օգտագործելով ձևի եզակիության ստեղնը: Եթե ​​համակարգում առկա է ստացված բանալիով ձև
եզակիությունը, հենց այս ձևն է վերադառնում. եթե ոչ, ապա ստեղծվում է նոր ձև:
Ձև կանչելիս մշակողի կողմից ստեղծված պարամետրերի արժեքները կարող են նշվել պարամետրերի կառուցվածքում ձևերի համակարգի պարամետրերի հետ միասին (եթե այդպիսիք կան):
Ձևի պարամետրերը կարող են փոխանցվել ձևին դրա ստեղծման պահին: Անցած պարամետրերի վերլուծությունը կարող է իրականացվել միջոցառման ժամանակ WhenCreatingOnServer () (Պարամետրերի հավաքածուն օբյեկտի հատկությունն է Կառավարվող ձև):

// Զանգի վայրում:
// Ստեղծեք ձևի պարամետր.
Պարամետրեր = new Structure();
Ընտրանքներ.Ներդիր(«Կարևորություն», PredefinedValue(«Թվարկում. Կարևորություն. Կարևոր»));
// Բացեք ձևը պարամետրերով:
OpenForm («GeneralForm.ViewForm», Պարամետրեր);

// Ձևի մոդուլում:
&Սերվերի վրա
Ընթացակարգը WhenCreatingOnServer (ձախողում, ստանդարտ մշակում)
Եթե Պարամետրեր.Կարևորություն = Թվարկումներ.Կարևորություն.Կարևոր o Հետո

վերջԵթե;
Ընթացակարգի ավարտը

ՈՒՇԱԴՐՈՒԹՅՈՒՆ! Միջոցառումների կազմակերպիչին զանգահարելուց հետո Երբ CreatedOnServerբոլոր ոչ հիմնական ձևի պարամետրերը հեռացվում են Պարամետրերի հավաքածուից:
Խորհուրդ. Հետագա աշխատանքի համար պահանջվող ձևի ոչ հիմնական պարամետրերը պետք է պահպանվեն ձևի տվյալների մեջ:

2. Ստանդարտ ձևի պարամետրեր

Ձևաթղթերի միջև ավտոմատ փոխազդեցությանը աջակցելու համար համակարգը տրամադրում է մի շարք ստանդարտ պարամետրեր, որոնք օգտագործվում են ձևաթղթերը բացելիս կառավարելու համար: Օգտագործելով այս պարամետրերը, համակարգը ձևի դաշտերում իրականացնում է ընտրության ձևերից ընտրությունը, օբյեկտի ձևերի բացումը, ստանդարտ հրամանների գործարկումը և այլն: Այսինքն, դրանք ապահովում են համակարգում ներկառուցված ինտերֆեյսի շահագործման տարբեր սցենարներ:
Բայց մշակողը կարող է նաև օգտագործել այս պարամետրերը ներկառուցված լեզվում՝ փոխանցելով դրանք OpenForm() մեթոդը կանչելիս։
Ստանդարտ ձևի պարամետրերի ցանկը՝ կախված ձևի ընդլայնման տեսակից, կարելի է գտնել բաժիններում Ներկառուցված լեզու - Ինտերֆեյս
(կառավարվող) – Կառավարվող ձև – Ընդլայնվող... ներկառուցվածվկայականներ

3. Ձևի պարամետրերի հետ աշխատելու օրինակ

Ցույց տալու համար, թե ինչպես են աշխատում ձևի պարամետրերը, հաշվի առեք մուտքագրման դաշտում տարրի ընտրության իրականացումը: Օրինակի էությունը կլինի ներկառուցված լեզվով ցանկից տարր ընտրելու մեխանիզմի իրականացումը:
Մինչ դուք սկսում եք աշխատել օրինակի հետ, դուք պետք է կազմաձևեք հետևյալ հատկություններով.
● կա տեղեկատու Ապրանքներ խմբերի և տարրերի հիերարխիայով;
● կա Analogs գրացուցակ, որի մանրամասներն են SelectedProduct տեսակը DirectoryLink.Products;
● երկու դիրեկտորիաներն էլ ունեն տարրերի ձևեր:
Այժմ եկեք այս կոնֆիգուրացիայի մեջ ներդնենք բոլոր այն մեխանիզմները, որոնք պլատֆորմն օգտագործում է ներկառուցված լեզվով ցանկից տարր ընտրելու համար: Այս դեպքում մենք կտեսնենք.
● ինչպես են օգտագործվում ստանդարտ ձևի պարամետրերը;
● ինչպես է համակարգը օգտագործում դրանք.
● ինչպես կարող է մշակողը օգտագործել դրանք:
Ավելացնենք լրացուցիչ պարամետր, որը կվերահսկի ընտրության ձևի փակումը տարր ընտրելուց հետո։ Եկեք անվանենք այս պարամետրը Փակել Ընտրությունից հետո(Բուլյան տիպ): Եկեք այն ավելացնենք որպես ձևի պարամետր Form՝ տեղեկատու Ապրանքներ ընտրելու համար։
Տարրերի ընտրության ձևը բացելու համար դուք պետք է ստեղծեք իրադարձությունների մշակիչ Start of Selection իրադարձության համար SelectedProduct ձևի տարրի համար՝ Analogues գրացուցակի տարրի տեսքով:

&OnClient
Ընթացակարգը SelectedProductStartSelection (հատ, ստանդարտ մշակում)
Ստանդարտ մշակում= Սխալ;
Ընտրության ընտրանքներ= Նոր կառուցվածք;
Ընտրության Ընտրանքներ. Տեղադրեք(«SelectionMode», True);
Ընտրության Ընտրանքներ. Տեղադրեք(«Խմբերի և տարրերի ընտրություն», Օգտագործելով GroupsAndElements.Elements);
Ընտրության Ընտրանքներ. Տեղադրեք(«AllowRootSelection», False);
Ընտրության Ընտրանքներ. Տեղադրեք(«Ընթացիկ գիծ», Object.SelectedProduct);
Ընտրության Ընտրանքներ. Տեղադրեք(«CloseAfterSelection», False);
OpenForm («Directory.Products.SelectionForm», Ընտրության ընտրանքներ, Items.SelectedItem);
Ընթացակարգի ավարտը
Անհրաժեշտ է առանձին անդրադառնալ OpenForm() մեթոդի երրորդ պարամետրին։ Այս պարամետրը որոշում է, թե ով է լինելու ընտրության ձևի սեփականատերը և ով կտեղեկացվի կատարված ընտրության մասին: Այս դեպքում մենք նշել ենք ձևի տարրը որպես ընտրության ձևի սեփականատեր, բայց մենք կարող ենք նաև նշել ինքնին ձևը այս պարամետրով: Այս դեպքում անհրաժեշտ կլինի իրականացնել կարգավորիչ ProcessingSelectionձևավորել մոդուլը և որոշել դրա մեջ, թե որ ձևի հատկանիշում տեղադրել ընտրված տվյալները:
ՆՇՈՒՄ. Եթե ​​մենք չենք իրականացնում StartSelection իրադարձությունների մշակիչը, ապա դրա գործողությունները կիրականացվեն հենց համակարգի կողմից: Սա ճշմարիտ է բոլոր հետագա մշակողների համար, որոնք օգտագործվում են օրինակում:
Այժմ դուք պետք է մշակեք անցած պարամետրերը ընտրության ձևում: Եկեք դա անենք կարգավորիչում Երբ CreatedOnServer() ընտրության ձևի մոդուլի:

&Սերվերի վրա
Ընթացակարգը WhenCreatingOnServer (ձախողում, ստանդարտ մշակում)
Ստանդարտ մշակում= Սխալ;
Elements.List.SelectingGroupsAndElements = Parameters.SelectingGroupsAndElements;
Elements.List.AllowRootSelection = Պարամետրեր.AllowRootSelection;
Elements.List.CurrentRow = Parameters.CurrentRow;
CloseOnSelection = Options.CloseAfterSelection;
Ընթացակարգի ավարտը
Մեր կողմից դրված ձևի պարամետրերի ֆունկցիոնալությունը ստուգելու համար, օգտագործելով կազմաձևիչը, մենք ընտրության ձևի աղյուսակի համար կսահմանենք List հատկությունը: Ընտրելով խմբեր և տարրերԽմբերի արժեքին (առանց պարամետրի օգտագործման, գրացուցակի տարրերի ընտրությունը հասանելի չի լինի):
ՆՇՈՒՄ. Եթե ​​ապրանքների ցանկը ցուցադրող List աղյուսակում SelectionMode հատկությունը սահմանված չէ True, ապա ապրանքների ընտրությունը հասանելի չի լինի:
Այժմ մենք պետք է ընտրենք ցանկալի տարրի ընտրությունը ընտրության ձևում: Դա անելու համար դուք պետք է սահմանեք կարգավորիչ ձևի աղյուսակի SelectValue իրադարձության համար:

&OnClient
Ընթացակարգը ListValueSelection (տարր, ստանդարտ մշակում, արժեք)
Ստանդարտ մշակում= Սխալ;
NotifyOfSelection (արժեք);
Ընթացակարգի ավարտը
Մեզ մնում է միայն իրականացնել տարրերի ընտրության մշակում հենց մուտքագրման դաշտում: Դա անելու համար դուք պետք է կարգավորեք իրադարձությունը ProcessingSelectionմեր մուտքագրման դաշտը SelectedProduct:

&OnClient
Ընթացակարգը SelectedItemSelectionProcessing(Item, SelectedValue, StandardProcessing)
Ստանդարտ մշակում= Սխալ;
Object.SelectedProduct = SelectedValue;
Ընթացակարգի ավարտը
Մենք ինքնուրույն ներդրեցինք համակարգի մեխանիզմ՝ ձևաթղթի վրա մուտքագրված դաշտում արժեք ընտրելու համար:
ՈՒՇԱԴՐՈՒԹՅՈՒՆ.Այս օրինակը ամբողջական չէ։ Դրա միակ նպատակը ձևի պարամետրերի հետ աշխատելու մեխանիզմների ցուցադրումն է։
Եթե ​​պարամետրեր ստեղծելիս (կարգավորիչ SelectedProductStartSelection()) փոխարինել տողը.

Ընտրության Ընտրանքներ. Տեղադրեք(«CloseAfterSelection», Ճիշտ է);
մեկ տողով.
Ընտրության Ընտրանքներ. Տեղադրեք(«CloseAfterSelection», False) ;
ապա ընտրության ձևն այլևս չի փակվի ընտրությունը կատարելուց հետո: Սա կարող է օգտագործվել, օրինակ, ընտրության ձևը իրականացնելու համար (մի քանի ապրանք ընտրելով՝ առանց ընտրության ձևը փակելու):

Եթե ​​սխալ եք նկատում, ընտրեք տեքստի մի հատված և սեղմեք Ctrl+Enter
ԿԻՍՎԵԼ:
Համակարգիչներ և ժամանակակից գաջեթներ