Aby sa zohľadnili peniaze a tovar, v podnikaní sa široko používajú rôzne tabuľky. Takmer každý dokument je tabuľka.

V jednej tabuľke je uvedený tovar na odoslanie zo skladu. V ďalšej tabuľke - povinnosť platiť za tento tovar.

Preto v 1C práca s tabuľkami zaujíma popredné miesto.

Tabuľky v 1C sa tiež nazývajú "časti stola". Majú ich referenčné knihy, dokumenty a iné.

Dotaz vracia tabuľku ako výsledok svojho vykonania, ku ktorej je možné pristupovať dvoma rôznymi spôsobmi.

Prvý - rýchlejší - výber, získavanie riadkov z neho je možné len v poradí. Druhým je vyloženie výsledku dotazu do tabuľky hodnôt a následný náhodný prístup k nemu.

//Možnosť 1 - sekvenčný prístup k výsledkom dotazu

// získam tabuľku
Selection = Query.Execute().Select();
// obísť všetky riadky výsledku dotazu v poradí
Kým Selection.Next() Slučka
Správa(Výber.Názov);
EndCycle;

//Možnosť 2 - nahrávanie do tabuľky hodnôt
Query = New Query("SELECT Name FROM Directory.Nomenclature");
// získam tabuľku
Tabuľka = Query.Execute().Upload().
// potom môžeme obísť aj všetky riadky
Pre každý riadok zo slučky tabuľky
Report(String.Name);
EndCycle;
//alebo ľubovoľný prístup k reťazcom
String = Table.Find("Lopata", "Nazov");

Dôležitou vlastnosťou je, že v tabuľke, ktorá sa získa z výsledku dotazu, budú všetky stĺpce silne napísané. To znamená, že vyžiadaním poľa Názov z vyhľadávania nomenklatúry získate stĺpec typu String s povolenou dĺžkou najviac N znakov.

Tabuľka vo formulári (hrubý klient)

Používateľ pracuje s tabuľkou pri jej umiestnení na formulár.

Základné princípy práce s formulármi sme rozoberali na hodine a na hodine

Položme teda tabuľku na formulár. Ak to chcete urobiť, môžete tabuľku presunúť z ovládacieho panela. Podobne môžete z ponuky vybrať ovládací prvok Formulár/Vložiť.

Dáta je možné uložiť v konfigurácii – vtedy je potrebné vybrať existujúcu (predtým pridanú) tabuľkovú časť konfiguračného objektu, ktorého formulár upravujete.

Kliknite na tlačidlo "..." vo vlastnosti Data. Aby ste videli zoznam tabuľkových častí, musíte rozbaliť vetvu Object.

Pri výbere tabuľkovej časti sám 1C pridá stĺpce do tabuľky vo formulári. Reťazce zadané používateľom do takejto tabuľky sa automaticky uložia spolu s adresárom/dokumentom.

V rovnakej vlastnosti Data môžete zadať ľubovoľný názov a vybrať typ ValueTable.

To znamená, že bola vybratá ľubovoľná tabuľka hodnôt. Nebude automaticky pridávať stĺpce, nebude sa automaticky ukladať, ale môžete si s ním robiť, čo chcete.

Kliknutím pravým tlačidlom myši na tabuľku môžete pridať stĺpec. Vo vlastnostiach stĺpca môžete zadať jeho názov (pre referenciu v kóde 1C), záhlavie stĺpca vo formulári, spojenie s atribútom tabuľkovej časti (druhá - ak nie ľubovoľná tabuľka, ale tabuľka časť je vybraná).

Vo vlastnostiach tabuľky vo formulári môžete určiť, či môže používateľ pridávať/odstraňovať riadky. Pokročilejším formulárom je začiarkavacie políčko ViewOnly. Tieto vlastnosti sú užitočné na organizovanie tabuliek určených na zobrazovanie informácií, nie však na úpravu.

Ak chcete spravovať tabuľku, musíte vo formulári zobraziť panel príkazov. Vyberte položku ponuky Formulár/Vložiť ovládací/Príkazový panel.

Vo vlastnostiach panela príkazov začiarknite políčko Automatické dokončovanie, aby sa tlačidlá na paneli nástrojov zobrazovali automaticky.

Tabuľka vo formulári (tenký/spravovaný klient)

Na spravovanom formulári tieto akcie vyzerajú trochu inak. Ak potrebujete do formulára umiestniť tabuľkovú sekciu, rozbaľte vetvu Objekt a potiahnite jednu z tabuľkových sekcií doľava. A je to!

Ak potrebujete umiestniť tabuľku hodnôt, pridajte nový atribút formulára a v jeho vlastnostiach uveďte typ – tabuľka hodnôt.

Pre pridanie stĺpcov použite menu pravého tlačidla myši na tomto atribúte formulára, položka Pridať stĺpec atribútu.

Potom tiež potiahnite tabuľku doľava.

Aby tabuľka mala panel príkazov, vo vlastnostiach tabuľky vyberte hodnoty v časti Použitie - Umiestnenie panela príkazov.

Export tabuľky do Excelu

Akúkoľvek tabuľku 1C umiestnenú vo formulári je možné vytlačiť alebo nahrať do Excelu.

Ak to chcete urobiť, kliknite pravým tlačidlom myši na prázdne miesto v tabuľke a vyberte položku Zobraziť zoznam.

V spravovanom (tenkom) klientovi je možné podobné akcie vykonávať pomocou položky ponuky Všetky akcie/Zobraziť zoznam.

Hľadajte v tabuľke hodnôt 1C

Aké metódy existujú a ako hľadať viacero hodnôt súčasne.

Existujú dva špeciálne spôsoby vyhľadávania v tabuľke hodnôt:

1. Nájdite

TVHorizon = Directories.Nomenclature.FindBy Name("Horizon TV");
FoundString = TZNomenclature.Find(TVHorizon);
//môžeme tiež určiť, v ktorých stĺpcoch sa má vyhľadávať, aby sa vyhľadávanie urýchlilo
FoundString = TKNomenclature.Find(TVHorizon, "Nomenklatúra");

Táto metóda vráti prvý nájdený reťazec s hodnotou, ktorú hľadáte, alebo Undefined, ak ju nenájde. Preto je vhodné ho použiť na vyhľadávanie jedinečných hodnôt, pretože v opačnom prípade pri hľadaní hodnoty ju budete musieť vymazať z tabuľky, aby ste našli ďalšiu.

Aby ste takto netrpeli, existuje nasledujúca metóda, ktorá vám umožní nájsť rad vhodných reťazcov:

2. FindStrings


Selection Structure.Insert("Nomenklatúra", TVHorizon); // najprv určíme stĺpec, kde hľadať, a potom čo hľadať.

Táto metóda vždy vráti pole, ale ak sa nič nenájde, môže byť prázdne. A táto metóda, rovnako ako predchádzajúca, vracia riadky tabuľky hodnôt samých, a nie samotné hodnoty v samostatnom poli. Preto zmenou hodnôt v riadku poľa alebo, ako v predchádzajúcej metóde, pre nájdený riadok, zmeníte hodnotu v spracovanej tabuľke hodnôt.

Ďalšou dobrou vecou tejto metódy je, že dokáže prehľadávať niekoľko stĺpcov tabuľky hodnôt naraz:


SelectionStructure = Nová štruktúra;
Selection Structure.Insert("Nomenklatúra", TVHorizon);
Selection Structure.Insert("Množstvo", 10);
FoundStringArray = TKNomenclature.FindStrings(SelectionStructure);

Jediným negatívom, ako vidíte, nemôžete použiť iné typy porovnávania ako „rovnaké“

Tu je malý fakt na začiatok – jednoduché príklady práce s tabuľkou hodnôt:

1. Vytvorte tabuľku hodnôt

Tabuľka hodnôt = Nová tabuľka hodnôt;


2. Vytvorte stĺpce tabuľky hodnôt:

ValueTable.Columns.Add("Name");
ValueTable.Columns.Add("Priezvisko");


3. Pridajte nové riadky pomocou názvov stĺpcov:


NewString.Name = "Vasily";
NewRow.LastName = "Pupkin";


4. Ako vyhľadať hodnotu v tabuľke hodnôt:
Je potrebné nájsť riadok tabuľky obsahujúci požadovanú hodnotu.

FoundString = ValueTable.Find(LookupValue);


5. Nájdite prvý výskyt v určitých stĺpcoch tabuľky hodnôt

FoundString = ValueTable.Find(LookupValue, "Dodávateľ, Kupujúci");


6. Ak potrebujete nájsť všetky výskyty v tabuľke hodnôt:
Používame štruktúru vyhľadávania.

SearchStructure = Structure("Zamestnanec", LookupValue);
ArrayFoundStrings = ValueTable.FindStrings(SearchStructure);


Vytvorme štruktúru vyhľadávania, ktorej každý prvok bude obsahovať názov stĺpca ako kľúč a hľadanú hodnotu v tomto stĺpci ako hodnotu. Vyhľadávaciu štruktúru odovzdávame ako parameter metóde FindStrings(). V dôsledku toho dostaneme riadky tabuľky.
Ak do vyhľadávacej štruktúry pridáme vyhľadávanie požadovanej hodnoty napríklad aj v stĺpci Zodpovedný, tak v dôsledku aplikácie metódy FindRows() dostaneme všetky riadky, kde sa Zamestnanec aj Zodpovedný rovnajú požadovanému hodnotu.

7. Ako prechádzať tabuľkou hodnôt v náhodnom poradí

Pre každý aktuálny riadok zo slučky ValueTable
Report(CurrentLine.Name);
EndCycle;

Urobte to isté pomocou indexov:

SeniorIndex = ValueTable.Count() - 1;
Pre MF = 0 podľa cyklu SeniorIndex
Správa(Tabuľka hodnôt[Počet].Názov);
EndCycle;


8. Odstránenie existujúceho riadka tabuľky hodnôt

ValueTable.Delete(RemoveRow);

podľa indexu

ValueTable.Delete(0);


9. Vymazanie existujúceho stĺpca tabuľky hodnôt

ValueTable.Columns.Delete(RemoveColumn);


podľa indexu

ValueTable.Columns.Delete(0);

Je potrebné vziať do úvahy, že vymazanie riadku (alebo stĺpca) „zo stredu“ tabuľky hodnôt povedie k zníženiu o jeden z indexov riadkov, ktoré boli „po“ vymazané.

10. Ako vyplniť tabuľku hodnôt, ak sú názvy stĺpcov obsiahnuté v premenných?

NewRow = ValueTable.Add();
NewRow[ColumnName] = Hodnota;


11. Ako vyplniť celý stĺpec tabuľky hodnôt požadovanou hodnotou?
Stĺpec FiscalAccounting Flag v tabuľke hodnôt tabuľky hodnôt musí byť vyplnený hodnotou False

ValueTable.FillValue(False, "Príznak fiškálneho účtovníctva");


Pre tabuľku hodnôt používame metódu FillValues(). Prvým parametrom je hodnota, ktorá sa má vyplniť. Druhým parametrom je názov vyplneného stĺpca.

12. Ako naplniť tabuľku hodnôt „TableRecipient“ údajmi tabuľky hodnôt „SourceTable“?

Ak tabuľka prijímača v čase operácie ešte neexistuje alebo jej predchádzajúce stĺpce nie je potrebné uložiť, môžete ju vytvoriť ako úplnú kópiu originálu

TableReceiver = TableOriginal.Copy();


Druhá možnosť: tabuľka TableReceiver existuje a je škoda prísť o jej stĺpce a obmedzenia na dátové typy stĺpcov. Musíte však vyplniť údaje pre stĺpce, ktorých názvy sa zhodujú s názvami zdrojovej tabuľky.

Čiastočný prenos údajov pre stĺpce so zodpovedajúcimi názvami:

Pre každý riadok SourceTable zo SourceTable slučky
FillPropertyValues(NewString, SourceTableString);
EndCycle


Pre každý riadok zdrojovej tabuľky sa do cieľovej tabuľky pridá nový riadok a hodnoty sa vyplnia do tých stĺpcov novej tabuľky, ktorých názvy sa zhodujú s názvami stĺpcov v zdrojovej tabuľke.

Ak tabuľky nemajú stĺpce s rovnakým názvom, cieľová tabuľka bude mať toľko riadkov s nulovými hodnotami, koľko bolo riadkov v zdrojovej tabuľke.
Ak pre niektoré stĺpce s rovnakým názvom typ údajovej hodnoty zo zdrojovej tabuľky nespadá do poľa povolených typov stĺpca cieľovej tabuľky, dostaneme v takýchto poliach prázdne hodnoty.
Uvažujme o treťom prípade. V prípade stĺpcov s rovnakým názvom musí byť stĺpec cieľovej tabuľky úplne v súlade so stĺpcom zdrojovej tabuľky.

Úplná kópia údajov pre stĺpce so zodpovedajúcimi názvami

PodobnéColumns = Nové pole();

Pre každý stĺpec zo SourceTable.Columns slučka
MatchingColumn = TableReceiver.Columns.Find(Column.Name);

Ak MatchedColumn<>Nedefinované Potom

// Získanie vlastností stĺpca.
Name = Column.Name;
ValueType = Column.ValueType;
Title = Column.Title;
Width = Column.Width;

// Nahradenie stĺpcov v cieľovej tabuľke.
Index = TableReceiver.Columns.Index(CoincidentColumn);

TableReceiver.Columns.Delete(Index);
TableReceiver.Columns.Insert(Index, Name, ValueType, Title, Width);

// Pridajte do poľa ďalší názov zodpovedajúcich stĺpcov.
Rovnaký-menoStĺpce.Pridať(Názov stĺpca);

Koniec Ak;

EndCycle;

// Slučka cez riadky zdrojovej tabuľky.
Pre každý riadok SourceTable zo slučky SourceTable

// Pridajte nový riadok do cieľovej tabuľky.
NewString = TableReceiver.Add();

// Vyplňte hodnoty do zodpovedajúcich buniek.
Pre každý NameColumns Of Rovnaký NameColumns Slučka
NewString[ColumnName] = SourceTableString[ColumnName];

EndCycle;

EndCycle;


Stĺpec v cieľovej tabuľke budeme musieť nahradiť novým, ktorého vlastnosti sa budú plne zhodovať so stĺpcom zdrojovej tabuľky.
Ak sa teda v tabuľke príjemcov nájde stĺpec s rovnakým názvom, zhromažďujeme v premenných všetky vlastnosti pre nový stĺpec. Potom odstráňte starý a vytvorte nový stĺpec. Potom prechádzame cez riadky zdrojovej tabuľky.
V slučke pridáme nový riadok do tabuľky príjemcov a otvoríme slučku cez názvy stĺpcov v poli zodpovedajúcich stĺpcov.
Vo vnútri tejto vnorenej slučky vyplníme bunky tabuľky príjemcov údajmi bunky zdrojovej tabuľky.

13. Ako pridať stĺpce do tabuľky hodnôt "Tabuľka hodnôt" s obmedzeniami typu?

Pri pridávaní stĺpca môžete jednoducho zadať jeho názov a nedotýkať sa druhého parametra metódy Add(). V tomto prípade je dátový typ stĺpca ľubovoľný.

Pridanie stĺpca bez zadania typu údajov

// Pridať stĺpec bez obmedzenia typu.
ValueTable.Columns.Add("Object");


Môžete vyplniť hodnotu druhého parametra. Tam je potrebné zadať popis typu povoleného pre stĺpec. Samotný popis je možné získať pomocou konštruktora odovzdaním názvu typu reťazca ako parametra konštruktorovi (ak existuje veľa typov, potom oddelené čiarkami) alebo poľa platných typov.

Pridanie stĺpca špecifikujúceho typ údajov

// Obmedzenia typov údajov stĺpcov:
// Iba prvky adresára "Contractors".
ValueTable.Columns.Add("Účet", New TypeDescription("ReferenceReference.Accounts"));


Ak je medzi typmi povolenými na vyplnenie údajov stĺpca reťazec, môžete obmedziť jeho bitovú hĺbku (dĺžku), určiť použitie premennej alebo pevnej dĺžky. Toto všetko poskytuje vytvorenie objektu pomocou konštruktora StringQualifiers. Ďalej sa tento objekt použije ako jeden z parametrov konštruktora TypeDescription.

Použitie kvalifikátorov na určenie typu údajov stĺpca tabuľky hodnôt

// Príprava a nastavenie limitov pre údaje typu String.
String Qualifiers = New String Qualifiers(20, ValidLength.Variable);
AllowedTypes = NewTypeDescription("String",StringQualifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


To isté môžete urobiť pre číselné a dátumové kvalifikátory.
Poznámka: popis typu môže byť zostavený konštruktérom „od začiatku“ a ako základ môžete použiť existujúci popis typu

Použitie existujúcich deklarácií typu na určenie typu údajov stĺpca tabuľky hodnôt

// Rozšírenie predtým používaného popisu typov.
Kvalifikátory čísel = Kvalifikátory nových čísel(10, 2, ValidSign.Non-negative);
DateQualifiers = New DateQualifiers(DateParts.Date);
ExtendedValidTypes = NewTypeDescription(ValidTypes, "Number, Date",NumberQualifiers,DateQualifiers);

ValueTable.Columns.Add("Poznámka", ExtendedAllowedTypes);