Windows kļūda: funkcijas izpildes kļūda, mēs to atrisinām minūtes laikā. Windows kļūda: funkcijas izpildes kļūda, mēs to atrisinām minūtē. Konfigurācijas pārbaudes fatāla kļūda 1s 7.7

Tātad, kāda ir mana raksta jēga?

1. Ir serveris (x64), ar instalēta Office 2016 (x64), ir 1C 8.3.8 arī x64 (tas nozīmē 1C serveris). Lietotāji izveido savienojumu, izmantojot gan plāno klientu, gan tīmekļa klientu.

2. Ir daudz standarta līgumu un rēķinu, ko izraksta (sagatavo) pārdošanas nodaļa. Ir fonts, rindkopa utt, protams, viss ir izstrādāts Word, Excel 2016 (x64), protams, nav vēlēšanās to visu zīmēt 1C, bet ir vēlme to iebāzt ActiveDocument formāta izkārtojumi

Šķiet, ka lēmums ir banāls :) , Es neaprakstīšu visu mehānismu, kā tas tiek darīts, kā dati tiek aizpildīti no 1C ActiveDocument izkārtojumā - es domāju, ka jūs to lieliski zināt bez manis. Bet darba gaitā izrādījās, ka ne viss ir tik gludi COM objektu jomā, proti:

2. Kuru iespēju labāk izvēlēties: ActiveDocument vai BinaryData? Lai gan man izklausās, ko izvēlēties Šņabi ar alu vai alu ar degvīnu :) . Viena bilde, dokumenti jāaizpilda ar datiem no 1C un jāpārsūta Klientam.

Nu labi, izlaidīsim tekstus, es izvēlos ActiveDocument, neaprakstīšu visu algoritmu, vienkārši uzskaitīšu "slazdus" un to risinājumu. Viss tālāk minētais ir mans personīgais izdomājums un nekādā gadījumā nepretendē uz galīgo patiesību. Varbūt jūs esat atrisinājis šīs problēmas vai atrisinājušas tās citādi.

1. Akmens vispirms". SaveAs metode nedarbojas (gan MSWord, gan MSExcel). Mēģinot rakstīt BinaryData, 1C vienkārši avarē. Mēs skatāmies uz saraksta fragmentu:

MSWord = Layout.Get(); Mēģinājuma dokuments = MSWord.Application.Documents(1); Document.Activate(); //Tālāk kaut kā iegūstiet datus un aizpildiet Word dokumentu //Iegūstiet ceļu pagaidu direktorijā, lai tur saglabātu failu TimeName = GetTemporaryFileName(.docx"); Document.SaveAs(VārdsLaiks); //akmens sākas šeit MyDocumentInBinaryData = New BinaryData(NameTime); //nu, lūk, šis akmens izsit 1C :) MSWord.Application.Quit();

Liels paldies.

Izveidojiet mapes
C:\Windows\SysWOW64\config\systemprofile\Desktop
C:\Windows\System32\config\systemprofile\Desktop
atrisināja problēmu. Tēma slēgta.

Kāds ir iemesls? Iemesls ir tāds, ka kods

MSWord = Layout.Get();

Vienmēr izsauc COM objekta gadījumu (x32) neatkarīgi no Office instalētā bituma. Vai esat kādreiz domājis, kāpēc failus ar paplašinājumu docx, xlsx nevar ievietot ActoveDocument izkārtojumā

to var arī pārbaudīt, izmantojot uzdevumu pārvaldnieku, taču fakts ir tāds, ka ActiveDocument izkārtojums netieši izsauc COM (x32) gadījumu, un tāpēc visas turpmākās manipulācijas ir jāveic, ņemot vērā šo funkciju.

1. Serverim un visai programmatūrai jābūt x32. Tad jums nekas nav jādara (koda pārrakstīšanas nozīmē)

2. Vai nu pārrakstiet kodu šādā veidā

