Nustatymų kūrėjo niuansai. Pasirinkimai ataskaitose

03.05.2023

Manau, kad nereikia pasakoti, kas yra prieigos kontrolės sistema, nustatymų sudarytojas ir apskritai visas objektų rinkinys, skirtas dirbti su prieigos kontrolės sistema. Pagrindinės naudojimo sritys, neskaičiuojant sudėtingų veiksmų kode, yra dinamiški sąrašai ir ataskaitos, ir abiem atvejais labai reikšmingas funkcionalumas lieka už kadro. Dažnai net nesusimąstome apie visų proceso dalyvių elgesio ir santykių logiką, nes Dažniausiai sprendžiame gana paprastas problemas arba pasikliaujame platformos numatytais nustatymais. Tačiau ten, kur tylos, yra ir vidinė logika, savotiška 1C „meškos paslauga“, kurios vaisius kartais sunku ir neakivaizdžiai įveikti norint pasiekti norimą efektą, o tuo pačiu užtenka tiesiog teisingai naudoti įrankius.

Norintieji gali praleisti 1–4 dalis ir pereiti tiesiai prie pavyzdžių.

Pabandysiu šiek tiek išsamiau aptarti ACS pasirinkimų veikimą, kai jie naudojami ataskaitose. Manau, kad elgesys dinaminiuose sąrašuose su daugybe įspėjimų bus panašus. Taigi, atrankos ataskaitose, šiek tiek teorijos ir tada konkretūs pavyzdžiai.

Naudojamos SP 8.3.6 ir naujesnės versijos, ITS skyriai (10.3.7.5 punktas ir kt.), knyga „Profesionalus tobulėjimas sistemoje 1C-Enterprise 8“ (Kazanė, 2012, antras tomas). E. Chrustalevos knygoje šia tema apskritai nebuvo nieko suprantamo.

1 dalis

Nustatymų kūrėjas, kaip žinote, turi rinkinius „Nustatymai“, „Fiksuoti nustatymai“ (toliau „FN“) ir „Custom settings“ (toliau „CU“). Ataskaitoje gali būti kelios parinktys, o jungtys tarp parinkties N, PN ir FN yra labai unikalios. Be to, nepamirškime apie galimų nustatymų šaltinį ir jo „pirmtakį“, kuris paprastai yra pati grandinė, kuri taip pat turi savo numatytuosius nustatymus.

* Nustatymai – nustatymai, sukurti Configurator režimu ir pakeisti ataskaitos versijos redagavimo režimu;

* UserSettings – nustatymai, kuriuos vartotojas keičia režimu „1C:Enterprise“ vien per sąsają;

* FixedSettings – tie nustatymai, kurie nustatomi iš integruotos kalbos, įskaitant. yra netiesiogiai nustatomi sistemos. Šioje savybėje yra pasirinkimo reikšmės, kurios perkeliamos į formą naudojant jos parametrus („Pasirinkimo“ struktūra).

Nustatymai ir FN yra panašaus dizaino ir turi „Duomenų sudėties pasirinkimo“ tipo rinkinį „Pasirinkimas“, kurį galima pakeisti sudėtį bet kuriuo ataskaitos egzistavimo metu. Tuo pačiu metu nustatymai pasiekiami sąsajos pakeitimams redaguojant variantą, tačiau FN iš viso nepasiekiami. PN, savo ruožtu, yra „košė“, kur lygiaverčiai elementai gali būti ir pati „Pasirinkimas“, ir atskiri „Duomenų kompozicijos pasirinkimo elemento“ tipo objektai (vadinamasis įdėtas objektas). Nepaisant tinkamų metodų prieinamumo, neįmanoma programiškai pakeisti PN elementų rinkinio sudėties, jei tai yra pačios ataskaitos PN, o ne dizainerio sukurti „nuo nulio“ - 1C praneš, kad „Vartotojo rinkinys nustatymai negali pakeisti jo sudėties, nes jis susietas su išdėstymo nustatymų duomenimis. ITS sako: „Nuosavybė nėra įrašoma naudojant integruotą kalbą.“, tačiau, kaip matysime vėliau, PN daryti įtaką galima. Objektų „košė“ turi vidinių jungčių – tikrinama sąlygų nuoseklumas generuojant ataskaitą ir keičiantis kompozicijai. Ant ITS skaitome: „Elementai, kurie patys pažymėti kaip pasirinktiniai, nebus pridėti. Pavyzdžiui, pasirinktame pasirinkime nebus pasirinkto elemento, kuris pažymėtas kaip pasirinktinis. Elementai, kuriuose yra pasirinktinių elementų, nebus pridėti. Pavyzdžiui, sąlygų grupė nebus įtraukta, jei grupėje yra elementų, pažymėtų kaip pasirinktiniai. Įdėtų elementų savybė DisplayMode neanalizuojama. Jie pridedami arba nepridedami kartu su pagrindiniais elementais. Taigi užkulisiuose veikia objektų „stažas“. Tokiu atveju galite gauti efektą, kai sąsaja leidžia nurodyti prieštaringus varianto ir jo PN pasirinkimus, taip pat PN.

Atrodytų, kad „vyresnysis“ yra pasirinkimas. Bet spustelėjus „Daugiau“ / „Keisti parinktį“ ir patvirtinus pakeitimus atidarytoje formoje, iškviečiama formos įvykių tvarkytoja , šiuo atveju pasirinkimas rodomas skydelyje „Pagrindinis“ formoje, iškviestoje iš „Nustatymų...“, ir rodomas ataskaitos formoje, bet NĖRA rodomas skirtuke „Pasirinkimas“; Be to, jis iškart pasirodo ir pagrindinėje ataskaitos formoje, ir formoje „Nustatymai...“ (jei yra vėliavėlė „Įtraukti į vartotojo nustatymus“), arba nei ten, nei ten. Bet bet kuriuo atveju jis NEBUS „Nustatymų...“ formos skirtuke „Pasirinkimas“. Skirtumas tarp skirtuko „Pagrindinis“, formos „Nustatymai...“ ir pagrindinės ataskaitos formos nustatomas pagal lauką „Redagavimo režimas“ (įprastas – tik „Nustatymuose“, greitasis – ir pačioje ataskaitos formoje), bet manau, kad visi tai žino. Beje, reikšmės „Pasirinkimas“ ir „Greitas“ jokiu būdu nėra sinchronizuojamos ir gali prieštarauti viena kitai, tačiau „Greitas“ ataskaitos formoje ir nustatymų formoje yra griežtai sinchroniškos. Taigi, kai redaguojate variantą, jis pats pasikeičia (bet jo ID ir pavadinimas nesikeičia), tačiau PN lieka NEkeičiami (t. y. net jei kalbame apie juos, t. y. apie vėliavėlę įtraukti tą ar tą elementas PN).

Spustelėjus „Pasirinkti parinktį...“ ir patvirtinus pakeitimus atidarytoje formoje, įvykiai suaktyvinami tokia tvarka:

Įkeliant „OptionOn Server“.

Atnaujinant vartotojo nustatymų sudėtį serveryje

Šiuo atveju nei parinktis, nei PN niekaip nesikeičia. Iš čia aišku, kad parinktis ir nustatymai, jei jie prijungti, jokiu būdu nėra tiesiogiai.

Paspaudus „Nustatymai...“ ir patvirtinus pakeitimus atidarytoje formoje, tik suaktyvinamas įvykis Atnaujinant vartotojo nustatymų sudėtį serveryje(šiuo atveju PN pasikeičia, bet rodiniai ir raktas (jei jų nebuvo) negaunami; jei PN objekto „Pasirinkimas“ elementams įjungtas „Greitas“, tada be to „Pasirinkimas“, tikrieji jo elementai rodomi kaip laukai, t. y. veikia panašiai kaip įdėtieji elementai. Šie nustatymai išsaugomi uždarius ir atkuriami kitą kartą įvedus formą.

Nustatymų formoje spustelėjus „Daugiau“/„Nustatyti standartinius nustatymus“ (taip pat elementą „Standartiniai nustatymai“ parinkties redaguoti) tik suaktyvinamas įvykis. Atnaujinant vartotojo nustatymų sudėtį serveryje. Tokiu atveju parinktis pasikeičia, bet PN pasikeičia. Jei parinktis buvo pakeista anksčiau, ji lieka pakeista (nei pakeista vėliavėlė, nei tikrieji nustatymai nenustatomi).

Variantų redagavimo formos struktūros medyje spustelėjus „Pasirinktinio nustatymų elemento ypatybės“ pridedamas objektas „Pasirinkimas“, jis pasirodo tuščias ir niekaip nesinchronizuojamas su esamu varianto pasirinkimu ir esamais įdėtais pasirinkimo elementais variantas niekaip nesikeičia.

Taigi rekomendacija: jei jums reikia nustatyti tam tikrus pasirinkimus „Konfigūratoriaus“ režimu, kad nesusitvarkytumėte su kodu ir kad jie nebūtų parinkties, bet būtų ataskaitos sąsajoje, neturėtumėte manipuliuoti pasirinkimu. parinkties elementus, keičiant jų savybes, bet patį pasirinkimą naudojant mygtukus „Elemento ypatybės…“ ir „Custom Settings“.

Norėdami pridėti ką nors, kas rodoma nustatymuose, prie PN, reikia atlikti veiksmus kode arba sąsajoje, tačiau ištrynus ir išvalius nustatymus PN paveikiamas nedelsiant ir be jokių atnaujinimų, pavyzdžiui:

Report.SettingsLitter.Settings.Selection.Items.Clear();

Prieš uždarant ataskaitos formą, sistema teiraujasi, ar buvo pakeitimų variante. Jei PN buvo pakeitimų, jie bus automatiškai išsaugoti be jokių klausimų ir bus automatiškai bandomi pritaikyti kitame darbo su ataskaita seansu.

Pastabos:

Jei taikant nustatymus įvyksta daugybė klaidų, pirmiausia rodomas pranešimas apie problemą, o tada kompozicija vis tiek atsiranda, įvykis vadinamas ir ataskaitų generavimas. Šiuo atveju FN, net jei jie egzistavo, vis tiek ignoruojami, o tik nustatymai atlieka tam tikrą vaidmenį.

Pridedant pasirinkimą formoje „Keisti parinktį“, tai daroma iš karto, kai yra nustatyta vėliavėlė „Įtraukti į PN“, tačiau kartoju, kad integruotos kalbos požiūriu PN lieka nepakitęs.

Varianto kitimo nustatymas ir PN kitimo nustatymas nėra tiesiogiai susiję. Tai dvi skirtingos pokyčių kryptys.

PN, be kita ko, turi „Papildomi nustatymai“. Niekada negalėjau suprasti, kuo ir kurią akimirką jos užpildytos. Nors ataskaitoje pateikiami nustatymai, „pažymėti atrankoje ir sąlyginiame projekte“ kaip pasirinktiniai (pagal bendrąją įmonę), papildomi nustatymai visais atvejais pasirodė tušti. ITS apie tai nieko nėra.

Nepaisant pareiškimo bendroje įmonėje, PN yra puikiai suskirstyti į xml.

Jei naudoti yra ir nepriklausomi atrankos elementai, ir pats pasirinkimas, tada ataskaita surašoma teisingai, tačiau parodyta dubliuoja informaciją apie nustatytą pasirinkimą galutiniame makete.

Numatytoje ataskaitos versijos redagavimo formoje yra daug įdomių dalykų, bet niekur ji neveikia su FN ir PN, o net su pagrindiniais nustatymais ji veikia labiau skaitymui (išskyrus tai, kad išvalo pasirinkimą, tvarką, susitarimus).

2 dalis

Darbas su „Settings“ ir „FN“ per jų rinkinį yra beveik visada priimtinas, tačiau svarbu atsiminti, kad „trečiojo lygio“ esmė keičiasi. Pirmajame lygyje visada yra numatytieji pačios prieigos kontrolės sistemos nustatymai, jie taip pat netiesiogiai pateikiami galimų nustatymų šaltinyje; antrame lygyje – naudojamos parinkties nustatymai. Tačiau čia logika leidžia „perrašyti“ pagrindines instrukcijas arba jų nepaisyti. Tačiau darbas su PN nebeleidžia laisvių, todėl subtilios manipuliacijos turi būti atliekamos naudojant specialius metodus, o kartais ir laikinus pagalbinius tarpinius objektus, pavyzdžiui:

Comp=NewDataCompositionSettingsComposer; // taip pat galite pradėti // comp.Initialize(SomeSettingsComposer.GetSourceofAvailableSettings()); comp.LoadSettings(SomeSettingsComposer.Settings); SomeSettingsComposer.LoadCustomSettings(comp.CustomSettings);

Nustatymų kūrėjas turi metodą (), kuris įkelia vartotojo nustatymų reikšmes, perduotas kaip metodo parametras. Metodas Gauti nustatymus() leidžia gauti esamų nustatymų kopiją (atsižvelgiant į vartotojo nustatymus). Metodas Atsisiuntimo nustatymai() įkelia perduotus nustatymus į nustatymų kūrimo priemonę (vartotojo nustatymai taip pat iš naujo pateikiami pagal perduotus duomenis, atsižvelgiant į raktų buvimą, žr. toliau pateiktą pavyzdį).

Pasirinktinių nustatymų taikymas pagrindiniams parametrams atliekamas metodu Gauti nustatymus() nustatymų kūrėjas. Atliekami šie veiksmai:

* DataCompositionSelectionElement tipų elementų turinys nukopijuojamas į atitinkamus tinkintų nustatymų elementus.

* Duomenų išdėstymo pasirinkimo tipams elementai, esantys pagrindiniuose nustatymuose ir pažymėti kaip nepasiekiami, lieka nepakitę. Elementai iš PN perkeliami į pagrindinius. Jie pridedami prie kolekcijos pabaigos, skirta Atrankai.

* DataCompositionSelectionElementGroup tipams savybė Usage nustatoma atitinkamame pagrindinių nustatymų elemente (pagal PN elemento naudojimo ženklą).

3 dalis

Formuojant galutinius nustatymus, cituojant ITS, įvairios nustatymų parinktys derinamos taip:

* Jei bet kokio tipo nustatymai yra visiškai pažymėti kaip pasirinktiniai, į gautus nustatymus įtraukiamas PN. Tokiu atveju, jei kuris nors nustatymų elementas yra pažymėtas kaip nepasiekiamas, šie nustatymai bus įtraukti į gautus parametrus, esančius ypatybėje Settings Composer.Settings.

* Jei bet kokio tipo nustatymai pažymėti kaip pasirinktiniai ne visi, o elementas po elemento, tada elementai, pažymėti kaip pasirinktiniai, bus įtraukti į gautus nustatymus iš ypatybės Settings Composer.CustomSettings, o elementai, pažymėti kaip nepasiekiami, bus įtraukti į gautus parametrus iš Settings Composer.Settings ypatybės .

* Fiksuoti nustatymai pridedami prie gautų nustatymų „tokie, kokie yra“. Tokiu atveju situacija yra nepriimtina, kai FN ir PN yra to paties pavadinimo nustatymai, pavyzdžiui, pasirinkimas su ta pačia kairiąja sąlyga. Atkreipiu dėmesį, kad net visiškas visų šių sąlygų savybių sutapimas yra draudžiamas. Tiesą sakant, tai šiek tiek nelogiška.

Noriu pastebėti, kad jei kuriam nors nustatymų fragmentui taikoma funkcinė parinktis ir jis turi būti ribojamas, sistema veikia „tyliai“ - pašalina šį fragmentą iš visur, nieko nepraneša, o atliekant programos manipuliacijas dėl tokio fragmento , jis apdoroja „tuščiosios eigos“ klaidas. Jis neduoda jokių rezultatų, tačiau kodas taip pat neturi jokio poveikio. Tačiau gali būti, kad skirtingi leidimai elgsis skirtingai.

4 dalis.

Ataskaitos formos plėtinyje mums pateikiami parametrai „FN“ ir „PN“, tačiau niekur nerekomenduojama jų pildyti tiesiogiai perduodant į formą. Kaip parodė eksperimentai, be papildomų šokių su tamburinu šių parametrų turinys yra ignoruojamas – jis perrašomas, kai atidarymo metu inicijuojamas linkeris ir kai gaunami anksčiau išsaugoti PN. Rekomenduotina dirbti su PN klavišais, kuriais galima juos paimti iš nustatymų saugyklos ir tada atidaryti bei naudoti, o tai daroma automatiškai ataskaitos formos šone, o ne skambinimo formoje.

Kuriant formą serveryje, parametras „Galimų parametrų šaltinis“ automatiškai paverčiamas kūrėjo informacija ir jo negalima nepaisyti. Tiksliau, gali, bet tai turės įtakos tik visiškai iš naujo apibrėžus visą susijusių objektų grandinę. Kuriame GetSourceAvailableSettings() grįš Undefined iki visų formos atidarymo įvykių pabaigos.

Norėčiau pažymėti, kad formos parametrai, kurie iš esmės nėra pagrindiniai parametrai, „ištempia“ savo veiksmus per kelis įvykius, jei atidarant nustatoma formavimo vėliavėlė. Taip, renginyje ProcessingCheckFillOnServer, iškviečiamas atidarymo ir formavimo metu, parametras „Pasirinkimas“ bus pasiekiamas, tačiau su juo, bet iškviestas tiesiog vartotojui paspaudus mygtuką „Generuoti“, jis nebebus pasiekiamas. Taip yra dėl to, kad visi šie įvykiai apdorojami vieno „apsilankymo“ metu serveryje, jei įjungtas formavimas atidarant ir tik pačioje jų pabaigoje valdymas perduodamas klientui ir iškviečiamas. Atidarant. Tokiu atveju ne pagrindiniai parametrai natūraliai prarandami.

Bendra įvykių vykdymo tvarka atidarant formą su vėliavėle, kad atidarius būtų generuojama ataskaita (šiek tiek daugiau nei aprašyta skyriuje „Profesinis tobulėjimas“):

Kai CreatedOnServer

Prieš įkeliant parinktį į serverį

Įkeliant „OptionOn Server“.

Prieš įkeldami vartotojo nustatymus į serverį

Įkeliant vartotojo nustatymus į serverį

Atnaujinant vartotojo nustatymų sudėtį serveryje

ProcessingCheckFillOnServer

Atidarant

Šiuo atveju nei opcionas, nei PN nekeičiami, nebent buvo dedamos ypatingos pastangos.

5 dalis.

Dabar pažvelkime išsamiau į užduotį atidaryti ataskaitos formą su jos konstrukcija ir iš anksto nurodytu pasirinkimu. Trumpa informacija apie tai yra ITS ir metodinėse rekomendacijose, tačiau ten aprašytas tik pats principas, o subtilybės neatskleidžiamos. Taigi, norėdami kontekstiniu būdu iškviesti ataskaitą, turite perduoti parametrą „GenerateOnOpen“ į jos formą, lygią True; ir parametras Selection, kuriame yra struktūra. Struktūros raktai yra ACS laukų arba ACS parametrų pavadinimai, o reikšmės yra jų reikšmės. Cituojant SP, jei yra ACS parametras, kurio pavadinimas atitinka struktūros rakto pavadinimą, tada reikšmė bus nustatyta jam. Jei parametro nėra, bet yra laukas, tada prie šio lauko bus pridėtas pasirinkimas. Tuo pačiu metu, jei yra to paties pavadinimo parametras ir laukas, sistema tiesiog tyliai jį ignoruos ir nieko neįdiegs.

Skiltyje „Profesinis tobulėjimas“ pateikiamas PN keitimo (t. y. perėmimo ir perkonfigūravimo) pavyzdys „lėtėjant“ įvykyje. Prieš įkeldami vartotojo nustatymus į serverį, kur perduodamas argumentas, kuriame yra dabartinis PN. Tiesą sakant, taip yra ne visada – pavyzdžiui, gali būti atvejų, kai ankstesnėje sesijoje įvyko klaida išsaugant PN arba dėl nustatymų, FN ir PN neatitikimų argumentas „Nustatymai“ bus tuščias. Ir kas įdomiausia, kad šiame įvykyje jo nebus įmanoma visiškai perkonfigūruoti, tai galima padaryti tik įvykių sekos „pabaigoje“, būtent įvykyje ProcessingCheckFillOnServer.

Pažiūrėkime, ką turime prieš įkeldami PN į serverį.

Paprastu atveju, kai ACS nieko nenustatyta ir į PN neįtraukti jokie elementai, situacija yra tokia: Nustatymai – tuščia; FN – turi teisingą pasirinkimą; Mon yra tuščias pasirinkimas. Formavimas veikia teisingai, tačiau vartotojo požiūriu sąsaja prieštarauja vidinėms savybėms ir atgrasina – pasirinkimas veikia, bet nėra matomas. Panašiai, jei parinkčių struktūros nustatymuose įgalinate pasirinkimą PN, ataskaita taip pat sukuriama atsižvelgiant į pasirinkimą, tačiau vartotojas taip pat nemato jokių pasirinkimų.

Konfigūratoriaus ACS nustatymuose nustatykime išankstinius pasirinkimus (lygus tuščioms reikšmėms) ir įtrauksime juos į PN. Teoriškai FN turėtų užpildyti nustatymus, o tie - PN, tačiau iš tikrųjų mes turime: skiltyje Nustatymai - Pasirinkimas su reikiamu elementu, bet tuščia dešiniąja reikšme, FN yra teisingas pasirinkimas ir PN vis dar nieko nėra. Be to, šiuo atveju ataskaita nebus statoma, nes teisinga pasirinkimo reikšmė yra tuščia, nepaisant parametre Select parametro perduotos reikšmės.

Bandymas dirbti su PN elementais taip pat neduoda rezultatų. PN elementui galite pakeisti tik žymą „Naudoti“ ir dalyvavimą „Greitai“. Pasirinkimo reikšmė sąsajoje bus tuščia, sistema negeneruos klaidų. Panašiai bus ir bandymas dirbti su PN Selection derinimo priemonėje, teisinga reikšmė bus matoma teisingai užpildyta, bet sąsajoje nieko nematysite. Priminsiu, kad PN sudėties keisti negalima. Taigi, reikia papildomų gudrybių. Pavyzdžiui:

&Serverio procedūroje SetPresetSelections(UserSettings) Jei ne Parameters.Property("Pasirinkimas") Tada grąžinkite EndIf; Jei Parameters.Selection.Quantity()=0 then Return EndIf; rTypeEO=Tipas("Duomenų sudėties pasirinkimo elementas"); Kiekvienam raktui From Parameters.Selection Loop pField=NewDataCompositionField(key.Key); // If (ValueType(kiz.Value)=Type("Array") arbaValueType(kiz.Value)=Type("ValueList")) ir kiz.Value.Quantity()>1 Tada pViewComparison=DataCompositionComparisonType.InList; Kitu atveju pComparisonType=DataCompositionComparisonType.Equals; endIf; // pNecessarySelection = Neapibrėžta; // pažiūrėkite, ar vartotojo nustatymuose yra Parinkimas pNecessaryEO=Undefined; // pažiūrėkite, ar vartotojo nustatymuose yra atskiras DataComposition pasirinkimo elementas Kiekvienam elnastr From UserSettings.Elements Cycle If TypeValue(elnastr) = Type("DataComposition Selection") and pNecessarySelection=Undefined Tada // gali būti tik vienas pNecessarySelection= elnastr; // tai galima padaryti ir už ciklo ribų, bet reikia rūšiuoti vartotojo nustatymus dėl elementų... Priešingu atveju, If TypeZnch(elnastr) = pTypeEO Tada // tai yra atrankos elementas, gali būti daug iš jų, bet mus domina tie, kurie nėra inicijuoti arba su privalomu lauku If elstr.LeftValue=pField arba elstr.LeftValue=Undefined and rNeedEO=Undefined Then pNeedEO=elstr; endIf; endIf; EndCycle; // Jei pRequiredSelection<>Neapibrėžta Tada // jis eina kaip prioritetas pNecessaryEOFromSelection = Undefined; Kiekvienam elotb From pNecessarySelection.Elements Cycle If elotb.LeftValue=pField Tada pNecessaryEOfromSelection=eloteb; Nutraukti EndIf; EndCycle; Jei pBūtinas EO iš atrankos = Neapibrėžtas Tada pBūtinas EO iš atrankos = pBūtinas pasirinkimas.Elementai.Pridėti(pEO tipas); pNeedEOFromSelection.LeftValue=pField; endIf; pNecessaryEOfromSelection.ComparisonType=pComparisonType; pNecessaryEOFromSelection.RightValue=kiz.Value; pNecessaryEOFromSelection.Use=Tiesa; // rNeededEO.Use=False; OtherIf pNecessarySelection=Neapibrėžta ir pNecessaryEO<>Neapibrėžta Tada // įdėkite elementą pNecessaryEO.LeftValue=pField; pNecessaryEO.ComparisonType=pComparisonType; pNeedEO.RightValue=kiz.Value; pNeedEO.Use=Tiesa; endIf; pNeed=Neapibrėžta; Kiekvienam elotb Iš Report.ComposerSettings.Settings.Selection.Elements Loop // draugišku būdu, turėtų būti rekursinė paieška! Jei TypeValue(elotb)=pTypeEO ir elotb.LeftValue=pField Tada pNeed=elotb; Nutraukti EndIf; EndCycle; Jei pNeed=Neapibrėžta Tada pNeed=Report.Settings Composer.Settings.Selection.Items.Add(pEOType); pNeed.LeftValue=pMarža; endIf; pNecessary.ComparisonType=pComparisonType; pNeed.RightValue=kiz.Value; pNeed.Use=Tiesa; //EndCycle; Report.SettingsLitter.FixedSettings.Selection.Items.Clear(); // kitu atveju bus sakoma, kad elementai susikerta/prieštarauja Procedūros pabaigai

Teisingiausias būdas jį vadinti yra:

&Serveryje Procedūra Apdorojimo užpildymo patikrinimai serveryje (gedimas, patikrinta informacija) Nustatyti iš anksto nustatytus pasirinkimus (ataskaitų. Nustatymai susieti. Vartotojo nustatymai); Procedūros pabaiga

Tada kontekstinis skambutis, pavyzdžiui, iš katalogo formos, atrodys taip:

&OnClient Procedure OpenReport(Command) If ValueFilled(Object.Link) Tada ot=New Structure("LinkToDirectory",Object.Link); // taip laukas pavadintas SDS ataskaitoje Form Parameters=New Structure("Selection,GenerateWhenOpening",select,True); OpenForm("Ataskaita.Ataskaita1.Forma.Ataskaitos forma",Formos parametrai,Ši forma); endIf; Procedūros pabaiga

6 dalis.

Jei reikia, dirbdami su ja pakeiskite ataskaitos nustatymus, įskaitant. tiek paleidžiant, tiek atidarius teisingiausias būdas yra keisti „iš pradžių“, t.y. iš ACS nustatymų. ACS schemos keitimas atliekamas tik su ataskaitos objektu (arba išorine ataskaita), o ne su formos duomenimis, ir pats savaime nieko nekeičia - nustatymuose ir PN išlieka tas pats, koks buvo, o FN paprastai gali likti tuščias. Taigi, priklausomai nuo mūsų užduočių:

Po egzekucijos

Report.Settings Composer.LoadSettings(SKD.DefaultSettings)

keičiasi tik parinktis ir nieko daugiau;

Atlikus 2 dalyje nurodytą techniką (naudojant „tarpininką“ ir metodą ĮkeltiCustomSettings()

veikia tik tuo atveju, jei iš naujo nustatote dabartinį PN naudodami sąsają. Savaime, jei bus pakeistas variantas, jie nepasikeis. Tokiu atveju pasirinkimas pasikeičia, bet naujas pasirinkimo elementas nepridedamas.

Po egzekucijos

ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.All)

platforma tiesiog tyliai krenta. Išbandyta keliuose skirtinguose leidimuose. Ir iškviesti nustatymų rodymo režimą tik greitiesiems nėra prasmės - mes neturėjome įtakos jų kompozicijai, todėl niekas vis tiek nepasikeis.

Ir kadangi vis dar turime visiškai pakeisti ne tik vidinius pasirinkimus, bet ir rodymą ataskaitos formoje bei susijusiose formose, turime pakeisti tik Pasirinkimą arba elgtis taip:

&Serverio procedūroje ChangeSKD() pObject = Formos atributaiValue("ataskaita"); Selection=pObject.DataCompositionScheme.SettingsOptions.Get(0).Settings.Selection; eo = atranka.Elementai.Add(Type("DataCompositionSelectionElement")); eo.LeftValue=NewDataCompositionField("LinkToDirectory.Field1"); eo.ComparisonType=DataCompositionComparisonType.Equals; eo.RightValue=Tiesa; eo.Use=Tiesa; ValueВFormAttributes(pObject,"Ataskaita"); Report.SettingsLitter.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.Restore(); // pageidautina, nors tai vis tiek neturi įtakos FN. // Tiesą sakant, tai yra būtent tai, ką galima pavadinti PN sudėties pakeitimu. Kiekvienam el. laiškui From Report.ComponentSettings.Settings.Selection.Elements Ciklas email.DisplayMode=ElementDisplayModeDataCompositionSettings.QuickAccess; Jei EmptyString(el.UserSettingsIdentifier) ​​​​Then // galite naudoti PN elementui elektroninį SetIdentifier metodą, žiūrėkite jo pagalbą SP, ten viskas gana aišku e.UserSettingsIdentifier="ID123"; // svarbu – identifikatorius gali būti bet koks, o ne UUID ar GUID! e.ViewUserSettings="Test"; endIf; EndCycle; comp=NewDataCompositionSettingsComposer; comp.LoadSettings(pObject.DataCompositionSchema.DefaultSettings); Report.SettingsComposer.LoadCustomSettings(comp.CustomSettings); Kiekvienam el. laiškui iš Report.Settings Composer.CustomSettings.Elements Ciklas email.DisplayMode=ItemDisplayModeDataLayoutSettings.QuickAccess; // vilkite EndCycle į ataskaitos formą; // ir dabar tai turės poveikį: ThisForm.CreateFormElementsUserSettings(,DisplayModeDataCompositionSettings.QuickAccess); Procedūros pabaiga

Tiesą sakant, šią mechaniką galite studijuoti ilgą laiką. Šis leidinys išaugo tiriant vienos konkrečios problemos sprendimo būdus, todėl yra gana vienpusis; bet įtariu, kad apie vidinę nustatymų logiką, ypač vartotojo, galima parašyti atskirą knygą, ne subtilesnę nei Khrstalevo. Deja, neturiu tam nei jėgų, nei laiko. Tas, kuriam konkretūs pokyčiai atrodo naudingi, jau yra geras.

Kai kurie dalykai buvo išaiškinti eksperimentiškai ir todėl yra prieštaringi. Tie, kurie žino daugiau, kviečiami kritikuoti ir komentuoti.

Straipsnis tęsia seriją „Pirmieji žingsniai kuriant 1C“.

Konfigūracijoje 1C:Enterprise platformoje, rodant informaciją, dažniausiai naudojamos lentelės, kuriose rodomi įvairūs informacijos sąrašai. Darbas su tokiais sąrašais gali vykti tiek sąrašo, tiek elemento pavidalu (apdorojimas).

Šiame straipsnyje mes susipažinsime su šiomis sąrašų tinkinimo parinktimis, taip pat apžvelgsime kitas formų tinkinimo funkcijas iš vartotojo pusės.

Pritaikomumas

Straipsnyje aptariama 1C 8.3.4.482 platformoje sukurtos konfigūracijos „8.2 versijos“ valdoma sąsaja.

Jei dirbate su konfigūracijomis, palaikančiomis šią sąsają, informacija jums aktuali dabartinėms platformos versijoms.

Jei dirbate naujoje Taxi sąsajoje, kai kurių konfigūravimo komandų pavadinimai ir bendra veiksmų seka gali šiek tiek skirtis.

Be to, dabartinė platformos versija papildė naujas paieškos galimybes sąrašuose.

Formų nustatymas ir darbas su sąrašais

Valdomos formos elementams galima keisti matomumą ir kai kurias kitas ypatybes. Šiems tikslams valdoma forma meniu Visi veiksmai tarnauja kaip daiktas Keisti formą.

Spustelėjus šią komandą, pasirodys langas „Formos nustatymai“.

Pasirodžiusiame lange galite naudoti žymimuosius laukelius, kad pakeistumėte tam tikros informacijos matomumą. Tokiu atveju forma automatiškai keičiama.

Galite pakeisti detalių tvarką. Pridėkite naują grupę ir įdėkite į ją kai kurias detales (elementus), nurodydami jų grupavimo parinktį (horizontali, vertikali).

Informacija, įtraukta į grupę, bus atitinkamai paskelbta. Be to, galite konfigūruoti elementų ypatybes, pvz., plotį, aukštį ir antraštės duomenis.

Galite apibrėžti atributus, kurie bus suaktyvinti atidarius formą.

Svarbi savybė yra galimybė į formą įtraukti naujų laukų. Tai tampa įmanoma naudojant nuorodos tipo atributus.

Pavyzdžiui, formoje turi būti nuorodos tipo atributas Sandorio šalis, galima pridėti Kontaktinis asmuo, jei ši informacija yra kataloge „Sandorio šalys“.

Jei reikia, papildomi laukai gali būti pašalinti. Konfigūravimo priemonėje sukurtų laukų ištrinti negalima. Visi vartotojo atlikti nustatymai išsaugomi.

Norėdami grįžti į standartinius nustatymus meniu Formos parametrų lange Visi veiksmai turėtumėte pasirinkti elementą Nustatykite numatytuosius nustatymus.

Be formų tinkinimo valdomoje sąsajoje, galima tinkinti sąrašus (katalogo elementus, dokumentus).

Sąrašo pavidalu meniu Visi veiksmai yra speciali komanda Tinkinkite sąrašą.

Atsidarys langas „Sąrašo nustatymai“. Šiame lange galite pasirinkti, rūšiuoti, apibrėžti sąlyginį formatavimą ir grupavimą.

Paveikslėlyje parodyta pasirinkimo redagavimo forma.

Galima rinktis iš kelių laukų. Šiuo atveju pagal numatytuosius nustatymus pasirinkimas veiks pagal IR sąlygą. Taip pat galite naudoti sąlygas ARBA ir NE.

Norėdami naudoti sąlygą ARBA (NE), turite naudoti komandą Grupės sąlygos, kad pridėtumėte atitinkamą grupę (ARBA grupė, NE grupė).

Paveikslėlyje parodyta rūšiavimo laukų apibrėžimo forma.

Galima konfigūruoti grupavimą. Paveiksle pasirinktas grupavimo laukas Sandorio šalis.

Kitame paveikslėlyje parodyta, kaip bus atliekamas grupavimas.

Galite laisvai spalvinti sąrašą ar pritaikyti kitus sąlyginio dizaino elementus (šrifto pasirinkimą, konkretų formatavimą) pagal nurodytą sąlygą, taip pat pasirinkti formatuojamų laukų sąrašą.

Paveikslėlyje parodytas sąlyginio lauko fono projektavimo rezultatas Suma.
Kai suma > 100 000.

Pažymėtina, kad katalogus galima peržiūrėti hierarchiniu režimu.

Per elementą galima konfigūruoti hierarchinį katalogų peržiūrą Žiūrėjimo režimas meniu Visi veiksmai. Galite pasirinkti vieną iš parinkčių: Hierarchinis sąrašas, Sąrašas, Medis.

Taip pat galima sukonfigūruoti savo katalogo elementų grupavimą pagal tam tikras detales.

Pavyzdžiui, galite sugrupuoti prekes pagal tiekėjus. Pavyzdys panašus į tai, kai nagrinėjome dokumentų „Prekių ir paslaugų pardavimas“ grupavimą pagal sandorio šalis.

Patogi funkcija yra daugkartinis pasirinkimas sąrašuose ir tolesnis grupės veiksmų vykdymas (paskelbimas, atšaukimas, ištrynimo panaikinimas).

Sąrašo objektai pasirenkami laikant nuspaustą klavišą Shift arba Ctrl.

Tam tikros reikšmės paieška sąraše turi savo ypatybes. Paieška veikia pasirinkimo režimu. Liko tik tos eilutės, kurios atitinka paieškos sąlygą.

Norėdami ieškoti pagal vertę dabartiniame stulpelyje, tiesiog nustatykite žymeklį ant norimo stulpelio ir spustelėkite mygtuką Rasti komandų skydelyje. Atsidarys langas, kuriame taip pat turėtumėte spustelėti mygtuką Rasti.

Jei norite, kad paieška būtų konkretesnė, galite naudoti žymimąjį laukelį Rasta paieška.

Ieškodami nuorodos tipo duomenų eilutėje (pavyzdžiui, matavimo vienetų), turėtumėte pasirinkti tinkamą paieškos parinktį ...(pagal eilutę).

Tai baigiasi sąrašais ir jų konfigūravimo būdais. Kitame straipsnyje mes ir toliau susipažinsime su sąsaja ir pažvelgsime į patogų vartotojo informavimo įrankį, apie kurį anksčiau nekalbėjome. Koks tai instrumentas? :)

1C posistemis 8.3— metaduomenų medžio objektas, atsakingas už konfigūracijos komandų sąsajos kūrimą.

Žemiau straipsnyje kalbėsime apie posistemes nuo 8.2 versijos.

Faktas yra tas, kad 8.1 versija (kaip ir įprasta 8.2 programa) taip pat turėjo posistemių, tačiau jos tarnavo visiškai kitokiems tikslams, labiau tikėtina, kad kūrėjas, o ne vartotojas. Naudojant posistemes 8.1 versijoje, įvairios funkcijos paprastai buvo atskirtos. Posistemės padėjo ir derinant skirtingas 1C konfigūracijas – buvo galima nurodyti, kurią sistemą perduoti.

1C posistemės ir programuotojo sąsaja

8.3 ir 8.2 versijose posistemės yra pagrindinis įrankis komandų vartotojo sąsajai sukurti. „Posistemių“ metaduomenų objektai turi hierarchinę struktūrą, kad sąsajoje būtų sukonfigūruotas „antrinis meniu“, jums reikia pridėti pavaldžią posistemį:

Ypatybės ir nustatymai

Pažiūrėkime į konfigūratoriaus posistemių nustatymus ir savybes:

Gaukite 267 vaizdo įrašų pamokas 1C nemokamai:

Įtraukti į komandų sąsają- jei pamiršote uždėti šią vėliavą, posistemis nebus rodomas sąsajoje.

Mygtukas atidaro sąsajos nustatymų skydelį, kuriame galite konfigūruoti sąsajas, atsižvelgiant į dabartinio vartotojo vaidmenį:

Paveikslėlis— posistemiui priskirtas vaizdas rodomas įmonės režimu. Galite pasirinkti standartinį vaizdą arba galite pridėti savo, pirmiausia sukurdami jį kaip konfigūracijos objektą Paveikslėlis:

Skirtuke Funkcinės parinktys nurodo funkcinių parinkčių, kuriose naudojamas šis posistemis, sąrašą.

Skirtukas Junginys apibrėžia metaduomenų objektų, dalyvaujančių tam tikrame posistemyje, rinkinį.

Skirtuke Kita galite aprašyti posistemio pagalbą ir nurodyti nustatymus Įtraukti į pagalbos turinį— ar įtraukti šią žinyno temą į bendrąją konfigūracijos pagalbos informaciją.

Jei valdomoje sąsajoje nematote ataskaitos ar apdorojimo

Ši problema labai dažnai iškyla tarp pradedančiųjų kūrėjų – atrodo, kad ataskaita ar apdorojimas buvo įtrauktas į posistemį, tačiau to nesimato.

Pirmoji to priežastis gali būti ta, kad objektas neapibrėžtas kontroliuojamos formos.

Antroji priežastis yra ta, kad objekto skirtuke Komandos pažymėtas žymimasis laukelis "Naudoti standartines komandas". Taip yra dėl to, kad norint atidaryti apdorojimą, galima aprašyti savo procedūrą arba naudoti standartinę: