Waarde type zoeklijst 1c 8.3. Een nieuw item maken

Het artikel vervolgt de cyclus "Eerste stappen in ontwikkeling op 1C".

In de configuratie op het 1C: Enterprise platform worden bij het weergeven van informatie meestal tabellen gebruikt die verschillende informatielijsten weergeven. Het werken met dergelijke lijsten kan zowel in de vorm van een lijst als in de vorm van een element plaatsvinden (verwerking).

In dit artikel zullen we deze lijstaanpassingsopties bekijken, evenals andere aspecten van het aanpassen van formulieren aan de kant van de gebruiker.

Toepasbaarheid:

Het artikel bespreekt de Managed-interface in de versie "Versie 8.2" van de configuratie die is ontwikkeld op het 1C-platform 8.3.4.482.

Als u werkt met configuraties die deze interface ondersteunen, dan is de informatie voor u relevant voor de huidige versies van het platform.

Als u in de nieuwe "Taxi"-interface werkt, kunnen de namen van sommige configuratieopdrachten, evenals de algemene volgorde van acties, enigszins verschillen.

Daarnaast heeft de huidige versie van het platform nieuwe zoekmogelijkheden toegevoegd aan de lijsten.

Formulieraanpassing en de mogelijkheid om met lijsten te werken

Voor elementen van beheerde formulieren is het mogelijk om de zichtbaarheid en enkele andere eigenschappen te wijzigen. Voor deze doeleinden, in een gecontroleerde vorm in het menu Alle acties dient als item Van vorm veranderen.

Nadat u op deze opdracht hebt gedrukt, verschijnt het venster "Formulierinstellingen".

In het venster dat verschijnt, kunt u met behulp van de selectievakjes de zichtbaarheid van enkele details wijzigen. In dit geval wordt het formulier automatisch geschaald.

U kunt de volgorde van de details wijzigen. Voeg een nieuwe groep toe en plaats er enkele attributen (elementen) in, waarbij u de optie voor hun groepering definieert (horizontaal, verticaal).

De benodigdheden die in de groep zijn opgenomen, worden dienovereenkomstig geplaatst. Bovendien kunt u voor elementen eigenschappen zoals breedte, hoogte en kopgegevens aanpassen.

U kunt een attribuut definiëren dat wordt geactiveerd wanneer het formulier wordt geopend.

Een belangrijke eigenschap is de mogelijkheid om nieuwe velden aan het formulier toe te voegen. Dit wordt mogelijk gemaakt door rekwisieten van het referentietype.

Bijvoorbeeld, een kenmerk van het referentietype op het formulier hebben tegenpartij, kan toevoegen De contactpersoon, als deze variabele aanwezig is in de directory "Contractors".

Extra velden kunnen indien nodig worden verwijderd. Velden die in de configurator zijn aangemaakt, kunnen niet worden verwijderd. Alle door de gebruiker gemaakte instellingen worden opgeslagen.

Terugkeren naar de standaardinstellingen in het venster "Vorminstellingen" in het menu Alle acties moet item selecteren Standaardinstellingen instellen.

Naast het aanpassen van formulieren in de beheerde interface, is het mogelijk om lijsten (elementen van mappen, documenten) aan te passen.

In de vorm van een lijst in het menu Alle acties bevat een speciaal commando Lijst aanpassen.

Het venster "Lijst aanpassen" wordt geopend. In dit venster kunt u voorwaardelijk ontwerp en groepering selecteren, sorteren, definiëren.

De afbeelding toont een formulier voor het bewerken van de selectie.

Selectie kan op meerdere velden worden uitgevoerd. In dit geval werkt de selectie standaard volgens de EN-voorwaarde.U kunt ook de OF- en NIET-voorwaarden gebruiken.

Om de OF (NIET)-voorwaarde te gebruiken, moet u de juiste groep (OF-groep, NIET-groep) toevoegen met behulp van de opdracht Groepsvoorwaarden.

De afbeelding toont een formulier voor het definiëren van sorteervelden.

Instelling van groepering is mogelijk. In de afbeelding is het veld voor groepering geselecteerd tegenpartij.

De volgende afbeelding laat zien hoe de groepering zal worden uitgevoerd.

U kunt de lijst op een willekeurige manier kleuren, of andere elementen van conditioneel ontwerp toepassen (accentuering met lettertypen, bepaalde opmaak) volgens een gespecificeerde voorwaarde, en ook de lijst met te tekenen velden selecteren.

De afbeelding toont het resultaat van de voorwaardelijke achtergrond van het veld Som.
Wanneer het bedrag > 100.000 is.

Opgemerkt moet worden dat het mogelijk is om mappen in de hiërarchiemodus te bekijken.

Hiërarchische weergave van mappen kan worden geconfigureerd via het item Weergavemodus op het menu Alle acties... U kunt een van de opties kiezen: Hiërarchische lijst, Lijst, Boom.

Het is ook mogelijk om op basis van enkele details uw eigen groepering van directory-elementen in te stellen.

U kunt een artikel bijvoorbeeld groeperen op leverancier. Een voorbeeld is vergelijkbaar met dat waarin we de groepering van documenten "Verkoop van goederen en diensten" door tegenpartijen beschouwden.

Een handige functie is meervoudige selectie in de lijsten met de daaropvolgende uitvoering van groepsacties (vasthouden, annuleren, verwijderen ongedaan maken).

De selectie van objecten in de lijst wordt uitgevoerd door de toets ingedrukt te houden Verschuiving of Ctrl.

Zoeken naar een bepaalde waarde in een lijst heeft zijn eigen kenmerken. Het zoeken werkt in de selectiemodus. Alleen die strings blijven over die overeenkomen met de zoekvoorwaarde.

Om op waarde in de huidige kolom te zoeken, plaatst u de cursor op de gewenste kolom en klikt u op de knop Vinden in het commandopaneel. Er verschijnt een venster waarin u ook op de knop moet klikken Vinden.

U kunt het selectievakje gebruiken om uw zoekopdracht specifieker te maken. Zoeken in gevonden.

Wanneer u zoekt op een reeks gegevens van een referentietype (bijvoorbeeld maateenheden), moet u de juiste zoekoptie selecteren ... (per lijn).

Dit eindigt met de lijsten en manieren om ze aan te passen. In het volgende artikel zullen we ons blijven verdiepen in de interface en een handig hulpmiddel overwegen om de gebruiker te informeren, waarover we nog niet eerder hebben gesproken. Wat is dit hulpmiddel? :)

Hallo, onze lieve collega's en partners. De afgelopen maand hebben we verschillende vragen ontvangen van gebruikers van het 1C Accounting 8.3-programma met het verzoek om te helpen bij het opzetten van de lijst met items in het programma zoals het was in 8.2. Dat wil zeggen, in het oude programma konden ze een artikel of een artikelcode in de artikellijst zien. Het was erg handig. Maar in 8.3 is niets zichtbaar en onbegrijpelijk. Het is eigenlijk heel eenvoudig in te stellen. Daarom hebben we besloten om een ​​kleine instructie te schrijven over het opzetten van naslagwerken in het 1C Accounting 8.3-programma, maar dit algoritme is toepasbaar in elke 1C-configuratie.

Open dus in de sectie "Referenties" het naslagwerk "Nomenclatuur".

In de lijst die wordt geopend, zien we de naam van het item, die geen informatie bevat over de SKU van het item. Om de weergave van het naslagwerk te veranderen, zullen we de instelling van zijn vorm gebruiken. Nadat we de lijst met opdrachten hebben geopend met de knop "Meer", helemaal onderaan vinden we "Het formulier wijzigen".

In het formulier dat wordt geopend, krijgen we alle details van de map te zien die op het scherm kunnen worden weergegeven.

Door het juiste vakje aan te vinken, bijvoorbeeld "Code" en "SKU", ontvangen we een lijst met items, die zowel de code als de SKU toont.

In deze vorm houden sommige gebruikers echter ook niet van de gids. Ze willen het nummer en de SKU voor de productnaam zien. Dit is ook heel eenvoudig op te lossen. Open opnieuw het formulier voor lijstinstellingen en gebruik de blauwe pijlen op de werkbalk om de rekwisieten omhoog of omlaag te verplaatsen, afhankelijk van hoe we de lijst willen zien. U kunt de details ook "slepen" met de linkermuisknop.

Nu is de lijst met de nomenclatuur zoals u hem wilde hebben.

Experimenteer met de lijstinstellingen. Wees niet bang. Alles wat ik heb geschreven kan in elke configuratie worden gebruikt op beheerde formulieren en in elke directory, bijvoorbeeld het controlepunt weergeven in de directory "Contractors" of het contractnummer in de directory "Contracts". Wees niet bang dat je iets in het programma "breekt".

Als laatste redmiddel wordt u altijd gered door de optie "Standaardinstellingen instellen", die zich in de formulierinstellingen in het gedeelte "Meer" bevindt.

En verder. Soms bellen klanten met de volgende vraag: “Ik heb ergens op geklikt en nu staan ​​mijn namen niet alfabetisch. Geef het terug zoals ik het had." Ook dit probleem is eenvoudig op te lossen. In elke verwijzing, in de koprij van de tabelsectie, is er altijd een "magische pijl" die de kolom aangeeft waarmee de sortering is ingesteld en de richting van deze sortering.

U kunt de sorteerrichting eenvoudig wijzigen door op deze pijl te klikken en dan wordt de lijst gesorteerd, bijvoorbeeld van Z naar A. pijl gaat naar een andere kolom.

Oké, het is nu allemaal voorbij. Ik hoop dat mijn advies je zal helpen om met 1C-programma's te werken. Werk met plezier in 1C. Word lid van onze groepen in contact en klasgenoten en u zult altijd als eerste op de hoogte zijn van onze nieuwe artikelen en wijzigingen in programma's.

Naast primitieve gegevenstypen die in elke programmeertaal te vinden zijn, zijn er unieke typen in 1C. Elk van hen heeft zijn eigen eigenschappen, methoden, functies, doel en gebruiksnuances in het systeem. Een van deze typen is een dynamische lijst, die veel applicatietaken aanzienlijk vergemakkelijkt. Daarom moeten ontwikkelaars deze veelzijdige tool kennen en kunnen hanteren.

Mogelijkheden van dynamische lijsten in 1C

Het doel van dit type is om informatie uit alle databasetabellen weer te geven, ongeacht het type. Het mechanisme is gemaakt op basis van ACS en heeft vergelijkbare mogelijkheden. Maar dit betekent niet dat u zeker een verzoek in de 1C-taal moet schrijven, hoewel deze mogelijkheid er is en u er gebruik van moet maken. U kunt eenvoudig de tabel specificeren, informatie waarin u geïnteresseerd bent, en 1C zal onafhankelijk de eenvoudigste query vormen.

Om te zien hoe de dynamische lijst wordt gevormd en welke gegevens deze toont, moet u de beheerde formulieren openen, waar deze zich bevindt, in de configurator: in de lijst met attributen via het contextmenu, open de eigenschappen en let op de " Aangepast verzoek" item. Als het selectievakje niet aanwezig is, geeft de parameter "Hoofdtabel" de databasetabel weer waaruit de gegevens zijn gehaald. Anders weerspiegelt de dynamische lijst de gegevens van een willekeurige zoekopdracht, die kan worden bekeken door de lijstvoorkeur te openen.

Een veel gebruikelijker gebruik van het ad-hoc-queryschema is dat het een geweldige manier is om een ​​grote verscheidenheid aan gegevens te combineren en weer te geven. Meestal wordt dit mechanisme gebruikt om voorraadsaldi, artikelprijzen, ontvangstbewijzen, uitgiften of aankopen weer te geven. Het moet met de nodige voorzichtigheid worden gebruikt, omdat de prestaties kunnen afnemen bij complexe zoekopdrachten.

Een andere nuttige eigenschap van een dynamische lijst wordt geopend wanneer u op het bijschrift "Lijst aanpassen" klikt. Met dit menu kunt u informatie toegankelijker en begrijpelijker maken voor eindgebruikers, zelfs als u een standaardset velden gebruikt. Ongeacht of het verzoek willekeurig is of niet, u zult het tabblad "Instellingen" zien, waar u het volgende kunt specificeren:

  • Selectie van een dynamische lijst;
  • Groeperingen;
  • Sorteren;
  • Registratie.

Het gebruik van parameters maakt dynamische lijsten veelzijdig en flexibel genoeg. U kunt ze ook koppelen aan details op een beheerd formulier, en de gegevens zullen veranderen afhankelijk van de parameters die door de gebruiker zijn geselecteerd. Het gebruik van deze mechanismen kan worden begrepen en gewaardeerd door voorbeelden van echte problemen te beschouwen.

Laten we als voorbeeld eens kijken naar de taak om de voorraadsaldi op een gecontroleerd formulier weer te geven. In de praktijk komen dergelijke bestellingen vrij vaak voor in verschillende configuraties, en een dynamische lijst is ideaal als hulpmiddel. Voor deze taak zullen we een willekeurige query moeten gebruiken, de parameters van de dynamische lijst en zijn instellingen.

Laten we voor meer duidelijkheid een aparte externe verwerking maken en er een dynamische lijst op plaatsen. Om ons plan uit te voeren, zal de tabel met de nomenclatuur klein zijn, dus we moeten een willekeurige zoekopdracht toestaan. Daarin zullen we de linkerverbinding van de directory met de lijst van nomenclatuur en het register van saldi beschrijven en de directory als de hoofdtabel instellen. Met een dergelijk schema kunnen gebruikers, die met een dynamische lijst werken, een item toevoegen of wijzigen.



NomenklaturaPerechen.Naimenovanie AS SELECT Naam, TovaryNaSkladahOstatki.Sklad magazijnen, TovaryNaSkladahOstatki.KolichestvoOstatok AS KolichestvoOstatok Spravochnik.Nomenklatura VAN verbinding als LEFT NomenklaturaPerechen RegistrNakopleniya.TovaryNaSkladah.Ostatki (& TekuhtsayaData,) ZOALS IN TovaryNaSkladahOstatki NomenklaturaPerechen.Ssylka = TovaryNaSkladahOstatki.Nomenklatura WHERE

Aangezien ons verzoek de parameter "CurrentDate" gebruikte, moeten we de waarde ervan instellen voordat we de verwerking gebruiken. Om dit te doen, wijzen we in de formuliermodule in de procedure "OnCreateAtServer" de functie "CurrentSessionDate" toe met een standaardopdracht. We moeten ook de dynamische lijst op het controleformulier weergeven en de volgorde van de velden wijzigen voor de duidelijkheid. Sleep het attribuut "Nomenclatuurresten" naar de formulierelementen (linksboven) en verander de volgorde van velden in de tabel op het formulier met blauwe pijlen.

& AtServer Procedure OnCreateAtServer (Failure, StandardProcessing) RemainingNomenclature.Parameters.SetParameterValue ("CurrentDate", CurrentSessionDate ()) EndProcedure


Al in dit stadium kunnen we onze externe verwerking in 1C openen en zien dat de dynamische lijst werkt. We kunnen de restjes bekijken, een item en groep maken, zoeken. Vaak wordt klanten gevraagd om de mogelijkheid toe te voegen om de datum te kiezen waarop ze de saldi zullen zien. In het geval van een formulier met een dynamische lijst, wordt dit geleverd door een extra veld en het instellen van parameters met de hulp ervan.

Voeg het attribuut "DateLeft" van het type "Date" toe en breng het over naar de formulierelementen. Maak in het veld gebeurtenissen een gebeurtenis "OnChange" en schrijf de code voor het instellen van de parameter "CurrentDate" die wordt gebruikt in een dynamische query. Zodat wanneer de gebruiker het formulier opent, hij meteen begrijpt op welke datum hij de restjes ziet, zullen we kleine wijzigingen aanbrengen in de procedure "OnCreationOnServer".



& AtServer-procedure OnCreateAtServer (Annuleren, StandardProcessing) RemainingDate = CurrentSessionDate (); RemainingNomenclature.Parameters.SetValueParameter ("CurrentDate", Resterende datum); EndProcedure & OnClient Procedure RemainingDateOnChange (Element) Nomenclatuur Remains.Parameters.SetParameterValue ("CurrentDate", Resterende datum); Einde van de procedure

Als gevolg hiervan kan ons formulier Dynamische lijst saldi voor elke datum weergeven.

We hebben slechts een klein deel van de mogelijkheden van deze toolkit behandeld, maar dit is al genoeg om het gemak van zo'n type als een dynamische lijst te begrijpen. Een soortgelijk mechanisme wordt gebruikt voor een verscheidenheid aan taken, maar het wordt meestal aangetroffen in typische configuraties in beheerde formulieren:

  1. Selectie;
  2. Lijsten.

Om een ​​dynamische lijst en zijn verzoek in typische beheerde formulieren te krijgen, moet de ontwikkelaar het vereiste formulier in de configurator openen. Zoek in de sectie met vereisten een attribuut met het gegevenstype "DynamicList" (meestal is dit vetgedrukt). De eigenschappen ervan bevatten de aanvraagtekst, filters en andere instellingen.

In deze unit maken we kennis met een nieuw datatype van de 1C-taal, genaamd Lijst met waarden.

Lijst met waarden is een array, maar met grote mogelijkheden. En als dat zo is, dan is het ook een verzameling gegevens en kan er een reeks getallen in worden geplaatst:

// een lijst met waarden gemaakt

Lijst Toevoegen (23);

Tot nu toe lijkt alles veel op een array, nietwaar? Maar laten we verder gaan. Om deze nummers nu aan de gebruiker weer te geven, schrijft u:

// doorloop elk element van de lijst Voor elk element uit het lijstcyclusrapport (Element.Value);

// toon de waarde van het EndCycle-element;

En daar is ook het eerste verschil. De elementen van een gewone array zijn de getallen zelf. En toegang tot de huidige waarde van het element Lijst we krijgen met de optie Betekenis de constructie gebruiken Element. Betekenis.

Laten we eens kijken naar enkele extra functies Waarden.

Weet hoe te sorteren

We kunnen bijvoorbeeld eenvoudig een lijst met waarden sorteren. De lijst kan het zelf doen:

Lijst.Sorteren op waarde (Sorteerrichting.Azr); In het geval van een gewone array zouden we een van de sorteeralgoritmen moeten implementeren (bijvoorbeeld een bubbel).

Weet hoe te zoeken

De lijst met waarden kan zelf naar zijn elementen zoeken. Laten we zeggen dat we willen weten of het nummer dat door de gebruiker is ingevoerd in onze lijst staat:

Voer nummer in (nummer); // voer een nummer in van de gebruiker FoundItem = List. FindByValue (nummer);

If FoundElement = Undefined Dan OpenValue ("Number" + Number + "not found in the list!"); Anders

OpenValue ("Number" + Nummer + "staat in de lijst. Hier is het:" + FoundElement.Value);

Stop als; Lijst met waarden

Ondersteunt invoegen en verwijderen

Een lijst met waarden, zoals een array, ondersteunt het invoegen en verwijderen van elementen:

Lijst. Invoegen (0, 1000);

// voeg duizend toe helemaal aan het begin van de lijst Lijst Verwijder (О); // en verwijder het onmiddellijk uit de lijst. Invoegen (Lijst.Nummer (), 13);

// voeg 13 in aan het einde van de lijst Rapport (List [List.Quantity () - 1]);

// toon het laatste element van de lijst (13)

Ondersteunt vierkante haken

Zoals je al begreep, begint de nummering van de elementen van de lijst ook vanaf nul, en we kunnen naar elk element verwijzen door zijn index met vierkante haken:

Rapport (Lijst.Waarde); // bracht het tweede element van de lijst naar voren. We kunnen dus alle elementen van de lijst als volgt bekijken:

Voor A = 0 Op Lijst.Nummer () - 1 Cyclusrapport (Lijst [A]. Waarde);

Einde van cyclus;

Weet hoe hij zijn eigen exemplaar moet maken

Een lijst met waarden heeft een heel coole functie - het kan zelf zijn eigen kopie maken:

CopyList = Lijst.Kopie ();

// maakte een kopie van de lijst // nu kunnen we de CopyList veilig wijzigen // terwijl de originele lijst CopyList niet zal veranderen. Waarde = 123456;

Weet hoe je een array moet maken

En ten slotte kunt u op elk moment eenvoudig alle elementen van de lijst in een array verwijderen:

MatrixNummers = Lijst. UnloadWaarden ();

// gelost in een array

Voor A = 0 op matrixnummer () - 1 cyclus

Rapport (ArrayNumbers [A]); // het is niet nodig om // optie Waarde op te geven

Einde van cyclus;

Om het materiaal van deze eenheid uit te werken en te consolideren, wordt aanbevolen om de volgende taak uit te voeren.

Het is noodzakelijk om 5 cijfers van de gebruiker in te voeren, de grootste en de kleinste te vinden en deze aan de gebruiker weer te geven. De oplossing moet een lijst met waarden gebruiken.

Oplossing

Lijst = Nieuwe lijst met waarden;

// een lijst met waarden gemaakt voor A = 1 bij 5 lusnummer = 0;

Voer nummer in (nummer); // voer een nummer in uit de gebruikerslijst.Toevoegen (nummer); // en voeg het toe aan de lijst End of Loop; // enzovoort 5 keer

// sorteer de lijst met nummers

Lijst. Sorteren op waarde (sorteerrichting. Oplopend);

// na het sorteren is het eerste element van de lijst // het kleinste element, en het laatste is de grootste OpenValue ("Kleinste element" + Lijst +

", en de grootste" + Lijst [List.Number () - 1]);