Pavel este curat

La descărcarea de la 1C 7.7. program de mare director se termină aproximativ cu următorul mesaj: „msxml6.dll: Nu este suficientă memorie pentru a finaliza operațiunea.“ Opțiunea de descărcare a porțiunilor nu mi-a fost potrivită. Prin urmare, a optimizat puțin manevrarea descărcării. Poate că cineva va economisi timp.







Conversia datelor este un instrument bun care vă permite să implementați rapid un transfer de date simplu între diferite baze de date 1C. Cu ajutorul conversiei datelor, este implementat transferul balanțelor de la configurațiile tipice 1C 7.7 la cele standard pe baza lui 1С8.

Când încă o dată cu care se confruntă cu necesitatea de a transfera date de la 1S7.7 în 1S8, apoi a fugit într-o problemă. Când încărcați un director mare (în jur de 400 de mii. Articole. Totul este relativ desigur) Șapte accidente cu eroarea „nu suficientă memorie ...“ Problema este că tratamentul de descărcare utilizează un model de obiect DOM pentru a lucra cu XML. Ca urmare, toate arborele XML pentru a scrie într-un fișier stocat în memorie. De asemenea, se confruntă cu faptul că descărcarea unui număr mare de elemente, cu atât mai mult activitatea de descărcare mai lent rulează.

Am decis să modific ușor modificarea procesului de descărcare pentru a exclude aceste blocaje.

Prima revizuire. Abilitatea de a genera un fișier xml mare.







Pentru streaming la un fișier folosesc obiectul FileSystemObject din Windows Script Host. Dezvoltările ulterioare sunt următoarele.

1.Adăugați descrierea variabilelor

2. Schimbați procedura Descărcare ()

3. Schimbați procedura UnloadPolicy ()
Nu scriu întregul text al procedurii. Modifică aproape de sfârșitul procedurii

4. Editați procedura Initialize File Exchange ()

5.Change procedure Execute ()

A doua revizuire. Optimizarea vitezei de descărcare.
Pe măsură ce manualul a fost descărcat, am făcut o simplă măsurare a vitezei. Am calculat cât de multe minute 1000 obiecte sunt permise să fie descărcate. Și, conform acestor date, el a calculat aproximativ timpul total de descărcare. Și cu cât mai multe obiecte au fost descărcate, cu atât este mai mare timpul estimat de descărcare. 25 mii - 4,5 ore. 50 mii. - 6 ore. Pentru 100 mii - deja 10 ore.
A înghețat. Trei linii similare de cod au fost cheltuite 78% din timp.

UzelSsylki = VygruzhennyeObekty.Poluchit (KlyuchVygruzhaemyhDannyh);
Unități descărcate. Instalați (Cheia datelor descărcabile, Npp);
VygruzhennyeObekty.Ustanovit (KlyuchVygruzhaemyhDannyh, UzelSsylki);

Inițial, obiectele descărcate sunt o listă de valori.
Înlocuit Listă valori pe tabelul index din componenta 1C ++

Ce să faceți.
1. Modificarea procedurii de deschidere ()

2. Modificați procedura pentru a încărca PPC ()

3. Modificați procedura UnloadProcedure ()
Locațiile de trădare găsite de căutare prin cuvântul UnloadedObjects


După aceste modificări, descărcarea directorului meu a fost finalizată în 2 ore și jumătate.
Cu ceea ce nu am putut face față, a fost cu o greșeală de lipsă de memorie, atunci când pentru PKO nu există "nu-mi amintesc descărcat. Tabelul fragmentelor xml memorate în memoria cache a obiectelor încărcate este în creștere. A fost necesar pentru PKO din cartea mea mare de referință să pun "nu-mi amintesc obiectele descărcate".







Articole similare

Trimiteți-le prietenilor: