Ձևի հիմնական մանրամասները. Կառավարվող ձևի մանրամասները (1Cv8) 1c կառավարվող ձևերը մանրամասներ են ավելացնում ծրագրային եղանակով

Ձևի մանրամասները

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

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

Հնարավոր է հանձնարարել Հիմնական ձևի մանրամասները, այսինքն՝ ատրիբուտներ, որոնք կորոշեն ձևի ստանդարտ ֆունկցիոնալությունը (ձևի ընդլայնում): Պետք է հիշել, որ ձևը կարող է ունենալ միայն մեկ հիմնական հատկանիշ.

Ձևի ընդլայնում– սրանք ManagedForm օբյեկտի լրացուցիչ հատկություններ, մեթոդներ և ձևի պարամետրեր են, որոնք բնորոշ են ձևի հիմնական տարր հանդիսացող օբյեկտին:

Ձևաթղթի մշակման գործընթացում դուք կարող եք հստակորեն սահմանել ձևի հատուկ մանրամասներ դիտելու և խմբագրելու հնարավորությունը՝ դերերի առումով՝ օգտագործելով Դիտել և Խմբագրել հատկությունները (ավելին մանրամասների համար տե՛ս «Խմբագրիչներ» բաժնում «Դերի վրա հիմնված ձևի կարգավորումներ» բաժինը։ «գլուխ): Բացի այդ, ձևի մեջ որոշակի հատկանիշի առկայությունը կարող է կազմաձևվել՝ օգտագործելով ֆունկցիոնալ ընտրանքները (ֆունկցիոնալ ընտրանքների մասին ավելի շատ մանրամասներ կարելի է գտնել «Կազմաձևման ինտերֆեյսի կառավարում» գլխում):

Ձևի հատկանիշի հատկություն Պահպանված տվյալներնշան է, որ մանրամասների ինտերակտիվ փոփոխությունը կհանգեցնի ձևի տվյալների խմբագրման համար արգելափակելու փորձին, ինչպես նաև ձևի փոփոխման դրոշի ավտոմատ կարգավորումին:

Տվյալների տեսակները հասանելի են կառավարվող ձևով

Կառավարվող ձևը սովորական ձևից տարբերվում է նաև տվյալների տեսակներով, որոնցով աշխատում է: Եթե ​​նորմալ ձևն աշխատում է 1C:Enterprise-ի տրամադրած տեսակների մեծ մասի հետ (ներառյալ DirectoryObject, DocumentObject և այլն տեսակները), ապա կառավարվող ձևով կարելի է տարբերակել տեսակների հետևյալ կատեգորիաները.

  • տեսակները, որոնք ուղղակիորեն օգտագործվում են ձևի մեջ, այն տեսակներն են, որոնք գոյություն ունեն բարակ և վեբ հաճախորդի կողքին (օրինակ՝ Number, DirectoryLink.Products, GraphicScheme, TabularDocument);
  • տեսակներ, որոնք կվերածվեն հատուկ տվյալների տիպերի՝ կառավարվող ձևի տվյալների տեսակների: Նման տեսակները ցուցադրվում են փակագծերում դրված ձևի մանրամասների ցանկում, օրինակ (DirectoryObject.Products);
  • դինամիկ ցուցակ (ավելի մանրամասների համար տե՛ս այս գլխի «Դինամիկ ցուցակ» բաժինը):

Դիմումի օբյեկտները ձևի տվյալների վերածելը

Հավելվածների որոշ տեսակներ (օրինակ՝ DirectoryObject և այլն) գոյություն չունեն բարակ և վեբ-հաճախորդի կողմում (Լրացուցիչ մանրամասների համար տե՛ս «Կառավարվող հավելվածի հայեցակարգ» գլուխը): Հետևաբար, նման հավելվածների տեսակները ձևով ներկայացնելու համար հարթակը ներկայացրել է տվյալների հատուկ տեսակներ, որոնք նախատեսված են կառավարվող ձևերում աշխատելու համար: Կառավարվող հավելվածի այս առանձնահատկությունն անհրաժեշտ է դարձնում հավելվածի օբյեկտները տվյալների ձևավորման համար փոխակերպել (և հակառակը):

Օգտագործվում են տվյալների հետևյալ տեսակները.

  • Form DataStructure – պարունակում է կամայական տիպի հատկությունների մի շարք: Հատկություններ կարող են լինել այլ կառույցներ, հավաքածուներ կամ հավաքածուներով կառույցներ: Այս տեսակը ներկայացված է, օրինակ, DirectoryObject ձևով:
  • FormDataCollection-ը մուտքագրված արժեքների ցանկ է, որը նման է զանգվածին: Հավաքածուի տարրը հասանելի է ինդեքսով կամ նույնացուցիչով: Որոշ դեպքերում ID-ով մուտքը կարող է հասանելի չլինել: Սա պայմանավորված է կիրառական օբյեկտի տեսակով, որը ներկայացված է այս հավաքածուով: Նույնացուցիչը կարող է լինել ցանկացած ամբողջ թիվ: Այս տեսակը ներկայացված է, օրինակ, աղյուսակային մասի տեսքով։
  • Form DataStructureWithCollection-ը օբյեկտ է, որը միաժամանակ ներկայացված է որպես կառուցվածք և հավաքածու: Այն կարելի է վերաբերվել այնպես, ինչպես այս սուբյեկտներից որևէ մեկին: Այս տեսակը ներկայացնում է, օրինակ, մի ձևի գրառումների հավաքածու:
  • Form DataTree – օբյեկտ, որը նախատեսված է հիերարխիկ տվյալներ պահելու համար:

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

Օրինակ, աղյուսակային մաս պարունակող փաստաթուղթը կներկայացվի FormDataStructure տիպի օբյեկտով (փաստաթուղթն ինքնին), որին ենթակա է FormDataCollection տիպի օբյեկտը (փաստաթղթի աղյուսակային մասը):

Կարևոր.Կազմաձևը մշակելիս կարևոր է հիշել, որ հավելվածի օբյեկտները հասանելի են միայն սերվերում, մինչդեռ ձևի տվյալների օբյեկտները կարող են օգտագործվել ինչպես սերվերի, այնպես էլ հաճախորդի վրա:

Տվյալների փոխանցում կառավարվող ձևի հաճախորդի և սերվերի մասերի միջև

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

