Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Sigurnost
  • 1 došlo je do nepopravljive pogreške na poslužitelju. Windows pogreška: pogreška u izvršavanju funkcije, možemo je riješiti za minutu

1 došlo je do nepopravljive pogreške na poslužitelju. Windows pogreška: pogreška u izvršavanju funkcije, možemo je riješiti za minutu

Mislim da je svaki od programera "sedmice" barem jednom naišao na takvu grešku. Može se dogoditi ili tijekom "spajanja konfiguracija", ili tijekom "testiranja i popravljanja informacijske sigurnosti".

Ali nisu svi pokušali "popraviti" konfiguraciju. U takvim slučajevima obično ili bjesomučno traže sigurnosne kopije, ili (na složeniji način) pribjegavaju korištenju uslužnog programa GComp, koji "prema legendi" može izliječiti MD ako se jednostavno "rastavi" i zatim "sastavi" pomoću programa funkcije. Doista, tako je. Ali ne u svim slučajevima ... Upravo takav slučaj želim analizirati u ovom članku.

Dakle, početni podaci:

- "pokvarena konfiguracija";

Korisnost MDDiags

- DalekoMenadžer i dodatak DocFilePreglednik njemu. S ovim dodatkom možete ući u MD i raditi s njegovim objektima.

Budući da Konfigurator čak odbija prikazati ovu "fatalnu pogrešku", pokrećemo MDDiags za nju ili njihovu identifikaciju.

Nakon pokretanja uslužnog programa, odaberite željenu konfiguraciju, zatim sve zadane postavke ... pokrenite, analizirajte, dobijte rezultat.

Možda imate i drugih pogrešaka, ali mislim da ćete to moći riješiti s njima, kada postoji opće razumijevanje kako pronaći grešku i kako je popraviti.

1. Pogreška>(\\ časopis)

Uslužni program je jasno dao do znanja da se pogreška opaža za 2 objekta "\\Časopis \ Časopis _ Broj 212 "i" \\ Časopis \ Časopis _ Broj 860". Sada idemo naDaleko i pogledaj tamošnje predmete.


Ovdje vidimo puno objekata i jednu datoteku "Container.Contents". Pohranjuje deskriptore upravo tih objekata. Nakon pažljivog pregleda sadržaja datoteke, shvaćamo da nema deskriptora za 2 naša objekta.

Dodajte deskriptore kao što je prikazano na slici.

Problem je riješen.

2. Pogreška DOKUMENT.Ulazni račun (\\Upisani tekst \pomoć korisnika_broj 434 \Kontejner.Sadržaj)

Opet idemo do MD-a naznačenom stazom. Otvaranje datoteke " Kontejner. Sadržaj "i pomno pogledajte njegov sadržaj.

Čudne riječi Cgtainer, Contentq, Prmgram odmah upadaju u oči. Tako je, ovo su pogrešno napisani identifikatori. Nije teško pogoditi kako bi to trebalo biti istina (ako je teško - idite na sljedeću granu, otvorite istu datoteku "Container.Contents" i pogledajte kako treba biti napisan).

3. PogreškaIMENIK.Tipične operacije(\\ Subconto \ Subconto_Number5870 \ Radna knjiga \ Dijaloški tok)

Otvorite datoteku na navedenom putu i pažljivo pogledajte ... Svi parametri moraju biti u navodnicima. Jedan od parametara ima "razmak" umjesto "navodnika" - ispravljamo ga (takva pogreška može nastati kada opis jednog od elemenata objekta (polja, gumba, popisa vrijednosti itd.) sadrži a jednostruki ili dvostruki navodnik, ili neki od "posebnih znakova").

Opet trči MDDiags i vidimo da su sve prethodne greške nestale, ali se pojavila još jedna greška.

Sada je vrijeme da se okrenete uslužnom programu GComp i provjerite "legendu" ...

Pokrećemo uslužni program, odabiremo naš pokvareni (za sada) MD, i mapu u koju treba staviti konfiguraciju rastavljenu po objektima, zatim sve daske po zadanim postavkama, jedino je postaviti potvrdni okvir "izbriši prazne predloške tablice" na Karticu "Opći parametri", kliknite "Dekompiliraj".

Zatim, bez daljnjeg, idite na karticu "kompilacija", postavite izvorni direktorij na onaj u koji smo upravo raščlanili konfiguraciju i odredite put do novog MD-a.

Uslužni program će sve sigurno prikupiti.

Sada možemo koristiti samo Far Manager da zamijenimo odgovarajuću datoteku unutar "pokvarenog" MD-a istom onom iz "upravo sastavljenog" (\\ Subconto \ Subconto_Number5870 \ WorkBook \ Dialog Stream).

Ponovno provjeravamo konfiguraciju sa MDDiags.

Čini se da je sve u redu. Sada ulazimo u konfigurator i radimo "testiranje i popravljanje informacijske sigurnosti" kako bismo bili sigurni da više nema grešaka.

To je sve. Dopusti mi da odem. I neka je Sila s vama!)

p.s. Posebno zahvaljujemo programerima uslužnih programa korištenih u primjeru - oni nam svima pomažu živjeti ovako ...

Dakle, koja je svrha mog članka?

1. Postoji poslužitelj (x64) s instaliranim Office 2016 (x64), postoji 1C 8.3.8 također x64 (što znači 1C poslužitelj). Korisnici se povezuju putem tankog klijenta i web klijenta.

2. Postoji hrpa standardnih ugovora i računa koje je sastavio (pripremio) odjel prodaje. Postoji font, odlomak itd., Naravno, sve je dizajnirano u Wordu, Excelu 2016 (x64), naravno, nema želje da se sve to nacrta u 1C, ali postoji želja da se to gurne u izglede formata ActiveDocument

Odluka je, čini se, banalna :) , neću opisivati ​​cijeli mehanizam, kako se to radi, kako se podaci pune iz 1C u izgled ActiveDocumenta - mislim da to savršeno dobro znate i bez mene. No, tijekom rada pokazalo se da nije sve tako glatko u području COM objekata, naime:

2. Koju je opciju bolje odabrati: ActiveDocument ili BinaryData? Iako mi zvuči kao što odabrati Votku s pivom ili Pivo s votkom :) ... Jedna figa, trebate ispuniti dokumente podacima iz 1C-a i prenijeti ih Klijentu.

Pa dobro, preskočimo stihove, biram ActiveDocument, neću opisivati ​​cijeli algoritam, samo ću navesti zamke i njihova rješenja. Sve sljedeće su moje osobne izmišljotine i ni na koji način ne tvrde da su konačna istina. Možda ste riješili ove probleme ili ste ih riješili drugačije.

1. Kamen" prvi". Metoda SaveAs ne radi (i za MSWord i za MSExcel). Kada pokušam napisati binarne podatke, 1C se samo ruši. Pogledajte fragment popisa:

MSWord = Layout.Get (); Pokušaj dokumenta = MSWord.Application.Documents (1); Dok.Aktiviraj (); // Nadalje, na neki način dobivamo podatke i popunjavamo Word dokument // Dobivamo put u privremenom direktoriju za spremanje datoteke tamo NameTem = GetName of theTemporaryFile (. Docx"); Document.SaveAs (NameTem); // kamen MyDocumentInBinaryData počinje ovdje = New BinaryData (NameTem); // pa, ovdje ovaj kamen izbacuje 1C :) MSWord.Application.Quit ();

Hvala puno.

Izradite mape
C: \ Windows \ SysWOW64 \ config \ systemprofile \ Desktop
C: \ Windows \ System32 \ config \ systemprofile \ Desktop
riješio problem. Tema je zatvorena.

Koji je razlog? Razlog je taj što je kod

MSWord = Layout.Get ();

Uvijek poziva instancu COM objekta (x32) bez obzira na to koji bit je Office instaliran. Jeste li se ikada zapitali zašto ne možete umetnuti datoteke s docx, xlsx ekstenzijama u ActoveDocument izgled

to se također može provjeriti kroz Task Manager, ali činjenica je da ActiveDocument izgled implicitno poziva COM (x32) instancu i stoga sve daljnje manipulacije treba raditi uzimajući u obzir ovu značajku.

1. Poslužitelj i sav softver moraju biti x32. Tada ne trebate ništa raditi (u smislu ponovnog pisanja koda)

2. Ili prepišite kod na ovaj način

// dobivamo naziv privremene datoteke TimeFile = GetTemporaryFileName ("doc"); // ovaj će kod definitivno pozvati COM instancu potrebne dubine bita, u našem slučaju x64 Word = New COMObject ("Word.Application"); Word.Displayalerts = 0; DokumentH = Word.Application.Documents.Add (); DocumentH.SaveAs (TimeFile, 0); Word.Odustani (); // onda je sve po starom Layout = Print Management. Print Form Layout ("Dokument. Zakon o prijenosu opreme." + Layout Name); MSWord = Layout.Get (); Pokušaj dokumenta = MSWord.Application.Documents (1); Dok.Aktiviraj (); // učinite nešto ovdje, unesite podatke // ovdje ćemo ponovno spremiti našu datoteku iz COM x62 u COM x64 MSWord.Application.Selection.WholeStory (); MSWord.Application.Selection.Copy (); DokumentH = MSWord.Application.Documents.Open (TimeFile); Doc.aktivirati (); MSWord.Application.Selection.Paste (); DocumentH.SaveAs (TimeFile, 0); Doc.Zatvori (); MSWord = Nedefinirano; Iznimka // Ako dođe do pogreške, podaci o pogrešci se prikazuju i objekt se zatvara. Informacije = Informacijski objekt (); General PurposeClientServer.NotifyUser ("Pogreška -" + Informacije. Opis + "kod pogreške -" + Kratica (Information. SourceString)); MSWord.Application.Quit (); Kraj pokušaja;

Mislim da je ovdje sve jasno, prvo smo kreirali COM instancu potrebne dubine bita, napravili praznu datoteku i spremili je u privremenu mapu, zatim radi s COM x32, ispunili je podacima i na kraju kopirali sadržaj cijele dokument i spremite ga u prethodno pripremljenu datoteku.

Sve je isto, ali samo za Excel

TimeFile = GetTemporaryFileName ("xls"); Excel = Novi COMObject ("Excel.Application"); Excel.Displayalerts = 0; Radna knjigaH = Excel.Radne knjige.Dodaj (); ListH = Knjiga.Radni listovi (1); BookH.SaveAs (TimeFile, -4143); Excel.Quit (); Izgled = Upravljanje ispisom. Izgled obrasca za ispis ("Dokument. Oprema za fakturu." + Naziv izgleda); MSExcel = Layout.Get (); BookH = MSExcel.Application.Workbooks.Open (TimeFile); ListH = Knjiga.Radni listovi (1); Pokušaj WBook = MSExcel.Application.Workbooks (1); List = Radna knjiga.Radni listovi (1); List.Aktiviraj (); // učiniti nešto, ispuniti to podacima iz 1C MSExcel.Application.WorkBooks (1) .WorkSheets (1) .Cells.Copy (SheetN.Cells); BookH.Save (); Knjiga H. Zatvori (); Iznimka // Ako dođe do pogreške, podaci o pogrešci se prikazuju i objekt se zatvara. Informacije = Informacijski objekt (); General PurposeClientServer.NotifyUser ("Pogreška -" + Informacije. Opis + "kod pogreške -" + Kratica (Information. SourceString)); MSExcel.Application.Quit (); Kraj pokušaja;

Izvoli " prvi„Odlučio sam se za kamen, na x64 serveru s Officeom x64, sve radi točno kao sat, bez grešaka i ne trebate kreirati nikakve mape i sve ostalo.

Stijena " drugi". isječak koda

TimeFile = GetTemporaryFileName ("xls");

nije baš dobro, jer postoji zapis u mapi: "c: \ Korisnici \ što je tamo ....", općenito, ova mapa je uvijek na crnoj listi svih vatrozida, antivirusa itd. Excel . Pogledajmo i idemo tamo

morat ćete se popetljati s tim, inače postoji mogućnost "čudnih" pogrešaka. Stoga predlažem sljedeće:

1. Otvorite konfigurator i dodajte novi registar informacija

ovdje ćemo pohraniti naše gotove Word, Excel datoteke koje su već popunjene, naravno:

LayoutName - ID izgleda

Office Document - Values ​​Store, ovdje čuvamo našu gotovu datoteku

2. Gornji napisani kod dodajemo kako slijedi:

MZ = Informacijski registri.Temporary StorageOffice.CreateRecordManager (); MV.Objekt = Uzorak.Ref; MV.LayoutName = LayoutName; MZ.Pročitaj (); MV.Objekt = Uzorak.Ref; MV.LayoutName = LayoutName; MV.DokumentOffice = NewValueStore (Novi binarni podaci (TimeFile)); MZ.Napiši (); DeleteFiles (TimeFile);

Ono što radimo, upisujemo gotovu datoteku u registar informacija i zatim brišemo samu privremenu datoteku, rješavamo problem "Word, Excel Security Center". Ostala je samo jedna stvar za prikaz ove gotove datoteke klijentu (tanak klijent i web)

3. Kamen" treći"- prijenos datoteke na klijenta, ovdje ću samo izložiti sav kod, uzeo sam nešto iz BSP-a, nešto iz Demo konfiguracije" Upravljana aplikacija ", nešto s interneta, ali općenito, ovdje je kod ( u cijelosti)

/////////////////////////////////////////////// // //////////////////////////// // SERVISNI PROCEDURE I FUNKCIJE BSP & OnServer funkcija GetMayette () ObjectLink = DataStructure.Object; LayoutName = DataStructure.LayoutName; RecordKey = Information Registers.Office TemporaryStorage.CreateRecordKey (Nova struktura ("Object, LayoutName", ObjectLink, LayoutName)); // Adresa = GetNavigationLink (KeyRecord, "Office Document"); Povratna adresa; EndFunction // & OnClient Procedura AfterApplicationStarting (ReturnCode, ApplicationName) Export; // EndProcedure & OnClient Procedure nakon ReceivingFiles (TransferredFiles, AdditionalParameters) Export If NOT TransferredFiles = Undefined Onda za svaki opis From TransferredFiles Loop OpAfter Application Start = New Alert Description ("Nakon pokretanja aplikacije", ThisName);, Opis. StartApplicationLaunch (OpAfterApplicationLaunch, Description.Name); Kraj ciklusa; Završi ako; EndProcedure & OnClient Procedura Nakon odabira direktorija (SelectedFiles, CommandName) Izvoz Ako SelectedFiles = Undefined then Return; Završi ako; Imenik = Odabrane datoteke; GeneralPurposeCallServer.SaveWorkingDirectory (Direktorij); Ako je CommandName = "Faktura" Tada LayoutName = "Faktura" EndIf; Struktura podataka Umetak ("Katalog", Katalog); ConnectWaitingHandler ("Connectable_PassFileClient", 5, True); EndProcedure & OnClient procedura OpenFiles ThroughExtension (CommandName) OpAfterDirectorySelection = NewNotificationDescription ("AfterDirectorySelection", ThisObject, CommandName); Imenik = SharedPurposeServerCall.GetWorkDirectory (); Ako je Direktorij = Nedefinirano ILI Direktorij = "" Tada je Dijalog = Novi dijalog za odabir datoteke (FileSelectionDialogueMode.CatalogSelection); Dialog.Header = NStr ("ru =" Odabir direktorija za privremenu pohranu datoteka "", "ru"); Dialogue.Show (odabir OpAfterCatalog); Inače SelectedFiles = Novi niz; SelectedFiles.Add (Directory); Izvrši obradu upozorenja (OpAfterDirectory Selection, SelectedFiles); Završi ako; EndProcedure & OnClient Procedure ProcessConnectingExtensionRadi s datotekama (ExtensionConnected, AdditionalParameters) Izvoz ako je ExtensionConnected Zatim OpenFiles putem proširenja (AdditionalParameters.CommandName); Završi ako; EndProcedure & OnClient Procedure Connect_PassFileClient () Adresa = GetLayout (); Ako Adresa<>Nedefinirano Zatim DisableWaitingHandler ("Connectable_PassFileClient"); Broj dokumenta = Struktura podataka.Broj dokumenta; Imenik = Struktura podataka.Imenik; LayoutName = DataStructure.LayoutName; FilePath = Direktorij + "\" + LayoutName + "_ No." + DocumentNumber + ".xls"; Opis = Novi opis TransferredFile (FilePath, Address); TransferredFiles = Novi niz; TransferredFiles.Add (Opis); StartFilesReceived (NewAlertDescription ("AfterFilesReceived", ThisObject), TransferredFiles, "", False); Završi ako; EndProcedure & AtServer Procedure ExecutePrintServer () ObjectRef = DataStructure.Object; LayoutName = DataStructure.LayoutName; Data Structure.Insert ("DocumentNumber", ObjectLink.Number); Objekti polja = Novi niz; ArrayObjects.Add (ObjectRef); Documents.InvoiceEquipment.PrintInvoice (Objekti polja, LayoutName, True); EndProcedure & OnClient Procedure Connectable_RunPrint () RunPrintServer (); EndProcedure // StandardSubsystems.Print & OnClient Procedure Connectable_RunPrintCommand (Command) Link = Elements.List.CurrentData.Ref; Struktura podataka = Nova struktura; Data Structure.Insert ("Objekt", Veza); Struktura podataka Umetanje ("Naziv izgleda", "Faktura"); ConnectWaitingHandler ("Connectable_RunPrint", 1, True); CommandDescription = PrintControlClient.PrintCommandDescription (Command.Name, FormName); StartSettingExtensionWorkWithFiles (); StartExtensionWorkWithFilesConnection (NewAlertDescription ("ProcessFileWorkExtensionConnection", ThisObject, Nova struktura ("CommandName", CommandDescription.Identifier))); EndProcedure // End StandardSubsystems.Print

Malo pojašnjenja:

1. Prvo, klijent radi za nas i kroz Thin i kroz Web način rada, stoga unaprijed, u svojstvima Konfiguratora, postavite sljedeće vrijednosti:

Tako da nema problema pri radu s preglednikom

2. Koristimo alate za rukovanje čekanjem kako bismo izbjegli probleme sa sinkronicitetom poziva (ovo se odnosi samo na web način)

3. I na kraju, spojite ekstenziju za rad s datotekama (sjetite se da je u načinu Thin Client ova ekstenzija uvijek omogućena). I kroz kod:

prenosimo datoteku klijentu pomoću mehanizma NavigationLink, primamo sljedeće poruke u pregledniku (Slim radi sam):

Pa, čini se da je to sve. Nadam se da će ovo nekome pomoći...

O Word, Excel datotekama za ugradnju kao binarne podatke? u čemu je problem?

1. Moramo ili izvući ove BinaryData iz izgleda i ispuniti ga podacima iz 1C i POZOR ga ponovno napisati u obliku BinaryData (Vodka With Beer ili Beer With Votka)

2. Ili trebamo nabaviti BinaryData izgled na strani klijenta i popuniti ga tamo, ALI COM objekt podržava samo IE preglednik i zatim pleše s ActiveX postavkama, drugi preglednici su odavno napustili korištenje ActiveX-a

Dobar dan!. Prošli put kad smo riješili kako se rješava "Pogreška pri primjeni transformacija. Provjerite staze navedenih transformacija", danas ću vam reći o još jednoj posljedici zbog nje. Tema publikacije bit će situacija kada ne možete instalirati 1C platformu i dobit ćete poruku: Windows pogreška: pogreška u izvršavanju funkcije, odlučujemo za minutu, siguran sam da će tema biti korisna mnogima.

Kako izgleda pogreška u izvršavanju funkcije

Kao što sam gore napisao, dobivam ga na terminalskom poslužitelju Windows Server 2012 R2 kada pokušam instalirati platformu 1C 8.2. Pokretanjem datoteke setup.exe pojavljuje se prozor čarobnjaka za instalaciju i odmah dodatni prozor s porukom:

Windows pogreška: pogreška u izvršavanju funkcije

Za koje ćete dobiti ovu obavijest:

Kao i u većini slučajeva s platformom 1C, sve je riješeno malim popravkom u konfiguracijskim datotekama. Prvo omogućite prikaz skrivenih mapa, budući da datoteka koja nam je potrebna nije vidljiva prema zadanim postavkama. Zatim na pogonu C: \ pronađite mapu ProgramData.

C: \ ProgramData \ 1C \ 1CEStat \ 1CEStat.cfg

Datoteka 1CEStat.cfg može se otvoriti bilo kojim uređivačem teksta, desnom tipkom miša kliknite na nju i odaberite "Otvori pomoću", a zatim prikladnim uređivačom.

U datoteci 1CEStat.cfg pronađite parametar, morate ga izbrisati i spremiti datoteku.

Ako pogledate zapise u pregledniku događaja, vidjet ćete takve događaje.

ID događaja 1013: Proizvod: 1C: Enterprise 8.2 (8.2.19.130) - Pogreška sustava Windows: pogreška u izvršavanju funkcije.

ID događaja 11708: Proizvod: 1C: Enterprise 8.2 (8.2.19.130) - Operacija instalacije nije uspjela.

Nakon što smo uklonili parametar ADMINISTRATIONFUNC = 0, već smo dobili:

ID događaja 1033: Windows Installer je dovršio instalaciju proizvoda. Proizvod: 1C: Enterprise 8.2 (8.2.19.130). Verzija: 8.2.19.130. Jezik: 1049. Proizvođač: 1C. Instalacija završena sa statusom 1603.

Vrhunski povezani članci