Mecanismul de stocare temporară, lucrul cu fișiere și imagini

Capitolul 20. Mecanismul de stocare temporară, lucrul cu fișiere și imagini


Capitolul 20. Mecanismul de stocare temporară, lucrul cu fișiere și imagini

În "1C: Enterprise" există un mecanism de lucru cu stocarea temporară, care asigură stocarea anumitor date legate de sesiune. În plus, este implementat un mecanism de lucru cu fișiere, care asigură schimbul de fișiere între baza de informații și aplicația client. Particularitatea acestui mecanism este că este orientată spre utilizarea într-un client subțire și client web și este concepută ținând cont de restricțiile privind lucrul cu fișierele impuse de browserele web.

Mecanismul instalației de depozitare temporară, împreună cu un mecanism pentru a lucra cu fișiere oferă un kit cu care vă puteți pune datele stocate local pe utilizator pentru stocarea temporară a bazei de informații, pentru a transfera această informație de stocare temporară la baza de date și să-l înapoi la calculatorul utilizatorului. Cele mai frecvente probleme de aplicare rezolvate prin aceste mecanisme, - .. Este de a stoca informațiile de însoțire, cum ar fi imagini ale produselor, referitoare la documentul de contract, etc. Mecanisme de stocare temporară și de gestionare a fișierelor sunt adesea utilizate împreună, dar poate fi, de asemenea, utilizate separat.

20.1. Depozitare temporară

Depozitarea temporară este o stocare specializată a informațiilor în care poate fi plasată o valoare. Scopul principal este depozitarea temporară a informațiilor în interacțiunea client-server înainte de a fi transferată în baza de date.

Necesitatea stocării temporare apare, de exemplu, deoarece modelul de funcționare a browserului web necesită transferarea directă a fișierului selectat de utilizator către server fără posibilitatea stocării acestuia pe client. Când un fișier este transferat, el este plasat în spațiu de stocare temporar și poate fi folosit mai târziu când scrieți un obiect la baza de date.

Puteți utiliza stocarea temporară ca stocare universală cu o durată de viață controlată:

● Dacă datele camerelor de date într-o anumită formă de legare a fost efectuată într-o depozitare temporară, datele stocate pe viață depinde de durata formelor de viață, care sunt legate de date. Când ștergeți un obiect de formular, magazinul temporar va fi șters de toate informațiile asociate.

● Dacă, atunci când puneți datele în spațiul de stocare temporar, legătura cu formularul nu a fost finalizată, depozitarea temporară va fi curățată în următoarele cazuri:

● Data viitoare când se solicită formularul.

● La următorul apel de la server de la modulul comun al clientului.

● Pentru apelurile client contextuale și non-contextuale din formular.

● În timpul unui apel server de la modulul de comandă. Dacă serverul este chemat să plaseze valoarea în memorie temporară, curățarea nu este efectuată. Curățarea se face după terminarea apelului.

Aceasta înseamnă că puteți pune una sau mai multe valori în spațiul de stocare temporar, iar în următorul apel, utilizați această valoare. În acest caz, după utilizarea și înainte de terminarea apelului de server, valoarea plasată va fi ștearsă automat.

Cea mai obișnuită sarcină de aplicare rezolvată de spațiul de stocare temporară este furnizarea accesului la fișiere sau imagini înainte ca obiectul să fie scris în baza de informații, de exemplu, sub forma unui element.

20.2. Moduri de lucru cu fișiere și stocare temporară

Această secțiune descrie cele mai frecvente opțiuni pentru utilizarea mecanismului de lucru cu spațiu de stocare temporar și fișiere.

20.2.1. Salvarea datelor din fișier pentru stocarea temporară

20.2.1.1. Plasați un fișier

Ca rezultat, metoda returnează False. Dacă utilizatorul a refuzat interactiv să efectueze operațiunea în dialogul de selectare a fișierelor.

20.2.1.2. Setare locație fișier

Metoda Place Files () plasează mai multe fișiere într-un magazin temporar într-un singur apel. Există mai multe modalități diferite de a utiliza această metodă:

● Pregătiți o listă de fișiere care trebuie adăugate, de exemplu, atunci când fișierele selectate anterior trebuie să fie plasate în baza de date;

● trimiteți o mască de căutare la metodă, de exemplu, când doriți să puneți toate fișierele de un anumit tip în baza de date a informațiilor, de exemplu, toate fotografiile;

● Transferați la metodă un Dialog fișier pre-pregătit în modul Deschidere fișier.

După finalizarea lucrării, metoda poate returna o listă de fișiere adăugate efectiv.

// ListFiles - elemente de recuzită a formei Lista valori,

// conține lista fișierelor adăugate

FileSize = Array nou;

Pentru fiecare element de listă din ciclul listei fișierelor

FILE Array. Adăugați (descrierea nouă a fișierului transferabil (elementul listei));

Fișiere plasate = Array nou;

Rezultat = locația fișierelor (arhivă de fișiere, fișiere plasate, identificator fals, unic);

NOTĂ. Pentru a utiliza metoda PutFiles () într-un client Web, trebuie să conectați extensia de fișier la fișier (vedeți aici).

20.2.2. Punerea datelor în spațiu de stocare temporară

20.2.3. Preluarea datelor din spațiul de stocare temporar

20.2.4. Ștergerea datelor din spațiul de stocare temporar

Odată ce datele sunt plasate în recuzele obiectului bazei de date, este posibil să fie nevoie să le accesați utilizând metode de fișiere.

20.2.7. Obținerea unui fișier din baza de date de informații

20.2.7.1. Obținerea unui fișier

În mod implicit, metoda este executată interactiv. Aceasta înseamnă că va fi creată o casetă de dialog în care puteți specifica acțiunea cu fișierul primit: porniți-l sau salvați-l în locația sistemului de fișiere specificată de utilizator. Dacă este selectat modul interactiv și opțiunea Nume fișier nu este specificată, operația de deschidere a fișierului nu este disponibilă. Metoda returnează o valoare booleană. Fals înseamnă că utilizatorul a ales să anuleze operațiunea din dialogul de salvare a fișierului interactiv.

20.2.7.2. Obținerea unui set de fișiere

Metoda GetFiles () vă permite să preluați și să stocați mai multe fișiere stocate în baza de date a informațiilor din sistemul de fișiere local al utilizatorului. Ca parametru, lista fișierelor care urmează a fi încărcate este transferată.

// ListFiles - o listă de valori care conține referințe la elemente

// directorul în care sunt localizate fișierele încărcate

// Lista de valori este reprezentată de numele fișierului care urmează să fie încărcat

FileSize = Array nou;

Pentru fiecare element de listă din ciclul listei fișierelor

Fișier = Fișier nou (Linie (Element de listă, Valoare));

Fișier primit = Descriere nouă a fișierului transferabil;

Fișierul primit. Nume = Listă articol. reprezentare;

Fișierul primit. Depozitare = Obțineți navigația (elementul de listă, valoarea, "date");

FILE Array. Adăugați (fișierul primit);

Fișiere primite = Array nou;

Rezultat = GetFiles (Array fișiere, ReceivedFiles, Calea fișierelor încărcate, False);

Dacă nu rezultă atunci

Mesaj = Mesaj nou pentru utilizator;

Mesajul. Text = "Eroare la obținerea fișierelor!" ;

După terminarea lucrării, metoda poate returna o listă de fișiere încărcate cu numele complet al fiecărui fișier salvat.

NOTĂ. Pentru a utiliza metoda GetFiles () pe un client Web, trebuie să vă conectați la extensia de fișier (vedeți aici).

În cazul în care numele proprietății descrierii obiectului fișierului transferabil conține calea absolută a fișierului, fișierul va fi salvat pe această cale, fără setarea locației fișierelor.

Ca parametru Locația fișierelor, fie calea către sistemul de fișiere local, fie obiectul Dialogul de selectare a fișierelor poate fi în modul de selectare a directorului sau de salvare a fișierelor. Dacă dialogul FileName este specificat ca setare Locație fișier în modul Salvare fișier, atunci:

● Dialogul va fi apelat pentru fiecare fișier transferat, cu excepția acelor fișiere pentru care proprietatea Nume a Obiectului Descrierea fișierului transmis conține calea absolută;

● Ca nume de fișier inițial, dialogul va utiliza valoarea proprietății obiectului Descrierea fișierului transferabil;

● Dacă alegeți să nu salvați pentru niciun fișier, atunci Numele proprietății descrierii obiectului fișierului transmis va conține un șir gol;

● metoda GetFiles () va returna valoarea True. dacă cel puțin un fișier este primit cu succes;

● Rețineți că primirea efectivă a fișierelor este efectuată după ce utilizatorul răspunde la întrebări, specificând numele și calea tuturor fișierelor primite.

TransmittedFiles = Array nou;

Fișiere transmise. Adăugați (descriere);

Selecție fișier = Dialog dialog nou de fișiere (dialog de selectare fișier fișier).

Selectarea fișierelor. Titlul = "Salvarea arhivei";

Selectarea fișierelor. Extensie = "zip";

Selectarea fișierelor. Filtru = "Arhiva (* .zip) | * .zip | Toate fișierele | *. *";

Selectarea fișierelor. Indexul filtrului = 0;

Obțineți fișiere (TransmittedFile.File Selection.False);

Dacă selectați modul online pentru selectarea directorului de salvare a fișierelor, clientul web va solicita în plus permisiunea de a salva fișierele specificate cu căi absolute. În cazul salvării neinteractive (calea către director este specificată în parametrul corespunzător), interogarea va fi executată pentru întreaga listă de fișiere salvate.

20.2.8. Un exemplu de utilizare a metodelor de fișier

// Descărcați fișierul din disc în modul interactiv

// și depozitarea temporară a acestuia.

Obiect. FileName = SelectedName;

// director, scrie un obiect, șterge un fișier dintr-un temporar

Element al directorului = Formulare de formate de recuzită ("Obiect");

Elementul referinței. DataFile = New Value Store (date binare, compresie de date noi ());

Fișier = fișier nou (element al directorului nume fișier);

Elementul referinței. FileName = Fișier. nume;

Valoarea formularului de preluare a formularului (elementul referinței "Obiect");

// Citiți fișierul din recuzită și salvați-l

// pe discul local în modul interactiv.

20.2.9. Permisiunea de a executa un grup de operații cu fișiere

Când efectuați anumite operații într-un client Web, este posibil să fie necesar să obțineți permisiunea pentru mai multe operații de a lucra cu fișiere. De exemplu, trebuie să obțineți documentul din baza de date de informații și apoi să deschideți documentul salvat cu aplicația asociată.

Pentru a efectua această operațiune, va trebui să răspundeți la întrebarea de salvare a documentului și la întrebarea privind necesitatea de a începe. Dacă există mai multe operații, utilizatorul va avea și alte întrebări.

Pentru a reduce numărul de întrebări, puteți utiliza metoda Permisiune utilizator pentru permisiune (). Atunci când se utilizează această metodă, utilizatorul afișează o listă a tuturor operațiunilor planificate pentru a fi executate și se recomandă ca grupul de operare să fie permis să execute. Dacă utilizatorul permite execuția, operațiile solicitate vor fi efectuate fără cereri suplimentare către utilizator. Dacă permisiunea nu este acordată, operațiile vor fi efectuate în modul obișnuit: o cerere pentru o operație.

NOTĂ. Pentru a utiliza metoda Permisiune utilizator () pe clientul Web, trebuie să conectați extensia de fișier (vezi aici).

Să luăm în considerare un exemplu de utilizare a metodei:

Dacă conectați lucrarea de expansiune cu fișiere () atunci

// Formarea descrierii fișierelor transferate (în acest caz, fișierul este unul)

TransmittedFiles = Array nou;

Fișiere transmise. Adăugați (descriere);

// Pregătirea obiectului pentru a obține informații despre fișierele primite

Fișiere trimise = Array nou;

// Definiți alți parametri ai metodei

Numele fișierului transmis = Save Directory + "" + Object. nume de fișier;

// Pregătim descrierea metodelor de obținere a permisiunilor

Metode = Array nou;

Metode. Adăugați (New Array);

Metode [0]. Adăugați ("Obțineți fișiere");

Metode [0]. Adăugați (TransmittedFiles);

Metode [0]. Adăugați (Fișiere transferate);

Metode [0]. Adăugați (salvarea catalogului);

Metode [0]. Adăugați (Interactive);

Metode. Adăugați (New Array);

Metode [1]. Adăugați ("Start Application");

Metode [1]. Adăugați (Numele fișierului);

Dacă nu solicitați permisiunea utilizatorului (metode), atunci

Avertizare (permisiunea utilizatorului refuzată);

Obțineți fișiere (Fișiere transmise.Submit.Share.Controls.Interactive);

Avertisment ("Rularea nu este acceptată, extensia de fișier nu este instalată.");

Trebuie remarcate câteva caracteristici ale utilizării metodei Solicitare permis de utilizator ().

● Permisiunea este solicitată numai pentru următoarele metode:

● Permisiunea este solicitată pentru un anumit set de parametri ai metodei. Dacă executarea efectivă a metodei de lucru cu fișiere, valorile parametrilor vor fi diferite de cele pentru care a fost primit permisiunea, această permisiune nu va funcționa și utilizatorul va primi o cerere separată pentru confirmarea operației.

● Dacă doriți să efectuați două (sau mai multe) operații identice asupra fișierelor (chiar și cu același set de parametri), trebuie să specificați numărul corespunzător de elemente din matricea parametrilor metodei Solicitați permisiunea utilizatorului (). De exemplu, dacă trebuie să obțineți același fișier de două ori din baza de date de informații și să îl plasați într-un loc fix în sistemul de fișiere, trebuie să solicitați permisiunea pentru două operații.

● Dacă solicitați permisiunea de a efectua o operație care efectuează o operație interactivă (de exemplu, funcția Obțineți fișiere () ca parametru, este trimis fișierul Dialogul fișierului), atunci această operațiune este exclusă din interogare.

Permisiunile primite sunt salvate fie înainte de efectuarea apelului permis, fie până la finalizarea executării limbii încorporate.

NOTĂ. În cazul clienților groși și subțiri, metoda Request User Permission () solicită întotdeauna True. fără interacțiunea utilizatorului.

02.20.10. Lucrul cu spațiul de stocare temporar în lucrarea de fundal

Mecanismul de stocare temporară, lucrul cu fișiere și imagini

Fig. 262. Afișarea unei imagini pe un formular

FileCards = Obiect. FaylKartinki;

Dacă nu FileMap. Gol () Apoi

20.3. Caracteristici de utilizare în clientul web

Funcționarea mecanismului descris atunci când se utilizează un client web are unele limitări, care sunt legate de particularitățile modelului de securitate al browserului web. De exemplu, clientul nu poate salva fișierul în sistemul de fișiere local, adică este disponibilă numai varianta interactivă a metodelor clientului. Puneți fișierul () și fișierul Get File (). Se face o încercare de a utiliza modul non-interactiv pentru a arunca o excepție. Casetele de dialog care sunt afișate în mod interactiv sunt specifice unui anumit tip de browser web.

Cu toate acestea, dacă este necesar, puteți extinde capacitatea de a lucra cu fișiere în clientul web. Pentru a face acest lucru, utilizați extensia extensiei de fișier. După conectarea extensiei, următoarele obiecte și metode de lucru cu fișiere sunt disponibile în clientul web:

NOTĂ 1. Este recomandat să utilizați biblioteca Microsoft Core XML Services (MSXML) versiunea 4.0 sau 6.0 pentru funcționarea corectă a extensiei de fișier în browserul web Microsoft Internet Explorer.

NOTĂ 2: Extensia fișierului pentru browserul web Microsoft Internet Explorer este instalată în directorul% APPDATA% \ 1C \ 1C EWebExt \ FileSystemExtIE.

Înainte de a utiliza componenta, urmați acești pași:

● Configurați corespunzător browserul web (pentru detalii, consultați "1C: Enterprise 8.2 Ghidul administratorului").

● Instalați o extensie pentru a lucra cu fișiere. Pentru a face acest lucru, ar trebui să utilizați metoda context globală pentru a seta Extinderea lucrării cu fișiere (). Aceasta este o acțiune interactivă care trebuie efectuată o dată pentru fiecare utilizator de pe computerul local care utilizează extensia.

● Conectați extensia de fișier. Pentru a face acest lucru, trebuie să utilizați metoda Run Expansion Connect cu Fișiere ().

Articole similare