Մասնագիտացված խմբագրիչում ձևի մանրամասները խմբագրելիս (մանրամասների համար տե՛ս «Խմբագիրներ» գլխի «Ձևի մանրամասներ» բաժինը), հնարավոր է ազդել հաճախորդի և սերվերի միջև տվյալների փոխանցման վրա, մինչ ձևն աշխատում է: Դրա համար օգտագործվում է մանրամասների խմբագրիչի սյունակը: Միշտ օգտագործեք. Այս հատկության ազդեցությունը տարբերվում է երեք տեսակի հատկանիշների համար.

  • Դինամիկ ցուցակին ենթակա հատկանիշի համար (դինամիկ ցուցակի սյունակ).
    • հատկությունը միացված է – հատկանիշը միշտ ընթերցվում է տվյալների բազայից և ներառվում է ձևի տվյալների մեջ.
    • հատկությունն անջատված է. հատկանիշն ընթերցվում է տվյալների բազայից և ներառվում է ձևի տվյալների մեջ միայն այն դեպքում, երբ առկա է տվյալ հատկանիշի կամ դրա ենթակա հատկանիշի հետ կապված ձևի տեսանելի տարր:
  • Շարժման հավաքածուին ենթակա պարագաների համար.
    • հատկությունը միացված է. փաստաթղթերի շարժումները կարդացվում են տվյալների բազայից և առկա կլինեն ձևի տվյալների մեջ.
    • գույքն անջատված է. փաստաթղթերի շարժումները չեն կարդացվի տվյալների բազայից և չեն ներառվի ձևի տվյալների մեջ (եթե չկա ձևի տարր, որը հղում է անում փաստաթղթերի շարժումներին):
  • Ձևի այլ մանրամասներ.
    • հատկությունը միացված է. հատկանիշը առկա կլինի ձևի տվյալների մեջ՝ անկախ նրանից, թե կա ձևի գոնե մեկ տարր, որը կապված է հատկանիշի կամ դրա ենթակա հատկանիշի հետ.
    • հատկությունն անջատված է. հատկանիշը կհայտնվի ձևի տվյալների մեջ միայն այն դեպքում, եթե կա ձևի տարր՝ կապված հատկանիշի կամ դրա ենթակա հատկանիշի հետ: Ի տարբերություն դինամիկ ցանկի ատրիբուտների, հատկանիշի հետ կապված տարրի տեսանելիությունն այստեղ նշանակություն չունի։

Նշում. Պետք է հիշել, որ մայր հատկանիշի վրա դրված հատկությունը ազդում է բոլոր ենթակա ատրիբուտների վրա: Օրինակ, եթե Use հատկությունը միշտ մաքրվում է փաստաթղթի աղյուսակային մասի համար, ապա համակարգը համարում է, որ այս հատկությունը նույնպես մաքրված է բոլոր ստորադաս մանրամասների համար (չնայած գույքի փաստացի վիճակին):

Ծրագրի օբյեկտի տվյալները ձևի տվյալների վերածելու մեթոդներ

Հավելվածի օբյեկտները ձևի տվյալների և հետ փոխարկելու համար կա գլոբալ մեթոդների մի շարք.

  • ValueInFormData (),
  • FormDataInValue(),
  • CopyFormData ().

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

Ձևի տվյալները հավելվածի օբյեկտի վերածելիս պետք է հաշվի առնել դրանց համատեղելիությունը:

  • ValueInFormData() – հավելվածի տիպի օբյեկտը փոխակերպում է ձևի տվյալների;
  • FormDataInValue() – ձևի տվյալները փոխակերպում է հավելվածի տիպի օբյեկտի;
  • CopyFormData() – պատճենում է այն տվյալները, որոնք ունեն համատեղելի կառուցվածք: Վերադարձնում է True, եթե պատճենը հաջող էր, կամ False, եթե օբյեկտի կառուցվածքը անհամատեղելի է:

Նշում. Հիմնական մանրամասներով ձևի ստանդարտ գործողություններ (ձև բացել, ստանդարտ Write հրամանի կատարում և այլն) կատարելիս փոխարկումն իրականացվում է ավտոմատ կերպով:

Եկեք օրինակ բերենք, թե ինչպես օգտագործել տվյալների փոխակերպումը ձեր սեփական ալգորիթմներում:

&OnServerProcedure CreateOnServer-ի ժամանակ (ձախողում, ստանդարտ մշակում)

ObjectProduct = Directories.Products.FindByName("Coffeepot").GetObject(); ValueInFormData (ObjectItem, Object);

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

&OnClient կարգը Գրել()

WriteOnServer();

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

&OnServer կարգը WriteOnServer()

ObjectProduct = FormDataValue(Object, Type("DirectoryObject.Products")); ObjectItem.Write();

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

ManagedForm օբյեկտը ունի նաև սերվերի վրա հասանելի մեթոդներ.

  • ValueВFormAttribute() – հավելվածի տիպի օբյեկտը փոխակերպում է նշված ձևի հատկանիշի:
  • FormAttributeVValue() – ձևի տվյալների հատկանիշը վերածում է հավելվածի տեսակի օբյեկտի:

Այս մեթոդների օգտագործումը սովորաբար ավելի հարմար է, քանի որ դրանք ունեն, օրինակ, տեղեկատվություն ձևի տեսակի մանրամասների մասին: Բացի այդ, Form AttributesValue() մեթոդը սահմանում է համապատասխանությունը ձևի տվյալների և օբյեկտի միջև, որն օգտագործվում է հաղորդագրություններ ստեղծելիս: Այս մասին ավելին կարող եք կարդալ «Ծառայությունների նավիգացիոն հնարավորություններ» գլխում:

Բերենք այս մեթոդների կիրառման օրինակ։

&OnServer կարգը RecalculateOnServer()

// Փոխակերպում է Object հատկանիշը հավելվածի օբյեկտի: Փաստաթուղթ = Form AttributesValue («Օբյեկտ»); // Կատարում է վերահաշվարկ՝ օգտագործելով փաստաթղթի մոդուլում սահմանված մեթոդը: Document.Recalculate(); // Վերափոխում է հավելվածի օբյեկտը հենարանի: ValueВFormAttributes (Փաստաթուղթ, «Օբյեկտ»);

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

Ծրագրային ինտերֆեյս

FormDataTree

  • FindById
  • GetItems

Նկարագրություն:

Նախագծված է կառավարվող տվյալների մեջ ծառ մոդելավորելու համար:

Այս օբյեկտը կարող է սերիականացվել XDTO-ից/: Այս օբյեկտին համապատասխան XDTO տեսակը սահմանվում է անվանատարածքում։ XDTO տեսակի անունը.

GetItems

Շարահյուսություն:

GetItems ()

Վերադարձի արժեքը.

Տեսակ՝ Ծառի տարրերի տվյալների հավաքագրման ձև:

Նկարագրություն:

Ստանում է վերին մակարդակի ծառի տարրերի հավաքածու:

Հասանելիություն՝ հաճախորդ, սերվեր, thin client, web client:

FindById

Շարահյուսություն:

FindById (<Идентификатор>)

Ընտրանքներ:

<Идентификатор>(պարտադիր)

Տեսակ՝ համար։ Ծառի տարրի նույնացուցիչը:

Վերադարձի արժեքը.

Տեսակ՝ FormDataTreeElement:

Նկարագրություն:

Ստանում է հավաքածուի տարր ID-ով:

Հասանելիություն՝ հաճախորդ, սերվեր, thin client, web client:

FormDataTreeItem

Հատկություններ:

<Имя свойства> (<Имя свойства>)

  • GetId (GetId)
  • GetParent
  • GetItems
  • Սեփականություն

Նկարագրություն:

Ձևավորել տվյալների ծառի տարրը:

FormDataTreeItemCollection

Հավաքածուի տարրեր՝ DataFormTreeElement

Օբյեկտի համար հնարավոր է անցնել հավաքածուն՝ օգտագործելով օպերատորը For every... From... Loop: Անցումը ընտրում է հավաքածուի տարրերը: Հնարավոր է մուտք գործել հավաքածուի տարր՝ օգտագործելով [...] օպերատորը: Տարրի ինդեքսը փոխանցվում է որպես արգումենտ։

  • Տեղադրեք
  • Ավելացնել
  • Ինդեքս (IndexOf)
  • հաշվել
  • Պարզ
  • Ստացեք
  • Տեղափոխել
  • Ջնջել

Նկարագրություն:

Փայտե տարրերի հավաքածու.

Հասանելիություն՝ հաճախորդ, սերվեր, thin client, web client:

Տես նաեւ:

  • FormDataTreeElement, GetElements մեթոդ
  • DataFormTree, մեթոդ GetItems

Արժեքի ծառի հետ աշխատելու առանձնահատկությունները

Ծառի թարմացում

Խնդիր կա ընկնում էհարթակներ ծառը թարմացնելիս:

Եթե ​​ծառի որևէ հանգույց ընդլայնվել է և ընտրվել է ստորադաս հանգույց, ապա ծառը գործառույթով թարմացնելիս. ValueInFormDataհարթակը ընկնում է.

Լուծում. Թարմացնելուց առաջ անհրաժեշտ է մաքրել ծառը:

Օրինակ:

&Սերվերի ընթացակարգի վրա ClearTree(տարրեր) տարրերից յուրաքանչյուր տարրի համար Loop ClearTree(element.GetElements()); End Cycle; տարրեր.Clear(); Ընթացակարգի ավարտը

&Սերվերի ընթացակարգի վրա Fill Concept Tree() dConcepts = srProperties.Build Concept Tree(OnDate, Meta.CurrentIB()); ClearTree(ConceptTree.GetItems()); ValueInFormData (dConcepts, ConceptTree); Ընթացակարգի ավարտը

&OnClient ընթացակարգը OnDateOnChange(Element) Fill ConceptTree(); Ընթացակարգի ավարտը

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

Ձևի ծրագրային փոփոխությունը կարող է պահանջվել մի քանի դեպքերում.

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

Կառավարվող ձևով դուք կարող եք ծրագրային կերպով ավելացնել, փոխել և ջնջել.

  • ռեկվիզիտներ;
  • տեղական թիմեր;
  • տարրեր.

Այս բոլոր գործողությունները հնարավոր են միայն սերվերում:

Ծրագրային ձևափոխումն ունի սահմանափակումներ.

  • Դուք կարող եք ջնջել միայն ծրագրով ավելացված մանրամասները/հրամանները/տարրերը: Դուք չեք կարող ծրագրային կերպով ջնջել կոնֆիգուրատորում ստեղծված օբյեկտները:
  • Դուք չեք կարող հատկանիշ նշանակել որպես հիմնական:

Ձևի հրամանների փոփոխություն

Կառավարել հրամանների կազմը օբյեկտի համար Կառավարվող ձևկա հավաքածու Թիմեր

    Ավելացնել (< ИмяКоманды >)

    Քանակ ()

    Գտեք (< ИмяКоманды >)

    Ջնջել (< Команда >)

Թիմերի հավաքածուն հասանելի է և՛ հաճախորդի, և՛ սերվերի վրա: Դուք կարող եք փոխել հավաքածուն (Ավելացնել() և Ջնջել() մեթոդները միայն սերվերում: Դուք կարող եք որոնել և ստանալ տարրերի քանակը (Գտնել () և Հաշվել () մեթոդները) ինչպես հաճախորդի, այնպես էլ սերվերի վրա:

Որպես ձևի հրամանների հետ աշխատելու օրինակ՝ եկեք ստեղծենք նոր ChangeHistory հրաման՝ «ChangeHistory...» վերնագրով, որը կկանչի մշակիչը։ Ցուցադրման պատմություն(). Ստեղծումը տեղի է ունենում, երբ ձևը բացվում է:

&Սերվերի վրա
Ընթացակարգը WhenCreatingOnServer (ձախողում, ստանդարտ մշակում)
Թիմ = Թիմեր. Ավելացնել ( «Փոփոխությունների պատմություն»);
Թիմ . Գործողություն = ;
Թիմ . Վերնագիր = «Փոփոխությունների պատմություն...».;
Ընթացակարգի ավարտը
&OnClient
Ընթացակարգը Connectable_DisplayHistory (Հրաման)
// հրամանի գործողություններ
Ընթացակարգի ավարտը

Հրամանների մշակիչը պետք է տեղակայված լինի ձևաթղթի վրա և ունենա &OnClient կոմպիլյացիայի հրահանգ:

Ձևի մանրամասների փոփոխություն

Ձևի մանրամասների կազմի ընթերցումը կատարվում է ֆունկցիայի միջոցով Ստացեք մանրամասներ(< Путь >) վերադարձնում է FormAttributes տիպի զանգված: Ֆունկցիայի պարամետրը սահմանում է մայր հատկանիշի ուղին (որպես տող): Եթե ​​պարամետրը բաց է թողնված կամ դատարկ տող է նշված, վերին մակարդակի մանրամասները վերադարձվում են:

Մանրամասների փոփոխությունը կատարվում է մեթոդով Փոխել մանրամասները(<Ավելացված մանրամասներ>, <Շարժական մանրամասներ>) օբյեկտ Կառավարվող ձև. Դեպի պարամետրեր Ավելացված մանրամասներԵվ Շարժական մանրամասներՓոխանցվում են Form Attributes տեսակի տարրերով զանգվածներ:

Ուշադրություն.

Մանրամասների կազմը փոխելու գործընթացը բավականին ռեսուրսային է։ Ձևը իրականում վերստեղծվում է: Այս առումով ձևի մանրամասների հետ աշխատանքը կատարվում է խմբաքանակի ռեժիմով:

Եկեք ստեղծենք նոր ձևի հատկանիշ Գնորդ անունով.


AddedDetails = Նոր զանգված;
Ավելացված մանրամասներ: Ավելացնել (Նոր ձևի հատկանիշներ(«Գնորդ», Նոր տիպի նկարագրություն («DirectoryLink. Կողմնակիցներ»), «Հաճախորդ»));

// Մանրամասների կազմության փոփոխություններ
);

Ձևի տարրերի փոփոխություն

Վերահսկել օբյեկտի տարրերի կազմը Կառավարվող ձևկա հավաքածու Տարրեր. Հավաքածուն ունի մի քանի մեթոդներ.

    Տեղադրեք (< Имя>, < ТипЭлемента>, < Родитель>, < Элемент >)

    Ավելացնել (< Имя>, < ТипЭлемента>, < Родитель >)

    Քանակ ()

    Գտեք (< Имя >)

    Տեղափոխել (< Элемент>, < Родитель>, < МестоРасположения >)

    Ջնջել (< Элемент >)

Նյութերի հավաքածուն հասանելի է և՛ հաճախորդի, և՛ սերվերի վրա: Փոփոխել հավաքածուն (Տեղադրել մեթոդներ () , Ավելացնել () , Տեղափոխել () և Ջնջել () ) հասանելի են միայն սերվերում։ Դուք կարող եք որոնել և ստանալ տարրերի քանակը (Գտնել () և Հաշվել () մեթոդները) ինչպես հաճախորդի, այնպես էլ սերվերի վրա: Հավաքածուի տարրերը կարող են լինել.

  • FormGroup;
  • FormTable;
  • FormField;
  • Ձևի կոճակ:

Դուք կարող եք ծրագրային կերպով նշանակել իրադարձությունների մշակիչներ՝ տարրեր ձևավորելու համար: Մեթոդը նախատեսված է այս նպատակների համար SetAction (< ИмяСобытия>, < Действие >) .

Դիտարկենք հրամանների, մանրամասների և ձևի տարրերի հետ աշխատելու ամենատարածված օրինակները:

Հրամանի և դրա հետ կապված կոճակի ավելացում.

// Ստեղծեք հրաման
Թիմ = Թիմեր. Ավելացնել ( «Փոփոխությունների պատմություն»);
Թիմ . Գործողություն = «Plug-in_Display History»; // Ձևը պետք է պարունակի նշված անունով ընթացակարգ
Թիմ . Վերնագիր = «Փոփոխությունների պատմություն...».;
// Ստեղծեք կոճակ և կապեք այն հրամանի հետ
Տարր = Նյութեր. Ավելացնել ( «Փոփոխությունների պատմություն», Type("FormButton" ));
Element.CommandName = «Փոփոխությունների պատմություն»;

Հատկանիշի և հարակից մուտքագրման դաշտի ավելացում.

// Ավելացված մանրամասների նկարագրություն
AddedDetails = Նոր զանգված;
Ավելացված մանրամասներ: Ավելացնել(Նոր ձևաթղթեր («Գնորդ», նոր տեսակի նկարագրություն ( «DirectoryLink. Counterparties»), «Հաճախորդ» ));
// Մանրամասների կազմի փոփոխություն
ChangeDetails (Ավելացված մանրամասներ);
// Մուտքային դաշտի ստեղծում և ատրիբուտների հետ կապում
Տարր = Նյութեր. Ավելացնել ("Գնորդ" , Տիպ ("FormField" ));
Տարր . Դիտել = FormFieldView: Մուտքի դաշտ;
Տարր . PathToData= «Գնորդ» ;

Իրադարձությունների մշակիչի նշանակում ձևի տարրին.

ՆյութՀաճախորդ. SetAction(«Երբ այն փոխվում է», «Connected_BuyerOnChange»);

&OnClient
Ընթացակարգը Connected_BuyerOnChange(Տարր)
// Իրադարձությունների գործողություններ
Ընթացակարգի ավարտը

Ուշադրություն.

Ընթացակարգեր, որոնք դրված են որպես իրադարձությունների մշակիչներ՝ օգտագործելով մեթոդը SetAction (), խորհուրդ է տրվում տեղադրել Connectable_ նախածանցը։

Ուշադրություն.

Դուք կարող եք ներբեռնել մշակումը ծրագրային որոնման և կառավարվող ձևի մանրամասների, հրամանների և տարրերի փոփոխման օրինակներով:

Ձևի մանրամասները ապահովում են դրա կապը տվյալների հետ: Այս դեպքում մանրամասներից մեկը (և միայն մեկը) կարող է նշանակվել որպես հիմնական. դա կարող է լինել պարտադիր չէ տվյալների տեսակը, որի վրա մենք նկարում ենք ձևը: Բայց ձևի վարքագիծը կախված կլինի հիմնական հատկանիշի տվյալների տեսակից: Բացի ձևի վարքագիծը փոխելուց, ձևի մոդուլի համատեքստը փոխվում է: Ձևի մեթոդների և հատկությունների հետ մեկտեղ նրանում հասանելի են դառնում հիմնական հատկանիշի արժեք հանդիսացող օբյեկտի մեթոդներն ու հատկությունները։ Կարևոր է, որ «Ազատ ձև» տիպի ձևերը չունենան հիմնական մանրամասներ: Այս դեպքում ձևի վարքագիծը որոշվում է միայն օգտագործողի կարգավորումներով: Եկեք քննարկենք հիմնական մանրամասների վերաբերյալ հարցերը:

Հարց 10.05 քննության 1C. Պլատֆորմի պրոֆեսիոնալ. Ինչի համար է օգտագործվում հիմնական ձևի հատկանիշը:

  1. Սահմանում է տվյալների աղբյուրը ձևի համար որպես ամբողջություն
  2. Սահմանում է հարթակի ստանդարտ հնարավորությունները հիմնական հատկանիշում նշված տիպի տվյալների հետ ձևի հետ աշխատելու համար
  3. Տրամադրել տեղական ձևի համատեքստից օբյեկտի մանրամասներին ծրագրային մուտք գործելու հնարավորություն
  4. Ապահովում է օբյեկտի մանրամասների պատկերացում ձևի երկխոսության վրա
  5. 2-ը և 3-ը ճիշտ են
  6. 1-ը և 2-ը ճիշտ են

Ճիշտ պատասխանը թիվ վեցն է, տես վերևում։


Հարց 1C քննության 10.06. Պլատֆորմ Մասնագիտական. Ինչի՞ համար են անհրաժեշտ ձևի մանրամասները:
  1. Տվյալների բովանդակությունը նկարագրելու համար, որը ցուցադրվում, խմբագրվում կամ պահվում է ձևով
  2. Տվյալները ձևով ցուցադրելու և խմբագրելու համար
  3. 1-ը և 2-ը ճիշտ են

Ճիշտ պատասխանը երրորդն է՝ երկուսն էլ։

Հարց 1C քննության 10.07. Պլատֆորմ Պրոֆեսիոնալ. Հիմնական հատկանիշները կամայական վերահսկվող ձևին վերագրելու համար...

  1. Դուք պետք է նշեք «Հիմնական մանրամասներ» վանդակը ձևի ատրիբուտների հատկություններում
  2. անհրաժեշտ է լրացնել ձևի «Տվյալներ» հատկությունը՝ ընտրելով ձևի պահանջվող հատկանիշը

Ճիշտ պատասխանը երկրորդն է.

Հարց 10.08 քննության 1C. Պլատֆորմ Մասնագիտական. Հիմնական մանրամասները կամայական կանոնավոր ձևի վերագրելու համար...
  1. ձևը պետք է դարձնել հիմնական, հիմնական մանրամասները որոշվում են ավտոմատ կերպով
  2. Դուք պետք է նշեք «Հիմնական մանրամասներ» վանդակը ձևի ատրիբուտների հատկություններում
  3. դուք պետք է գնաք «Խմբագրել» մենյու, «Հիմնական մանրամասներ» և ընտրեք ցանկալի արժեքը
  4. անհրաժեշտ է լրացնել ձևի «Տվյալներ» հատկությունը՝ ընտրելով ձևի պահանջվող հատկանիշը

Չորրորդ ճիշտ պատասխանն է.

Հիմնական մանրամասները ընդգծված են թավով.

Հարց 10.09 քննության 1C. Պլատֆորմ Մասնագիտական. Եթե ​​կա մեկ հիմնական ձևի հատկանիշ, հնարավո՞ր է ավելացնել մեկ այլ հիմնական հատկանիշ:
  1. Սա անհնար է
  2. Դա հնարավոր է ձևի հատկանիշի հատկությանը համապատասխան արժեք վերագրելով
  3. Դա հնարավոր է միայն ծրագրային կերպով՝ «Ձև» օբյեկտ մուտք գործելիս
  4. Դա հնարավոր է` համապատասխան ձևի հատկությանը ևս մեկ արժեք ավելացնելով

Ճիշտ պատասխանն առաջինն է, կա խիստ մեկ հիմնական պահանջ, քանի որ կապը օբյեկտի հետ պետք է լինի միանշանակ.

Հարց 10.113 քննության 1C. Պլատֆորմ պրոֆեսիոնալ: Նկարում ներկայացված ձևի մանրամասներից ո՞րն է հիմնականը:

  1. Արտարժույթի փոխարժեքների ցանկ
  2. DirectoryObject
  3. Գրացուցակի ձևաթղթերը հիմնական մանրամասներ չունեն
  4. Գրացուցակի ձևաթղթերն ունեն բոլոր հիմնական մանրամասները
Երկրորդ ճիշտ պատասխանը թավով գրվածն է:

Ձևը կառավարվում է ձևի տարբեր տարրերի միջոցով, որոնք հիերարխիկորեն տեղակայված են ներդիրում Տարրերձևավորող. Ամենակարևոր տարրը հենց ձևն է, որը գտնվում է տարրերի հիերարխիայի վերևում, իսկ մնացած տարրերը ենթակա են դրան։

Ձևի բոլոր տարրերը կարելի է բաժանել հինգ խմբի՝ դաշտեր, խմբավորման տարրեր, կոճակներ, զարդեր և աղյուսակներ: Իմ հոդվածներում ես կվերլուծեմ խմբերից յուրաքանչյուրը։ Այս հոդվածում մենք կսկսենք ուսումնասիրել դաշտային տարրի տեսակներից մեկը. մուտքի դաշտ, բայց մինչ այդ մենք կսովորենք, թե ինչպես ավելացնել տարր ձևին:

Տարրերի ավելացում ձևի մեջ

Դա արվում է բավականին պարզ. անհրաժեշտ է ընտրել տարրը Ձև Form Design Elements պատուհանում և սեղմեք «Ավելացնել» կոճակը: Դրանից հետո կբացվի պատուհան, որտեղ դուք պետք է ընտրեք ցանկալի տարրի տեսակը

Ընտրելուց հետո ցանկալի տարրը կհայտնվի պատուհանում Տարրեր.

Կառավարվող ձևի տարր Դաշտ

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

DataPath հատկությունում մշակողը կարող է ձևի տարրը կապել ցանկալի ձևի հատկանիշի հետ: Խնդրում ենք նկատի ունենալ, որ տարրը ավելացնելուց հետո Մուտքի դաշտձևի վրա այն չի ցուցադրվել հենց ձևի վրա: Դա տեղի ունեցավ, քանի որ մեր նոր տարրը կապված չէ . Օրինակ՝ մշակման ձևի վրա ես ստեղծել եմ մի քանի ատրիբուտ՝ տարբեր պարզունակ տիպերով և մեկ հատկանիշ՝ հղումային տիպով։

Այժմ եկեք միացնենք մեր վերջերս ավելացված ձևի տարրը մանրամասներից մեկի հետ: Դա անելու համար ընտրեք ցանկալի հատկանիշը տարրի PathKData հատկությունից:

Դրանից հետո DataPath և View հատկությունները կլրացվեն, և տարրն ինքնին կցուցադրվի ձևի տեսքով:

Ուշադրություն դարձրեք տարրի հատկությանը Դիտել. Այս հատկությունը որոշում է մուտքագրման դաշտի ֆունկցիոնալությունը: Այս գույքի համար կարող եք ընտրել տարբեր արժեքներ:

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

Այս գույքի արժեքը ԴիտելՄուտքային դաշտերը հարմար են ընտրելու համար, երբ պարզապես անհրաժեշտ է օգտատիրոջը ցույց տալ օգնության մասին տեղեկությունները:

Հիմա եկեք ավելացնենք նոր ձևի տարր՝ տիպով Մուտքի դաշտև միացրեք այն հենարանների հետ Մանրամասն Ամսաթիվմեզ արդեն ծանոթ DataPath հատկության միջոցով

Ինչպես տեսնում եք, մուտքագրման դաշտի տեսքը փոխվել է, և View հատկության համար արժեքների հնարավոր ընտրությունը նույնպես կփոխվի:

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

Տիպի հետ հենարանների համար ԲուլյանՀետևյալ View գույքի արժեքները հասանելի կլինեն:

Իսկ հղման տեսակ ունեցող ատրիբուտների համար հասանելի կլինեն View հատկության այլ արժեքներ:

Գործնական օրինակների օգտագործմամբ ձևի տարրերի հետ ավելի մանրամասն աշխատանքը տրված է «Զարգացման հիմունքներ 1C-ում. տաքսի. Կառավարվող հավելվածի մշակում 12 քայլով»:

Երբեմն թվում է, թե 1C-ում ծրագրավորման լեզուն սովորելը բարդ և դժվար է: Իրականում, ծրագրավորումը 1C-ում հեշտ է: Իմ գրքերը կօգնեն ձեզ արագ և հեշտությամբ յուրացնել ծրագրավորումը 1C-ում և «Զարգացման հիմունքները 1C-ում. տաքսիում»

Սովորեք ծրագրավորում 1C-ում իմ «Ծրագրավորում 1C-ում 11 քայլով» գրքի օգնությամբ

  1. Ոչ բարդ տեխնիկական պայմաններ:
  2. Ավելի քան 700 էջ գործնական նյութ:
  3. Յուրաքանչյուր առաջադրանք ուղեկցվում է նկարով (սքրինշոթ):
  4. Խնդիրների հավաքածու տնային աշխատանքների համար:
  5. Գիրքը գրված է պարզ և պարզ լեզվով` սկսնակների համար:

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

  1. Առանց բարդ տեխնիկական պայմանների;
  2. Ավելի քան 600 էջ գործնական նյութ;
  3. Յուրաքանչյուր օրինակ ուղեկցվում է նկարով (սքրինշոթ);
  4. Գիրքը ուղարկվում է էլեկտրոնային փոստով PDF ձևաչափով: Կարող է բացվել ցանկացած սարքի վրա:

Պրոմո կոդ 15% զեղչի համար - 48PVXHeYu


Եթե ​​այս դասը օգնեց ձեզ լուծել որևէ խնդիր, ձեզ դուր եկավ կամ օգտակար համարեց, ապա կարող եք աջակցել իմ նախագծին՝ նվիրաբերելով ցանկացած գումար.

Դուք կարող եք ձեռքով վճարել.

Yandex.Money - 410012882996301
Վեբ փող - R955262494655

Միացե՛ք իմ խմբերին։

Եվ տվյալների փոխանցման օբյեկտ կոդի կառուցվածքին, վերահսկվող ձև 1C 8.2 միջավայրում:

Ներածություն

Սկսենք «կառավարվող ձև» հասկացության և 1C հարթակի հարակից հասկացությունների կարճ նկարագրությունից: Պլատֆորմի գիտակները կարող են ցանկանալ բաց թողնել այս բաժինը:

2008 թվականին հասանելի դարձավ 1C պլատֆորմի նոր տարբերակը՝ Enterprise 8.2 (այսուհետ՝ Կառավարվող հավելված), որն ամբողջությամբ փոխում է ինտերֆեյսի հետ աշխատանքի ողջ շերտը։ Սա ներառում է հրամանի միջերեսը, ձևերը և պատուհանների համակարգը: Միևնույն ժամանակ, ոչ միայն փոխվում է կոնֆիգուրացիայի մեջ օգտագործողի միջերեսը մշակելու մոդելը, այլև առաջարկվում է նոր ճարտարապետություն՝ հաճախորդի հավելվածի և սերվերի միջև ֆունկցիոնալությունը բաժանելու համար:
Կառավարվող հավելվածն աջակցում է հաճախորդների հետևյալ տեսակներին.

  • Հաստ հաճախորդ (նորմալ և կառավարվող գործարկման ռեժիմ)
  • Նիհար հաճախորդ
  • Վեբ հաճախորդ
Կառավարվող հավելվածն օգտագործում է նոր տեխնոլոգիայի վրա կառուցված ձևեր: Նրանք կոչվում են Կառավարվող ձևեր. Անցումը հեշտացնելու համար աջակցվում են նաև նախորդ ձևերը (այսպես կոչված՝ Կանոնավոր ձևեր), բայց դրանց ֆունկցիոնալությունը զարգացած չէ և դրանք հասանելի են միայն հաճախորդի գործարկման հաստ ռեժիմում:
Մշակողի համար կառավարվող ձևերի հիմնական տարբերությունները.
  • Կառուցվածքի դեկլարատիվ, ոչ թե «պիքսել առ պիքսել» նկարագրություն: Տարրերի հատուկ տեղադրումն իրականացվում է ավտոմատ կերպով համակարգի կողմից, երբ ձևը ցուցադրվում է:
  • Ձևի բոլոր գործառույթները նկարագրված են հետևյալ կերպ մանրամասներԵվ թիմեր. Մանրամասները տվյալներն են, որոնց հետ աշխատում է ձևը, իսկ հրամանները՝ կատարվող գործողությունները:
  • Ձևն աշխատում է ինչպես սերվերի, այնպես էլ հաճախորդի վրա:
  • Հաճախորդի համատեքստում գրեթե բոլոր հավելվածների տեսակներն անհասանելի են, և, համապատասխանաբար, անհնար է փոխել տվյալները տեղեկատվական բազայում:
  • Յուրաքանչյուր մեթոդի կամ ձևի փոփոխականի համար այն պետք է նշվի կազմման հրահանգը, սահմանելով կատարման վայրը (հաճախորդ կամ սերվեր) և մուտք դեպի ձևի համատեքստ:
Թվարկենք ձևի մեթոդները կազմելու հրահանգները.
  • &OnClient
  • &Սերվերի վրա
  • &OnServer Without Context
  • &OnClientOnServerWithout Context
Եկեք լուսաբանենք վերը նշվածը: Սքրինշոթը ցույց է տալիս կառավարվող ձևի և դրա մոդուլի օրինակ մշակման ռեժիմում: Գտեք դեկլարատիվ նկարագրությունը, հենակետերը, կազմման հրահանգները և այլն:

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

Եկեք սահմանենք խնդիրը

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

Դիտարկենք կոդի կառուցվածքը (ձևի մոդուլը) նույն ստանդարտ կոնֆիգուրացիայի մի քանի ձևերով և փորձենք գտնել օրինաչափություններ:
Կառուցվածք ասելով մենք հասկանում ենք կոդի բաժիններ (առավել հաճախ դրանք մեկնաբանությունների բլոկներ են), որոնք մշակողի կողմից հատկացվում են մեթոդների խմբավորման և այս մեթոդների կոմպիլացիոն հրահանգների համար:
Օրինակ 1:
Իրադարձությունների մշակողների բաժին Մեթոդ - հաճախորդի վրա Մեթոդ - սերվերի վրա Մեթոդ - հաճախորդի վրա Ծառայությունների ընթացակարգերի և գործառույթների բաժին Մուտքի կառավարման օժանդակ գործառույթներ
Օրինակ 2:
Ծառայության ընթացակարգերը և գործառույթները Վճարային փաստաթղթերի արժեքներ Միջոցառումների մշակողներ
Օրինակ 3:
Սպասարկման ընթացակարգեր սերվերում Սպասարկման ընթացակարգեր հաճախորդի վրա Սպասարկման ընթացակարգեր սերվերում առանց համատեքստի Վերնագրի իրադարձությունների մշակիչներ Հրամանի իրադարձությունների մշակիչներ
Օրինակ 4:
Ընդհանուր նշանակության ընթացակարգեր Ձև իրադարձությունների մշակիչներ «Կոնտակտային տեղեկատվություն» ենթահամակարգի ընթացակարգեր
Ըստ էության, կոդի կառուցվածքը բացակայում է, կամ, մեղմ ասած, նման է 8.1 ձևերին.

  • «Գեներալ, ծառայություն, օժանդակ» ոչ տեղեկատվական բառեր:
  • Հաճախորդի և սերվերի մեթոդները բաժանելու երկչոտ փորձեր:
  • Մեթոդները հաճախ խմբավորվում են ինտերֆեյսի տարրերով «Աշխատանք աղյուսակային մասի հետ Ապրանքներ, կոնտակտային տվյալներ»:
  • Մեթոդների և ծածկագրերի խմբերի կամայական դասավորություն: Օրինակ՝ Իրադարձությունների կարգավորիչները կարող են լինել մի ձևով վերևում, մյուսում՝ ներքևում, երրորդում ընդհանրապես չընդգծված լինել և այլն:
  • Եվ եկեք չմոռանանք, որ այս ամենը մեկ կոնֆիգուրացիայի շրջանակներում է:
  • Այո, կան կոնֆիգուրացիաներ, որոնցում «General, Service, Auxiliary» բառերը միշտ նույն տեղերում են, բայց...
Ինչու՞ է ձեզ անհրաժեշտ կոդի կառուցվածքը:
  • Պահպանման պարզեցում.
  • Պարզեցնել ուսուցումը:
  • Ընդհանուր/կարևոր/հաջող սկզբունքների արձանագրում.
  • ... քո տարբերակը
Ինչու՞ չի օգնում 1C-ի զարգացման գոյություն ունեցող ստանդարտը:
Դիտարկենք ITS սկավառակների վրա և տարբեր «Մշակողների ուղեցույցներում...» հրապարակված սկզբունքները, որոնք առաջարկվում են կառավարվող ձև գրելիս:
  • Նվազագույնի հասցնել սերվերի զանգերի քանակը:
  • Սերվերի վրա առավելագույն հաշվարկ:
  • Սերվերի ոչ կոնտեքստային զանգերն ավելի արագ են, քան կոնտեքստային:
  • Ծրագիր՝ հաշվի առնելով հաճախորդ-սերվեր հաղորդակցությունը:
  • եւ այլն։
Սրանք կարգախոսներ են, որոնք բացարձակապես ճիշտ են, բայց ինչպե՞ս դրանք իրականացնել։ Ինչպե՞ս նվազագույնի հասցնել զանգերի քանակը, ի՞նչ է նշանակում ծրագրավորել հաճախորդ-սերվեր ռեժիմում:

Դիզայնի նախշեր կամ սերնդային իմաստություն

Հաճախորդ-սերվեր փոխազդեցությունը տասնամյակներ շարունակ օգտագործվել է տարբեր ծրագրային տեխնոլոգիաներում: Նախորդ բաժնում նախանշված հարցերի պատասխանը վաղուց հայտնի է և ամփոփված է երկու հիմնական սկզբունքներում։
  • Հեռավոր ճակատ(այսուհետ՝ Հեռակա մուտքի միջերես)
  • Տվյալների փոխանցման օբյեկտ(այսուհետ՝ Տվյալների փոխանցման օբյեկտ)
Խոսք Մարտին Ֆաուլերից, այս սկզբունքների նրա նկարագրությունը.
  • Հեռավոր մուտքի համար նախատեսված յուրաքանչյուր օբյեկտ պետք է ունենա ցածր հատիկավոր ինտերֆեյս, ինչը նվազագույնի կհասցնի զանգերի քանակը, որոնք անհրաժեշտ են կոնկրետ ընթացակարգ իրականացնելու համար: ... Հաշիվ-ապրանքագիր և դրա բոլոր կետերն առանձին պահանջելու փոխարեն, դուք պետք է մեկ հարցման մեջ կարդացեք և թարմացնեք բոլոր հաշիվ-ապրանքագրերը: Սա ազդում է օբյեկտի ամբողջ կառուցվածքի վրա... Հիշեք՝ հեռահար մուտքի ինտերֆեյս չի պարունակում տիրույթի տրամաբանություն.
  • Եթե ​​ես հոգատար մայր լինեի, անպայման երեխայիս կասեի. «Երբեք մի գրիր տվյալների փոխանցման օբյեկտներ»: Շատ դեպքերում տվյալների փոխանցման օբյեկտները ոչ այլ ինչ են, քան ուռած դաշտերի հավաքածու... Այս նողկալի հրեշի արժեքը բացառապես հնարավորության մեջ է մեկ զանգի ընթացքում ցանցի միջոցով փոխանցել բազմաթիվ տեղեկատվություն- տեխնիկա, որը մեծ նշանակություն ունի բաշխված համակարգերի համար:
Կաղապարների օրինակներ 1C հարթակում
Ծրագրային ծրագրավորման ինտերֆեյսը, որը հասանելի է ծրագրավորողին կառավարվող ձևը մշակելիս, պարունակում է այս սկզբունքների բազմաթիվ օրինակներ:
Օրինակ, OpenForm() մեթոդը, տիպիկ «կոպիտ» ինտերֆեյս:
OpeningParameters = Նոր կառուցվածք ("Parameter1, Parameter2, Parameter3", Value1, Value2, Value3); Ձև = OpenForm (FormName, OpeningParameters);
Համեմատեք v8.1-ում ընդունված ոճի հետ:
Ձև = GetForm (FormName); Form.Parameter1 = Value1; Form.Parameter2 = Value2; Form.Open();

Կառավարվող ձևի համատեքստում կան բազմաթիվ «Տվյալների փոխանցման օբյեկտներ»: Դուք կարող եք ընտրել համակարգայինԵվ մշակողի կողմից սահմանված.
Համակարգայինները մոդելավորում են կիրառական օբյեկտ հաճախորդի վրա՝ մեկ կամ մի քանի ձևի տվյալների տարրերի տեսքով: Անհնար է դրանք ստեղծել առանց ձևի մանրամասներին հղում կատարելու:

  • DataFormsStructure
  • DataFormsCollection
  • DataFormStructureWithCollection
  • DataShapesTree
Համակարգի տվյալների փոխանցման օբյեկտների փոխակերպումը հավելվածի տեսակների և հակառակը կատարվում է հետևյալ մեթոդներով.
  • ValueInFormData ()
  • FormDataValue ()
  • CopyFormData ()
  • ValueInFormAttributes ()
  • FormAttributesValue()
Հաճախ բացահայտ փոխակերպումն օգտագործվում է գոյություն ունեցող լուծումը հարմարեցնելու ժամանակ: Մեթոդները կարող են ակնկալել (օգտագործել առանձնահատկություններ) մուտքային պարամետրեր, ինչպիսիք են ValueTable-ը, այլ ոչ թե FormDataCollection-ը, կամ մեթոդը սահմանվել է հավելվածի օբյեկտի համատեքստում և անհասանելի է դարձել ձևից ուղղակի զանգի համար:
Օրինակ 1C v8.1:
// հաճախորդի վրա FillUserCache (DepartmentLink) ձևի համատեքստում
Օրինակ 1C v8.2:
// սերվերի վրա ProcessingObject = Form AttributesValue("Object"); ProcessingObject.FillUserCache (DepartmentRef); ValueВFormAttributes (ProcessingObject, «Object»);

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

  • Պարզունակ տեսակներ (տող, թիվ, բուլյան)
  • Կառուցվածք
  • Նամակագրություն
  • Զանգված
  • Հղումներ հավելվածի օբյեկտներին (եզակի նույնացուցիչ և տեքստի ներկայացում)
Օրինակ՝ մեթոդն ընդունում է կարգավիճակը փոխելու պատվերների ցանկը և հաճախորդին վերադարձնում է սխալների նկարագրությունը:
&OnServerWithoutContext ֆունկցիա ServerChangeOrderStatus(Orders, NewStatus) Errors = New Match(); // [պատվեր [սխալի նկարագրություն] Յուրաքանչյուր պատվերի համար Orders Cycle StartTransaction(); Փորձեք DocOb = Order.GetObject(); …. այլ գործողություններ, հնարավոր է ոչ միայն պատվերով... Բացառություն CancelTransaction(); Errors.Insert(Order, ErrorDescription()); Վերջ փորձը; End Cycle; Վերադարձի սխալ; EndFunction // ServerChangeOrderStatus()

Կոդի կառուցվածքը

Հիմնական նպատակները, որոնք պետք է արտացոլի կառավարվող ձևի մոդուլը և մոտենա լուծմանը:
  • Հաճախորդի և սերվերի կոդի հստակ տարանջատում:Չմոռանանք, որ կատարման պահին դրանք երկու փոխազդող գործընթացներ են, որոնցից յուրաքանչյուրն ունի էապես տարբեր հասանելի գործառույթներ:
  • Հեռավոր մուտքի ինտերֆեյսի հստակ նույնականացում, սերվերի ո՞ր մեթոդները կարող են կանչվել հաճախորդից, իսկ որոնք՝ ոչ: Հեռավոր ինտերֆեյսի մեթոդների անվանումները սկսվում են «Սերվեր» նախածանցով: Սա թույլ է տալիս անմիջապես տեսնել հսկողության փոխանցումը սերվերին կոդը կարդալիս և հեշտացնում է համատեքստային օգնության օգտագործումը: Նկատի ունեցեք, որ պաշտոնական առաջարկությունը (ITS) առաջարկում է անվանել մեթոդներ հետֆիքսներով, օրինակ՝ ChangeOrderStatusOnServer(): Այնուամենայնիվ, մենք կրկնում ենք, որ ոչ բոլոր սերվերի մեթոդները կարող են կանչվել հաճախորդից, և, հետևաբար, տրամաբանական հասանելիությունն ավելի կարևոր է, քան կոմպիլյացիայի գտնվելու վայրը: Հետևաբար, «Սերվեր» նախածանցով մենք նշում ենք միայն հաճախորդին հասանելի մեթոդները, եկեք անվանենք մեթոդի օրինակ ServerChangeOrderStatus():
  • Ընթեռնելիություն.Ճաշակի հարց է, մենք ընդունում ենք պատվերը, երբ մոդուլը սկսվում է սերվերի վրա ձև ստեղծելու ընթացակարգերով և հեռահար մուտքի մեթոդներով:
  • Պահպանելիություն.Նոր կոդ ավելացնելու համար պետք է լինի հստակ տեղ: Կարևոր կետն այն է, որ մոդուլի վերջում ավելացվում են կոնֆիգուրատորի կողմից ավտոմատ կերպով ստեղծված մեթոդի կաղապարներ: Քանի որ ձևի տարրերի համար իրադարձությունների մշակիչները ամենից հաճախ ավտոմատ կերպով ստեղծվում են, համապատասխան բլոկը գտնվում է վերջին տեղում, որպեսզի յուրաքանչյուր մշակիչ չքաշվի մոդուլի մեկ այլ տեղ:
Ստորև ներկայացված է թվարկված նպատակներն իրագործող մոդուլի հիմնական կառուցվածքը:
  • Գրաֆիկական տարբերակ – հստակ ցույց է տալիս կատարման հիմնական հոսքը:
  • Տեքստի տարբերակը ձևանմուշի ձևավորման օրինակ է՝ կառուցվածքը նոր ձևի մոդուլում արագ տեղադրելու համար:

//////////////////////////////////////////////////////////////////////////////// // <(c) Автор="«Ամսաթիվ =»"/> // <Описание> // // //////////////////////////////////////////// ////////////////////////// // ՄՈԴՈՒԼԻ ՓՈՓՈԽԱԿԱՆՆԵՐ ////////////////// /////////////////////////////////////////////////////////////////////// ////////// // ՍԵՐՎԵՐԻ ՄԱՍԻՆ //******** ՍԵՐՎԵՐԻ ՎՐԱ ԷՐԴԵՍՏՆԵՐԸ ******* &Սերվերի վրա Սերվերի վրա ստեղծման գործընթացի մասին (Խափանում, ստանդարտ մշակում) / /Տեղադրեք մշակողի բովանդակությունը Գործընթացի ավարտ //******* ՀԵՌԱԿԱ ՄՈՒՏՔԻ ԻՆՏԵՐՖԵՅՍ ******* //******** ԲԻԶՆԵՍ ՏՐԱՄԱԲԱՆՈՒԹՅՈՒՆԸ ՍԵՐՎԵՐԻ ՎՐԱ ******* ///////// //////////////////////////////////////// /////// /////////////////// // ՀԱՃԱԽՈՐԴԻ ԵՎ ՍԵՐՎԵՐԻ ԸՆԴՀԱՆՈՒՐ ՄԵԹՈԴՆԵՐԸ /////////////// /////// ////////////////////////////////////////// ///// //////// // ՀԱՃԱԽՈՐԴԻ ՄԱՍԻՆ //******** ԲԻԶՆԵՍ ՏՐԱՄԱԲԱՆՈՒԹՅՈՒՆԸ ՀԱՃԱԽՈՐԴԻ ՎՐԱ ******* //******** ԹԻՄ * ****** //******** ՀԱՃԱԽՈՐԴԻ ՄԻՋՈՑԱՌՈՒՄՆԵՐ ******* ///////////////////////// ///// ////////////////////////////////////////////////////////////// // / / ՀԻՄՆԱԿԱՆ ԾՐԱԳՐԻ ՕՊԵՐԱՏՈՐՆԵՐ

Առնչվող հարցեր
Եզրափակելով, մենք ուրվագծելու ենք մի քանի ոլորտներ, որոնց մասին օգտակար է մտածել հաճախորդ-սերվեր փոխազդեցության ծրագրավորման ժամանակ:
  • Հեռավոր մուտքի ինտերֆեյսի իրականացման ընտրանքներ. Ասինխրոնություն, մանրամասնության մակարդակ...
  • Քեշավորում. 1C-ն անհաջող ճարտարապետական ​​որոշում է կայացրել՝ ներմուծելով քեշավորումը միայն սովորական մոդուլների կանչման մեթոդների մակարդակում և չտրամադրելով վերահսկման հնարավորություններ (համապատասխանության ժամանակ, վերակայում ըստ պահանջի):
  • Սերվերի անուղղակի զանգեր. Մի մոռացեք տեխնոլոգիական առանձնահատկությունների մասին, հաճախորդի վրա շատ «անվնաս» գործողություններ հրահրում են հարթակին կապ հաստատել սերվերի հետ: