Internet ablakok Android

Kivétel az ideiglenes tárolóból 1c 8.3. Adatok mentése fájlból ideiglenes tárhelyre

Szinte bármilyen információt tárolhat egy értéktárban, pl.

... képek (képek):

CurrentImage.Object = TextFabric.Reference; CurrentImage.DataType = Enumerations.Types of AdditionalObjectsInformation.Image; Tárhely = ÚjÉrtékTárolás(ÚjKép, ÚjAdattömörítés()); CurrentImage.Storage = Storage.Get();

// ezen a helyen mindent megjelenít...FormElements.PictureField1.Picture = Storage.Get(); CurrentImage.Write();

...táblázati dokumentum:

TabDoc=New SpreadsheetDocument; TabDoc.Output(FormElements.FieldofSpreadsheetDocument1); Storage=NewValueStorage(TabDoc); Ír();

Vége eljárás

Eljárás RestoreFromStorageClick (elem)

TabDoc=Storage.Get(); Ha a TabDoc<>Undefined ThenFormElements.SpreadsheetDocumentField1.Output(TabDoc); EndIf;

Vége eljárás

... tetszőleges fájlok (bináris adatok):

XS = NewValueStorage(Új Bináris Adat(fájl));

Nyolc támogatja a tárolóban elhelyezett adatok tömörítését:

XS = NewValueStorage(Új Bináris Adat(fájl),ÚjTömörítés(9));

... külső feldolgozás és jelentéskészítés:

Eljárás LoadProcessingToStorage (AttributeTypeStorage)

CompressionDegree = New DataCompression(9); //9 maximum PropsStorageType = NewStorageValues(NewBinaryData("c:\reports\report.epf", tömörítési fok));

Vége eljárás

Procedure StartProcessingFromStorage(AttributeTypeStorage)

TempFileName = TempFileDirectory()+"report.epf"; BinaryData = PropsTypeStorage.Get(); BinaryData.Write(TempFileName); ExternalProcessing = ExternalProcessing.Create(TempFileName); ExternalProcessing.GetForm().Open();

Vége eljárás

Munkatárolás

Ha BinaryData volt, akkor a Get metódussal visszaállíthatók az értéktárból, és a Write() metódussal írhatók fájlba.

IfTypeVnch (tárhely)<>Type("BinaryData") Ezután

BinaryData = Storage.Get();

BinaryData = Tárhely;

EndIf; BinaryData.Write(Fájlnév);

Ha például egy Word dokumentumról volt szó (doc fájlról vagy más regisztrált típusú fájlról), akkor a következőképpen nyitható meg:

Alkalmazás indítása(Fájlnév);

Az Értéktár típusú mező törléséhez hozzá kell rendelnie az Undefined mezőhöz:

PropsStorage = Undefined;

Fájlokkal és képekkel való munkavégzés az 1C:Enterprise 8 beépített nyelven

Célja

Felügyelt alkalmazásban implementálva új mechanizmus fájlokkal dolgozni. között fájlmegosztást biztosít információs bázisés kliens alkalmazás. Ennek a mechanizmusnak az a jellemzője, hogy vékony kliensben és webes kliensben történő használatra összpontosít, és a webböngészők által a fájlokkal való munkavégzésre vonatkozó korlátozások figyelembevételével készült.

A mechanizmus olyan módszerek összessége, amelyek segítségével a felhasználó által helyileg tárolt adatok ideiglenes információs bázistárba helyezhetők, ezek az információk az ideiglenes tárolóból az adatbázisba átvitelre, majd a felhasználó számítógépére való visszakeresésre használhatók. Az ezzel a mechanizmussal megoldott leggyakoribb alkalmazási feladatok a kísérő információk tárolása, például áruképek, szerződésekkel kapcsolatos dokumentumok stb.

A módszerek hatóköre

Átmeneti tároló

Az ideiglenes tárolás az információs bázis egy speciális területe, ahol bináris adatok helyezhetők el. A fő cél az információk ideiglenes tárolása a kliens-szerver interakció során, mielőtt azok átkerülnének az adatbázisba.

Az ideiglenes tárolás szükségessége abból adódik, hogy a webböngésző modellben a felhasználó által kiválasztott fájlt közvetlenül a szerverre kell átvinni anélkül, hogy a kliensen tárolnánk. A fájl átvitelekor ideiglenes tárolóba kerül, és csak ezután használható objektum adatbázisba írásakor.

Az ideiglenes tárolással megoldott legjellemzőbb alkalmazott feladat a fájlokhoz vagy képekhez való hozzáférés biztosítása, mielőtt az objektum az információs bázisba kerülne, például elem formájában.

A tárhelyen elhelyezett fájlokat vagy bináris adatokat egy egyedi cím azonosítja, amely később írási, olvasási vagy törlési műveletekhez használható. Ezt a címet a fájl ideiglenes tárolóba írásának módszerei adják meg. Az 1C:Enterprise nyelv külön módszere lehetővé teszi annak meghatározását, hogy az átadott cím olyan cím-e, amely az ideiglenes tárolóban lévő adatokra mutat.

Információs bázis

A mechanizmus lehetővé teszi a ValueStorage típusú attribútumokban tárolt bináris adatokhoz való hozzáférést.

Az ideiglenes tároláshoz hasonlóan az információkhoz való hozzáférés egy speciális címen keresztül lehetséges. Speciális módszerrel kaphatja meg, egy objektumra mutató hivatkozást vagy az információs regiszter rekordkulcsát és az attribútum nevét átadva. Táblázatos szakasz esetén ezenkívül szükséges a táblázatos szakasz sorindexének átadása.

A fájlokkal való munkavégzés módszerei korlátozottak, ha az információsbázis részleteivel dolgozik. Számukra az ideiglenes tárolással ellentétben csak az olvasási információ érhető el, de nem írható vagy törölhető.

A fájlokkal való munkavégzés módszereinek leírása

Adatok mentése ideiglenes tárhelyre

A mechanizmus használatának legjellemzőbb forgatókönyve a felhasználói adatok ideiglenes tárolása. Két módszer létezik erre: PlaceFile() és PlaceFileToTempStorage().

Az első módszer, a PlaceFile(), a helyi fájlrendszerből ideiglenes tárolóba helyez egy fájlt. A metódus elfogad egy célcímet az áruházban. Ha nincs megadva, vagy üres karakterlánc, akkor létrejön új fájlés a metódus a megfelelő paraméteren keresztül adja vissza a címét.

Ha az interaktív üzemmódot meghatározó paraméter True, akkor a metódus egy szabványos fájlkiválasztó párbeszédablakot jelenít meg, amelyben kiválasztható a tárolóban tárolandó fájl. Ebben az esetben a metódus a kiválasztott fájl címét is visszaadja.

Ennek eredményeként a metódus False értéket ad vissza, ha a felhasználó interaktív módon megtagadta a művelet végrehajtását a fájlkiválasztó párbeszédpanelen. A módszer csak az ügyfélnél érhető el.

A második metódus, a PutFileToTempStorage(), hasonló az előző módszerhez, azzal a különbséggel, hogy elérhető a szerveren, és az ideiglenes tárolóba írandó adatok nem jelennek meg elérési útként fájlrendszer, hanem formában típusú változó Bináris adatok. Hasonlóképpen, ha nincs megadva célcím, egy új fájl jön létre a tárolóban. A címe a függvény eredményeként kerül visszaadásra.

Fájl lekérése az ideiglenes tárolóból

Amikor objektumot ír az információs bázisba, előfordulhat, hogy adatokat kell kivonnia az ideiglenes tárolóból, és el kell helyeznie azokat például egy attribútumba. Ehhez létezik egy megfelelő kiszolgáló metódus - GetFileFromTemporaryStorage(). Ez a módszer lekéri az adatokat az ideiglenes tárolóból, és ennek eredményeként visszaadja azokat. Ehhez meg kell adni a címet az ideiglenes tárolóban. Ezt a címet a fenti PutFile() és PutFileToTempStorage() metódusok küldik vissza, ha sikeresek.

Fájl törlése az ideiglenes tárolóból

Az adatok attribútumban történő mentése után az ideiglenes tárolóban lévő fájl törölhető. Ehhez létezik a DeleteFileFromTemporaryStorage() metódus, amely törli a fájlt az ideiglenes tárhelyről. A metódus paraméterként veszi az ideiglenes tárolóban lévő fájl címét. elérhető a szerveren.

Annak ellenőrzése, hogy egy cím ideiglenes tárolóhoz tartozik-e

A fájl címe utalhat mind az ideiglenes tárhelyre, mind az információs bázis részleteire. A típusának ellenőrzéséhez a ThisTemporalStorageAddress() metódus használható.

Ellenőrzi, hogy az átadott cím egy üzletre mutat-e. Igaz értéket ad vissza, ha a cím ideiglenes tárolóra mutat. A módszer elérhető a szerveren.

A kellékek címének megszerzése

Miután az adatok az infobázis kellékeibe kerültek, előfordulhat, hogy fájlmódszerekkel kell hozzáférni.

Mielőtt azonban adatokat kapna, például egy attribútumból, meg kell szereznie ennek az attribútumnak a címét. Ehhez létezik egy GetFileAddressInInfobase() metódus.

Célja, hogy az eredeti paraméterek szerint visszaadja a fájl címét az infobázisban. Ehhez át kell adni az objektumkulcsot (lehet az objektumra mutató hivatkozás vagy az információs regiszter rekordkulcsa) és az attribútum nevét. Ha egy táblázatos szakasz attribútumban tárolt fájl címét szeretné lekérni, akkor az attribútum nevét meghatározó paraméterben az attribútum neve elé, hozzá kell adnia a táblázatos szakasz nevét és egy "." A módszer a kliensen és a szerveren is elérhető.

Fájl lekérése az információs bázisból

A GetFile() metódus fogad egy fájlt az információs bázisból, és elmenti a felhasználó helyi fájlrendszerébe. Az első paraméter az attribútumban vagy az ideiglenes fájltárolóban lévő fájl címét adja meg. A második paraméter határozza meg az eredményül kapott fájl célját. Nem interaktív módban meg kell adni az elérési utat. Interaktív módban a paraméter nem kötelező.

Alapértelmezés szerint a metódus interaktív módban fut, vagyis az utolsó paraméter True. Ez azt jelenti, hogy megjelenik egy párbeszédpanel, amelyben megadhatja a kapott fájllal kapcsolatos műveletet: futtassa vagy mentse a felhasználó által megadott helyre. Ha az interaktív mód aktív, és a lemezen lévő fájl cél elérési útja nincs megadva, akkor a fájlmegnyitási művelet nem érhető el. Logikai értéket ad vissza. Hamis azt jelenti, hogy a felhasználó a művelet megszakítását választotta az online mentési fájl párbeszédpanelen.

Példa a fájlmódszerek használatára

// Fájl fogadása a lemezről interaktívan // és átmeneti tárhelyre helyezése &AtClient eljárás SelectFileCDDiskAndWrite()

Változó SelectedName; Az ideiglenes tárolás változó címe; Ha PutFile(TempStorageAddress, SelectedName, True) akkor Object.FileName = SelectedName; PlaceObjectFile(AddressTemporaryStorage); EndIf;

Vége eljárás

// Fájl másolása ideiglenes tárhelyről referencia attribútumba //, objektum írása, fájl törlése az ideiglenes tárhelyről // &AtServer eljárás PlaceObjectFile(TemporaryStorageAddress)

Könyvtárelem = FormAttributeToValue("Object"); BinaryData = GetFileFromTempStorage(TempStorageAddress); DirectoryItem.FileData = NewValueStorage(BinaryData); FilePathOnDisk = Új fájl(DirectoryItem.FileName); Katalógus Element.FileName = FilePathOnDisk.Name; ElementDirectory.Write(); módosított = false; DeleteFileFromTemporaryStorage(AddressTemporaryStorage); ValueVFormAttribute(DirectoryItem, "Object");

Vége eljárás

// Olvassa be a fájlt az attribútumból, és mentse el // ide helyi lemez interaktívan &A kliensnél ReadFileAndSaveToDisk()

Cím = GetFileAddressInInfobase(Object.Link, "FileData"); GetFile(cím, objektum.fájlnév, igaz);

Vége eljárás

A képmezőben lévő címek támogatása

Az Image Field vezérlő támogatja az ideiglenes tárolóban vagy az adatbázisban lévő fájl címe által meghatározott kép megjelenítését.

Ehhez a form elem Data tulajdonságában meg kell adni egy string típusú attribútumot. Ennek az attribútumnak az értéke a kép címeként lesz értelmezve.

Példa // A képmező kötése az ideiglenes tárolóban lévő // kép címéhez. AddressImage form kellékek karakterlánc típusa

Helyfájl (ImageAddr, True)

Image.Data = Képcím

Korlátozások a webes klienssel végzett munka során

A leírt mechanizmus működése a webkliens használatakor bizonyos korlátozásokkal rendelkezik. Ezek a korlátozások a böngésző biztonsági modelljének sajátosságaihoz kapcsolódnak. Így például a kliens önmagában nem tudja elmenteni a fájlt a helyi fájlrendszerbe, vagyis csak a PlaceFile() és a GetFile() kliens metódusok interaktív változata érhető el. A nem interaktív mód használatának kísérlete kivételt jelent. Párbeszédpanelek, interaktívan megjelenített, egy adott böngészőtípusra jellemző.

Jellemzők, amikor a Value Store-nal dolgozik az ügyfélen

Probléma:

Ha a táblázatos részben lévő dokumentumnak ValueStorage típusú attribútuma van, lelassítja a dokumentuműrlap megnyitását, ha ez az attribútum nagy adatokat tartalmaz.

Javasolt ok:

Lehetséges, hogy az űrlap megnyitásakor a kliensnek nem az Értéktárban lévő adatokra mutató hivatkozást küldik, hanem magát az adatot.

Megoldás

  • Az űrlap táblázatattribútumának tulajdonságai között szerepel egy "Mindig használat" jelző. Ha be van állítva, akkor a mező tartalma mindig átvitelre kerül a szerver és a kliens között – például egy űrlap megnyitásakor. Ezt a jelzőt le kell tiltani, de ezt figyelembe kell venni a kódban, mivel a kliensen alapértelmezés szerint nem lesz értéke ennek a mezőnek. Egy példa megtekinthető az 1C: Archívumban.

Még jobb használni Átmeneti tároló fájlok átviteléhez a kliens és a szerver között.

Nyomtatás (Ctrl+P)

Ez a rész az ideiglenes tárolókkal és fájlokkal való munkavégzés mechanizmusának legáltalánosabb módjait ismerteti.

Adatok mentése fájlból ideiglenes tárhelyre

Egy fájl elhelyezése

A PlaceFile() metódus egy fájlt helyez el a helyi fájlrendszerből az ideiglenes tárolóba. A metódus elfogad egy címet az ideiglenes tárolóban, ahová a fájlt menteni kell. Ha a cím nincs megadva, vagy üres karakterlánc, akkor létrejön új címés a metódus egy speciális paraméteren keresztül adja vissza.
Jegyzet. A kliens és a szerver között a PlaceFile() metódus egyetlen hívása során áthelyezett adatmennyiség
Ha az interaktív üzemmódot meghatározó paraméter True, akkor a metódus egy szabványos fájlkiválasztó párbeszédablakot jelenít meg, amelyben kiválasztható a tárolóban tárolandó fájl. Ebben az esetben a metódus a kiválasztott fájl címét is visszaadja.
Ennek eredményeként a metódus False értéket ad vissza, ha a felhasználó interaktív módon megtagadta a művelet végrehajtását a fájlkiválasztó párbeszédpanelen.

Fájlkészlet elhelyezése

Módszer HelyFájlok() több fájlt helyez ideiglenes tárhelyre egy hívásban. Több is van különböző módokon ezzel a módszerrel:
● előzetesen létrehozni egy listát a hozzáadandó fájlokról, például az információs bázisba helyezendő fájlok előzetes kiválasztásakor;
● fájlkereső maszk átadása a metódusnak, például amikor egy bizonyos típusú fájlt el kell helyezni az infobázisba, például az összes képet;
● adjunk át egy korábban elkészített objektumot a metódusnak Fájlválasztó párbeszédpanel fájl megnyitási módban.
Ha kész, a metódus visszaadhatja a ténylegesen hozzáadott fájlok listáját.

// A FileList a ValueList típusú űrlapattribútum,
// tartalmazza a hozzáadandó fájlok listáját
FileArray = Új tömb;
A FileList ciklus minden elemlistájához
Fájltömb.Add(Az átvitt fájl új leírása(ListItem,));
EndCycle;
Elhelyezett fájlok= Új tömb;
Eredmény = PutFiles(FileArray, PutFiles, False, UniqueIdentifier);

Megjegyzés 1. A módszer használatához HelyFájlok() a webes kliensben a fájlokkal való munkavégzéshez csatlakoztatnia kell a kiterjesztést.
2. megjegyzés: A kliens és a szerver között áthelyezett adatok mennyisége metódushívásonként HelyFájlok(), nem haladhatja meg a 4 Gb-ot (soros formában).

Adatok ideiglenes tárolására

A metódus hasonló a PutFile() metódushoz, azzal az eltéréssel, hogy az adatokat az ideiglenes tárhelyre kell írni
nem elérési útként jelennek meg a fájlrendszerben, hanem értékként. Hasonlóképpen, ha nincs megadva meglévő cím az ideiglenes tárolóban, akkor új cím jön létre. A cím a függvény eredményeként kerül visszaadásra. A fájlokhoz hasonlóan a közzétett adatoknak egy űrlaphoz kell tartozniuk, és az űrlap törlésekor automatikusan törlődnek.
Jegyzet. Az ügyfél és a szerver között áthelyezett adatok mennyisége metódushívásonként PlaceInTempStorage(), nem haladhatja meg a 4 Gb-ot (soros formában).
Figyelem!Átmeneti tárolóba helyezve az érték valójában nem sorosodik. A rendszer elhelyezi az értékre mutató hivatkozást, és 20 percig tárolja a gyorsítótárban. Ezen időszak letelte után az értéket sorba rendezik, lemezre írják (munkamenettároló), és eltávolítják a gyorsítótárból.

Adatok lekérése az ideiglenes tárolóból

Amikor objektumot ír egy információs bázisba, előfordulhat, hogy adatokat kell lekérnie az ideiglenes tárhelyről, és el kell helyeznie azokat például egy infobase objektum attribútumai közé. Erre van egy speciális módszer - GetFromTemporalStorage(). Ez a módszer lekéri az adatokat az ideiglenes tárolóból, és a végrehajtás eredményeként visszaadja azokat. Az adatok fogadásához meg kell adni a címet az ideiglenes
tárolás. Ezt a címet az adatok ideiglenes tárolóba helyezésére szolgáló módszerek adják vissza, ha sikeresek (lásd az előző szakaszokat).
Figyelem! Amikor lekér egy értéket a kiszolgálón lévő ideiglenes tárhelyről, ne feledje, hogy azt referenciaként kapja meg. Valójában ez a hivatkozás a gyorsítótárban tárolt értékre mutat. A tárolóba helyezéstől vagy az utolsó hozzáféréstől számított 20 percen belül az érték a gyorsítótárban tárolódik, majd lemezre íródik, és eltávolítja a gyorsítótárból. A következő elérésekor az érték betöltődik a lemezről, és visszakerül a gyorsítótárba.
A deszerializálás és az ideiglenes tárolóból származó érték visszaállítása után a hivatkozások nem állnak vissza. A gyorsítótárban lévő érték visszaállításra kerül a lemezről. A szerializálás / deszerializálás után azonban lehetetlen visszaállítani az értéken belüli más objektumokra való hivatkozásokat.

Adatok törlése az ideiglenes tárolóból

Az adatok az infobase objektum attribútumába történő mentése után az ideiglenes tárolóban lévő adatok törölhetők. Erre van egy módszer
DeleteFromTempStorage(), amely elvégzi a törlést. A metódus paraméterként egy ideiglenes tárolóban lévő címet vesz fel.

Annak ellenőrzése, hogy egy cím ideiglenes tárolóhoz tartozik-e

A cím egy ideiglenes tárolóra és egy attribútumra is mutathat az információs bázisban. Van egy módszer a típusának ellenőrzésére
Ez a TemporalStorageAddress(). Ellenőrzi, hogy az átadott cím egy üzletre mutat-e. Igaz értéket ad vissza, ha a cím ideiglenes tárolóra mutat.

A kellékek címének megszerzése

Miután az adatok az infobase objektum attribútumaiba kerültek, szükséges lehet a fájlmódszerekkel való elérése.
Mielőtt azonban adatokat kapna, például egy attribútumból, meg kell szereznie ennek az attribútumnak a címét. Erre van egy módszer getnavlink().

Az eredeti paraméterek alapján vissza tudja adni egy érték címét az infobázisban. Ehhez át kell adnia az objektum kulcsát (ez lehet
objektumra való hivatkozás és az információs regiszter rekordkulcsa egyaránt) és az attribútum neve. Ha meg kell szereznie az attribútumban tárolt érték címét
táblázatos szakaszt, majd az attribútum nevét meghatározó paraméterben lévő attribútum nevéhez hozzá kell adni a táblázatos szakasz nevét és egy "." Például: Termékek.Kép

Fájl lekérése az információs bázisból

Egy fájl beszerzése

A GetFile() metódus fogad egy fájlt az információs bázisból, és elmenti a felhasználó helyi fájlrendszerébe. Az első paraméter határozza meg a fájl címét az infobase objektum attribútumában vagy az ideiglenes fájltárolóban. A mentés nem történik meg, ha a felhasználó, akinek a nevében a műveletet végrehajtják, nem rendelkezik nézet joggal az infobase objektum attribútuma tekintetében. A második paraméter határozza meg, hogy az eredményül kapott fájl hova kerüljön mentésre. Nem interaktív módban meg kell adni az elérési utat. Interaktív módban a paraméter az
választható.
Alapértelmezés szerint a metódus interaktív módban kerül végrehajtásra. Ez azt jelenti, hogy létrejön egy párbeszédpanel, amelyben megadhat egy műveletet a kapott fájllal: futtassa vagy mentse el a fájlrendszerben egy felhasználó által megadott helyre. Ha az interaktív mód van kiválasztva, és a Fájlnév paraméter nincs megadva, akkor a fájlmegnyitási művelet nem érhető el. A metódus logikai értéket ad vissza. Hamis azt jelenti, hogy a felhasználó a művelet megszakítását választotta az online mentési fájl párbeszédpanelen.

Fájlkészlet beszerzése

A GetFiles() metódus lehetővé teszi több, az infobázisban tárolt fájl lekérését és mentését a felhasználó helyi fájlrendszerében. A feltöltött fájlok listája paraméterként kerül átadásra.

// FileList - az elemekre való hivatkozásokat tartalmazó értékek listája
// könyvtár, ahol a feltöltött fájlok találhatók
// Az értéklista ábrázolása a feltöltött fájl neve
FileArray = Új tömb;
A FileList ciklus minden elemlistájához
Fájl = Új Fájl(String(Listaelem.Érték));
GetFile = Új Az átvitt fájl leírása;
GetFile.Name = ListItem.View;
GetFile.Storage= P getNavigationLink(ListItem.Value, "Data");
FileArray.Add(GetFile);
EndCycle;
Fogadott fájlok= Új tömb;
Eredmény = GetFiles (FileArray, GetFiles, UploadFilesPath, False);
Ha NINCS Eredmény Akkor
Üzenet = Új MessageToUser;
Üzenet.Szöveg = "Hiba a fájlok beolvasásakor!";
Message.Notify();
EndIf ;

Ha kész, a módszer visszaadhatja a ténylegesen feltöltött fájlok listáját, feltüntetve az egyes mentett fájlok teljes nevét.
JEGYZET. A GetFiles() metódus webes kliensben való használatához csatlakoztatnia kell a fájlkiterjesztést. Ha az objektumnév tulajdonság Fájlátvitel leírása a fájl abszolút elérési útját tartalmazza, a fájl erre az elérési útra kerül mentésre, figyelmen kívül hagyva a paramétert LocationFiles.
A FileLocation paraméter lehet egy elérési út a helyi fájlrendszerben, vagy egy FileSelect Dialog objektum a könyvtár kiválasztásának vagy a fájlok mentésének módjában. Ha paraméterértékként LocationFiles megadott objektum Válassza a Fájlok párbeszédpanelt módban
mentse el a fájlokat, majd:

● a párbeszédpanel minden egyes átvitt fájlhoz meghívódik, kivéve azokat a fájlokat, amelyeknél a TransferableFileDescription objektum neve tulajdonsága abszolút elérési utat tartalmaz;
● a párbeszédablakban a kezdeti fájlnévként az objektum neve, átvitt fájl Leírás tulajdonság értéke kerül felhasználásra;
● ha egyik fájlnál sem van kiválasztva mentés, akkor a SubmittedFileDescription objektum Name tulajdonsága üres karakterláncot fog tartalmazni;
● a GetFiles() metódus True értéket ad vissza, ha legalább egy fájl sikeresen érkezett;
● ne feledje, hogy a fájlok tényleges átvétele azután történik, hogy a felhasználó megválaszolja a név és az elérési út megadásával kapcsolatos kérdéseket
minden fogadott fájl;
● Ha a felhasználó, akinek nevében a GetFiles() metódus végrehajtásra kerül, nem rendelkezik tallózási joggal annak az infobase objektumnak legalább egy attribútuma tekintetében, amelyről a fájlok érkeznek, akkor a teljes művelet meghiúsul.
Példa:

TransferredFiles = Új tömb;
Leírás = Új Fájlátvitel leírása(„Leírás”, Fájlcím);
TransferredFiles.Add(Leírás );
FileSelection = Új FileSelectDialog(FileSelectDialogMode.Save);
Válassza ki a File.Header elemet= „Archívum mentése”;
Válassza a File.Extension lehetőséget= "zip";
Válassza a Fájl.Szűrő lehetőséget= "Archívum(*.zip)|*.zip|Minden fájl|*.*";
FileSelection.FilterIndex = 0;
GetFiles (Transmitted Files, FileSelect, False);

Ha az interaktív módot választja ki a fájlok mentési könyvtárának kiválasztásához, akkor a webes kliens ezenkívül engedélyt kér az abszolút elérési utakkal megadott fájlok mentésére. Nem interaktív mentés esetén (a könyvtár elérési útja a megfelelő paraméterben van megadva), a kérés a mentett fájlok teljes listájára végrehajtásra kerül.

Példa a fájlmódszerek használatára

// A fájl interaktív lekérése a lemezről
// és átmeneti tárolóba helyezve.
&AtClient
Eljárás SelectFileCDDiskAndWrite()
Változó SelectedName;
Rem TemporaryStorage Address;
NewObject = Object.Reference.Empty();
Ha PutFile (TempStorageAddress, "", SelectedName, True) Azután
Object.FileName = SelectedName;
PlaceObjectFile(AddressTemporaryStorage);
EndIf;
Vége eljárás
// Fájl másolása az ideiglenes tárolóból a kellékek közé
// könyvtár, objektum írása, fájl törlése ideiglenesből
// tárolás.
&A szerveren
Eljárás PlaceObjectFile (TempStorageAddress)
Könyvtárelem = FormAttributeToValue("Object");
BinaryData = GetFromTemporaryStorage(AddressTemporaryStorage);
Katalógus Element.FileData= Új StoreValues ​​(bináris adatok, Új adattömörítés()) ;
Fájl = Új Fájl(DirectoryItem.FileName);
Katalógus Element.FileName = Fájl.Név;
ElementDirectory.Write();
módosított = false;
DeleteFromTemporaryStorage(AddressTemporaryStorage);
ValueVFormAttribute(DirectoryItem, “Object”);
Vége eljárás
// Fájl beolvasása a kellékekből és mentse el
// a helyi lemezen interaktív módban.
&AtClient
Eljárás ReadFileAndSaveToDisk()
Cím = GetNavigationLink(Object.Link,"FileData");
GetFile(cím, objektum.fájlnév, igaz);
Vége eljárás

Engedély fájlműveletek csoportjának végrehajtására

Amikor egyes műveleteket hajt végre a webes kliensben, előfordulhat, hogy több fájlművelethez engedélyt kell szereznie.
Például le kell kérnie egy dokumentumot egy információs bázisból, majd meg kell nyitnia a mentett dokumentumot a kapcsolódó alkalmazás segítségével.
A művelet végrehajtásához meg kell válaszolnia a dokumentum mentésére vonatkozó kérdést és az indítás szükségességét. Ha több művelet van, akkor több kérdés is lesz a felhasználó számára.
A kérdések számának csökkentése érdekében használhatja a módszert. Ennek a módszernek a használatakor
a felhasználónak megjelenik az összes végrehajtani tervezett művelet listája, és felkéri, hogy engedélyezze egy műveletcsoport végrehajtását. Ha a felhasználó engedélyezte a végrehajtást, akkor a kért műveletek a felhasználóhoz intézett további kérések nélkül végrehajtódnak. Ha nem adják meg az engedélyt, a műveletek végrehajtásra kerülnek normál mód: műveletenként egy kérés.
JEGYZET. A módszer használatához RequestUserPermission() a webes kliensben a fájlokkal való munkavégzéshez csatlakoztatnia kell a kiterjesztést.
Vegyünk egy példát a módszer használatára:

Ha ConnectFileWorkingExtension() Azután
Link = GetNavigationLink(Object.Link, “FileData”);
// Az átvitt fájlok leírásának kialakítása (ebben az esetben csak egy fájl van)
Átvitt fájlok= Új tömb;
Leírás = A TransferredFile(Object.FileName, Link) új leírása;
TransferredFiles.Add(Description);
// Objektum előkészítése a fogadott fájlokról szóló információk fogadására
Átvitt fájlok= Új tömb;

// Egyéb metódusparaméterek meghatározása
Katalógusmegőrzés= "c:\temp";
interaktív = false ;
TransferredFileName = SaveDir + "\" + Object.FileName;
// Készítsen leírást az engedélyek megszerzésének módszereiről
Methods = Új tömb;

Methods.Add("GetFiles");
Methods.Add(UploadedFiles);
Methods.Add(SubmittedFiles);
Methods.Add(SaveDirectory);
Methods.Add(Interactive);
Methods.Add(New Array);
Methods.Add("Alkalmazás indítása");
Methods.Add(UploadedFileName);
Ha nem RequestUserPermission (Módszerek) Azután
alert("A felhasználó megtagadta az engedélyt.");
Visszatérés;
EndIf;
GetFiles (feltöltött fájlok, feltöltött fájlok, mentési könyvtár, interaktív);
StartApplication(A PassedFile neve);
Másképp
Warning("A végrehajtás nem támogatott. A fájlkiterjesztés nincs telepítve.");
EndIf;

A módszer számos jellemzőjét meg kell jegyezni. RequestUserPermission().

1. Engedélyt csak a következő módszereket:

GetFiles()/StartGetFiles(),
● PlaceFiles()/StartPuttingFiles(),
● FindFiles()/StartSearchFiles(),
● CopyFile()/StartCopyFile(),
● MoveFile()/StartMoveFile(),
● DeleteFiles()/StartDeleteFiles(),
● CreateCatalog()/StartCreatingCatalog(),
● StartAlkalmazás()/StartStartApplication().

2. Engedélyt kérnek a metódusparaméterek meghatározott készletéhez. Ha a fájlokkal való munkavégzés módszerének tényleges végrehajtása során a paraméterek értékei eltérnek azoktól, amelyekre az engedélyt megszerezték, ez az engedély nem érvényes, és a felhasználó külön kérést kap a művelet megerősítésére.

3. Ha két (vagy több) azonos műveletet kell végrehajtania fájlokkal (akár azonos paraméterkészlettel is), meg kell adnia a megfelelő számú elemet a metódusparaméterek tömbjében. RequestUserPermission(). Például, ha ugyanazt a fájlt kétszer kell lekérnie az információs bázisból, és egy rögzített helyre kell elhelyeznie a fájlrendszerben, akkor engedélyt kell kérnie.
két műveletre.

4. Ha engedélyt kérnek egy interaktív műveletet végrehajtó művelethez (például a GetFiles() függvény egy objektumot kap Fájlválasztó párbeszédpanel), akkor az ilyen művelet ki van zárva a kérésből.

A megadott engedélyek vagy az engedélyezett hívásig, vagy az 1. nyelvi végrehajtás végéig megmaradnak.
JEGYZET. vastagon és vékony kliensek RequestUserPermission() a metódus mindig True értékkel tér vissza, felhasználói beavatkozás nélkül.

Ideiglenes tárolóval való munkavégzés háttérmunkában

Az ideiglenes tárolóval való munkavégzés mechanizmusában lehetőség van adatok átvitelére egy háttérfeladatból a háttérfeladatot kezdeményező munkamenetbe.
Az ilyen átvitelhez a szülő munkamenetben egy üres értéket kell elhelyezni az ideiglenes tárolóban (a metódus segítségével PutIntoTempStorage()), amely megadja a létrehozott ideiglenes tároló valamilyen azonosítóját (Address paraméter). Ezután adja át a kapott címet a háttérfeladatnak a háttérfeladat paraméterein keresztül. Továbbá, ha bent háttérmunka használja ezt a címet a Method Address paraméter értékeként PutIntoTempStorage(), az eredményt a rendszer arra a munkamenetre másolja, amelyből a háttérfeladat elindult.
A háttérfeladatban ideiglenes tárhelyen elhelyezett adatok nem lesznek elérhetők a szülő munkamenettől kezdve, amíg a háttérfeladat be nem fejeződik.

A képmezőben lévő címek támogatása

Űrlapelem Nézetmező A képmező támogatja egy érték címével meghatározott kép megjelenítését (amely lehet kép vagy bináris adat) ideiglenes tárolóban vagy adatbázisban.
Ehhez a form elem Data tulajdonságában meg kell adni egy string típusú attribútumot. Ennek az attribútumnak az értéke a kép címeként lesz értelmezve.

// 1. példa
// A képmező kötése a kép címéhez ideiglenesen
// tárolás. ImageAddress – karakterlánc típusú formattribútum
PutFile(Képcím, EredetiNév, KiválasztottNév, Igaz, EgyediIdentifier);
// 2. példa
// A kép címének lekérése az objektum attribútumából
// infobázis
ImageFile = Object.ImageFile;
Ha nem ImageFile.Empty() Akkor
ImageAddress = GetNavigationLink(ImageFile, “FileData”);
Másképp
ImageAddress = "";
vége, ha;

Hozzáférés a szabványos könyvtárakhoz

A rendszer használata során szükség van bizonyos helyekre a fájlrendszerben, ahol különféle fájladatokat tárolhatunk, amelyek egyrészt ideiglenesek, másrészt kellően hosszú ideig kell tárolni. Ilyen fájlok közé tartoznak a dokumentumkezelő rendszerek piszkozatai, az ügyfélszámítógép oldalán futó külső komponensek stb.
Ezeket a fájlokat egy speciális könyvtárban tárolják, amely egy adott információs bázis egy adott felhasználójához kapcsolódik.
Ugyanaz a felhasználó, aki két információs bázissal dolgozik, két különböző felhasználói adattároló könyvtárhoz fog hozzáférni. Ennek a könyvtárnak a helyét a módszer segítségével határozzuk meg WorkingUserDataDirectory(). Ha a könyvtár nem létezik, akkor az első hozzáféréskor jön létre. Ha a könyvtárat nem lehet létrehozni, a rendszer kivételt állít fel.
JEGYZET. A UserDataWorkerDir() metódus nem érhető el a szerver oldalon.
V operációs rendszer van egy speciális könyvtár a felhasználói adatok állandó tárolására. Lehetne néhány
jelentések, nyomtatványok dokumentumok, stb. Ebben a könyvtárban helyezik el az adatokat, amelyeket később külső helyre küldhetnek
fogyasztók. A könyvtár eléréséhez a DocumentDirectory() metódus használható. A könyvtár fizikai helye az operációs rendszertől függ.
rendszer, ahol az alkalmazás fut, és ez a szintaktikai asszisztensben van megadva.

Konfiguráció tárolása az 1C 8.2-ben és 8.3-ban az 1C: Enterprise 8 platformba épített csoportos megoldásfejlesztési eszköz A repository lehetővé teszi a többfelhasználós megoldásfejlesztést korlátlan számú felhasználó számára. Ezzel részletesen megtekintheti a konfiguráció fejlesztésének teljes történetét és a fejlesztők egyes lépéseit.

Tekintsük a beállításokat, és dolgozzunk részletesebben a konfigurációs tárral.

A repository lényegében egy adatbázis, ahol a konfigurációs változásokat tárolják. A fejlesztők mindegyike saját információs bázissal dolgozik, amely a tárolóhoz kapcsolódik. A munkalap a tárolóhoz is csatlakoztatható. A legjobb általános séma ezen a képen látható:

Ez az adatbázis információkat tárol arról is, hogy ki rögzítette ezt vagy azt az objektumot. Az objektumfogás a fejlesztő által beállított címke. A beállított markolat elkerüli az ütközéseket a csoportfejlesztés során. Amíg az objektum rögzítve van, senki nem szerkesztheti azt.

Rögzítheti a teljes objektumot (rekurzívan), és egy külön objektumot vagy űrlapot is.

Miután a fejlesztő végrehajtott néhány műveletet az objektumon, el kell helyeznie a fejlesztéseket a tárolóban. És ezáltal távolítsa el a jelet, hogy az objektum rögzítette.

Hogyan készítsünk 1C tárolót

A tárhely létrehozása meglehetősen egyszerű, ehhez a "Konfiguráció - Konfigurációs tárhely" menüben a "Tárhely létrehozása" menüpontot kell kiválasztani. A megjelenő menüben adja meg a jövőbeni tárolási hely elérési útját és a rendszergazda felhasználó bejelentkezési/jelszavát:

Létrehozáskor mindenképpen készítsen biztonsági másolatot. fiókot adminisztratív jogokkal – nagyon gyakran ez segít.

Csatlakozás az 1C tárolóhoz

A konfigurációs tárhoz való csatlakozáshoz a "Konfiguráció - Konfiguráció tárolása" menüben a "Csatlakozás a tárolóhoz" menüpontot kell kiválasztani. A megjelenő ablakban meg kell adnia a tárhely elérési útját és a felhasználó felhasználónevét / jelszavát, kattintson a "Csatlakozás" gombra:

Ingyenes 267 1C videóleckéket kaphat:

A csatlakozáskor a konfigurációt a tárolóból származó konfiguráció váltja fel, legyen óvatos.

1C konfigurációs tárolási adminisztráció

Az 1C tároló adminisztrálásához válassza ki a következő elemet a konfigurációs menüben - "Konfiguráció - Konfiguráció tárolása - Adminisztráció":

  • A „Felhasználók” lapon új felhasználókat vehet fel vagy távolíthat el, valamint meghatározhatja mindegyikük jogkörét.
  • A Kapcsolatok lapon megtekintheti a tárolóhoz kapcsolódó összes felhasználót, szükség esetén leválaszthatja őket.
  • A „Rögzítés megszüntetése” lapon eltávolíthatja bármely felhasználó rögzítését egy adott objektumról, kivéve, ha ehhez természetesen rendelkezik jogosultságokkal.

A tárolási előzmények megtekintése 1C

Az előzmények megtekintéséhez lépjen a "Konfiguráció - Konfiguráció tárolása" menübe, válassza a "Tárolási előzmények" elemet:

Az 1C tároló történetében láthatja, hogy mikor, ki és mit változtatott.

Fejlesztés tárolással 1C 8.3

Az adattárral végzett munka feltételesen a fő műveletekre osztható:

  • konfigurációk az 1C konfigurációs tárolóból;
  • 1C tárolási állapotok frissítése;
  • tárolás rögzítése;
  • tárhely.

Nézzük meg közelebbről az egyes műveleteket:

Tárolási állapotok frissítése 1C

Lekéri a legújabb objektumállapotokat (rögzített vagy nem).

Úgy hívják: "Konfiguráció - Konfiguráció tárolása - Frissítési állapotok".

A konfiguráció frissítése az 1C konfigurációs tárolóból

A művelet lekéri az összes módosított konfigurációs objektumot, amely a lerakatba került. A parancs végrehajtása frissíti az objektumok állapotát is.

Hívva: "Konfiguráció - Konfigurációs tárolás - Konfiguráció frissítése a tárhelyről".

Rögzítés 1C konfigurációs tárolóban

Ezzel a paranccsal letilthatja a módosítást ezt a tárgyat más fejlesztők számára: amíg az objektumot Ön rögzíti, egyetlen felhasználó sem módosíthatja azt, amíg vissza nem helyezi az objektumot.

A rögzítés jobb gombbal történhet helyi menü metaadat objektumhoz:

A megnyíló ablakban megadhat néhány beállítást:

  • Rekurzív végrehajtás- lehetővé teszi az összes alárendelt objektum - űrlapok stb.
  • Elfogott fogadás engedélyezése- lehetővé teszi más felhasználók számára, hogy megkapják az objektum köztes verzióit

Raktárhelyiség 1C

Az objektum cseréje után vissza kell helyezni a tárhelyre, ez ugyanúgy történik, mint a rögzítésnél, csak a „Raktárba helyezés” elem van kiválasztva:

Feladáskor feltétlenül töltse ki a „megjegyzés” mezőt, ez nagyon fontos a csoportfejlesztés szempontjából. Hat hónappal később már arra sem fog emlékezni, hogy miért hajtott végre bizonyos műveleteket. Csakúgy, mint a rögzítés, a helyiségnek is megvannak a maga sajátos beállításai:

  • Rekurzív végrehajtás- lehetővé teszi az összes alárendelt objektum elhelyezését - űrlapokat stb.
  • Hagyja elfogva- lehetővé teszi az objektum "köztes" változatának elhelyezését, miközben a rögzítést a felhasználóra hagyja

Új objektum hozzáadása az 1C tárolóhoz