1c uf բացեք ընտրության ձևը: Ինչպե՞ս բացել ցուցակի ձևը որոշակի ընտրությամբ: Ինչպես բացել նոր օբյեկտի ձև

Ընտրություն վերահսկվող ձևերի վրա 1C 8.3

Հոդվածում կքննարկվեն վերահսկվող ձևերով ընտրությունը կարգավորելու տարբերակները 1C 8.3: Դինամիկ ցուցակի ընտրությունը կարող է սահմանվել ստատիկ կամ դինամիկ կերպով, օգտագործողի միջերեսում կամ կազմաձևիչում: Ստորև մենք կքննարկենք ընտրության բոլոր տարբերակները:

  • Ընտրության կարգավորումը կոնֆիգուրատորում

Ընտրության կարգավորումը մաքսային ռեժիմում

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

Ձեռնարկության ռեժիմում զտումը կարգավորելու համար զանգահարեք «Կարգավորել ցանկը» հրամանը:

Կբացվի պատուհան։


«Ընտրություն» ներդիրը պարունակում է դաշտերի ցանկ, որոնք առկա են ընթացիկ ցանկում: Ընտրեք ցանկի դաշտերը, որոնցով մենք զտելու ենք: Դա կարելի է անել կրկնակի սեղմումով կամ օգտագործելով քաշել և թողնել:


Սահմանեք համեմատության տեսակը և արժեքը, սեղմեք «Ավարտել խմբագրումը», ընտրությունը դրված է:


Երբ դուք ընտրում եք ձեռնարկության ռեժիմում, այսպես կոչված արագ ընտրության դաշտերը ավտոմատ կերպով ստեղծվում են ցուցակի ձևում:


Որպեսզի 1C պլատֆորմը ավտոմատ կերպով ստեղծի դաշտեր արագ ընտրության համար, կոնֆիգուրատորում ձև մշակելիս պետք է նշեք օգտվողի կարգավորումների խումբ:


Այս ընտրությունը կպահվի միայն ընթացիկ օգտագործողի համար, ինչը թույլ է տալիս դինամիկ ցանկի ճկուն հարմարեցում: Այնուամենայնիվ, եթե խնդիրը համակարգի բոլոր օգտագործողների համար կոնկրետ ցուցակի համար ֆիքսված ընտրություն կատարելն է, մենք կարող ենք այն լուծել միայն կոնֆիգուրատորի միջոցով:

Ընտրության կարգավորումը կոնֆիգուրատորում

Աշխատելով կոնֆիգուրատորում, մենք կարող ենք սահմանել երկու տեսակի դինամիկ ցուցակի ընտրություն՝ ֆիքսված և դինամիկ: Ֆիքսված ընտրությունը կազմաձևվում է մեկ անգամ՝ դինամիկ կամ ծրագրային. այն կարող եք սահմանել՝ կախված համակարգի ցանկացած տվյալներից:

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


Կբացվի պատուհան։


Ընտրությունը սահմանվում է այնպես, ինչպես օգտագործողի ռեժիմում:

«Ներառել օգտվողի կարգավորումներում» տարբերակը որոշում է, թե արդյոք կոնֆիգուրատորում ընտրված ընտրանքը հասանելի կլինի օգտագործողի ռեժիմում՝ «Անհատականացնել ցանկը» ցանկի տարրի միջոցով:


Դինամիկ (ծրագրային) ընտրություն

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

Մեթոդներ

Եթե ​​մշակված կոնֆիգուրացիան պարունակում է BSP «Հիմնական ֆունկցիոնալություն» ենթահամակարգը, ապա դինամիկ ցանկում ծրագրի ընտրությունը կարող է սահմանվել ստանդարտ մեթոդով.

SharedPurposeClientServer.SetDynamicListFeatured ()

Այս մեթոդի ստորագրությունը հետևյալն է.

Դինամիկ ցուցակ Տեսակ՝ DynamicList - Ցանկ, որում ցանկանում եք տեղադրել զտիչը:

Դաշտի անվանումը Տիպ՝ տող - դաշտ, որով պետք է տեղադրվի զտիչը:

Ճիշտ արժեք Տեսակ՝ կամայական - Ընտրության արժեք (Ըստ ցանկության: Լռելյայն արժեք՝ Undefined. Ուշադրություն. Եթե դուք անցնեք Undefined, արժեքը չի փոխվի):

Դիտել Համեմատություն Տեսակ՝ DataCompositionComparisonKind - Ընտրության պայման:

Կատարում Տեսակ՝ տող. Տվյալների կազմի տարրի ներկայացում (Ըստ ցանկության: Լռելյայն արժեք. Չսահմանված: Եթե նշված է, ցուցադրվում է միայն օգտագործման դրոշը նշված ներկայացմամբ (արժեքը չի ցուցադրվում: Մաքրելու համար, որպեսզի արժեքը նորից ցուցադրվի, փոխանցեք դատարկ տողը):

Օգտագործումը Տեսակ՝ բուլյան - Նշավանդակ՝ այս ընտրությունն օգտագործելու համար (Ըստ ցանկության: Լռելյայն. չսահմանված):

Ցուցադրման ռեժիմ Type :DataCompositionSettingsItemDisplayMode - Ինչպես է այս ընտրությունը ցուցադրվում օգտվողին: Հնարավոր արժեքներ.

  • ItemDisplay ModeDataCompositionSettings.QuickAccess - Ցուցակի վերևում գտնվող արագ կարգավորումների խմբում:
  • Տարր Display ModeDataCompositionSettings.Normal - Ցուցակի կարգավորում (Ավելին ենթամենյուում):
  • DataCompositionSettingsDisplayMode.Unavailable - Կանխել օգտվողին փոխել այս ընտրությունը:

IdentifierCustom Settings Տեսակ՝ String – Այս ընտրության եզակի նույնացուցիչ (Օգտագործվում է հատուկ կարգավորումներին կապելու համար):

Որոշ ընտրության արժեք հեռացնելու համար դուք պետք է օգտագործեք ստանդարտ մեթոդը.

Ընդհանուր նշանակության ClientServer. DeleteElementsSelectionGroupsDynamicList ()

Այս մեթոդի ստորագրությունը հետևյալն է.

Դինամիկ ցուցակ Տեսակը. DynamicList - ձևի հատկանիշ, որի համար ցանկանում եք զտիչ տեղադրել:

Դաշտի անվանումը Տեսակ. String - դասավորության դաշտի անվանումը (չի օգտագործվում խմբերի համար):

Կատարում Տեսակ. String - դասավորության դաշտի ներկայացում:

Եթե ​​համակարգում BSP չկա, ընտրությունը կարող է ինքնուրույն սահմանվել՝ օգտագործելով DataComposition Field օբյեկտը:

SelectionElement = List.Selection.Elements.Add (Type («DataCompositionFeedback»)); SelectionElement.LeftValue = NewDataCompositionField («լրիվ անուն»); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; SelectItem.Display Mode =DataCompositionSettingsItemDisplayMode.QuickAccess; // Ընտրովի տարր RightValue = «Իվանով»;

Այս ընտրությունը կընտրի տողեր, որոնցում արժեքը «Լրիվ անուն» = «Իվանով»:

Տրամաբանական «AND», «OR», «NOT» օգտագործելու համար նախատեսված է DataCompositionSelectionElementsGroup տվյալների տեսակը:

SelectionGroup = List.Selection.Elements.Add (Type («DataCompositionOptionElementGroup»)); SelectionGroup.GroupType = DataCompositionGroupGroupType.Group OR; SelectionElement = SelectionGroup.Elements.Add (Type («DataCompositionOptionElement»)); SelectionElement.LeftValue = NewDataCompositionField («լրիվ անուն»); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; Selection Element.RightValue = «Իվանով»; SelectionElement = SelectionGroup.Elements.Add (Type («DataCompositionOptionElement»)); SelectionElement.LeftValue = NewDataCompositionField («լրիվ անուն»); SelectionItem.ComparisonType = DataCompositionCompareView.Equal; Selection Element.RightValue = «Պետրով»;

Այս ընտրությունը կընտրի տողեր, որոնցում արժեքը «Լրիվ անուն» = «Իվանով» կամ «Պետրով»:

Դինամիկ ցուցակում ընտրությունը կարող է իրականացվել նաև դինամիկ ցուցակի հարցման տեքստը փոխելով: Այս տարբերակը գործում է, երբ դինամիկ ցուցակ է կազմվում «կամայական խնդրանքի» միջոցով։


Դա անելու համար հարցման տեքստին ավելացրեք «WHERE is True» պայմանը ...


Ինչպես տեսնում եք, այս մոտեցումն ավելի կոմպակտ է կոդ գրելու առումով։ Որքան բարդ լինեն ընտրության պայմանները աղյուսակային բաժնում, որը մենք ցանկանում ենք հաստատել, այնքան ավելի դժվար կլինի ընտրությունը օգտագործել DataCompositionSelectionElement-ի միջոցով: Այնուամենայնիվ, հարցման տեքստը փոխելու օրինակն ունի իր թերությունները. այս իրականացումը դիմացկուն չէ կոդի փոփոխություններին: Օրինակ, դուք կատարել եք նման իրականացում և մոռացել եք, բայց եթե ապագայում ցանկանում եք փոփոխել հարցման տեքստը՝ WHERE-ից հետո ավելացնելով որևէ օպերատոր (ORDER, LOAD), ապա պետք է հիշեք, որ ծրագրի կոդը պարունակում է.

List.TextRequest = List.TextRequest + "And DirectoryUsers.FULL NAME IN (" "Ivanov" "," "Petrov" ")";

Եթե ​​դա հաշվի չառնվի, սխալ կառաջանա, բայց դրանից խուսափելու համար կարող եք այն նորից կատարել այլ իրականացման: Հարցման տեքստին ավելացրեք հետևյալ պայմանը.

WHERE (Տեղադրված չէ և ընտրվածը ԿԱՄ DirectoryUsers.NAME IN (և թույլատրված լրիվ անունը))

List.Parameters.SetValueParameter ("SelectionSetting", լրիվ անվանումը.Համար ()> 0); List.Parameters.SetValueParameter («Թույլատրված լրիվ անվանումը», լրիվ անվանումը);

Այստեղ լրիվ անունը զանգված է:

Ինչպես տեսնում եք, կոդի 2 տող ընդդեմ 10-ի: Որ մեթոդն ընտրել կախված է կոնկրետ հավելվածի խնդրից:

Այս կոդը թույլ է տալիս բացել փաստաթղթերի ցանկը ընտրված ընտրությամբ, կարող եք նաև բացել գրացուցակի տարրերի ցանկը ցանկալի ընտրությամբ

Կոդ 1C v 8.2 UP Form = OpenForm («Document.Invoice.Form.ListForm»); // Բացեք ձևը
SelectionOwner = Form.List.Selection.Elements.Add (Type («DataCompositionFeedbackElement»)); // Ավելացնել ընտրություն
SelectOwner.CompareType = DataCompositionComparisonType.Equal; // Ինչպես ենք համեմատելու
SelectionOwner.Use = True; // Նշեք վանդակը, որպեսզի օգտագործի NewDataCompositionField («Անվանակարգ»)
SelectOwner.LeftValue = NewDataCompositionField ("Counterparty"); // Ինչ ռեկվիզիտների համար մենք ընտրություն կկատարենք
SelectionOwner.RightValue = Object.Contractor; // Եվ ընտրության արժեքը ինքնին

Դեպի բացեք ցուցակի ձևը նախապես սահմանված ընտրությամբօգտագործել հետևյալ մեթոդները.

Առաջին ճանապարհըայն է, որ երբ բացում եք ձևը, կարող եք սահմանել ձևի պարամետրը Selection և բացել ցուցակի ձևը այս պարամետրով:

Ընտրություն պարամետրը կառուցվածք է: Տարրերի անվանումները համապատասխանում են այն դաշտերի անուններին, որոնցով կատարվում է ընտրությունը, իսկ արժեքները պարունակում են ընտրության արժեքները: Սա ցանկի կառավարվող ձևի դինամիկ ընդլայնման տարբերակ է: Այսինքն՝ այն գոյություն ունի ձևերի համար, որոնց հիմնական հատկանիշը DynamicList տիպի հատկանիշ է, օրինակ՝ ցուցակի ձևերի և ընտրության ձևերի համար։

Օրինակ, հետևյալ օրինակը բացում է անդորրագրերի ցանկը, որտեղ ընտրվում է Թիվ դաշտը, որը հավասար է 333-ի:

Կոդ 1C v 8.2 UE SelectionValue = Նոր կառուցվածք («Համար», «333»);
SelectionParameters = Նոր կառուցվածք ("Selection", SelectionParameters);
OpenForm («Document.Invoice.ListForm», SelectionParameters);

Երկրորդ ճանապարհ

Դուք կարող եք բացել ցուցակի ձևը առանց պարամետրերի.

Կոդ 1C v 8.2 UP OpenForm («Փաստաթուղթ. ստացական հաշիվ. ցուցակի ձև»);

Եվ այնուհետև AtCreateOnServer անդորրագրերի ցանկի ձևի իրադարձությունների մշակիչում գրեք այն կոդը, որը ստեղծում է ընտրություն դինամիկ ցանկում, որը ձևի հիմնական հատկանիշն է.

Կոդ 1C v 8.2 UP & OnServer
Ընթացակարգը OnCreateAtServer-ում (ձախողում, ստանդարտ մշակում)
SelectionElement = List.Selection.Elements.Add (Type («DataCompositionFeedback»));
SelectionElement.LeftValue = NewDataCompositionField («Թիվ»);
SelectionItem.ComparisonView = DataCompositionComparisonView.More;
SelectionItem.Usage = True;
SelectionItem.DisplayMode =DataCompositionSettingsItemDisplayMode.Հասանելի չէ;
SelectionItem.RightValue = «000000001»;
Ընթացակարգի ավարտը

Այս մեթոդի առավելություններն այն են, որ ընտրության համեմատական ​​տեսքը կարող է սահմանվել ոչ միայն Հավասար, ինչպես առաջին դեպքում, այլ նաև ավելի, պակաս և այլն:

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

Երրորդ ճանապարհը

Վերջապես, ֆիլտրի պայմանը կարող է տեղադրվել կամայական հարցման մեջ, որն ընտրում է տվյալներ դինամիկ ցուցակի համար:

Օրինակ, մենք պետք է բացենք անդորրագրի հաշիվ-ապրանքագրերի ցանկը, որը պարունակում է ապրանք, որը ընդգծված է ապրանքների ցանկում:

Դա անելու համար ապրանքների ցանկի տեսքով ստեղծեք հրաման և համապատասխան կոճակը Ստացեք հաշիվ-ապրանքագրեր:

Լրացրեք կարգավորիչը այս հրամանը կատարելու համար հետևյալ կերպ.

1C v 8.2 UP & ONCUSTOMER կոդը
Ընթացակարգի ստացման հաշիվ-ապրանքագրեր (հրաման)
ChoiceParameters = Նոր կառուցվածք ("FilterByProduct", Elements.List.CurrentRow);
OpenForm («Document.Invoice.ListForm», SelectionParameters);
Ընթացակարգի ավարտը

Այս կարգավորիչում մենք բացում ենք անդորրագրերի հաշիվ-ապրանքագրերի ցանկի ձևը, որն իրերի ցանկի ընթացիկ ապրանքի հղումը փոխանցում է FilterByProduct ձևի պարամետրին:

Այնուհետև մենք ձևաթղթ կստեղծենք Անդորրագրի փաստաթղթերի ցանկի համար և կստեղծենք Filter By Product ձևի պարամետրը, որը կօգտագործենք բացելու ձևը պահանջվող ընտրությամբ:

Այժմ բացենք List ձևի հիմնական հատկանիշի հատկությունների ներկապնակը։ Սահմանեք Պատվերով հարցման դրոշակը և կտտացրեք «Բացել» ցանկի կարգավորումների տողում:

Հարցման դաշտում մուտքագրեք հարցման հետևյալ տեքստը.

Կոդ 1C v 8.2 UP SELECT
Փաստաթղթի անդորրագրի հաշիվ-ապրանքագիր Համարը,
Փաստաթուղթ Մուտքային հաշիվ-ապրանքագիր. Ամսաթիվ
ԻՑ
Document.Incoming waybill AS DocumentՄուտքային վճարագիր
ՈՐՏԵՂ
DocumentIncoming Invoice.Goods.Product = & Product

Հարցման մեջ մենք օգտագործում ենք Ապրանքի պարամետրը, որին կուղարկվի անդորրագրերի ցուցակի պարամետրում պարունակվող ապրանքների ցանկի հղումը Filter By Product:

Դա անելու համար AtCreateAtServer-ի ցանկի իրադարձությունների մշակման դեպքում գրեք կոդը՝ ապրանքի հարցումի պարամետրի արժեքը սահմանելու համար.

1C v 8.2 UP & ONCUSTOMER կոդը
Բաց ընթացակարգ (ձախողում)
List.Parameters.SetValueParameter («Ապրանք», Parameters.FilterBy Product);
Ընթացակարգի ավարտը

Here List.Parameters-ը ցանկի դինամիկ հարցումների պարամետրերի ցանկ է List հատկանիշի համար: Ապրանքի պարամետրի արժեքը հավասար է Filter By Product ձևի պարամետրի արժեքին:

Արդյունքում, ապրանքների ցանկի տեսքով սեղմելով Ստացական հաշիվ-ապրանքագրեր կոճակը, մենք կստանանք միայն այն անդորրագրերի ցուցակը, որոնք պարունակում են ապրանքների ցանկում ներկայումս ընտրված ապրանքը:

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

GetForm (). Բաց ()

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

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

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

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

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

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

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

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

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

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

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

Var Value;
Զանգված = նոր զանգված;
Զանգված. Ավելացնել (տեսակ ( «DirectoryLink.Nomenclature») ) ;
Զանգված. Ավելացնել (տեսակ ( «DirectoryLink. Contractors») ) ;

TypeDescription = նոր TypeDescription (Array);

Res = EnterValue (Արժեք, «Հուշում», տեսակների նկարագրություն);

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

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

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

Տեսնենք, թե ինչպես է կիրառվում ֆունկցիան OpenForm ()տարբեր իրավիճակներում.

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

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

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

&Սերվերի վրա
FindC () ֆունկցիա;
Վերադարձի դիրեկտորիաներ: Կապալառուներ. Որոնել ըստ պահանջների ("INN", "745107734623")
EndFunction

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

Այստեղ կկատարվի ընդամենը մի ֆունկցիա OpenForm ()առանց որևէ պարամետրի։

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

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

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

& OnClient
Ընթացակարգի հրաման 1 (հրաման)
Պարամետր = նոր կառուցվածք;
Պարամետր. Տեղադրեք («Base», Հաշվի հղում Գնորդին);
OpenForm ( «Document.RealizationGoodsServices.ObjectForm», պարամետր);
Ընթացակարգի ավարտը

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

KeyArray = Նոր զանգված;
ArrayKey. Ավելացնել (KeyParameters);

KeyRecord = Նոր ( «DataRecordRecordKey.Nomenclature Prices», ArrayKey);

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

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

Դեպի բացեք ընտրության ձևը ընտրությամբ 1-ում 8.2-ում(սովորական ձևեր), մենք պետք է կատարենք որոշ գործողություններ: Մենք առաջինը կստանանք: Դրանից հետո մենք կսահմանենք ընտրությունը և կբացենք այն ծրագրային կերպով, ահա կոդի օրինակ.

Ընտրություն ձևի վրա մուտքագրման դաշտում 1C 8.2 մի քանի արժեքներով

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

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

Ընտրությունը սահմանելով մուտքագրման դաշտում 1C 8.3 ձևի վրա, StartSelection իրադարձությունը

Հիմա հաշվի առեք Ընտրություն մուտքագրման դաշտում վերահսկվող ձևի վրա 1C 8.3... Եկեք ձևաթղթի վրա գտնենք մեզ հետաքրքրող տարրը, որում կսահմանենք ընտրությունը, մեր դեպքում դա «Կազմակերպություն» դաշտն է։ Մենք գտնում ենք «Select Start» միջոցառումը, սեղմում ենք խոշորացույցին և հայտնվում ընթացակարգի մեջ: Մենք տեսնում ենք ChoiceData պարամետրը, այս պարամետրը ValuesList տիպի է։ Ընտրությունը պահանջվող տարրերով սահմանափակելու համար մենք պետք է լրացնենք Արժեքների ցանկը: Մենք կարող ենք տարրեր ընտրել միայն սերվերում, այնպես որ մենք ստեղծում ենք ընթացակարգ & OnServer կոմպիլյացիայի հրահանգով: Այս ընթացակարգում մենք լրացնում ենք Ընտրության տվյալները:

Ինչպե՞ս բացել ցուցակի ձևը որոշակի ընտրությամբ:

Կան մի քանի եղանակներ բացելու ցուցակի ձևը որոշ նախապես սահմանված ընտրությամբ: Դիտարկենք դրանք ըստ հերթականության.

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

Ձևը բացելու գործընթացում կսահմանվի նշված դաշտի ընտրությունը: Օրինակ, հետևյալ օրինակը բացում է անդորրագրերի ցանկը, որտեղ ընտրվում է Թիվ դաշտը, որը հավասար է 333-ի:

SelectionValue = Նոր կառուցվածք («Համար», «333»);

SelectionParameters = Նոր կառուցվածք ("Selection", SelectionParameters);

OpenForm («Document.Invoice.ListForm», SelectionParameters);

2. Դուք կարող եք բացել ցուցակի ձևը առանց պարամետրերի.

Բաց ձև («Փաստաթուղթ. ստացական հաշիվ. ցուցակի ձև»);

Եվ հետո, անդորրագրերի ցուցակի ձևի իրադարձության մշակողի դեպքում OnCreateAtServerգրել կոդ, որը ստեղծում է ընտրություն դինամիկ ցուցակում, որը ձևի հիմնական հատկանիշն է.

&Սերվերի վրա

Ընթացակարգը OnCreateAtServer-ում (ձախողում, ստանդարտ մշակում)

SelectionElement = List.Selection.Elements.Add (Type («DataCompositionFeedback»));

SelectionElement.LeftValue = NewDataCompositionField («Թիվ»);

SelectionItem.ComparisonView = DataCompositionComparisonView.More;

SelectionItem.Usage = True;

SelectionItem.DisplayMode =DataCompositionSettingsItemDisplayMode.Հասանելի չէ;

SelectionItem.RightValue = «000000001»;

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

Այս մեթոդի առավելություններն այն են, որ ընտրության համեմատական ​​տեսքը կարող է սահմանվել ոչ միայն Հավասար, ինչպես առաջին դեպքում, այլ նաև ավելի, պակաս և այլն:

Բայց այս մեթոդն ունի նաև մի շատ էական թերություն՝ այս ընտրությամբ ձևը միշտ կբացվի։ Ուր էլ որ նրան կանչեին։ Հետեւաբար, այս ձեւը չպետք է վերագրվի հիմնականին: Եվ եթե, այնուամենայնիվ, այն հիմնական է, ապա նախքան ընտրությունը դնելը, անհրաժեշտ է նախատեսել որոշակի վերլուծություն, թե որտեղից է բացվում այս ձևը: Օրինակ՝ վերլուծելով ձևի պարամետրերը։

3. Վերջապես, ֆիլտրի պայմանը կարող է տեղադրվել կամայական հարցման մեջ, որն ընտրում է տվյալներ դինամիկ ցուցակի համար: Օրինակ, մենք պետք է բացենք անդորրագրի հաշիվ-ապրանքագրերի ցանկը, որը պարունակում է ապրանք, որը ընդգծված է ապրանքների ցանկում:

Դա անելու համար տարրերի ցանկի տեսքով ստեղծեք հրաման և համապատասխան կոճակ Ստացական հաշիվ-ապրանքագրեր.

Լրացրեք կարգավորիչը այս հրամանը կատարելու համար հետևյալ կերպ.

& OnClient

Ընթացակարգի ստացման հաշիվ-ապրանքագրեր (հրաման)

Ցուցակի ձև = Ստացեք ձև («Փաստաթուղթ. ստացական հաշիվ. ցուցակի ձև»);

ListForm.FilterByProduct = Items.List.CurrentString;

ListForm.Open ();

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

Այս կարգավորիչում մենք ստանում ենք անդորրագրերի ցանկի ձևը և ապրանքների ցանկի ընթացիկ կետի հղումը փոխանցում FilterByProduct ձևի պարամետրի մեջ և բացում ձևը այս պարամետրով:

Այնուհետև մենք կստեղծենք փաստաթղթերի ցանկի ձևը Գնման հաշիվ-ապրանքագիրև ստեղծել Filter By Product ձևի հատկանիշ, որը մենք կօգտագործենք որպես ձևի պարամետր, երբ այն բացվի: Այժմ բացենք List ձևի հիմնական հատկանիշի հատկությունների ներկապնակը։ Սահմանեք դրոշը Կամայական խնդրանքև շարքում Ցուցակի հարմարեցումսեղմեք Բացել:

Հարցման դաշտում մուտքագրեք հարցման հետևյալ տեքստը.

ԸՆՏՐԵԼ

Փաստաթղթի անդորրագրի հաշիվ-ապրանքագիր Համարը,

Փաստաթղթի ստացման հաշիվ-ապրանքագիր Ամսաթիվ

ԻՑ

Document.Incoming waybill AS DocumentՄուտքային վճարագիր

ՈՐՏԵՂ

DocumentIncoming Invoice.Goods.Product = & Product

Հարցման մեջ մենք օգտագործում ենք Ապրանքի պարամետրը, որին կուղարկվի ապրանքների ցանկի ընթացիկ տողի հղումը, որը պարունակվում է անդորրագրերի ցուցակի Filter By Product ձևի պարամետրում: Դա անելու համար բացման վրա ցուցակի ձևի իրադարձությունների մշակման դեպքում գրեք կոդը՝ ապրանքի հարցումի պարամետրի արժեքը սահմանելու համար.

& OnClient

Բաց ընթացակարգ (ձախողում)

List.Parameters.SetValueParameter («Ապրանք», FilterBy Product);

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

Այստեղ Ցուցակ.ՊարամետրերՑուցակի հարցումների դինամիկ պարամետրերի ցանկ է List հատկանիշի համար: Ապրանքի պարամետրի արժեքը հավասար է Filter By Product ձևի պարամետրի արժեքին:

Արդյունքում՝ սեղմելով կոճակը Ստացական հաշիվ-ապրանքագրերապրանքների ցանկի տեսքով մենք կստանանք միայն այն անդորրագրերի ցանկը, որոնք պարունակում են ապրանքների ցանկում ներկայումս ընտրված ապրանքը:

3-րդ տարբերակի ցուցադրական օրինակը գտնվում է 1CITS / EXE / FAQ / OpenFormWithSelection.dt գրացուցակում: Օրինակը կատարվում է պլատֆորմի 8.2.9.356 տարբերակում: