A pénz és az áruk figyelembevétele érdekében az üzleti életben széles körben használják a különböző táblázatokat. Szinte minden dokumentum egy táblázat.

Az egyik táblázat felsorolja a raktárból kiszállítandó árukat. Egy másik táblázatban - ezen áruk fizetési kötelezettsége.

Ezért az 1C-ben az asztalokkal végzett munka kiemelkedő helyet foglal el.

Az 1C táblázatokat "asztalrészeknek" is nevezik. Referenciakönyvek, dokumentumok és mások rendelkeznek velük.

A lekérdezés a végrehajtása eredményeként egy táblát ad vissza, amely kétféle módon érhető el.

Az első - gyorsabb - kijelölés, sorok gyűjtése belőle csak sorrendben lehetséges. A második a lekérdezés eredményének kirakása egy értéktáblázatba, majd véletlenszerű hozzáférés hozzá.

//1. lehetőség – szekvenciális hozzáférés a lekérdezési eredményekhez

// asztal lekérése
Selection = Query.Execute().Select();
// sorrendben megkerüli a lekérdezés eredményének összes sorát
While Selection.Next() Loop
Jelentés(Kiválasztás.Név);
EndCycle;

//2. lehetőség - feltöltés az értéktáblázatba
Query = New Query("SELECT Name FROM Directory.Nomenclature");
// asztal lekérése
Table = Query.Execute().Feltöltés().
// akkor az összes sort is megkerülhetjük
A táblázathurok minden sorához
Report(String.Name);
EndCycle;
//vagy tetszőlegesen hozzáférhet a karakterláncokhoz
String = Table.Find("Shovel", "Name");

Fontos jellemzője, hogy a lekérdezés eredményéből kapott táblázatban minden oszlop erősen begépelt lesz. Ez azt jelenti, hogy a Név mező lekérésével a Nomenclature keresésből egy String típusú oszlopot kap, amelynek megengedett hossza nem lehet hosszabb N karakternél.

Táblázat az űrlapon (vastag kliens)

A felhasználó akkor dolgozik a táblázattal, amikor az az űrlapon van.

A leckében és a leckében megbeszéltük a formákkal való munka alapelveit

Tehát helyezzük el a táblázatot az űrlapon. Ehhez húzza a táblázatot a vezérlőpultról. Hasonlóképpen kiválaszthatja a menüből az Űrlap/Beszúrás vezérlőt.

Az adatok konfigurációban tárolhatók - ekkor ki kell választani a konfigurációs objektum egy meglévő (korábban hozzáadott) táblázatos részét, amelynek űrlapját szerkeszti.

Kattintson a "..." gombra az Adat tulajdonságban. A táblázatos részek listájának megtekintéséhez ki kell bontani az Objektum ágat.

Táblázatos rész kiválasztásakor az 1C maga is hozzáad oszlopokat az űrlapon lévő táblázathoz. A felhasználó által egy ilyen táblázatba beírt karakterláncok automatikusan mentésre kerülnek a könyvtárral/dokumentummal együtt.

Ugyanabban a Data tulajdonságban megadhat egy tetszőleges nevet, és kiválaszthatja a ValueTable típusát.

Ez azt jelenti, hogy egy tetszőleges értéktáblázat került kiválasztásra. Nem ad hozzá automatikusan oszlopokat, nem menti el automatikusan, de azt csinálhatsz vele, amit akarsz.

A táblázatra jobb gombbal kattintva hozzáadhat egy oszlopot. Az oszlop tulajdonságainál megadható a neve (az 1C kódban hivatkozásként), az űrlapon az oszlopfejléc, a kapcsolat a táblázatos rész attribútumával (utóbbi - ha nem tetszőleges táblázat van kiválasztva, de táblázatos rész).

Az űrlapon a táblázat tulajdonságainál megadhatja, hogy a felhasználó hozzáadhat-e/törölhet-e sorokat. Egy fejlettebb űrlap a Csak megtekintése jelölőnégyzet. Ezek a tulajdonságok hasznosak az információ megjelenítésére szolgáló táblázatok rendszerezéséhez, de nem a szerkesztéshez.

A táblázat kezeléséhez meg kell jeleníteni a parancspanelt az űrlapon. Válassza ki a Form/Insert Control/Command Panel menüpontot.

A parancssor tulajdonságainál jelölje be az Automatikus kiegészítés jelölőnégyzetet, hogy az eszköztár gombjai automatikusan megjelenjenek.

Táblázat az űrlapon (vékony/felügyelt kliens)

A kezelt űrlapon ezek a műveletek kicsit másképp néznek ki. Ha táblázatos részt kell elhelyeznie az űrlapon, bontsa ki az Objektum ágat, és húzza balra az egyik táblázatszakaszt. És ez az!

Ha értéktáblázatot kell elhelyeznie, adjon hozzá egy új űrlapattribútumot, és adja meg a típust a tulajdonságaiban - egy értéktáblázatban.

Oszlopok hozzáadásához használja a jobb egérgomb menüjét ennél az űrlapattribútumnál, az Attribútum oszlop hozzáadása elemnél.

Ezután húzza a táblázatot is balra.

Annak érdekében, hogy a táblázatnak legyen parancssora, a táblázat tulajdonságainál válassza ki az értékeket a Használat - Parancssor pozíció szakaszban.

Táblázat exportálása Excelbe

Az űrlapon található bármely 1C táblázat kinyomtatható vagy feltölthető Excelbe.

Ehhez kattintson a jobb gombbal egy üres helyre a táblázatban, és válassza a Lista megjelenítése lehetőséget.

Felügyelt (vékony) kliensben a Minden művelet/Megjelenítési lista menüpont segítségével hasonló műveletek hajthatók végre.

Keressen az 1C értéktáblázatban

Milyen módszerek léteznek, és hogyan lehet egyszerre több értéket keresni.

Két speciális módszer létezik az értéktáblázatban való keresésre:

1. Keresse meg

TVHorizon = Directories.Nomenclature.FindBy Name("Horizon TV");
FoundString = TZNomenclature.Find(TVHorizon);
//azt is megadhatjuk, hogy mely oszlopokban keressünk a keresés felgyorsítása érdekében
FoundString = TKNomenclature.Find(TVHorizon, "Nómenklatúra");

Ez a metódus az első talált karakterláncot adja vissza a keresett értékkel, vagy Undefined, ha nem találja. Ezért kényelmesen használható egyedi értékek keresésére, mert különben egy érték megtalálásakor törölnie kell azt a táblázatból, hogy megtalálja a következőt.

Annak érdekében, hogy ne szenvedjen ilyen szenvedést, van a következő módszer, amely lehetővé teszi, hogy megtalálja a megfelelő karakterláncok tömbjét:

2. FindStrings


Selection Structure.Insert("Nómenklatúra", TVHorizon); // először megadjuk az oszlopot, ahol keresni kell, majd azt, hogy mit kell keresni.

Ez a metódus mindig egy tömböt ad vissza, de lehet üres is, ha nem talál semmit. És ez a módszer, az előzőhöz hasonlóan, magukat az értéktáblázat sorait adja vissza, nem pedig magukat az értékeket egy külön tömbben. Ezért a tömbsor értékeinek megváltoztatásával vagy az előző módszerhez hasonlóan a talált sor értékeinek megváltoztatásával megváltoztatja az értéket a feldolgozott értéktáblázatban.

Ami még jó ebben a módszerben, hogy képes egyszerre keresni az értéktáblázat több oszlopában:


SelectionStructure = Új struktúra;
Selection Structure.Insert("Nómenklatúra", TVHorizon);
Selection Structure.Insert("Mennyiség", 10);
FoundStringArray = TKNomenclature.FindStrings(SelectionStructure);

Az egyetlen negatívum, amint láthatja, nem használhat más típusú összehasonlítást, mint az "egyenlő"

Kezdésként egy kis tény – egyszerű példák az értéktáblázattal való munkavégzésre:

1. Készítsen értéktáblázatot

ValueTable = Új értéktábla;


2. Hozzon létre oszlopokat az értéktáblázatból:

ValueTable.Columns.Add("Név");
ValueTable.Columns.Add("Vezetéknév");


3. Új sorok hozzáadása oszlopnevek használatával:


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


4. Hogyan keressünk értéket az értéktáblázatban:
Meg kell találni a kívánt értéket tartalmazó táblázatsort.

FoundString = ValueTable.Find(LookupValue);


5. Keresse meg az értéktáblázat egyes oszlopaiban az első előfordulást!

FoundString = ValueTable.Find(LookupValue, "Beszállító, vevő");


6. Ha meg kell találnia az összes előfordulást az értéktáblázatban:
A keresési struktúrát használjuk.

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


Hozzunk létre egy keresési struktúrát, melynek minden eleme kulcsként az oszlop nevét, értékként pedig az ebben az oszlopban keresett értéket fogja tartalmazni. A keresési struktúrát paraméterként adjuk át a FindStrings() metódusnak. Ennek eredményeként megkapjuk a táblázat sorait.
Ha a kívánt érték keresését hozzáadjuk a keresési struktúrához, például a Felelős oszlopban is, akkor a FindRows() metódus alkalmazása eredményeként minden olyan sort megkapunk, ahol a Munkavállaló és a Felelős is megegyezik a kívánt értékkel. érték.

7. Hogyan lehet véletlenszerű sorrendben végigpörgetni egy értéktáblázatot

Minden aktuális sorhoz az értéktábla hurokból
Jelentés(Aktuális sor.Név);
EndCycle;

Tegye ugyanezt az indexek használatával:

SeniorIndex = ValueTable.Count() - 1;
MF = 0 esetén a SeniorIndex ciklus szerint
Jelentés(Értéktábla[Szám].Név);
EndCycle;


8. Meglévő értéktábla-sor törlése

ValueTable.Delete(RemoveRow);

index szerint

ValueTable.Delete(0);


9. Az értéktáblázat egy meglévő oszlopának törlése

ValueTable.Columns.Delete(RemoveColumn);


index szerint

ValueTable.Columns.Delete(0);

Figyelembe kell venni, hogy az értéktáblázat egy sorának (vagy oszlopának) „középről” való törlése a törlés „után” lévő sorok indexeinek valamelyikének csökkenéséhez vezet.

10. Hogyan kell kitölteni az értéktáblázatot, ha az oszlopneveket változók tartalmazzák?

NewRow = ValueTable.Add();
ÚjSor[Oszlopnév] = Érték;


11. Hogyan lehet az értéktáblázat teljes oszlopát kitölteni a kívánt értékkel?
Az Értéktábla értéktáblázatának FiscalAccounting Flag oszlopát False értékkel kell kitölteni.

ValueTable.FillValue(False, "Fiscal Accounting Flag");


Az értéktáblázathoz a FillValues() metódust használjuk. Az első paraméter a kitöltendő érték. A második paraméter a kitöltött oszlop neve.

12. Hogyan lehet kitölteni a "TableRecipient" értéktáblázatot a "SourceTable" értéktáblázat adataival?

Ha a Receiver Table még nem létezik a művelet időpontjában, vagy a korábbi oszlopait nem kell menteni, akkor elkészítheti az eredeti teljes másolataként.

TableReceiver = TableOriginal.Copy();


Második lehetőség: létezik TableReceiver tábla, és kár elveszíteni az oszlopait és az oszlop adattípusokra vonatkozó korlátozásait. De ki kell töltenie azoknak az oszlopoknak az adatait, amelyek neve megegyezik a forrástábla nevével.

Részleges adatátvitel egyező nevű oszlopokhoz:

A SourceTable ciklusból származó forrástábla minden sorához
FillPropertyValues(NewString, SourceTableString);
EndCycle


A forrástábla minden sorához egy új sor kerül a céltáblázatba, és az értékek az új tábla azon oszlopaiba kerülnek kitöltésre, amelyek neve megegyezik a forrástábla oszlopainak nevével.

Ha a táblákban nincsenek azonos nevű oszlopok, akkor a céltáblázatban annyi sor lesz nullértékkel, mint ahány sor volt a forrástáblázatban.
Ha néhány azonos nevű oszlop esetében a forrástábla adatérték-típusa nem esik a céltábla oszlopának engedélyezett típusainak tömbjébe, akkor az ilyen mezőkben üres értékeket kapunk.
Nézzük a harmadik esetet. Azonos nevű oszlopok esetén a céltábla oszlopát teljes összhangba kell hozni a forrástábla oszlopával.

Teljes adatmásolat az egyező nevű oszlopokhoz

HasonlóColumns = Új tömb();

Forrástábla minden oszlopához.Oszlopok hurok
MatchingColumn = Táblázatfogadó.Oszlopok.Keresés(Oszlop.Név);

Ha MatchedColumn<>Undefined Akkor

// Oszloptulajdonságok lekérése.
Név = Oszlop.Név;
ValueType = Column.ValueType;
Cím = Column.Title;
Szélesség = Column.Width;

// Oszlopok cseréje a céltáblázatban.
Index = Táblázatfogadó.Oszlopok.Index(egybeeső oszlop);

TableReceiver.Columns.Delete(Index);
TableReceiver.Oszlopok.Beszúrás(Index, Név, Értéktípus, Cím, Szélesség);

// Adja hozzá a megfelelő oszlopok következő nevét a tömbhöz.
Azonos névOszlopok.Hozzáadás(Oszlop.Név);

EndIf;

EndCycle;

// Hurok a forrástábla sorai között.
A SourceTable minden sorához a SourceTable ciklusból

// Új sor hozzáadása a céltáblázathoz.
NewString = TableReceiver.Add();

// Írja be az értékeket az egyező cellákba.
Minden NameColumns Of Same NameColumns ciklushoz
NewString[Oszlopnév] = ForrásTáblakarakterlánc[Oszlopnév];

EndCycle;

EndCycle;


A céltábla oszlopát le kell cserélnünk egy újra, amelynek tulajdonságai teljesen megegyeznek a forrástábla oszlopával.
Ezért, ha egy azonos nevű oszlop található a címzett táblában, akkor az új oszlop összes tulajdonságát változókba gyűjtjük. Ezután törölje a régit, és hozzon létre egy új oszlopot. Ezután a forrástábla sorai között hurkolunk.
A ciklusban egy új sort adunk a címzett táblázathoz, és megnyitunk egy hurkot az egyező oszlopok tömbjének oszlopainak nevei között.
Ezen a beágyazott hurkon belül a címzett tábla celláit töltjük fel a forrástábla cellájának adataival.

13. Hogyan lehet oszlopokat hozzáadni az "Értéktáblázat" értéktáblázathoz típuskorlátozásokkal?

Egy oszlop hozzáadásakor egyszerűen megadhatja a nevét, és ne érintse meg az Add() metódus második paraméterét. Ebben az esetben az oszlop adattípusa tetszőleges.

Oszlop hozzáadása adattípus megadása nélkül

// Oszlop hozzáadása típuskorlátozások nélkül.
ValueTable.Columns.Add("Object");


A második paraméter értékét töltheti ki. Ott át kell adni az oszlophoz engedélyezett típus leírását. Magát a leírást a konstruktor segítségével kaphatjuk meg, paraméterként átadva a típus karakterláncnevét (ha sok típus van, akkor vesszővel elválasztva), vagy érvényes típusok tömbjét.

Az adattípust meghatározó oszlop hozzáadása

// Az oszlop adattípusaira vonatkozó korlátozások:
// Csak a "Vállalkozók" könyvtár elemei.
ValueTable.Columns.Add("Account", New TypeDescription("ReferenceReference.Accounts"));


Ha az oszlopadatok kitöltésére engedélyezett típusok között van egy karakterlánc, akkor korlátozhatja annak bitmélységét (hosszát), megadhatja a változó vagy fix hosszúság használatát. Mindezt egy objektum létrehozása biztosítja a StringQualifers konstruktor segítségével. Továbbá ez az objektum a TypeDescription konstruktor egyik paramétereként lesz használva.

Minősítők használata az értéktábla oszlopának adattípusának megadására

// Karakterlánc típusú adatok előkészítése és korlátok beállítása.
String Qualifiers = New String Qualifiers(20, ValidLength.Variable);
AllowedTypes = NewTypeDescription("String",StringQalifiers);
ValueTable.Columns.Add("NoteStringShort", ValidTypes);


Ugyanezt megteheti a szám- és dátumminősítők esetében is.
Figyelem: a típusleírást a konstruktor "a semmiből" is felépítheti, és alapul vehet egy meglévő típusleírást.

Meglévő típusdeklarációk használata az értéktábla oszlopának adattípusának megadásához

// A korábban használt típusleírás kiterjesztése.
Számminősítők = New Number Qualifiers(10, 2, ValidSign.Non-negative);
DateQualifers = Új dátumminősítők(DátumParts.Dátum);
ExtendedValidTypes = NewTypeDescription(ÉrvényesTípusok, "Szám, Dátum",Számminősítők,Dátumminősítők);

ValueTable.Columns.Add("Megjegyzés", ExtendedAllowedTypes);