Adatok szétválasztása bsp. Adatszétválasztás a bsp-ben Adatelválasztási mechanizmus 1s

Az 1C elválasztó elemre azért van szükség, hogy újraeloszthassuk az űrlap területeit, ahogy az a felhasználó számára kényelmes pillanatnyilag. Szinte mindenki rendelkezik az elválasztók használatának készségével. Windows felhasználó. Tegyük fel, hogy létrehozott egy egyszerű űrlapot két vezérlővel.

Hagyományosan bármely lista elemei a bal oldalon találhatók. Ennek megfelelően a jobb oldalon ugyanezen pontok részletes részletezése található. Ha a bal oldali lista rövid címekből áll, logikus ezt az oszlopot minimálisra csökkenteni. Ennek megfelelően ebben az esetben a jobb oldal olvashatósága nő. Ezzel szemben, ha hosszú nevek vannak a bal oldalon, akkor az oszlopot ki kell bontani. Az elválasztók lehetővé teszik a felhasználó számára, hogy a szegély egérrel történő egyszerűen húzásával szabadon testreszabhatja az alakzatot.

Ezt a vezérlési módszert a táblázatok Word és Excel programban történő szerkesztéséhez használják. Űrlap létrehozásakor függőleges és vízszintes űrlapelemet, elválasztót is készíthet. Általában a legelőnyösebb olyan űrlapokat létrehozni, amelyek vizuálisan illeszkednek a képernyőbe.

8.2, 8.3 elválasztó (kezelt űrlapok)

Az 1c kezelt formában nem adhat hozzá elválasztót, azt a program automatikusan hozzáadja a táblázat mező előtt/után

1. Preambulum.

Két szervezet könyvelését egy információbiztonsági rendszerben kellett megszervezni. A helyzet nem egyedi, de megtörtént, hogy a nagyon nem szabványos, 250 gigabájtos USB-meghajtónk elég lassan működött, így RLS helyett az adatleválasztás mellett döntöttünk. Hogy mi az, az le van írva például, ill. Röviden, ha az RLS feltételekkel egészül ki SQL lekérdezések, akkor az adatelválasztó egy további oszlop a táblázatokban DBMS szinten, ami miatt az elválasztási mechanizmusnak gyorsabban kell működnie, mint az RLS-nél.

Tehát ahhoz az adatbázishoz, ahol az 1. számú LLC nyilvántartását vezették, a 2. számú LLC külön adatbázisából kell információkat átvinni, és közös munkát kell szervezni. Pont mint a képen:

Az egyszerű halandók csak saját LLC-vel dolgoznak, és a főkönyvelő néha két jogi személy adatait is megnézi. Mindkét LLC hozzáférési módban csak az adatokat olvashatja, így a főkönyvelőnek képesnek kell lennie interaktívan váltani az „összes olvasása”/„csak egy szervezet írása” módok között, és kiválasztani az LLC-t (vagyis beállítani a a közös részletek) például költségszámítás elvégzésére.

2. Megvalósítás

8.2.19.90 platform, kompatibilitási mód nélkül. DBMS – MSSQL Server 2008 R2 Standard.

Létrehoztuk a "szám" típusú általános OrganizationSeparator attribútumot, egyetértettünk a munkamenet-paraméterek létrehozásának javaslatával, kitöltöttük a részletek összetételét (több címtárat, minden bizonylatot, felhalmozási, könyvelési és számítási regisztereket tartalmazott). Adatok szétválasztása – „Független és közös”. A munkamenet paraméterének értéke innen van beállítva szabványos beállításokat felhasználó a SettingSessionParameters eljárásban a munkamenet modulban:

Szervezet = UserManagement.GetDefaultValue(chCurrentUser,"PrimaryOrganization");
SessionParameters.OrganizationSeparatorValue = Organization.SeparatorValue;

A főkönyvelői felületen készítettek egy űrlapot, amelyen keresztül lehet váltani a szervezetek között, és be-/ki lehet választani az elkülönítési módot:

Ha az elválasztás le van tiltva, és a SessionParameters.OrganizationSeparatorUsage = False, a platform megtagadja a dokumentumok írását, és összeomlik olyan hibákkal, mint „SDBL hiba: kifejezés várt (pos=12)”, így nem engedélyezheti a felhasználó számára, hogy dokumentumokat írjon ebben a beállításban. A megbízhatóság érdekében előfizetéseket hoztunk létre a „Rögzítés előtt” eseményre azon objektumok számára, amelyek az általános attribútum részét képezik:

IfSessionParameters.OrganizationSeparatorUsage = False Akkor
#Ha ügyfél akkor
Warning("Nem lehet írni, mert az adatmegosztás le van tiltva!");
#EndIf
Refuse = igaz;
endIf;

Cselekvési tervünk a következő volt: elkészítjük az 1. számú IS vevőkonfigurációját, beállítjuk az általános attribútum értékeit = 1, betöltjük az adatokat a 2. számú IS-ből, betöltés után minden olyan objektumra, ahol üres (0-val egyenlő). ) elválasztó érték, állítsa be Szervezetelválasztó = 2.

A konfiguráció elkészült, felmerült a kérdés: hogyan lehet gyorsan és a mérlegben szereplő számok repülésének veszélye nélkül beállítani az általános adatok értékét a bizonylatokhoz és azok mozgásához zárt időszakban? Az 1C objektummodell használatával nem lehet elválasztót írni az objektumtól, ezért meg kellett szegnem a licencszerződést, hogy kiszálljak és lekérdezést írjak az MS SQL-hez. Mivel az általános attribútumban sok objektum található, és ezekhez az objektumokhoz még több tábla található a táblában, ezért írtunk egy feldolgozást, amely lekérdezést generál az SQL-hez (az elválasztóban szereplő minden metaadat objektumhoz "update" + DB_Name + ".dbo._" + TableName + "set _" + FieldGeneralAttributes + "= 1";)

Beírtuk az értéket, átvittük az adatok egy részét a 2. számú IS-ből, és megkezdtük a tesztelést.

Az eredmény kiábrándító volt. Először is a könyvelési nyilvántartással kapcsolatos problémák. Ha az elválasztás engedélyezve van, az elemző nem látható:

Ennek oka az a tény, hogy a DBMS szintű könyvelési regiszter több táblaként van tárolva, és nem minden táblában szerepelt az általános attribútum értéke (a struktúra megtekintéséhez feldolgozás történt).


Rendben, írjuk be az elválasztó értékét MS SQL-lel, és látni fogjuk az elemzést. A jelentések már nem működnek. Kiderült, hogy problémák vannak a „Forgalom” és a „TurnoverDtKt” számviteli nyilvántartás virtuális tábláinak lekérdezésével:

(Az Fld27033 csak egy általános attribútum a számviteli nyilvántartás táblázatában)

Az elválasztó minden táblába telepítve van, ez látszik DBMS szinten, nem derül ki, hogy mi lehet a hiba. Telepítünk egy szabványos üres SCP-t, elvégezzük a fent leírt konfigurációs módosításokat, beírunk pár bizonylatot (ebben a verzióban a platform maga írja be az elválasztó értéket az összes számviteli regiszter táblájába), de a hibák reprodukálódnak. Rossz, de a könyvelési nyilvántartásokat kizárjuk az általános részletek közül, és folytatjuk a tesztelést.

Továbbá kiderül, hogy a számítási regiszterek eltolási mechanizmusa leállt. Nem különítettük el a számítási típusokra vonatkozó terveket, a problémát a számítási regiszter táblázataiban és az újraszámításokban próbáljuk keresni. Ellenőrizzük, megadjuk a főbb adatok értékét, T&I-t végzünk - eredménytelenül.

Útközben diagnosztizáljuk a problémát, amikor információkat írunk a lista űrlapról független regiszterekbe. Ebben az esetben az adatok rögzítésre kerülnek, és újraindítás után láthatók. A probléma a tesztbázison is megjelenik:


Az információs regisztereket SQL-lel manipulálva nem lehetett „megjavítani” (minden táblában be van állítva az elválasztó érték), ezért egyszerűen kizártuk az általános attribútumok közül. Több napos kísérletezés után az elővásárlási funkcionalitás helyreállítására tett kísérletek is sikertelennek bizonyulnak.

Ezen a ponton úgy döntünk, hogy kikapcsoljuk az adatleválasztást, és RLS-t használunk. Amikor a partíciót „ne használja” értékre állítja, a következő hibaüzenetet tapasztaljuk: „Microsoft OLE DB Provider forSQL Server: CREATE EGYEDI INDEX leállt, mert a rendszer ismétlődő kulcsot talált az indexhez...”. Vagyis nem olyan egyszerű visszatérni a felosztás előtti állapotba. Probléma a konverziós táblák indexeivel, az összegek tárolásának beállításaival és egyebekkel. A helyzet az, hogy a táblák azonos sorokat tárolnak, amelyek csak az általános attribútum értékében térnek el egymástól. Egy közös attribútum törlésekor nem egyedi rekordok jelennek meg. A szükségtelen rekordokat közvetlenül az MS SQL-ben kell törölnie, valami ilyesmi (a konverziós táblához):

Használja a bázist;
ALTER TABLE_CRgRecalc1399
ADD id INT IDENTITY(1,1);
MEGY
TÖRLÉS FROM_CRgRecalc1399
HOL id< (SELECT MAX(id)
A _CRgRecalc1399 AS T1-től
WHERE _CRgRecalc1399._RecorderTRef = T1._RecorderTRef és
_CRgRecalc1399.[_RecorderRRef] = T1.[_RecorderRRef] és
_CRgRecalc1399.[_CalcKindRRef] = T1.[_CalcKindRRef] és
_CRgRecalc1399.[_Fld1400RRef] = T1.[_Fld1400RRef] és
_CRgRecalc1399.[_Fld1401RRef] = T1.[_Fld1401RRef] és
_CRgRecalc1399.[_Fld1402RRef] = T1.[_Fld1402RRef]
);
MEGY
ALTER TABLE_CRgRecalc1399
DROP COLUMN id;

És csak több tucat tábla megtisztítása után lehet kikapcsolni az adatok szétválasztását. Az elválasztás kikapcsolása után nincs probléma.

3. Következtetések.

Felcsillant a remény, hogy a problémákat a 8.3-ban megoldották. Nem voltunk túl lusták, megnéztük a 8.3.4.482-nél (kikapcsolt kompatibilitási mód mellett). Szinte szabványos vezérlőegységet néztünk meg, a konfiguráció módosításával csak az általános részletek miatt. Ezen a tesztbázison az információ bevitele előtt engedélyezték az elkülönítést, pl. a platformnak helyesen kellett beírnia az elválasztó értékét az összes táblába, ők maguk nem írtak semmit közvetlenül az MS SQL-be.

Eredmény:

    A "Forgalom" és a "TurnoverDtKt" virtuális táblák lekérdezésével kapcsolatos probléma újra megjelenik.

    Az elnyomással kapcsolatos probléma újratermelődik.

    Megismétlődik a független információs nyilvántartásokba való írás problémája.

    Az a probléma az elválasztás kikapcsolásával, hogy nem lehet egy gombnyomással megszabadulni tőle!

Így az RLS-t nem tudtuk új mechanizmussal helyettesíteni. Ezt a mechanizmust nyilvánvalóan azért találták ki felhő szolgáltatások, és a megosztott adatok „önálló” felhasználásának lehetőségében talán működni fog a felosztás, de szükségünk van egy közös törzsadatra. Látni kell, hogy az 1C kijavítja a hibákat, vagy még jobb, ha szabványos konfigurációkban szabványos mechanizmust alkalmaz a szervezetenkénti szétválasztáshoz.

Adatmegosztási mechanizmus lehetővé teszi több független szervezet adatainak egyben történő tárolását információs bázis.

Ez azáltal válik lehetővé, hogy a konfigurációs objektumok általános adatai nem csak „ugyanaz a tulajdonságként használhatók, amellyel minden objektum rendelkezik”, hanem annak azonosítójaként is, hogy az adatok több független terület valamelyikéhez tartoznak. Ez a következő példával magyarázható.

Tegyük fel, hogy van egy általános „Szervezet” attribútum a konfigurációban. Ez azt jelenti (leegyszerűsítve), hogy minden könyvtárnak, dokumentumnak vagy egyéb konfigurációs objektumnak lesz egy „Szervezet” attribútuma is.

Ebben az esetben az információs bázis bármely felhasználója hozzáfér az adatbázisban tárolt összes adathoz, függetlenül attól, hogy melyik szervezetet jelölték meg, például egy adott dokumentumban.

Most jelezzük, hogy a „Szervezet” általános attribútum elválasztóként fog szolgálni.

Ezután (leegyszerűsítve) több független adatterület jön létre az információs bázisban, amelyek mindegyike csak egy adott szervezet adatait tárolja:

Most a programba való belépéskor a felhasználó nem fér hozzá minden információhoz, ami az információs bázisban van, hanem csak a „saját” területének adataihoz, jelen esetben szervezete dokumentumaihoz, segédkönyveihez stb.

Egy másik lehetőség ennek a mechanizmusnak a használatára, ha több független adatterület van az információs bázisban, és ezzel együtt vannak olyan adatok, amelyek a program minden felhasználója számára elérhetőek. Például tartalmazzák a bankok címtárát, amely minden szervezetnél azonos.

Ebben az esetben a felhasználó hozzáfér a „saját” adatterületéhez és a meg nem osztott adatterülethez, amely minden felhasználó számára közös.

Az adatmegosztási mechanizmus meglehetősen rugalmas és univerzális:

  • lehetővé teszi nem egy, hanem több elválasztó használatát;
  • létezik különböző módok megosztott adatok használata; abban különböznek, hogy hogyan kezelik azt a helyzetet, amikor a határoló érték nincs megadva;
  • egy közös attribútum elválasztóként való használata a program működése során a beépített nyelvről a konfiguráció megváltoztatása nélkül vezérelhető; ezt feltételes felosztásnak nevezzük.

Az 1C:Enterprise rendszerben lehetőség van több vállalkozás nyilvántartásának egy információs bázisban történő karbantartására. Erre a célra számviteli elválasztót használnak.

A számviteli elválasztó használata a konfigurációban van megadva. Ha a konfiguráció megadja a számviteli elválasztó használatát, akkor a számlák táblában lehetőség van egy adott számviteli elválasztó érték kiválasztására, amely alapján a könyvelési főösszegeket kiadják.

A számviteli elválasztó értékének beállításához használja a tételt "Számlaválasztó" menü "Cselekvések" vagy a megfelelő eszköztárgombot. Ebben az esetben egy párbeszédablak jelenik meg a képernyőn a számviteli elválasztó értékének beállításához.

A mezőn "Számviteli elválasztó érték" Megadhat egy konkrét számviteli elválasztó értéket. Az érték megadásának módja a konfigurációban meghatározott számviteli elválasztó típusától függ. Általában ez egy referenciakönyv. Ebben az esetben egy érték kiválasztásához használja a kiválasztó gombot, és válassza ki a kívánt értéket a könyvtárértékek listájából.

Gomb "Üres érték" lehetővé teszi a számviteli elválasztó beírt értékének törlését, azaz üres érték beállítását. Ennek akkor van értelme, ha a konkrét számviteli elválasztó értékek mellett üres értéket is használtak a tranzakciókban.

Jelölőnégyzet "mindenkinek" lehetővé teszi, hogy beállítsa a számviteli elválasztó összes értékére vonatkozó összegek megjelenítési módját.

A kiválasztott értékek beállításához kattintson a gombra "RENDBEN". Az értékek beállításának elutasításához használja a gombot "Mégse".

A kiválasztott értékek beállítása után a számlatábla megjeleníti az összegeket egy adott számviteli elválasztó értékre vagy egy üres értékre, vagy az összesített értékre, a párbeszédpanelen kiválasztott opciótól függően.

Figyelem! Ez a lecke bevezető változata, melynek anyagai hiányosak lehetnek.

Jelentkezzen be diákként az oldalra

Jelentkezzen be tanulóként az iskolai anyagok eléréséhez

Belső programozási nyelv 1C 8.3 kezdő programozóknak: formátum 1C-ben

1C programozáskor gyakran kell (ugyanabban a jelentésben) értékeket megjeleníteni különféle típusok(karakterláncok, dátumok, számok...). Mindegyik értéknek más-más ábrázolása van.

Például ugyanaz a dátum, "01/01/2005" karakterláncként ábrázolható:

  1. "01.01.2005"
  2. "2005. január 1."
  3. "01.01.05"

Ezek mind azonos értékű karakterlánc-reprezentációk, d Amelynek kialakításához speciális függvényt használnak az 1C Formátum.

A Formázás funkció használata az 1C-ben

A számjegyek csoportosításának letiltása

Tegyük fel, hogy ki kell adnunk az 10000 számot.

Ha azt írjuk:

A formátum karakterlánc általában két egyenlőségjellel elválasztott részből áll. Az egyenlőtől balra a beállítandó paraméter neve (nézze meg a súgót vagy a példákat), jobbra pedig ennek a paraméternek az értéke.

A fenti példában a "HH=0" formátum karakterlánc HH paraméterrel és 0 értékkel rendelkezik. Ez a kombináció törli a számjegyek csoportosítását. És amint látja, most 10 000 kerül kiadásra.

Bevezető nullák kimenete

Egy másik gyakori feladat a kezdő nullák nyomtatása egy számjegy elé. Tegyük fel például, hogy az 5-ös számot egy kezdő nullával szeretné megjeleníteni, azaz „05” formában:

Report(Formátum(5, "CHZ=2; CHVN=" ) ) ;

// 05 kimenet

Nézzük a "CC=2; CHVN=" formátum karakterláncot. Két formátumú karakterláncból áll, amelyeket pontosvessző választ el. Nézzük mindegyiket külön-külön. A "BC=2" sor határozza meg teljes szám

az egész és a tört részek tizedesjegyeit jeleníti meg. Így a kimenet során a szám által elfoglalt pozíciók teljes száma 2 lesz. A "ChVN=" sor, ahogy a súgóból következik, azt a formátumot jelzi a függvénynek, hogy ha a szám nem éri el a deklarált hosszúságot (mint esetünkben, mert 2 pozíciót jeleztünk, és 5 csak egyet foglal el), akkor nullákat kell használni. Ennek a formátumú karakterláncnak az a sajátossága, hogy csak a paraméter neve és egy egyenlőségjel van benne, de nincs értéke. olvasol próbaverzió

lecke, a teljes leckék találhatók.

Két formátumú karakterlánc kombinációja adja a kívánt eredményt, „05” helyett „5”.

Az egész és a tört részek közötti elválasztó megváltoztatása

Tegyük fel, hogy a tört számokat pont helyett csillaggal elválasztva kell megjelenítenünk. Vagyis úgy, hogy a 25.46 "25*46"-ként jelenik meg: Formátum A formátum karakterlánc a DF paraméter és a dddd érték, amely a függvényeket jelzi

nyomtatja ki a hét napjának hosszú ábrázolását (figyelje meg, hány "d"-t tartalmaz).

Dátum hónap reprezentáció

A hónap dátum szerinti leírása a következőképpen jelenik meg: Jelentés(Formátum("20050101" , "DF=MMMM" ) ) ;

// kinyomtatja a januárt

A formátum karakterláncnak ugyanaz a DF paramétere, mint az előző esetben. De a jelentése más. Most egyenlő az MMMM-mel.

Vegye ki a tesztet

Indítsa el a tesztet

1. A Format("19050505", "DF=MMMM") visszatér

2. Formázza meg a karakterláncot a tört- és egész szám elválasztó módosításával ^-re

3. Ahhoz, hogy a Formátum függvény 5 helyett „00005” értéket adjon vissza, egy formátum karakterlánc megfelelő

4. Ahhoz, hogy a Format függvény 10 000 helyett „10000”-et adjon vissza, egy formátum karakterlánc megfelelő