1s 8 szúrjon be egy sort az értéktáblázatba. Milyen módszerek léteznek, és hogyan lehet egyszerre több értéket keresni

19.11.2019 Tanácsot

Az értéktábla egy speciális univerzális objektum, amelyet arra terveztek, hogy adatokat tároljon táblázatos ábrázolásban. A legfontosabb különbség a tábla és az alkalmazásobjektumok között a fizikai adatbázistáblákhoz való kötődés hiánya. Az értéktábla csak a következőben létezik véletlen hozzáférésű memória, amely egyrészt egyedi lehetőségeket biztosít, másrészt bizonyos megkötéseket is támaszt. Ennek ellenére a táblával való interakció lehetőségei hasonlóak az adatbázisban ténylegesen létező objektumokkal való interakcióhoz.

Történelmileg az 1C értéktáblázatának kettős célja van, mivel a meglévő táblázatok virtuális analógja, ugyanakkor egy vezérlőelem is. A felügyelt alkalmazásra való áttéréssel e funkciók nagy része elavult, de mostantól felhasználói felület eleme is lehet, de néhány jelentős korlátozással.

Értéktábla, mint objektum felépítése

Az értéktáblázat tulajdonságait két előre meghatározott gyűjtemény kombinációja határozza meg: az oszlopok és a sorok.

Értéktáblázat Oszlopok

Egy értéktáblázat oszlopa a meghatározó tulajdonsága. A táblázat oszlopainak halmaza határozza meg a szerkezetét. Az oszlopok megfelelnek a fizikai táblák mezőinek vagy azokból ismert mezőknek felhasználói felület táblázatos szakasz vagy dokumentumnapló oszlopai. Egy oszlopnak lehet belső neve, értéktípusa és címe, amely akkor jelenik meg, amikor interaktívan dolgozik a táblával.

Mivel az oszlopok objektumok gyűjteményét képezik, hozzáadhat, törölhet és szerkeszthet oszlopokat.

Értéktábla sora

A szoftveres interfész szempontjából a karakterláncok egy értéktáblázatba ágyazott külön gyűjtemény. Hasonlóak a fizikai táblákban lévő rekordokhoz, vagyis a táblázatos szakaszok vagy dokumentumnaplók felhasználó számára ismerős soraihoz. Minden egyes sor egy objektum elnevezett tulajdonságokkal, amelyek neve megegyezik a táblázat oszlopainak nevével.

Így egy karakterlánccal való interakció nagyon hasonlít a más objektumokkal való interakcióhoz. Tulajdonságait olvashatja és írhatja, beleértve az előre meghatározott „FillPropertyValues()” függvényt is. Mivel a sorok az értéktábla fő gyűjteménye, a „Clear()” metódus a tábla összes sorának törlésére szolgál.

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

Számos módja van az értéktáblázat használatra késznek. Nézzünk meg néhányat közülük. Minden példa kódlistaként jelenik meg megjegyzésekkel.

Táblázat készítése a konstruktor segítségével

A fő módszer, amely lehetővé teszi, hogy pontosan azt a táblát hozza létre, amelyre a fejlesztőnek szüksége van, sajnos a leginkább munkaigényes, mivel az összes szükséges táblatulajdonság manuális megadását igényli.

DemoTable = Új értéktábla; // Először is inicializáljuk a TK-t // Ezután meghatározzuk az új oszlopokhoz szükséges paramétereket és hozzáadjuk a gyűjteményhez // A "Nómenklatúra" oszlop létrehozása Name = "Nómenklatúra"; ValueType = New TypeDescription("DirectoryLink.Nomenclature"); Title = "Nómenklatúra (termék)"; DemoTable.Columns.Add(Name, ValueType, Header); // A "Mennyiség" oszlop létrehozása Name = "Quantity"; ValueType = New TypeDescription("Szám"); DemoTable.Columns.Add(Name, ValueType); // Ezen manipulációk eredményeként egy üres táblázatot hoztunk létre beírt oszlopokkal // Ha a primitív típusok pontosabb gépelésére van szükség, akkor a „Típusok leírása” konstruktor kiterjesztett szintaxisát kell használni.

Táblázat készítése másolással

Ha rendelkezik megfelelő szerkezetű és/vagy összetételű referenciával, akkor lemásolhatja vagy letöltheti a referencia értéktáblázatot. Ha a referenciatábla egy másik tábla, akkor a „Referenciatáblázatok másolása” módszert kell használnia. Ha foglalkozik táblázatos rész vagy regiszterbejegyzések halmazát, akkor az „Értéktáblázat feltöltése” módszert kell használnia. Ha csak a szerkezetre van szüksége, használhatja az „Oszlopok másolása” módszert.

// Lehetőség az összes sor másolásával a műszaki specifikáció szabványból, de csak a két megadott oszlop megőrzésével A szabvány oszlopai = "Nómenklatúra, Mennyiség"; DemoTable = TableEtalon.Copy(, ColumnsEtalon); // Lehetőség az előre kiválasztott sorok másolásával a műszaki specifikáció szabványból, a két megadott oszlop megőrzése mellett A szabvány sorai = SelectIntoArrayThe Rows We Need From the Table of the Standard(); ColumnsStandard = "Nómenklatúra, Mennyiség"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // Lehetőség sorok másolására a műszaki specifikáció szabványból a megadott szűrő használatával, egy oszlop „Nómenklatúra” megőrzésével // Minden olyan sor ki lesz jelölve, ahol a Mennyiség oszlop értéke 0, csak a Nómenklatúra oszlop Sorválasztás = Új struktúra(" Mennyiség" jelenik meg a kapott táblázatban , 0); ColumnsStandard = "Nómenklatúra"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); // Lehetőség a táblázat teljes másolásával és egy sor törlésével, ahol a mennyiségmező értéke nulla, és a teljes „Mennyiség” oszlop törlésével Sorkiválasztás = New Structure("Mennyiség", 0); ColumnsStandard = "Nómenklatúra"; DemoTable = TableEtalon.Copy(RowsEtalon, ColumnsEtalon); TableRow = DemoTable.Find(0; "Mennyiség"); DemoTable.Delete(TableRow); DemoTable.Columns.Delete("Mennyiség"); // Hasonló opciók és azok módosításai alkalmazhatók táblázatos részekre és regiszterrekordok halmazaira

Táblázat készítése lekérdezéssel

Ha a szükséges tábla sablonja létezik az adatbázisban, akkor használhat egy lekérdezést gyors alkotás táblázatok a kívánt szerkezettel.

// Példa üres tábla létrehozására a felhalmozási regiszter szerkezete alapján // Könnyen kitalálható, hogy így kitöltött táblát is kaphatunk Query = New Query("SELECT FIRST 0 * Felhalmozási regiszterből. Termékek a raktárban"); RequestResult = Request.Execute(); DemoTable = Lekérdezés eredménye.Unload(); // Példa egy üres tábla létrehozására kifejezetten meghatározott típusok és mezőnevek használatával Query = New Query; Query.Text = "SELECT TOP 0 | Value(Directory.Nomenclature.EmptyLink) AS Nómenklatúra, | EXPRESS(0 AS NUMBER(15, 3)) AS Mennyiség"; RequestResult = Request.Execute(); DemoTable = Lekérdezés eredménye.Unload(); // FONTOS! Ne felejtsük el, hogy a kérésből kapott oszlopértékek típusai mindig a Null típust tartalmazzák // Így a kérelem által létrehozott TK mindig összetett oszloptípusokkal rendelkezik

Következtetés

Ebben a rövid cikkben a megértéshez és a használat megkezdéséhez elegendő értéktáblázat készítésének alapvető tulajdonságait és gyakorlati technikáit tekintettük át. Maga az értéktábla objektum olyan sokrétű, hogy Részletes leírás képességei megkövetelik egy külön cikk írását a technikákról és a munkamódszerekről.

A pénz és az áruk elszámolására különféle táblázatokat széles körben használnak az üzleti életben. 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ázat az ezen áruk fizetési kötelezettségeit mutatja.

Ezért az 1C-ben az asztalokkal való munka előkelő helyet foglal el.

Az 1C táblázatokat „táblázatos részeknek” is nevezik. A címtárak, dokumentumok és egyebek rendelkeznek velük.

A lekérdezés végrehajtásakor egy táblát ad vissza, amely két különböző módon érhető el.

Az első - gyorsabb - kijelölés, sorok beszerzése belőle csak sorrendben lehetséges. A második a lekérdezés eredményének feltöltése 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ések eredményeihez

//szerezd meg az asztalt
Select = Query.Run().Select();
// sorrendben végigmegyünk a lekérdezés eredményének minden során
Míg Select.Next() Loop
Jelentés(Kiválasztás.Név);
EndCycle;

//2. lehetőség – feltöltés értéktáblázatba
Request = New Request("SELECT Name FROM Directory.Nomenclature");
//szerezd meg az asztalt
Table = Query.Run().Unload().
//továbbá az összes sort is iterálhatjuk
A táblázatciklus minden sorához
Report(String.Name);
EndCycle;
//vagy tetszőlegesen hozzáférhet a karakterláncokhoz
Row = Table.Find("Shovel", "Name");

Fontos jellemzője, hogy a lekérdezés eredményeként kapott táblázatban minden oszlop szigorúan be van írva. Ez azt jelenti, hogy a Név mező lekérésével a Nomenclature könyvtárból egy String típusú oszlopot kap, amelynek megengedett hossza legfeljebb N karakter.

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 Form/Insert Control menüpontot a menüből.

Az adatok a konfigurációban tárolhatók - ekkor ki kell választani a konfigurációs objektum 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.

Amikor kiválasztja a táblázatos részt, 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 sorok automatikusan mentésre kerülnek a referenciakönyvvel/dokumentummal együtt.

Ugyanabban az Adat tulajdonságban megadhat egy tetszőleges nevet, és kiválaszthatja az Értéktábla típusát.

Ez azt jelenti, hogy egy tetszőleges értéktáblázat került kiválasztásra. Nem ad hozzá automatikusan oszlopokat, és nem is menti automatikusan, de bármit megtehetsz vele.

A táblázatra jobb gombbal kattintva hozzáadhat egy oszlopot. Egy oszlop tulajdonságainál megadhatjuk a nevét (az 1C kódban való hivatkozáshoz), az űrlapon lévő oszlopfejlécet, a kapcsolatot a táblázatos rész attribútumával (utóbbi - ha nem tetszőleges táblázat van kiválasztva, hanem egy 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 kényelmesek az információk megjelenítésére, de nem szerkesztésére szolgáló táblázatok rendszerezésére.

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

A parancssor tulajdonságainál jelölje be az Automatikus kitöltés jelölőnégyzetet, hogy a panelen lévő gombok 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ázatos részt. Ez minden!

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

Oszlopok hozzáadásához kattintson a jobb gombbal az űrlapattribútumra, és válassza az Attribútumoszlop hozzáadása lehetőséget.

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

Annak érdekében, hogy egy táblának 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 feltöltése Excelbe

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

Ehhez kattintson a jobb gombbal szabad hely a táblázatban, és válassza a Lista 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ékek táblázatában

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.FindByName("TVHorizon");
FoundString = TZNomenclature.Find(TVHorizon);
//azt is megadhatjuk, hogy mely oszlopokban keressünk a keresés felgyorsítása érdekében
FoundString = TZNomenclature.Find(TVHorizon, "Nómenklatúra");

Ez a metódus az első talált sort adja vissza a kívánt értékkel, vagy Undefined értéket, ha nem találja. Ezért kényelmesen használható a kereséshez egyedi értékek, mert ellenkező esetben, ha egy értéket talál, el kell távolítania azt a táblázatból, hogy megtalálja a következőt.

A probléma elkerülése érdekében a következő módszerrel találhat egyező karakterláncokat:

2. FindStrings


Selection Structure.Insert("Nómenklatúra", TVHorizon); // először jelölje meg az oszlopot, hogy hol kell keresni, majd 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ömb karakterláncának vagy az előző módszerhez hasonlóan a talált karakterlánc értékeinek megváltoztatásával megváltoztatja az értéket a feldolgozott értéktáblázatban.

Egy másik jó dolog ebben a módszerben, hogy egyszerre tud keresni az értéktábla több oszlopában:


SelectionStructure = Új struktúra;
Selection Structure.Insert("Nómenklatúra", TVHorizon);
Selection Structure.Insert("Mennyiség", 10);
FoundArray of Rows = TZNomenclature.FindLines(SelectionStructure);

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

Az 1C 8.3 (8.2) platform értéktáblázata egy univerzális értékgyűjtemény, amelyet a fejlesztő használhat, ha szoftverfejlesztés hogy megvalósítsa az algoritmusait. Lényegében az 1C értéktáblázat az dinamikus készlet oszlopokkal és oszlopokkal rendelkező értékek.

Cikkek más univerzális értékgyűjteményekről az 1C-ben

Tanuljon programozni 1C-ben a „Programozás 1C-ben 11 lépésben” című könyvemben.

  1. A könyv világos és egyszerű nyelven- kezdőknek.
  2. Tanuld meg megérteni az 1C architektúrát;
  3. Elkezdi írni a kódot 1C nyelven;
  4. Alapvető programozási technikák elsajátítása;
  5. Rögzítse tudását problémakönyv segítségével;

Kiváló útmutató a menedzselt 1C alkalmazások fejlesztéséhez, kezdő fejlesztőknek és tapasztalt programozóknak egyaránt.

  1. Nagyon hozzáférhető és érthető prezentációs nyelv
  2. A könyvet a címre küldik email V PDF formátum. Bármilyen eszközön kinyitható!
  3. Ismerje meg a felügyelt 1C alkalmazás ideológiáját
  4. Ismerje meg, hogyan fejleszthet felügyelt alkalmazást;
  5. Tanulj meg fejlődni kezelt űrlapok 1C.
  6. Képes lesz dolgozni a kezelt űrlapok alapvető és szükséges elemeivel
  7. A felügyelt alkalmazás alatti programozás egyértelművé válik

Promóciós kód 15% kedvezményért - 48PVXHeYu


Ha ez a lecke segített valamilyen probléma megoldásában, tetszett vagy hasznosnak találta, akkor tetszőleges összeggel támogathatja projektemet:

Fizethet kézzel:

Yandex.Money - 410012882996301
Web Money - R955262494655

Csatlakozz a csoportjaimhoz.