Windows hiba: funkció végrehajtási hiba, egy perc alatt megoldódott. Windows hiba: funkció végrehajtási hiba, egy perc alatt megoldódott Konfigurációs ellenőrzés helyreállíthatatlan hiba 1s 7.7

Szóval, mi a cikkem értelme?

1. Van egy szerver (x64), a telepítette az Office-t 2016 (x64), van 1C 8.3.8 és x64 is (értsd: 1C szerver). A felhasználók vékony kliensen és webes kliensen keresztül is csatlakoznak.

2. Van egy csomó szabványos szerződés és számla, amelyet az értékesítési osztály állított ki (készített). Van betűtípus, bekezdés stb., persze, minden Wordben, Excel 2016-ban (x64) van megtervezve, természetesen mindezt 1C-ben megrajzolni semmi vágy, de van vágy ActiveDocument formátumba tenni elrendezések

A megoldás banálisnak tűnik :) , Nem írom le a teljes mechanizmust, hogyan történik, hogyan töltődnek be az adatok 1C-ből az ActiveDocument elrendezésbe - azt hiszem, ezt nélkülem is tökéletesen tudja. De a munka során kiderült, hogy nem minden olyan zökkenőmentes a COM-objektumok területén, nevezetesen:

2. Melyik opciót érdemesebb választani: ActiveDocument vagy Binary Data? Bár nekem ez úgy hangzik, mintha a Vodkát sörrel vagy a Sört vodkával választanám :) . Nem nagy ügy, ki kell tölteni a dokumentumokat az 1C-ből származó adatokkal, és át kell adni az Ügyfélnek.

Na jó, hagyjuk a szöveget, én az ActiveDocumentet választom, nem írom le a teljes algoritmust, csak felsorolom a buktatókat és azok megoldását. Az alábbiakban leírtak az én személyes spekulációm, és semmiképpen sem állítják a végső igazságot. Lehet, hogy Ön megoldotta ezeket a problémákat, vagy másképp oldotta meg őket.

1. Kő " első". A SaveAs metódus nem működik (az MSWord és az MSExcel esetében sem). Bináris adatok írásakor az 1C egyszerűen összeomlik. Nézd meg a listarészletet:

MSWord = Layout.Get(); Próbáld ki a Document = MSWord.Application.Documents(1); Document.Activate(); //Ezután valahogy beszerezzük az adatokat és kitöltjük a Word dokumentumot //Az ideiglenes könyvtár elérési útja a fájl mentéséhez TimeName = GetTemporaryFileName(.docx"); Document.SaveAs(NameTime); //kő itt kezdődik MyDocumentInBinaryData = New BinaryData(NameTime); //hát itt ezt a követ kiütötte az 1C :) MSWord.Application.Quit();

Nagyon köszönöm.

Mappák létrehozása
C:\Windows\SysWOW64\config\systemprofile\Desktop
C:\Windows\System32\config\systemprofile\Desktop
a probléma megoldódott. Téma lezárva.

Mi az ok? Az ok az, hogy a kód

MSWord = Layout.Get();

Mindig meghívja a COM objektum (x32) példányát, függetlenül attól, hogy az Office milyen bitességgel van telepítve. Gondolkozott már azon, hogy miért nem illeszthet be docx, xlsx kiterjesztésű fájlokat az ActoveDocument elrendezésbe?

ez a Feladatkezelőn keresztül is ellenőrizhető, de tény, hogy az ActiveDocument elrendezés implicit módon hív egy COM-példányt (x32), ezért minden további manipulációt ennek a funkciónak a figyelembevételével kell elvégezni.

1. Vagy a szervernek és az összes szoftvernek x32-esnek kell lennie. Akkor nem kell semmit tennie (a kód átírása értelmében)

2. Vagy írja át a kódot így

// az ideiglenes fájl nevének lekérése TimeFile = GetTemporaryFileName("doc"); // ez a kód mindenképpen a szükséges bitmélységű COM példányt hívja meg, esetünkben x64 Word = New COMObject("Word.Application"); Word.Megjelenítési figyelmeztetések = 0; DocumentN = Word.Application.Documents.Add(); DocumentN.SaveAs(TimeFile,0); Word.Quit(); // akkor minden úgy van, mint előbb Layout = Nyomtatáskezelés Nyomtatási űrlap elrendezés ("Dokumentum. Eszközátadási törvény." + Elrendezés neve); MSWord = Layout.Get(); Próbáld ki a Document = MSWord.Application.Documents(1); Document.Activate(); // itt csinálunk valamit, töltjük ki az adatokat // itt újra mentjük a fájlunkat COM x62-ről COM x64-re MSWord.Application.Selection.WholeStory(); MSWord.Application.Selection.Copy(); DocumentN = MSWord.Application.Documents.Open(TimeFile); DocumentH.Activate(); MSWord.Application.Selection.Paste(); DocumentN.SaveAs(TimeFile,0); DocumentN.Close(); MSWord = Undefined; Kivétel // Hiba esetén a hibaadatok kinyomtatásra kerülnek, és az objektum bezárul. Információ = ErrorInfo(); GeneralPurposeClientServer.NotifyUser("Hiba - "+Információ.Leírás+" hibakód - "+Abb.LP(Information.SourceString)); MSWord.Application.Quit(); EndAttempt;

Szerintem itt minden világos, először létrehoztunk egy megfelelő bitmélységű COM-példányt, létrehoztunk egy üres fájlt és elmentettük egy ideiglenes mappába, majd a COM x32-vel dolgozunk, feltöltjük adatokkal és végül másoljuk a teljes tartalmát. dokumentumot, és mentse el egy korábban elkészített fájlba.

Minden ugyanaz, de csak az Excelhez

TimeFile = GetTimeFileName("xls"); Excel = Új COMObject("Excel.Application"); Excel.Displayalerts = 0; BookH = Excel.WorkBooks.Add(); SheetN = BookN.WorkSheets(1); BookN.SaveAs(Időfájl, -4143); Excel.Quit(); Layout = PrintManagement.PrintFormLayout("Dokumentum.Berendezés számla."+Elrendezésnév); MSExcel = Layout.Get(); BookN = MSExcel.Application.Workbooks.Open(TimeFile); SheetN = BookN.WorkSheets(1); WBook kipróbálása = MSExcel.Application.Workbooks(1); Lap = WBook.WorkSheets(1); Sheet.Activate(); // csinálunk valamit, kitöltjük az 1C MSExcel.Application.WorkBooks(1).WorkSheets(1).Cells.Copy(SheetN.Cells) adataival; BookN.Save(); BookN.Close(); Kivétel // Hiba esetén a hibaadatok kinyomtatásra kerülnek, és az objektum bezárul. Információ = ErrorInfo(); GeneralPurposeClientServer.NotifyUser("Hiba - "+Információ.Leírás+" hibakód - "+Abb.LP(Information.SourceString)); MSExcel.Application.Quit(); EndAttempt;

Tessék " első„Úgy döntöttem, hogy egy x64-es Office x64-es szerveren minden pontosan úgy működik, mint az óramű, hiba nélkül, és nem kell mappákat és minden mást létrehozni.

Kő " második". kódrészlet

TimeFile = GetTimeFileName("xls");

az evés nem túl jó, mert azt írja a mappába: “c:\Users\ mi van ott...”, általában ez a mappa mindig rajta van az összes tűzfal, vírusirtó stb stb., stb. feketelistáján. legalább nyissa meg a biztonsági vezérlőközpontot Wordben vagy Excelben. Nézzünk oda is

Ezen kell bütykölni, különben „furcsa” hibák jelentkezhetnek. Ezért a következőket javaslom:

1. Nyissa meg a Konfigurátort, és adjon hozzá egy új információs nyilvántartást

itt tároljuk a kész Szavunkat, Excel fájlok természetesen már kitöltve:

LayoutName – Elrendezésazonosító

DocumentOffice - Értéktár, itt tartjuk a kész fájlunkat

2. A fenti kódot a következőképpen adjuk hozzá:

MH = Information Registers.TemporaryStorageOffice.CreateRecordManager(); MH.Object = Selection.Link; MZ.LayoutName = LayoutName; MZ.Read(); MH.Object = Selection.Link; MZ.LayoutName = LayoutName; MZ.DocumentOffice = NewValueStorage(NewBinaryData(TimeFile)); MZ.Write(); DeleteFiles(TimeFile);

Mi annyit teszünk, hogy az elkészült fájlt beírjuk az információs regiszterbe, majd magát az ideiglenes fájlt töröljük, megoldva a „Word, Excel Biztonsági Központ” problémát. Már csak a kész fájlt kell megmutatni a kliensnek (vékony és webes kliensek)

3. Kő " harmadik" - egy fájl átvitele a kliensre, itt csak az összes kódot közzéteszem, van, amely a BSP-ből, néhány a „Managed Application” demo konfigurációból, néhány az internetről származik, de általában itt van a kód (a egész)

//////////////////////////////////////////////// ////////////////////////// // SZOLGÁLTATÁSI ELJÁRÁSOK ÉS FUNKCIÓK BSP &OnServer függvény GetLayout() ObjectLink = DataStructure.Object; LayoutName = DataStructure.LayoutName; Record Key = Információs regiszterek. TemporaryOfficeStorage. CreateRecordKey(New Structure("Object,LayoutName",ObjectLink,LayoutName)); // Cím = GetNavigationLink(RecordKey,"OfficeDocument"); Visszaszállítási cím; EndFunction // &OnClient Procedure AfterApplicationStart(ReturnCode, ApplicationName) Export; // Az eljárás vége &Az ügyféleljáráson a fájlok fogadása után (átvitt fájlok, további paraméterek) Exportálás, ha NINCS továbbított Fájlok = Undefined then A továbbított fájlok minden leírásához Cycle OpAfterAppLaunch = New DescriptionAlerts("AfterLaunchingApplication", ThisName, Description. ); StartLaunchApplication(OpAfterStartApplication, Description.Name); EndCycle; endIf; EndProcedure &OnClient Procedure AfterDirectorySelection(SelectedFiles, CommandName) Exportálás, ha SelectedFiles = Undefined, akkor visszatérés; endIf; Könyvtár = SelectedFiles; General PurposeServerCall.SaveWorkingDirectory(Directory); Ha CommandName = "Számla" Akkor LayoutName = "Számla" EndIf; DataStructure.Insert("Könyvtár", Könyvtár); ConnectWaitingHandler("Connectable_SendFileToClient",5,True); Az eljárás vége &Az ügyféleljáráson Fájlok megnyitása kiterjesztéssel (parancsnév) OpAfterSelectingDirectory = New DescriptionAlerts("AfterSelectingDirectory", ThisObject, CommandName); Directory = GeneralPurposeCallServer.GetWorkingDirectory(); Ha Könyvtár = Undefined VAGY Könyvtár = "" Akkor Dialog = New FileSelectionDialog(FileSelectionDialogMode.DirectorySelection); Dialog.Header = НStr("ru = "Könyvtár kiválasztása a fájlok ideiglenes tárolására"", "ru"); Dialog.Show(OpAfterSelectingDirectory); Ellenkező esetben SelectedFiles = Új tömb; SelectedFiles.Add(Directory); Riasztásfeldolgozás végrehajtása (OpAfterSelectingDirectory, SelectedFiles); endIf; Az eljárás vége &Az ügyféleljárásról ProcessConnectingExtensionsWorkingWithFiles(ExtensionConnected,AdditionalParameters) ExportIfExtensionConnectedThenOpenFilesThroughExtension(További paraméterek.CommandName); endIf; EndProcedure &OnClient eljárás Connected_PassFileToClient() Address = GetLayout(); Ha Cím<>Undefined Then DisableWaitHandler("Connectable_PassFileToClient"); DocumentNumber = DataStructure.DocumentNumber; Directory = DataStructure.Directory; LayoutName = DataStructure.LayoutName; FilePath = Directory+"\"+LayoutName+"_No"+DocumentNumber+.xls"; Leírás = a továbbított fájl új leírása (fájl elérési útja, címe); TransferredFiles = Új tömb; TransferredFiles.Add(Description); StartReceivingFiles(NewDescriptionAlerts("AfterReceivingFiles", ThisObject), TransferredFiles, "", False); endIf; Az eljárás vége &A kiszolgáló eljáráson ExecutePrintServer() ObjectLink = DataStructure.Object; LayoutName = DataStructure.LayoutName; DataStructure.Insert("DocumentNumber", ObjectReference.Number); ObjectArray = Új tömb; Objektumok tömbje.Add(ObjectRef); Documents.Equipment Invoice.PrintInvoice(Object Array,LayoutName,True); EndProcedure &OnClient eljárás Connectable_ExecutePrint() ExecutePrintServer(); EndProcedure // StandardSubsystems.Print &OnClient eljárás Connectable_ExecutePrintCommand(Command) Link = Elements.List.CurrentData.Link; DataStructure = newStructure; DataStructure.Insert("Object", Link); DataStructure.Insert("LayoutName", "Számla"); ConnectWaitingHandler("Connectable_Print", 1, True); CommandDescription = PrintManageClient.PrintCommandDescription(Command.Name,FormName); Indítsa el a FileWorking Extension(); StartConnectingFileWorkingExtension(NewAlertDescription("ProcessConnectingFileWorkingExtension",ThisObject,NewStructure("CommandName",CommandDescription.Identifier))); EndProcedure // End StandardSubsystems.Print

Néhány pontosítás:

1. Először is, kliensünk vékony és webes módban is működik, ezért előzetesen a következő értékeket állítjuk be a Configurator tulajdonságaiban:

A böngészővel végzett munka során felmerülő problémák elkerülése érdekében

2. Várakozáskezelőket használunk, hogy elkerüljük a hívásszinkronizálási problémákat (ez csak a webes módra vonatkozik)

3. Végül pedig csatlakoztassa a fájlokkal való munkavégzéshez szükséges bővítményt (ne feledje, hogy vékony kliens módban ez a kiterjesztés mindig engedélyezve van). És a kódon keresztül:

a fájlt a Navigation Link mechanizmus segítségével továbbítjuk az Ügyfélnek, a következő üzeneteket kapjuk a böngészőben (a Thin magától működik):

Nos, úgy tűnik, ez minden. Remélem ez segít valakinek...

A Word, Excel fájlok bináris adatként beszúrva? mi a baj?

1. Vagy ki kell húznunk ezt a bináris adatot az elrendezésből, és meg kell töltenünk az 1C adataival, és FIGYELEM, hogy újra felírjuk bináris adat formájában (Vodka sörrel vagy Sör vodkával)

2. Vagy be kell szereznünk a BinaryData elrendezést a kliens oldalon és ott kell kitölteni, DE a COM objektumot csak az IE böngésző támogatja, majd az ActiveX beállításokkal táncol, a többi böngésző már rég elhagyta az ActiveX használatát

Úgy gondolom, hogy a "hét" programozó mindegyike találkozott már ilyen hibával legalább egyszer. Ez előfordulhat „konfigurációk egyesítése” vagy „az információbiztonság tesztelése és javítása során”.

De nem mindenki próbálta „megjavítani” a konfigurációt. Ilyenkor általában vagy eszeveszetten kutatnak biztonsági másolatok után, vagy (egy bonyolultabb módszer) a GComp segédprogram segítségét veszik igénybe, ami a „legenda szerint” meg tudja gyógyítani az MD-t, ha egyszerűen „szétszedik”, majd „összerakják” ” a program funkcióival. Valóban, ez így van. De nem minden esetben... Pontosan ezt az esetet szeretném megvizsgálni ebben a cikkben.

Tehát a kezdeti adatok:

- "hibás konfiguráció";

Hasznosság MDDiags

- MesszeMenedzserés plugin DocFileBöngésző neki. Ezzel a beépülő modullal beléphet az MD-be, és az objektumokkal dolgozhat.

Mivel a Configurator még ezt a "javíthatatlan hibát" sem hajlandó megjeleníteni, futunk MDDiags azonosítani azt vagy őket.

A segédprogram elindítása után válassza ki a kívánt konfigurációt, majd az összes alapértelmezett beállítást... futtassa, elemezze, megkapja az eredményt.

Lehetnek más hibái is, de úgy gondolom, hogy ki tudja deríteni őket, ha általánosan megérti, hogyan találja meg a hibát és hogyan javítsa ki.

1. Hiba>(\\Folyóirat)

A segédprogram egyértelművé tette, hogy a hiba 2 objektumnál figyelhető meg "\\ Journal\Journal_Number 212" és "\\Journal\Journal_Number 860". Most menjünk továbbMessze és nézd meg az ott lévő tárgyakat.


Itt sok objektumot és egy "Container.Contents" fájlt látunk. Ugyanezen objektumok leíróit tárolja. A fájl tartalmának alapos tanulmányozása után megértjük, hogy 2 objektumunkhoz nincsenek leírók.

Adjon hozzá leírókat az ábrán látható módon.

Probléma megoldódott.

2. Hiba: DOCUMENT.Receipt Invoice (\\beírt szöveg\Felhasználói segítség_Number434\Tartály.Tartalom)

Ismét MD-re megyünk a jelzett úton. Nyissa meg a fájlt" Tartály. Tartalom ", és alaposan nézze meg a tartalmát.

A különös szavak Cgntainer, Contentq, Prmgram azonnal megragadják a tekintetet. Így van, ezek hibásan írt azonosítók. Nem nehéz kitalálni, hogyan kell helyesen (ha nehéz, menjen a következő ágra, nyissa meg ugyanazt a „Container.Contents” fájlt, és nézze meg, hogyan kell írni).

3. HibaKÖNYVTÁR.Tipikus műveletek(\\Subconto\Subconto_Number5870\WorkBook\Dialog Stream)

Nyissa meg a fájlt a megadott elérési úton, és nézze meg alaposan... Minden paramétert idézőjelbe kell tenni. Az egyik paraméterben az „idézet” helyett „szóköz” van - ezt javítjuk (ez a hiba akkor fordulhat elő, ha egy objektum valamelyik elemének leírása (mező, gomb, értéklista stb.) egyetlen karaktert tartalmaz vagy kettős idézet, vagy a „speciális karakterek” bármelyike).

Indítsuk újra MDDiagsés azt látjuk, hogy minden korábbi hiba eltűnt, de megjelent egy másik hiba.

Itt az ideje, hogy a GComp segédprogramhoz forduljunk, és ellenőrizzük a „legendát”...

Elindítjuk a segédprogramot, kiválasztjuk az elromlott (egyelőre) MD-nket, és azt a mappát, ahová a konfigurációt objektumok szerint rendezve helyezzük el, ekkor az összes jelölőnégyzet alapértelmezés szerint be van kapcsolva, csak a „törlés” jelölőnégyzet bejelölése. üres sablonok táblázatok" elemre az "Általános paraméterek" lapon, kattintson a "Dekompilálás" gombra.

Ezután minden további nélkül lépjen a „összeállítás” fülre, állítsa be a forráskönyvtárat arra, amelyben éppen a konfigurációt elemezte, és adja meg az új MD elérési útját.

A segédprogram mindent biztonságosan összeszerel.

Most már csak muszáj Távoli menedzser cserélje ki a megfelelő fájlt a „törött” MD-n belül a „most összeszerelt” fájllal (\\Subconto\Subconto_Number5870\WorkBook\Dialog Stream).

A konfigurációt újra ellenőrizzük a segítségével MDDiags.

Úgy tűnik, minden rendben van. Most belépünk a konfigurátorba, és elvégezzük az „információbiztonság tesztelését és javítását”, hogy megbizonyosodjunk arról, hogy nincs több hiba.

Ez minden. Hadd vegyem ki a szabadságomat. És az Erő legyen veled!)

P.S. Külön köszönet a példában használt segédprogramok fejlesztőinek – ők nagyon sokat segítenek nekünk élni...

Jó napot!. Múltkor megnéztük, hogyan lehet megoldani a „Hiba a transzformációk alkalmazásakor. Ellenőrizze a megadott transzformációk útvonalainak helyességét”, ma egy másik következményről fogok mesélni, amely ebből fakad. A kiadvány témája egy olyan helyzet lesz, amikor nem tudja telepíteni az 1C platformot, és üzenetet kap: Windows hiba: funkció végrehajtási hiba, egy perc alatt megoldjuk, biztos sokak számára hasznos lesz a téma.

Hogyan néz ki egy függvényvégrehajtási hiba?

Ahogy fentebb írtam, ez a probléma Windows Server 2012 R2 terminálkiszolgálón jelentkezik, amikor megpróbálom telepíteni az 1C 8.2 platformot. A setup.exe fájl futtatása után megjelenik a telepítővarázsló ablaka, és azonnal egy további ablak a következő üzenettel:

Windows hiba: funkció végrehajtási hiba

Amiről ezt az értesítést kapja:

Mint a legtöbb esetben az 1C platformnál, a konfigurációs fájlok kis korrekciójával minden megoldható. Először kapcsolja be a rejtett mappák megjelenítését, mivel a szükséges fájl alapértelmezés szerint nem látható. Ezután a C:\ meghajtón keresse meg a mappát Program adatok.

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

Az 1CEStat.cfg fájl bármelyik használatával megnyitható szöveg szerkesztő, kattintson rá a jobb gombbal, és válassza a „Megnyitás ezzel”, majd egy kényelmes szerkesztőt.

Az 1CEStat.cfg fájlban keresse meg a paramétert, törölnie kell, és el kell mentenie a fájlt.

Ha megnézi a naplókat az eseménynézőben, az ehhez hasonló eseményeket láthatja.

1013-as eseménykód: Termék: 1C:Enterprise 8.2 (8.2.19.130) -- Windows-hiba: Funkcióvégrehajtási hiba.

Eseményazonosító 11708: Termék: 1C:Enterprise 8.2 (8.2.19.130) -- A telepítési művelet meghiúsult.

Miután eltávolítottuk az ADMINISTRATIONFUNC=0 paramétert, már a következőket kaptuk:

1033-as eseményazonosító: A Windows Installer telepítette a terméket. Termék: 1C:Enterprise 8.2 (8.2.19.130). Verzió: 8.2.19.130. Nyelv: 1049. Gyártó: 1C. A telepítés befejeződött, állapota: 1603.




Top