Funktionella alternativ. Funktionsprincip och exempel på användning. Konstruktion av distribuerade informationssystem, sökning, rutinuppgifter, funktionella alternativ 1C funktionella alternativ exempel


30.03.2017

Funktionella alternativ 1C 8.3 (Mekanism, användning)

Att börja Viktig Observera att den funktionella alternativmekanismen INTE begränsar åtkomsten till data, men styr bara synligheten (visningen) av data på formuläret. För att begränsa åtkomsten till objekt använder plattformen en rollmekanism.
Därför kommer vi att börja vår övervägande av mekanismen för funktionella alternativ med en beskrivning av uppgiften. I vår mini-konfiguration finns det en katalog "Warehouses". Låt oss anta att alla användare har tillgång till denna katalog.
Igen! Mekanismen för funktionella alternativ styr visningen av data på formuläret och begränsar inte åtkomsten till metadataobjektet (Katalog, dokument, registerposter...) Det är nödvändigt att göra inställningen "Använd flera lager" (Ja, ja... Det här är i UT 11.X, det görs där för organisationer också). Om vi ​​använder flera lager är lagerkatalogen tillgänglig i gränssnittet, om inte finns det ett kommando som öppnar ett lager (vi antar att det bara finns ett i det här fallet och komplicerar inte uppgiften).

Konfiguration av metadataobjekt

För att uppnå denna uppgift behöver vi:
  • Två funktionella alternativ "Använd flera lager" och "Använd inte flera lager". Den första är ansvarig för tillgängligheten av katalogen och den andra för tillgängligheten av det allmänna kommandot för att anropa lagrets "öppningsalgoritm"
  • Konstanter med samma namn med den booleska typen för att lagra värdena för funktionella alternativ
  • Katalog "Lager"
  • Allmänt kommando "OpenMainWarehouse". Glöm inte att ange en grupp kommandon för det, annars kommer konfigurationen inte att tillämpas (det kommer att uppstå ett fel)
Och vi kommer att lägga till ett delsystem där vi kommer att inkludera alla befintliga objekt

Ställa in funktionella alternativ

Det första alternativet är "Använd flera lager". Värdet lagras i en konstant med samma namn, som inkluderar katalogen "Warehouses". Således, när värdet på konstanten är "True" är katalogen tillgänglig i gränssnittet, när den är falsk, kommer katalogen inte att visas i gränssnittet (innehåll i undersystem, objektformer, etc.)




Den andra funktionen "Använd inte flera lager" är installerad när den första "Använd flera lager" INTE är installerad.
De där. om vi inte använder flera lager (Use Several Warehouses = FALSE och referensboken "Warehouses" är inte tillgänglig), så visas kommandot "OpenMainWarehouse", vars tillgänglighet styrs av alternativet "Använd inte flera Warehouses" (Använd inte flera lager = TRUE)

Kontrollera systemets beteende

Alternativ 1. UseMultipleWarehouses = True, Don'tUseMultipleWarehouses = False. Katalogen "Warehouses" är tillgänglig i gränssnittet


Alternativ #2. UseMultipleWarehouses = False, Don'tUseMultipleWarehouses = True. Katalogen "Warehouses" är INTE tillgänglig i gränssnittet, istället är det allmänna kommandot "OpenMainWarehouse" tillgängligt.

Med lanseringen av 1C:Enterprise 8.2-plattformen dök ett nytt objekt upp i konfigurationsträdet - "Funktionella alternativ". Den används aktivt i alla standardkonfigurationer baserade på hanterade formulär och tjänar till att förenkla processen för att visa individuella detaljer och objekt i gränssnittet. Till exempel, i din konfiguration finns en modul för utbyte med externa webbtjänster. Denna modul använder ett antal detaljer i dokument, register och enskilda komponenter i delsystem. Modulen är valfri och inte nödvändig för alla företag. Det är logiskt att eftersom inte alla behöver en modul så är det inte heller alltid nödvändigt att visa alla element/fält som är associerade med den.

I äldre versioner av plattformen krävde att lösa sådana problem att skriva ytterligare kod, som måste anropas i alla beroende sektioner. Till exempel, om vi behövde dölja vissa formulärdetaljer (beroende på inställningsvärdet), behövde vi anropa motsvarande kod när vi öppnade formuläret. Detta var inte särskilt bekvämt och i de flesta fall gav utvecklarna upp sådana saker.

Det är bra om du bara behöver dölja fält i form av dokument, men vi kan även ha registerformulär med vilka användarinteraktion också är möjlig. Att skriva en universell displaykontrollfunktion är ganska svårt och kommer att kräva ytterligare tid, vilket aldrig räcker.

Funktionella alternativ är utformade för att lösa detta och många andra svårigheter i samband med att visa gränssnittselement/sammansättningen av tillgängliga objekt i användargränssnittet. I denna anteckning kommer jag inte att överväga exempel på att använda huvudsyftet med funktionella alternativ, men kommer att uppmärksamma deras användning på ett icke-standardiserat sätt. Det kanske är bekant för många avancerade utvecklare, men jag kom till den här metoden helt av en slump. Mer exakt var det inspirerat av praktiken att programmera i JavaScript.

Fall nr 1: ett funktionellt alternativ som omslag över andra föremål

Den första icke-standardfunktionen hos funktionella alternativ är möjligheten att skapa omslag. Låt oss titta på det enklaste exemplet - konstanter. Till exempel lägger du till en ny konstant i en konfiguration med ett stort antal användarroller. För att användarna ska få tillgång till värdet på en konstant måste du ställa in läsrättigheter till lämpliga roller. Om rättigheterna inte är inställda kommer användare inte att kunna få dess värde. Om det finns många roller och de inte ärvs från basrollen, måste du lägga tid på att markera lämpliga rutor.

Ett funktionsalternativ kan lösa detta problem mer elegant. Tanken är denna: skapa en konstant (till exempel ). Vi tilldelar inte rättigheter till det. Skapa ett funktionellt alternativ med samma namn och ange det i egenskapen "Lagring" ange en konstant "Möjlighet att spara data". Vi sätter även flaggan "Privilegerad behandling vid mottagandet".

Det är det, nu var som helst i koden där du behöver hänvisa till en konstant skriver vi så här:

Eftersom vi har satt alternativet till privilegierat läge behöver vi inte ange några ytterligare rättigheter för konstanten. Naturligtvis finns det inget behov av att tillämpa denna teknik i alla tänkbara och otänkbara situationer. Kom ihåg att korrekt tilldelning av rättigheter är nyckeln till sinnesfrid. Använd tricket endast i verkligt nödvändiga fall.

Mål nr 2. Ytterligare abstraktionsnivå

Jag vet inte vad jag ska kalla den här metoden mer korrekt, men i mitt sinne låter det precis så. Låt oss titta på föregående exempel. Vi har fortfarande samma konstanta "Förmåga att spara data". Vi arbetar med det med det funktionella alternativet med samma namn som ett omslag.

Föreställ dig nu att vi ville bli av med konstanten och byta till att använda en katalog. Ett typiskt scenario för att lösa ett sådant problem (om vi bara använder en konstant) skulle vara att köra ett globalt sökverktyg för att upptäcka åtkomst till konstanten. Låt mig påminna dig om att om vi inte använder ett funktionellt alternativ som omslag, bör vi behandla konstanten så här:

Constants.Ability toSaveData.Get();

Vi hittar alla anrop och ersätter dem med sökvägen till det nya lagringsobjektet. Håller med, det här är ganska obekvämt. Om vi ​​använde det tidigare fallet (med ett funktionellt alternativ som omslag), behöver vi bara gå till egenskaperna för det funktionella alternativet för att "flytta" och ändra egenskapen "Lagring". Ange till exempel där "Katalog" eller "Informationsregister". Inga spel med global sökning krävs. Koden för att komma åt värdet på en konstant genom ett funktionellt alternativ kommer att förbli densamma:

GetFunctionalOption("DataSavingAbility");

Skriv ut (Ctrl+P)

1. Syfte med funktionella alternativ

Funktionella alternativ gör att utvecklaren kan beskriva applikationslösningens funktioner, som snabbt kan slås på eller av vid implementeringsstadiet och/eller under systemdrift. Till exempel kan möjligheten att arbeta med ytterligare produktegenskaper separeras i ett separat funktionsalternativ. Sedan, om du inaktiverar den här funktionen, kommer alla relaterade (med ytterligare produktegenskaper) funktioner att "försvinna" i applikationslösningens gränssnitt.
Systemet kan automatiskt ta hänsyn till tillståndet för de gjorda inställningarna - dölj inaktiverade funktioner, vilket gör applikationsgränssnittet tydligare och mer begripligt för användaren.
Under utvecklingen uppstår situationer då värdet av ett funktionellt alternativ måste bero på vissa parametrar, till exempel upprätthåller inte alla organisationer valutaredovisning. För att implementera ett sådant beroende, använd Functional Options Parameters - objekt som parametrerar funktionella alternativ.

2. Vad påverkar funktionella alternativ?

2.1. allmän information