// iegūt pagaidu faila nosaukumu TempFile = GetTemporaryFileName("doc"); // šis kods precīzi izsauks vajadzīgā bituma COM gadījumu, mūsu gadījumā x64 Word = New COMObject("Word.Application"); word.displayalerts = 0; DokumentsN = Word.Application.Documents.Add(); DocumentH.SaveAs(TimeFile,0); Word.Quit(); // tad viss ir kā iepriekš Layout = PrintControl.PrintFormLayout("Document.Equipment Transfer Certificate."+LayoutName); MSWord = Layout.Get(); Mēģinājuma dokuments = MSWord.Application.Documents(1); Document.Activate(); // šeit kaut ko dariet, aizpildiet datus // šeit mēs atkārtoti saglabājam failu no COM x62 uz COM x64 MSWord.Application.Selection.WholeStory(); MSWord.Application.Selection.Copy(); DocumentH = MSWord.Application.Documents.Open(TimeFile); DokumentsH.Aktivizēt(); MSWord.Application.Selection.Paste(); DocumentH.SaveAs(TimeFile,0); DokumentsN.Aizvērt(); msword = undefined; Izņēmums // Ja rodas kļūda, tiek parādīti kļūdas dati un objekts tiek aizvērts. Info = ErrorInfo(); General PurposeClientServer.NotifyUser("Kļūda - "+Informācija.Apraksts+" kļūdas kods - "+Abbr(Information.SourceString)); MSWord.Application.Quit(); Mēģinājuma beigas;

Es domāju, ka šeit viss ir skaidrs, vispirms mēs izveidojām vajadzīgā bitu dziļuma COM gadījumu, izveidojām tukšu failu un saglabājām to pagaidu mapē, tad tas darbojas ar COM x32, piepilda to ar datiem un visbeidzot kopē visa satura saturu. dokumentu un saglabā to iepriekš sagatavotā failā.

Viss tas pats, bet tikai programmai Excel

TempFile = GetTempFileName("xls"); Excel = jauns COMObject("Excel.Application"); excel.displayalerts = 0; BookH = Excel.WorkBooks.Add(); SheetN = BookN.Work Sheets(1); BookH.SaveAs(Laika fails, -4143); Excel.Quit(); Layout = PrintControl.PrintFormLayout("Dokuments.Iekārtas rēķins."+LayoutName); MSExcel = Layout.Get(); WorkbookH = MSExcel.Application.Workbooks.Open(TimeFile); SheetN = BookN.Work Sheets(1); Izmēģinot WBook = MSExcel.Application.Workbooks(1); Lapa = WBook.WorkSheets(1); Lapa.Aktivizēt(); // kaut ko darīt, aizpildīt ar datiem no 1C MSExcel.Application.WorkBooks(1).WorkSheets(1).Cells.Copy(SheetN.Cells); GrāmataH.Saglabāt(); GrāmataN.Aizvērt(); Izņēmums // Ja rodas kļūda, tiek parādīti kļūdas dati un objekts tiek aizvērts. Info = ErrorInfo(); General PurposeClientServer.NotifyUser("Kļūda - "+Informācija.Apraksts+" kļūdas kods - "+Abbr(Information.SourceString)); MSExcel.Application.Quit(); Mēģinājuma beigas;

še tev" vispirms"Stone es nolēmu, ka x64 serverī ar Office x64 viss darbojas kā pulkstenis, nav kļūdu un nav jāveido mapes un viss.

Akmens" otrais". koda fragments

TempFile = GetTempFileName("xls");

tur nav īpaši labi, jo raksta uz mapi: "c:\Users\ kas tur....", vispār šī mape vienmēr ir melnajā sarakstā pie visiem ugunsmūriem, antivīrusiem utt utt., vismaz atveriet Word drošības vadības centru vai Excel. Paskatīsimies arī tur

ar to ir jāķeras klāt, citādi iespējamas "dīvainas" kļūdas. Tāpēc es iesaku sekojošo:

1. Atveriet konfiguratoru un pievienojiet jaunu informācijas reģistru

šeit mēs glabāsim savu gatavo Vārdu, Excel faili jau aizpildīts, protams:

LayoutName — izkārtojuma ID

Biroja dokuments — vērtību veikals. Šeit mēs glabājam gatavo failu

2. Mēs pievienojam iepriekš rakstīto kodu šādi:

MH = RegistersInformation.TemporaryStorageOffice.CreateRecordManager(); MZ.Object = Selection.Reference; MZ.LayoutName = LayoutName; MZ.Lasīt(); MZ.Object = Selection.Reference; MZ.LayoutName = LayoutName; MZ.DocumentOffice = NewValueStorage(NewBinaryData(TempFile)); MZ.Rakstīt(); Dzēst failus (TempFile);

Ko mēs darām, mēs ierakstām gatavo failu informācijas reģistrā un pēc tam izdzēšam pašu pagaidu failu, atrisinām problēmu "Word, Excel drošības centrs". Atliek tikai viena lieta, lai parādītu šo gatavo failu klientam (plānajam un tīmekļa klientam)

3. Akmens " trešais" - pārsūtot failu uz klientu, šeit es tikai ievietošu visu kodu, es paņēmu kaut ko no BSP, kaut ko no "Managed Application" demo konfigurācijas, kaut ko no interneta, bet kopumā šeit ir kods (pilnībā )

/////////////////////////////////////////////////// =/ LayoutName = DataStructure.LayoutName; RecordKey = DataRegisters.Office TemporaryStorage.CreateRecordKey(New Structure("Object,LayoutName",ObjectReference,LayoutName)); // Adrese = GetNavigationLink(RecordKey,"OfficeDocument"); Atgriešanās adrese; EndFunction // &OnClient procedūra AfterApplicationStart(ReturnCode, ApplicationName) Export; // EndProcedure &AtClient procedūra AfterFilesReceived(Iesniegtie faili, papildu parametri) Eksportēt If NOT SubmittedFiles=Nedefinēts, tad katram aprakstam no SubmittedFiles cilpa OpAfterApplicationStart = NewAlertDescription("AfterApplicationStart", ThisObject, Description.Name); StartApplicationStart(OpAfterApplicationStart, Description.Name); EndCycle; EndIf; EndProcedure &OnClient procedūra AfterDirSelect(SelectedFiles,CommandName) Eksportēt, ja FilesSelected = Nedefinēts, tad Atgriezieties; EndIf; Directory = SelectedFiles; General PurposeCallServer.SaveWorkingDirectory(Directory); Ja CommandName = "Rēķins" Tad LayoutName = "Rēķins" EndIf; DataStructure.Insert("Katalogs", direktorijs); ConnectWaitingHandler("Connected_TransferFileToClient",5,True); EndProcedure &OnClient procedūra OpenFilesViaExtension(CommandName) OpAfterCatalog Selection = New AlertDescription("AfterCatalog Selection", ThisObject, CommandName); Directory = General PurposeCallServer.GetWorkingDirectory(); Ja direktorijs = Nedefinēts VAI direktorijs = "" Tad Dialogs = NewFileChoiceDialog(FileChoiceDialogMode.CatalogChoice); Dialog.Title = НStr("ru = "Izvēlieties direktoriju failu pagaidu glabāšanai"", "ru"); Dialog.Show(OpAfterCatalog Selection); Else SelectedFiles = Jauns masīvs; SelectedFiles.Add(Directory); ExecuteAlertProcessing(OpAfterSelectingCatalog, SelectedFiles); EndIf; EndProcedure &OnClient procedūru rokturisFileWorkingExtensionConnection(ExtensionConnected,AdditionalParameters) Eksportēt, ja ExtensionConnected, tad OpenFilesViaExtension(Papildu parametri.CommandName); EndIf; EndProcedure &AtClient procedūra Connected_PassFileClient() Address = GetLayout(); Ja Adrese<>Undefined Tad DisableWaitingHandler("Connected_PassFileClient"); DocumentNumber = DataStructure.DocumentNumber; Directory = DataStructure.Catalog; LayoutName = DataStructure.LayoutName; PathToFile = Directory+"\"+LayoutName+"_#"+DocumentNumber+.xls"; Apraksts = jauns pārsūtāmā faila apraksts (ceļš uz failu, adrese); TransferredFiles = jauns masīvs; Pārsūtītie faili.Pievienot(Apraksts); StartReceiveFiles(NewNotificationDescription("AfterReceivedFiles", ThisObject), TransferredFiles, "", False); EndIf; EndProcedure &AtServer procedūra ExecutePrintServer() ObjectReference = DataStructure.Object; LayoutName = DataStructure.LayoutName; DataStructure.Insert("Dokumenta numurs", ObjectReference.Number); ArrayObjects = jauns masīvs; ArrayObjects.Add(ObjectReference); Documents.InvoiceEquipment.PrintInvoice(ArrayObjects,LayoutName,True); EndProcedure &OnClient procedūra Connected_ExecutePrint() ExecutePrintServer(); EndProcedure // StandardSubsystems.Print &OnClient procedūra Connected_ExecutePrintCommand(Command) Reference = Items.List.CurrentData.Reference; DataStructure = Jauna struktūra; DataStructure.Insert("Objekts", Saite); DataStructure.Insert("Izkārtojuma nosaukums", "Rēķins"); ConnectWaitingHandler("Connected_PerformPrint", 1, True); CommandDescription = PrintControlClient.PrintCommandDescription(Command.Name,FormName); StartInstallingFileWorkingExtensions(); StartFileExtensionConnection(New AlertDescription("ProcessFileExtensionConnection",ŠisObjekts,New Structure("Komandasnosaukums",KomandasApraksts.Identifier)))); EndProcedure // End StandardSubsystems.Print

Daži skaidrojumi:

1. Pirmkārt, klients mums strādā gan plānā, gan tīmekļa režīmā, tāpēc konfiguratora rekvizītos iepriekš iestatām šādas vērtības:

Lai izvairītos no problēmām, strādājot ar pārlūkprogrammu

2. Mēs izmantojam gaidīšanas apdarinātājus, lai izvairītos no problēmām ar zvanu sinhronizāciju (tas attiecas tikai uz tīmekļa režīmu).

3. Visbeidzot, mēs savienojam paplašinājumu darbam ar failiem (atcerieties, ka plānā klienta režīmā šis paplašinājums vienmēr ir iespējots). Un caur kodu:

mēs pārsūtām failu Klientam, izmantojot NavigationLink mehānismu, pārlūkprogrammā saņemam šādus ziņojumus (Slim darbojas pats):

Nu, šķiet, tas arī viss. Cerams, ka kādam noderēs...

Kas attiecas uz Word, Excel failus, kas jāievieto BinaryData formātā? kāda ir problēma?

1. Mums ir vai nu jāizvelk šie binārie dati no izkārtojuma un jāaizpilda tie ar datiem no 1C, un UZMANĪBU vēlreiz tie jāieraksta BinaryData formā (degvīns ar alu vai alus ar degvīnu).

2. Vai nu jādabū BinaryData izkārtojums Klienta pusē un jāaizpilda tur, BET COM objektu atbalsta tikai IE pārlūks un tad ar dejām ar ActiveX uzstādījumiem, citas pārlūkprogrammas jau sen ir atteikušās no ActiveX lietošanas

Es domāju, ka katrs no "septītnieka" programmētājiem vismaz vienu reizi saskārās ar šādu kļūdu. Tas var notikt "konfigurācijas sapludināšanas" vai "IS testēšanas un labošanas" laikā.

Bet ne visi mēģināja "labot" konfigurāciju. Šādos gadījumos viņi parasti vai nu izmisīgi meklē dublējumkopijas, vai (sarežģītākā veidā) ķeras pie utilīta GComp, kas "pēc leģendas" var izārstēt MD, ja to vienkārši "izjauc" un pēc tam "samontē" izmantojot programmas funkcijas. Patiešām, tā ir. Bet ne visos gadījumos... Tieši šādu gadījumu es vēlētos analizēt šajā rakstā.

Tātad, sākotnējie dati:

- "bojāta konfigurācija";

Lietderība MDDiags

- Tāluvadītājs un spraudnis dokumentsPārlūkprogramma viņam. Izmantojot šo spraudni, varat iekļūt MD un strādāt ar tā objektiem.

Tā kā Configurator pat atsakās parādīt šo "fatālo kļūdu", mēs palaižam MDDiags lai atklātu to vai viņus.

Pēc utilīta palaišanas atlasiet vajadzīgo konfigurāciju, pēc tam visus noklusējuma iestatījumus ... palaidiet, analizējiet, iegūstiet rezultātu.

Jums var būt citas kļūdas, bet es domāju, ka jūs varēsiet ar tām tikt galā, ja būs kopīga izpratne par to, kā atrast kļūdu un kā to novērst.

1. Kļūda>(\\ žurnāls)

Lietderība skaidri norādīja, ka kļūda tiek novērota 2 objektiem "\\Žurnāls \ Žurnāls _ Numurs 212" un "\\ Žurnāls \ Žurnāls _ Numurs 860". Tagad dodieties uzTālu un apskatīt tur esošos objektus.


Mēs šeit redzam daudz objektu un vienu failu "Container.Contents". Tajā tiek saglabāti šo pašu objektu deskriptori. Rūpīgi izpētot faila saturu, mēs saprotam, ka mūsu diviem objektiem nav deskriptoru.

Pievienojiet deskriptorus, kā parādīts attēlā.

Problēma atrisināta.

2. Kļūda DOCUMENT.Invoice (\\Ierakstītais teksts\Lietotāja palīdzība_Number434\konteiners.saturs)

Mēs dodamies atpakaļ uz MD pa norādīto ceļu. Faila atvēršana konteiners. saturu un apskatiet tās saturu tuvāk.

Acīs uzreiz iekrīt dīvainie vārdi Cgntainer, Contentq, Prmgram. Tieši tā, tie ir nepareizi uzrakstīti identifikatori. Nav grūti uzminēt, kā tam vajadzētu būt pareizi (ja ir grūti, dodieties uz nākamo filiāli, atveriet to pašu "Container.Contents" failu un paskatieties, kā tas būtu jāraksta).

3. KļūdaKATALOGS.TipiskasOperācijas(\\Subconto\Subconto_Number5870\WorkBook\Dialog Stream)

Atveriet failu norādītajā ceļā un uzmanīgi paskatieties... Visiem parametriem jābūt pēdiņās. Vienam no parametriem "pēdiņas" vietā ir "atstarpe" - izlabojiet to (šāda kļūda var rasties, ja kāda no objekta elementiem (lauki, pogas, vērtību saraksts utt.) aprakstā ir viens vai dubultpēdiņš vai kādu no "īpašajām rakstzīmēm").

Mēs sākam no jauna MDDiags un mēs redzam, ka visas iepriekšējās kļūdas ir pazudušas, bet ir parādījusies cita kļūda.

Tagad ir pienācis laiks vērsties pie GComp utilīta un pārbaudīt "leģendu"...

Mēs palaižam utilītu, atlasām mūsu bojāto (līdz šim) MD un mapi, kurā jāievieto objektu izjauktā konfigurācija, pēc tam visas noklusējuma izvēles rūtiņas, vienīgais ir jāiestata "dzēst tukšas veidnes tabulas" cilnē "Vispārīgās opcijas" noklikšķiniet uz "Dekompilēt".

Pēc tam bez papildu piepūles dodieties uz cilni "kompilācija", kā avota direktoriju iestatiet to, kurā tikko parsēta konfigurācija, un norādiet ceļu uz jauno MD.

Lietderība visu droši savāks.

Tagad mums atliek tikai Tālvadītājs nomainiet atbilstošo failu "salauztajā" DM ar to pašu failu no "tikko uzbūvētā" (\\Subconto\Subconto_Number5870\WorkBook\Dialog Stream).

Vēlreiz pārbaudiet konfigurāciju ar MDDiags.

Šķiet, ka viss ir kārtībā. Tagad mēs ejam uz konfiguratoru un veicam "informācijas drošības pārbaudi un labošanu", lai pārliecinātos, ka vairs nav kļūdu.

Tas ir viss. Ļaujiet man paklanīties. Un lai Spēks ir ar jums!

P.S. Īpašs paldies piemērā izmantoto komunālo pakalpojumu izstrādātājiem - viņi mums visiem palīdz dzīvot tik ļoti...

Labdien!. Pagājušajā reizē izdomājām, kā atrisināt "Kļūda, pielietojot transformācijas. Pārbaudi norādīto transformāciju ceļu pareizību", šodien pastāstīšu vēl par vienu no tā radītajām sekām. Publikācijas tēma būs situācija, kad nevarat instalēt 1C platformu un saņemsit ziņojumu: Windows kļūda: funkcijas izpildes kļūda, izlemjam minūtes laikā, esmu pārliecināts, ka tēma noderēs daudziem.

Kā izskatās izpildes kļūda?

Kā jau rakstīju iepriekš, tas notiek manā Windows Server 2012 R2 termināļa serverī, mēģinot instalēt 1C 8.2 platformu. Pēc faila setup.exe palaišanas tiek parādīts instalēšanas vedņa logs un uzreiz papildu logs ar ziņojumu:

Windows kļūda: funkcijas izpildes kļūda

Pēc tam jūs saņemsit šādu paziņojumu:

Tāpat kā vairumā gadījumu ar 1C platformu, viss tiek atrisināts ar nelielu labojumu konfigurācijas failos. Pirmkārt, ieslēdziet slēpto mapju displeju, jo mums nepieciešamais fails pēc noklusējuma nav redzams. Pēc tam C:\ diskā atrodiet mapi ProgrammaDati.

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

Failu 1CEStat.cfg var atvērt ar jebkuru teksta redaktors, ar peles labo pogu noklikšķiniet uz tā un atlasiet "Atvērt ar" un pēc tam jums piemērotu redaktoru.

Atrodiet parametru failā 1CEStat.cfg, tas ir jāizdzēš un fails jāsaglabā.

Ja skatāties uz žurnāliem notikumu skatītājā, jūs redzēsit šādus notikumus.

Notikuma ID 1013: Produkts: 1C:Enterprise 8.2 (8.2.19.130) — Windows kļūda: funkcijas izpildes kļūda.

Notikuma ID 11708: Produkts: 1C:Enterprise 8.2 (8.2.19.130) — instalēšanas darbība neizdevās.

Pēc parametra ADMINISTRATIONFUNC=0 noņemšanas mēs saņēmām:

Notikuma ID 1033: Windows Installer instalēja produktu. Produkts: 1C: Enterprise 8.2 (8.2.19.130). Versija: 8.2.19.130. Valoda: 1049. Ražotājs: 1C. Uzstādīšana pabeigta ar statusu: 1603.




Tops