Funktionella alternativ kan ha en inverkan:
● Till användargränssnittet - när du inaktiverar några funktionella alternativ döljer systemet alla element som är relaterade till det i användargränssnittet. Följande gränssnittselement påverkas:
● globalt kommandogränssnitt;
● formulärdetaljer (inklusive kolumner med formulärdetaljer av typen värdetabell eller värdeträd);
● formkommandon;
● rapporter implementerade med hjälp av ett datasammansättningssystem.
UPPMÄRKSAMHET! Om klientapplikationen fungerar med filversionen av infobasen via webbservern, kommer en ändring av funktionsalternativet att leda till en ändring av användargränssnittet först efter att webbservern har startat om (omstart av klientapplikationen kommer inte att ändra användargränssnittet).
● För algoritmer skrivna i ett inbyggt språk – det är möjligt att hämta värdena för funktionella alternativ från det inbyggda språket och använda dem under olika förhållanden, till exempel för att minska mängden beräkningar.
UPPMÄRKSAMHET! Funktionella alternativ och deras parametrar påverkar inte databasens sammansättning. Alla tabeller och fält finns i databasen oavsett status för de funktionella alternativen.

2.2. Globalt kommandogränssnitt

Effekten av funktionella alternativ på det globala kommandogränssnittet är att systemet döljer kommandon för alla objekt relaterade till inaktiverade alternativ. Till exempel, om värdet på det funktionella alternativet Inköp är lika med False, kommer kommandona för att öppna avsnittet Inköp, skapa ett varumottagningsdokument, öppna varumottagningslistan, etc. att döljas.
Inköpsalternativet kan i sin tur ta hänsyn till värdet av en funktionell optionparameter, till exempel Organisation. Genom att ändra värdet på denna parameter med hjälp av inbyggda språkmetoder kan du ändra tillståndet för det funktionella alternativet, och följaktligen synligheten för gränssnittselementet.
Du bör också ta hänsyn till följande funktioner i kommandogränssnittsformationen:
● Kommandot kommer att exkluderas från kommandogränssnittet om attributet som är en kommandoparameter inaktiveras av ett funktionellt alternativ.
● Kommandot kommer att exkluderas från kommandogränssnittet om kommandoparametertypen är inaktiverad av ett funktionellt alternativ. Om ett kommandos parametertyp är sammansatt, blir kommandot otillgängligt när alla parametertyper är inaktiverade.

2.3. Form

I ett formulär kan funktionella alternativ påverka formulärdetaljerna och kommandona och (som ett resultat) ändra synligheten för de formulärelement som är associerade med dem (fält och kolumner för formulärdetaljer, knappar för formulärkommandon). När du utvecklar ett formulär är det nödvändigt att ta hänsyn till följande funktioner i systemets beteende:
<Вид>Ett objekt ( DirectoryObject t, DocumentObject, etc.) kommer att inaktiveras om motsvarande konfigurationsobjekt inaktiveras av det funktionella alternativet. Endast de funktionella alternativ som inte har parametrar analyseras.
● Grundläggande attribut för en hanterad formulärtyp DynamicList kommer att inaktiveras om det funktionella alternativet inaktiverar konfigurationsobjektet som anges som huvudtabellen i den dynamiska listan. Endast de funktionella alternativ som inte har parametrar analyseras.
● Formattributet för en referenstyp är inaktiverat om konfigurationsobjektet som bildar denna typ är inaktiverat av ett funktionsalternativ. Formattributet för en sammansatt typ inaktiveras om de funktionella alternativen inaktiverar alla beståndstyper.
● Typformattributet är inaktiverat<Вид>Ett objekt (inklusive huvudformulärattributet), om konfigurationsobjektet som bildar denna typ är inaktiverat av ett funktionellt alternativ. Endast de funktionella alternativ som inte har parametrar analyseras.
● En formulärtabell kommer att inaktiveras om den visar formulärattributdata som har inaktiverats av ett funktionellt alternativ.
● Det finns inga typer i typvalsdialogrutan (till exempel för inmatningsfält associerade med attribut av en komplex typ) om konfigurationsobjekten som bildar dessa typer är inaktiverade av ett funktionsalternativ. Information om typer som är inaktiverade av funktionella alternativ cachelagras på klientsidan och rensas efter 20 minuter eller under ett metodanrop Uppdatera gränssnitt().
UPPMÄRKSAMHET! Till skillnad från kommandogränssnittet ställs värdena för parametrarna för funktionella alternativ endast in för en specifik instans av formuläret.

2.4. Datasammansättningssystem

Datasammansättningssystemet används främst för att generera rapporter. Funktionella alternativ påverkar sammansättningen av de data som visas i rapporten och sammansättningen av rapportinställningarna som är tillgängliga för användaren. Till exempel, om det funktionella alternativet Valutaredovisning är inaktiverat, kommer det inte att finnas någon kolumn Valuta och Valutabelopp i rapporten som visar dokumentregistret Godsmottagning, och i inställningarna kommer det inte att finnas någon möjlighet att välja, gruppera, sortera, etc. av fältet Valuta.

2.5. Egenskaper

Funktionella alternativ påverkar synligheten för formulärfält som visar värdet av ett objekts egenskaper. För att göra detta måste du i det funktionella alternativet inkludera ett attribut som lagrar värdet på egenskapen.
Låt oss titta på ett exempel. Egenskaper används för produktkatalogen, typer av egenskaper lagras i typplanen egenskaper Egenskaper, och värdena som en informationsregisterresurs Egenskapsvärden. Resursen ingår i det funktionella alternativet Redovisning av egenskaper.

Ris. 1. Inverkan av funktionella alternativ på prestanda

I händelse av att det funktionella alternativet inaktiveras Redovisning av egenskaper I formulären är synligheten för fälten (Värdekolumn och Värdefält) som visar de karakteristiska värdena inaktiverad, som visas i figur 1.

3. Allmänt arbetsschema

Mekanismen för funktionella alternativ inkluderar två typer av metadataobjekt: Funktionellt alternativ Och .
Ett funktionellt alternativ är ett metadataobjekt som direkt kan påverka sammansättningen av applikationens gränssnitt (om det funktionella alternativet lagrar sitt värde i ett booleskt attribut). Med hjälp av objekt av den här typen kan du dölja element som är relaterade till otillgänglig funktionalitet. Alternativet Valutaredovisning kan till exempel dölja katalogen Valuta, fältet Valuta från dokument och kolumnen Valutabelopp från rapporter. Källan till värdet av ett funktionellt alternativ är metadataobjektet som valts som egenskapen Storage, till exempel detta
kan vara en konstant.
Om värdet av en funktionell option lagras i ett katalogattribut eller en informationsregisterresurs krävs ytterligare information som anger exakt hur man väljer alternativvärde. För detta ändamål tillhandahålls ett separat metadataobjekt - Funktionella tillvalsparametrar.
Vi kan säga att parametrarna för funktionella alternativ är koordinataxlarna för värdeutrymmet för funktionella alternativ. Dessutom kan en parameter av funktionella alternativ bestämma värdet på "dess" koordinataxel samtidigt för många funktionella alternativ.


Ris. 2. Parametriserbart funktionsalternativ

Låt oss överväga ett exempel: låt oss säga att den totala redovisningen beror på ett lager som ägs av en specifik organisation (se fig. 98). I vår informationsbas
Du kan föra register på uppdrag av olika organisationer och i olika lager.
För att lagra värdena för funktionella alternativ kommer vi att skapa ett informationsregister, där dimensionerna (koordinataxlarna) kommer att vara:

● Organisation (av lämplig typ);
● Lager (av lämplig typ).

Informationsregisterresursen kommer att vara värdet av den totala redovisningsfunktionella optionen.
Då kommer den övergripande konfigurationsstrukturen att se ut så här:
● Register över information SummovayaAccounting:
● Organisationsdimension;
● dimension Lager;
● resurs SummovayaAccount, som har den booleska typen.
● Funktionsalternativ parameter Organisation. Egenskapen Användning anger dimensionen Organisation av informationsregister SummativeAccounting.
● Funktionsalternativ parameter Lager. Egenskapen Usage pekar på informationsregistret SumAccounting Lagerdimension.
● Funktionellt alternativ SumAccounting. Lagringsegenskapen pekar på SummovayaAccounting-resursen för SummovayaAccounting-informationsregistret.
Som ett resultat, för att bestämma behovet av att upprätthålla en total redovisning, måste vi i varje specifikt fall ange värdena för parametrarna för de funktionella alternativen (organisation och lager) och få värdet på det funktionella alternativet.
Så i exemplet som visas i fig. 2 är totalredovisning tillåten för organisation 1 och lager 1, men total redovisning är förbjuden för organisation 2 och lager 1.

4. Interaktion med andra objekt

Funktionella alternativ kan tilldelas följande konfigurationsobjekt:
● Delsystem,
● Allmänna kommandon,
Allmänna formulär,
● Konstanter,
Urvalskriterier,
● Katalog,
● Dokument,
● Tidning,
● Kontoplan,
● Planera typer av egenskaper,
● Plan över beräkningstyper,
● Affärsprocess,
● Uppgift,
● Utbytesplaner,
● Rapportera,
● Bearbetning,
Ackumuleringsregister,
● Informationsregister,
● Bokföringsregister,
● Beräkningsregister,
● Team,
● Metadataobjektdetaljer,
● Tabelldel,
● Detaljer om tabellsektionen,
● Redovisningsattribut,
● Subconto redovisningsattribut,
● Adressuppgifter,
Registrera mätning,
● Registrera resurs.
Funktionella alternativ kan också påverka synligheten för formulärelement.

5. Skapande

5.1. Skapa ett funktionsalternativ

För att skapa ett funktionsalternativ måste du skapa ett konfigurationsobjekt Funktionellt alternativ. Detta kan göras i Configurator-läget på vanligt sätt, det vill säga i konfigurationsfönstret, välj Allmänt, sedan Funktionella alternativ och lägg till ett nytt objekt.

Ris. 3. Skapa ett funktionellt alternativ

Detta kommer att skapa ett funktionellt alternativ-konfigurationsobjekt som kan användas för att tilldela funktionella alternativ till andra metadataobjekt.


Ris. 4. Lagra värdet av ett funktionellt alternativ

Utöver namnet har objektet en obligatorisk egenskap – Storage. I editorn kan du välja ett av objekten för det, som kommer att vara källan till alternativvärdet. Listan över tillgängliga objekt inkluderar:
● konstanter,
● kataloginformation,
● resurser för informationsregister.
Det finns ingen begränsning på källtypen för alternativvärdet, men endast de funktionella alternativen som lagrar sina värden i attribut av den booleska typen är lämpliga för att hantera gränssnittet. Funktionella alternativvärden med andra typer är endast tillgängliga för analys på det inbyggda språket.
Egenskapen Privileged läge vid hämtning styr hur värdet på ett funktionellt alternativ hämtas (och cachelagras).


Ris. 5. Privilegerat läge när du tar emot värdet av ett funktionellt alternativ

Om den här egenskapen är inställd, erhålls värdet för det funktionella alternativet i privilegierat läge. Det resulterande värdet cachelagras för alla sessioner som är associerade med denna infobas.
Om egenskapen Privileged Mode rensas vid hämtning, utförs hämtning av värdet för ett funktionellt alternativ i normalt läge.
Cachning utförs för den aktuella sessionen. Både värdet (om det var möjligt att få det) och tecknet på omöjligheten att få värdet (om det inte gick att få värdet) cachelagras.
Cachen återställs när sessionsparametervärdena ändras.
RÅD. Det rekommenderas att ställa in egenskapen Privileged Mode on Receive för alla fall där värdet av ett funktionellt alternativ inte innehåller känslig information.

5.2. Skapa en parameter för funktionella alternativ

För att skapa en funktionsparameter måste du skapa ett konfigurationsobjekt Funktionella tillvalsparametrar. Detta kan göras i konfiguratorläget på vanligt sätt, det vill säga i konfigurationsfönstret, välj Allmänt och sedan Funktionella tillvalsparametrar och lägg till ett nytt objekt.

Förutom namnet har parametern en obligatorisk användningsegenskap. Den specificerar en uppsättning objekt vars värden kommer att avgöra hur värdet på ett funktionellt alternativ ska väljas. Listan över tillgängliga objekt inkluderar kataloger och informationsregisterdimensioner. För varje funktionsalternativparameter i denna lista kan du välja en katalog (från hela listan med kataloger) och en dimension i varje informationsregister.
UPPMÄRKSAMHET! Du kan inte använda samma metadataobjekt i flera funktionsalternativparametrar.

6.Användning

6.1 Tilldela metadata till objekt

Ett metadataobjekt (till exempel en katalog) kan tilldelas ett eller flera funktionella alternativ. För att göra detta, använd egenskapen Functional options, som innehåller länkar till funktionella alternativ som skapats i konfigurationen.

Ris. 6. Tilldela ett funktionsalternativ till ett objekt

Listan över tillgängliga alternativ är begränsad till de alternativ för vilka ett objekt med värdetypen Boolean tilldelas i egenskapen Storage.
UPPMÄRKSAMHET! Om ett objekt inte tilldelas några funktionella alternativ, anses det alltid vara synligt. I annat ett objekt anses vara synligt om minst ett av de funktionella alternativen som tilldelats det är aktiverat (det vill säga de funktionella alternativen är kombinerade "ELLER").

6.2. Uppdrag att bilda detaljer och kommandon

Objekt som hör till formuläret (Detaljer och kommandon) kan också användas i funktionsalternativmekanismen.


Ris. 7. Tilldela ett funktionsalternativ till ett kommando

Detta kan göras i formulärredigeraren genom att ställa in egenskapen Funktionella alternativ för det önskade objektet.
Tillståndet för funktionella alternativ kommer att påverka visningen av formulärobjekt på samma sätt som det gör med metadataobjekt.
Till exempel, i fallet med ett kommando som är inaktiverat med ett funktionsalternativ, kommer alla associerade knappar att tas bort.
Om inget funktionsalternativ är tilldelat ett formulärattribut eller kommando, anses formulärattributet eller kommandot alltid vara synligt. Annars anses ett formulärattribut eller kommando vara synligt om minst ett av de funktionella alternativen som tilldelats det är aktiverat.

6.3. Använd i en mekanism för begränsning av dataåtkomst

Under mekanismen för begränsning av dataåtkomst Funktionella alternativ kan användas på samma sätt som Sessionsalternativ. Det är tillåtet att endast använda alternativ som inte är beroende av parametrar, det vill säga de som är bundna till konstanter.
UPPMÄRKSAMHET! Systemet kontrollerar namnens unika karaktär mellan sessionsparametrar och funktionella alternativ.

6.4. Bestämma värdet av ett funktionellt alternativ

Värdet på det funktionella alternativet bestäms av objektet som anges i egenskapen Storage. I fallet med en konstant används dess värde. För ett alternativ associerat med ett katalogattribut eller en informationsregisterresurs, värdena lagrade i dessa objekt. För att hitta ett specifikt objekt som lagrar värdet av ett funktionellt alternativ behövs ytterligare information - en uppsättning värden för parametrarna för funktionella alternativ.
Om ett alternativ är lagrat i ett katalogattribut måste parametern innehålla en länk till ett specifikt katalogelement. Om alternativet är lagrat i en detaljregisterresurs måste värdena för alla dimensioner i registret anges. I detta fall måste varje mätning karakteriseras av sin egen parameter.
Om inte alla parametrar är specificerade för ett funktionellt alternativ av typen Boolean, så utförs OR-tillägg av alla värden med ospecificerade parametrar. Till exempel, om ett funktionellt alternativ lagras i ett informationsregister med dimensionerna Organisation och Lager och endast dimensionen Organisation anges, så kommer värdet på det funktionella alternativet att vara lika med True om minst ett av lagren listade i lagret dimension har värdet för det funktionella alternativet lika med True.
För ett funktionsalternativ som är av en annan typ än Boolean, resulterar situationen med ofullständigt angivna parametrar i att ett undantag skapas.
Inbyggda språkmetoder låter dig få värdet av ett alternativ, både beroende på de parametrar som skickats och för de parametrar som ställts in
för ett kommandogränssnitt eller en specifik form. Om ändring av värdet på ett objekt specificerat i egenskapen Storage funktionellt alternativ utförs i en transaktion, kommer det faktiska värdet av det funktionella alternativet att ändras först efter att transaktionen har slutförts. Medan transaktionen är öppen, kommer värdet på det funktionella alternativet att vara lika med värdet som var aktuellt i början av transaktionen.
Om en funktionell option är knuten till en periodisk informationsregisterresurs, så använder systemet en del av den senare för att erhålla optionvärdet. Om du vill få värdet av en option för något annat datum måste du ange ett värde för funktionsalternativ-parametern Period (Period), som har typen Date, som kommer att användas som datum för mottagning av segmentet. Denna parameter behöver inte skapas i metadata. Det tillhandahålls automatiskt av systemet.

När du använder parametriserade funktionsalternativ, överväg följande beteende:
● I listformulär kommer attributkolumnen som är associerad med ett parametrerat funktionsalternativ att visas om minst ett aktiverat värde för detta funktionsalternativ är lagrat i infobasen.
● Om det är nödvändigt att när du öppnar ett formulär är informationen som är kopplad till funktionella alternativ inaktiverad som standard, måste du
ställ in värdena för dessa parametrar till värden som inte finns i infobasen (för kataloger - en tom länk, för informationsregister - mätvärden för vilka det inte finns några poster). I det här fallet kommer det funktionella alternativet att ha värdet False.
● I fallet när en referens till en grupp anges som en parameter (om parametertypen för det funktionella alternativet tillåter skapandet av grupper), och inte en referens till ett element, kommer systemets beteende att vara som följer:
● om attributet i vilket värdet av ett funktionellt alternativ är lagrat används för både ett element och en grupp, kommer värdet på det funktionella alternativet att bestämmas av värdet på detta attribut.
● om attributet i vilket värdet av ett funktionellt alternativ lagras inte används för en grupp, då när värdet av ett funktionellt alternativ erhålls med metoder GetFunctionalOption(), () och () returnerar NULL. Om ett funktionsalternativ parametrerat med detta värde har en inverkan på användargränssnittet, kommer systemet att behandla det som inaktiverat (funktionsalternativet kommer att ha värdet False).
● För kommandobildande metadataobjekt är det möjligt att ställa in en bindning till ett parametriserat funktionsalternativ. I kommandogränssnittet kommer kommandon för sådana objekt endast att visas om det finns minst en kombination av funktionella alternativparametrar för vilka värdet på det funktionella alternativet är True. Men med metoden () kan du ställa in specifika värden för parametrarna för funktionella alternativ och sedan synlighet
kommandon kommer att bestämmas exakt av de angivna parametrarna.
● Den dynamiska listan använder automatiskt de funktionella alternativen som används av formuläret. Om detaljerna som används i en dynamisk listbegäran är inaktiverade för en given kombination av funktionsalternativparametrar, kommer data för dem inte att väljas och visas i den dynamiska listan, och attributet kommer att tas bort från listorna med tillgängliga detaljer i dialogrutan för inställningar för datavisning
dynamisk lista (i 1C:Enterprise-läge).

7. Arbeta med funktionella alternativ i det inbyggda språket

Globala sammanhangsmetoder GetFunctionOption() Och GetInterfaceFunctionalOption() returnerar värdet för funktionen
alternativ. Skillnaden mellan dem är att den första metoden låter dig ange en uppsättning parametrar för funktionella alternativ, och den andra metoden returnerar värdet av ett funktionellt alternativ baserat på parametrarna som specificeras för kommandogränssnittet. Formuläret har sin egen metod som returnerar alternativvärdet för parametrarna som anges i formuläret - GetFunctionalOptionForm().
För att uppdatera det globala kommandogränssnittet måste du uttryckligen anropa metoden Ställ in parametrar för funktionella gränssnittsalternativ().
Kommandogränssnittet kommer att uppdateras för att återspegla det nya tillståndet för funktionella alternativ.
ANMÄRKNINGAR E. Om värdet på ett funktionellt alternativ ändras i databasen, då automatisk uppdatering Det finns inget globalt kommandogränssnitt eller öppna formulär för närvarande. För att göra detta bör du använda metoden Uppdatera gränssnitt() efter att ha skrivit värdena för funktionella alternativ till databasen.
Kom ihåg att ställa in parametrarna för funktionella alternativ (och exekvera metoden Uppdatera gränssnitt()) leder till följande konsekvenser:
● för varje formulär anropas stängningen av alla hjälpformulär (med motsvarande hanterare anropas);
● blanketter som vägrar att stängas stängs inte;
● sammansättningen av elementen i huvudformuläret uppdateras;
● om vid tidpunkten för uppdatering av gränssnittet aktiv form var den huvudsakliga, huvudformen visas i enlighet med den nya sammansättningen av element;
● om det aktiva formuläret vid tidpunkten för uppdateringen av gränssnittet var ett hjälpformulär, då:
● kommandot för att öppna hjälpformuläret kommer att utföras, om det är tillgängligt efter uppdatering av gränssnittet;
● annars uppdateras sammansättningen av elementen i huvudformuläret och det visas;
● om det aktiva formuläret vid tidpunkten för uppdateringen av gränssnittet var ett hjälpformulär som öppnades med ett kommando som inte är relaterat till formulärnavigeringspanelen, så kommer sammansättningen av elementen i huvudformuläret att uppdateras istället för detta formulär och det kommer att visas .
För att uppdatera ett specifikt formulär måste du antingen öppna det igen eller anropa metoden SetFormFunctionalOptionsParameters(),
i det här fallet fungerar den ovan beskrivna sekvensen av åtgärder endast för formuläret i vilket inställningen av parametrarna för formulärets funktionella alternativ kallas.
Det är inte nödvändigt att specificera alla parametrar på en gång, du kan ändra värdet på en specifik parameter eller uppsättning parametrar selektivt. Men det är gruppinställningen av värden med ett samtal som är mer effektiv.
För att få parametervärden måste du anropa motsvarande funktion ( GetParametersFunctionalOptionsInterface() eller
GetFormFunctionalOptionsParameters()), vilket kommer att returnera de inställda parametrarna i form av en struktur, där nyckeln kommer att vara parameternamnet.
När det öppnas använder formuläret automatiskt parametrarna för de funktionella alternativen som är inställda för kommandogränssnittet.

Funktionella alternativ– detta är en av de nya funktionerna i 1C:Enterprise 8.2-plattformen. Poängen med att använda dem är att de låter dig anpassa användargränssnittet i enlighet med inställningarna för funktionella alternativ och ställa in synligheten för detaljer i formulär. Dessutom har utvecklaren möjlighet att implementera programkod, vars exekvering beror på tillståndet för det funktionella alternativet.

Låt oss skapa ett funktionellt alternativ som låter dig aktivera eller inaktivera beräkningar lön i konfigurationen. Med dess hjälp kan vi snabbt dölja de delar av gränssnittet som hänför sig till att lösa beräkningsproblem. Ett funktionsalternativ i sig lagrar inte något värde som gör att det kan slås på eller av. Vanligtvis används en konstant för att lagra tillståndet för ett funktionellt alternativ, även om det också kan bindas till ett annat objekt, till exempel till ett attribut för ett objekt.

Låt oss skapa en ny konstant och kalla den Löneredovisning, typ - Boolean. Låt oss inkludera konstanten i delsystemet Administrering och i konstant form så att vi kan redigera den. Dessutom, i form av konstanter, kommer vi att ställa in AfterWrite-hanteraren enligt följande:

&Om klienten Procedur AfterRecord(RecordParameters) UpdateInterface(); Slut på procedur

Innebörden av att använda kommandot UpdateInterface()är att uppdatera och rita om gränssnittet efter att ändringen i konstanten som är kopplad till det funktionella alternativet träder i kraft. Annars måste du starta om konfigurationen för att ändringarna ska träda i kraft.

Låt oss skapa ett nytt funktionellt alternativ och kalla det Löneredovisning, på bokmärket Grundläggande, i parametern Lagring Låt oss indikera den just skapade konstanten, Fig. 7.23. Låt oss inkludera ett funktionellt alternativ i delsystemet Administrering.


Ris. 7.23.

Låt oss nu gå till fliken i fönstret för funktionella alternativinställningar Förening och välj allt (fig. 7.24) som hänför sig till löneberäkning. Om några objekt, till exempel kataloger, tillhör olika delar av konfigurationen, kommer vi inte att markera dem, annars, när det funktionella alternativet är avstängt, kommer de att "försvinna" från gränssnittet.


Ris. 7.24.

Val av delsystem Löneberedning V I detta fall väljer inte automatiskt alla objekt som ingår i delsystemet. När du väljer menar vi bara att dölja eller visa en del av kommandogränssnittet Löneberedning.

Genom att köra systemet i användarläge kan vi aktivera eller inaktivera synligheten för objekt relaterade till lönedelsystemet i vår konfiguration, helt enkelt genom att ställa in eller avmarkera flaggan för konstanten Löneredovisning.

Svårare användningsfall funktionella alternativ består av att ställa in synligheten för enskilda formulärelement om värdet på funktionsalternativet lagras i ett objekts attribut.

Låt oss göra ändringar i konfigurationen, i synnerhet i katalogen Individer lägg till ett logiskt typattribut Har erfarenhet av personalservice och placera den i form av katalogelementet.

Funktionell tillvalsmekanismär ett av utvecklingsverktygen. Det låter dig definiera i konfigurationen den funktionalitet som kan eller inte får användas under implementeringen, beroende på behoven hos en viss organisation.

Funktionen av mekanismen är baserad på två konfigurationsobjekt:

  • Funktionellt alternativ
    Konfigurationsobjekt och deras detaljer kan associeras med funktionella alternativ som läggs till en applikationslösning. Till exempel med det funktionella alternativet Lagerbokföring du kan länka rekvisita Stock dokumentera Mottagande av varor. Sedan, om du aktiverar det här funktionella alternativet i 1C:Enterprise-läge, fältet Stock kommer att visas i alla dokumentformulär. Om du stänger av det - fält Stock kommer inte att visas. Läs mer...
  • Funktionsalternativ parameter
    Funktionella alternativ kan användas med parametrar. Till exempel så att utseendet på ett specifikt formulär kan bero på värdet på parametern som valts i formuläret. Till exempel genom parametern funktionsalternativ Valutaredovisning Kanske Organisation. Sedan, beroende på vilken organisation som väljs i formuläret, fältet Valuta för ömsesidiga uppgörelser kommer att döljas eller visas. Läs mer...
Redaktörens val
Skölj ett halvt glas hirs väl Häll 350 ml kallt vatten över hirsen, efter att vattnet har kokat koka gröten på låg värme under lock,...

12820 3 12/17/10 Jamon kallas torrtorkad fläskskinka. Ordet betyder skinka på spanska. Rå skinka...

Mänsklighetens kulinariska preferenser når ibland de mest ofattbara höjder. Sanna gourmeter är villiga att betala enorma summor pengar och till och med...

Lax är en utsökt art av rödhavsfisk från laxfamiljen. Den har en mycket delikat och delikat smak, köttet är saftigt, men...
September 13, 2013 Dietfylld paprika (utan tomater och morötter) Enkla dietfyllda paprika förbereds idag...
Biprodukter har en anständig smak, och även till ett budgetpris. eller kycklinghjärtan stuvade i en läcker sås kan bli...
Kaloriinnehållet i kaffe oroar inte bara kaffeälskare, utan även människor som vill gå ner i vikt eller går på olika dieter. Hur mycket kan du...
Det finns nog inga som inte skulle prova kyckling tillagad i stekpanna. Och många förberedde det själva. Om du...
Kyckling- och valnötssallader är alltid en hit, de är lätta att göra och smakar fantastiskt. I sådana sallader kan du...