Windows 오류: 함수 실행 오류, 1분 안에 해결되었습니다. Windows 오류: 함수 실행 오류, 1분 안에 해결 구성 확인 복구 불가능 오류 1s 7.7

그렇다면 내 기사의 요점은 무엇입니까?

1. 서버(x64)가 있습니다. 설치된 사무실 2016(x64)에는 1C 8.3.8도 x64(1C 서버를 의미)가 있습니다. 사용자는 씬 클라이언트와 웹 클라이언트를 통해 연결합니다.

2. 영업부서에서 발행(작성)한 표준 계약서와 청구서가 잔뜩 있습니다. 폰트나 문단 등은 물론이고 전부 워드, 엑셀 2016(x64)로 디자인한거라 당연히 1C로 다 그릴 생각은 없지만 ActiveDocument 형식으로 넣고 싶은 마음은 있다 레이아웃

해결책은 평범한 것 같습니다 :) , 전체 메커니즘, 수행 방법, 1C에서 ActiveDocument 레이아웃으로 데이터가 채워지는 방법을 설명하지 않겠습니다. 나 없이도 이것을 완벽하게 잘 알고 계실 것입니다. 그러나 작업 중에 COM 개체 영역에서 모든 것이 그렇게 순조롭게 진행되는 것은 아니라는 사실이 밝혀졌습니다.

2. ActiveDocument 또는 바이너리 데이터 중 어떤 옵션을 선택하는 것이 더 좋습니까? 나에게는 맥주와 보드카 또는 보드카와 맥주를 선택하는 것처럼 들리지만 :) . 별거 아닙니다. 1C의 데이터로 문서를 채우고 클라이언트에게 전송해야 합니다.

가사는 건너뛰고 ActiveDocument를 선택합니다. 전체 알고리즘을 설명하지는 않고 함정과 해결 방법만 나열하겠습니다. 아래에 언급된 모든 내용은 개인적인 추측이며 어떠한 경우에도 궁극적인 진실을 주장하지 않습니다. 이러한 문제를 해결했거나 다른 방법으로 해결했을 수 있습니다.

1. 스톤 " 첫 번째". SaveAs 메서드가 작동하지 않습니다(MSWord 및 MSExcel 모두에 대해). 바이너리 데이터를 쓰려고 하면 1C가 단순히 충돌합니다. 목록 조각을 살펴보십시오.

MSWord = 레이아웃.Get(); Document = MSWord.Application.Documents(1)를 시도해 보세요. 문서.활성화(); //다음으로 어떻게든 데이터를 가져와서 Word 문서를 작성합니다. //파일을 저장할 임시 디렉토리의 경로를 가져옵니다. TimeName = GetTemporaryFileName(".docx"); Document.SaveAs(이름시간); //여기에서 돌이 시작됩니다. MyDocumentInBinaryData = New BinaryData(NameTime); //음, 여기서 이 돌은 1C에 의해 녹아웃되었습니다 :) MSWord.Application.Quit();

정말 감사합니다.

폴더 생성
C:\Windows\SysWOW64\config\systemprofile\Desktop
C:\Windows\System32\config\systemprofile\Desktop
문제가 해결되었습니다. 주제가 종료되었습니다.

이유는 무엇입니까? 그 이유는 코드가

MSWord = 레이아웃.Get();

Office가 설치된 비트 수에 관계없이 항상 COM 개체(x32)의 인스턴스를 호출합니다. 확장자가 docx, xlsx인 파일을 ActoveDocument 레이아웃에 삽입할 수 없는 이유가 궁금하신가요?

이는 작업 관리자를 통해 확인할 수도 있지만 사실 ActiveDocument 레이아웃은 암시적으로 COM 인스턴스(x32)를 호출하므로 모든 추가 조작은 이 기능을 고려하여 수행되어야 합니다.

1. 서버와 모든 소프트웨어는 x32여야 합니다. 그러면 아무것도 할 필요가 없습니다(코드를 다시 작성한다는 의미에서).

2. 이 방법으로 코드를 다시 작성하세요.

// 임시 파일의 이름을 가져옵니다. TimeFile = GetTemporaryFileName("doc"); // 이 코드는 필요한 비트 깊이의 COM 인스턴스를 확실히 호출합니다. 우리의 경우 x64 Word = New COMObject("Word.Application"); 워드.디스플레이알림 = 0; DocumentN = Word.Application.Documents.Add(); DocumentN.SaveAs(TimeFile,0); Word.Quit(); // 그러면 모든 것이 이전과 같습니다. Layout = 인쇄 관리.인쇄 양식 Layout ("문서.장비 양도법." + 레이아웃 이름); MSWord = 레이아웃.Get(); Document = MSWord.Application.Documents(1)를 시도해 보세요. 문서.활성화(); // 여기서는 데이터를 채우는 작업을 수행합니다. // 여기서는 COM x62에서 COM x64로 파일을 다시 저장합니다. 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 = 정의되지 않음; Exception // 에러가 발생하면 에러 데이터를 출력하고 객체를 닫습니다. 정보 = ErrorInfo(); GeneralPurposeClientServer.NotifyUser("오류 - "+Information.Description+" 오류 코드 - "+Abb.LP(Information.SourceString)); MSWord.Application.Quit(); 시도 종료;

여기에서는 모든 것이 명확하다고 생각합니다. 먼저 필요한 비트 깊이의 COM 인스턴스를 만들고 빈 파일을 만들어 임시 폴더에 저장한 다음 COM x32로 작업하고 데이터로 채우고 마지막으로 전체 내용을 복사합니다. 문서로 만들어 이전에 준비된 파일에 저장합니다.

모든 것이 동일하지만 Excel에만 해당됩니다.

TimeFile = GetTimeFileName("xls"); Excel = New COMObject("Excel.Application"); Excel.Displayalerts = 0; BookH = Excel.WorkBooks.Add(); SheetN = BookN.WorkSheets(1); BookN.SaveAs(TimeFile, -4143); 엑셀.종료(); Layout = PrintManagement.PrintFormLayout("Document.Equipment Invoice."+LayoutName); MSExcel = 레이아웃.Get(); BookN = MSExcel.Application.Workbooks.Open(TimeFile); SheetN = BookN.WorkSheets(1); WBook 시도 = MSExcel.Application.Workbooks(1); 시트 = WBook.WorkSheets(1); 시트.활성화(); // 뭔가를 하고 1C의 데이터로 채웁니다. MSExcel.Application.WorkBooks(1).WorkSheets(1).Cells.Copy(SheetN.Cells); BookN.Save(); BookN.Close(); Exception // 에러가 발생하면 에러 데이터를 출력하고 객체를 닫습니다. 정보 = ErrorInfo(); GeneralPurposeClientServer.NotifyUser("오류 - "+Information.Description+" 오류 코드 - "+Abb.LP(Information.SourceString)); MSExcel.Application.Quit(); 시도 종료;

여기요 " 첫 번째“Office x64가 설치된 x64 서버에서는 모든 것이 오류 없이 시계처럼 정확하게 작동하며 폴더와 기타 모든 항목을 만들 필요가 없다는 결정을 내렸습니다.

결석 " 두번째". 코드 조각

TimeFile = GetTimeFileName("xls");

"c:\Users\ what's there..." 폴더에 쓰기 때문에 먹는 것이 별로 좋지 않습니다. 일반적으로 이 폴더는 항상 모든 방화벽, 바이러스 백신 등의 블랙리스트에 있습니다. 최소한 Word나 Excel에서 보안 제어 센터를 열어보세요. 거기도 살펴보자

이를 수정해야 합니다. 그렇지 않으면 "이상한" 오류가 나타날 가능성이 있습니다. 그러므로 나는 다음을 제안한다:

1. 구성기를 열고 새 정보 레지스터를 추가합니다.

여기에 완성된 말씀을 저장하겠습니다. 엑셀 파일물론 이미 채워져 있습니다.

LayoutName - 레이아웃 ID

DocumentOffice - Value Storage, 여기서 완성된 파일을 보관합니다.

2. 위의 코드를 다음과 같이 추가합니다.

MH = 정보 Registers.TemporaryStorageOffice.CreateRecordManager(); MH.Object = 선택.링크; MZ.LayoutName = 레이아웃이름; MZ.읽기(); MH.Object = 선택.링크; MZ.LayoutName = 레이아웃이름; MZ.DocumentOffice = NewValueStorage(NewBinaryData(TimeFile)); MZ.쓰기(); 삭제파일(시간파일);

우리가 하는 일은 완성된 파일을 정보등록부에 쓴 후 임시파일 자체를 삭제하여 “Word, Excel 보안센터” 문제를 해결하는 것입니다. 남은 것은 이 완성된 파일을 클라이언트(씬 및 웹 클라이언트)에 표시하는 것입니다.

3. 스톤 " 제삼" - 파일을 클라이언트로 전송합니다. 여기에는 모든 코드를 게시하겠습니다. 일부는 BSP에서, 일부는 "관리 애플리케이션" 데모 구성에서, 일부는 인터넷에서 가져왔지만 일반적으로 여기에 코드가 있습니다( 전체)

/////////////////////////////////////////////// // ///////////////////////// // 서비스 절차 및 기능 BSP &OnServer 함수 GetLayout() ObjectLink = DataStructure.Object; 레이아웃이름 = 데이터구조.레이아웃이름; RecordKey = 정보 레지스터.TemporaryStorageOffice.CreateRecordKey(새 구조("Object,LayoutName",ObjectLink,LayoutName)); // 주소 = GetNavigationLink(RecordKey,"OfficeDocument"); 반송 주소; EndFunction // &OnClient 프로시저 AfterApplicationStart(ReturnCode, ApplicationName) 내보내기; // 프로시저 종료 &클라이언트에서 파일 수신 후 프로시저(전송된 파일, 추가 매개변수) 내보내기 그렇지 않은 경우 전송된 파일 = 정의되지 않음 전송된 파일 주기의 각 설명에 대해 OpAfterAppLaunch = New DescriptionAlerts("AfterLaunchingApplication", ThisObject, Description.Name ); StartLaunchApplication(OpAfterStartApplication, Description.Name); 엔드사이클; endIf; EndProcedure OnClient 프로시저(&OnClient 프로시저) AfterDirectorySelection(SelectedFiles, CommandName) 내보내기 SelectedFiles = 정의되지 않은 경우 Return; endIf; 디렉토리 = SelectedFiles; GeneralPurposeServerCall.SaveWorkingDirectory(디렉토리); If CommandName = "Invoice" Then LayoutName = "Invoice" EndIf; DataStructure.Insert("디렉토리", 디렉토리); ConnectWaitingHandler("Connectable_SendFileToClient",5,True); 프로시저 종료 클라이언트 프로시저에서 확장(명령 이름)을 통해 파일 열기(&O) OpAfterSelectingDirectory = New DescriptionAlerts("AfterSelectingDirectory", ThisObject, CommandName); 디렉터리 = GeneralPurposeCallServer.GetWorkingDirectory(); 디렉토리 = 정의되지 않음 OR 디렉토리 = ""인 경우 대화 상자 = New FileSelectionDialog(FileSelectionDialogMode.DirectorySelection); Dialog.Header = НStr("ru = "파일을 임시 저장할 디렉터리 선택"", "ru"); Dialog.Show(OpAfterSelectingDirectory); 그렇지 않으면 SelectedFiles = 새로운 어레이; SelectedFiles.Add(디렉토리); 경고 처리 수행(OpAfterSelectingDirectory, SelectedFiles) endIf; 프로시저 종료 클라이언트 프로시저 프로세스에서 &ConnectingExtensionsWorkingWithFiles(ExtensionConnected,AdditionalParameters) ImportIfExtensionConnectedThenOpenFilesThroughExtension(AdditionalParameters.CommandName); endIf; EndProcedure OnClient 프로시저(&N) Connected_PassFileToClient() 주소 = GetLayout(); 주소라면<>정의되지 않은 경우 비활성화WaitHandler("Connectable_PassFileToClient"); DocumentNumber = DataStructure.DocumentNumber; 디렉토리 = DataStructure.Directory; 레이아웃이름 = 데이터구조.레이아웃이름; 파일 경로 = 디렉토리+"\"+레이아웃 이름+"_No"+문서 번호+".xls"; Description = 전송된 파일에 대한 새로운 설명(파일 경로, 주소); TransferredFiles = 새 배열; TransferredFiles.Add(설명); StartReceiveFiles(NewDescriptionAlerts("AfterReceiveFiles", ThisObject), TransferredFiles, "", False); endIf; 프로시저 종료 서버 프로시저에서(&E) ExecutePrintServer() ObjectLink = DataStructure.Object; 레이아웃이름 = 데이터구조.레이아웃이름; DataStructure.Insert("DocumentNumber", ObjectReference.Number); ObjectArray = 새 배열; Objects.Add(ObjectRef) 배열; Documents.Equipment Invoice.PrintInvoice(Object Array,LayoutName,True); EndProcedureOnClient 프로시저(&N) Connectable_ExecutePrint() ExecutePrintServer(); EndProcedure // StandardSubsystems.Print &OnClient 프로시저 Connectable_ExecutePrintCommand(Command) Link = Elements.List.CurrentData.Link; DataStructure = 새로운 구조; DataStructure.Insert("객체", 링크); DataStructure.Insert("LayoutName", "송장"); ConnectWaitingHandler("Connectable_Print", 1, True); CommandDescription = PrintManageClient.PrintCommandDescription(Command.Name,FormName); FileWorking Extension() 설치 시작; StartConnectingFileWorkingExtension(NewAlertDescription("ProcessConnectingFileWorkingExtension",ThisObject,NewStructure("CommandName",CommandDescription.Identifier))); EndProcedure // StandardSubsystems.Print 종료

몇 가지 설명:

1. 첫째, 클라이언트는 씬 모드와 웹 모드를 모두 통해 작동하므로 미리 구성기 속성에서 다음 값을 설정합니다.

브라우저 작업 시 문제를 방지하려면

2. 통화 동기화 문제를 방지하기 위해 대기 핸들러를 사용합니다(웹 모드에만 적용됨).

3. 마지막으로 파일 작업을 위한 확장을 연결합니다(씬 클라이언트 모드에서는 이 확장이 항상 활성화되어 있음을 기억하십시오). 그리고 코드를 통해:

탐색 링크 메커니즘을 사용하여 파일을 클라이언트에 전송하면 브라우저에서 다음 메시지를 받습니다(Thin은 자체적으로 작동함).

글쎄, 그게 전부인 것 같습니다. 이것이 누군가에게 도움이되기를 바랍니다 ...

Word의 경우 Excel 파일이 바이너리 데이터로 삽입됩니까? 뭐가 문제 야?

1. 레이아웃에서 이 이진 데이터를 가져와 1C의 데이터로 채우고 주의 이진 데이터(맥주가 포함된 보드카 또는 보드카가 포함된 맥주) 형식으로 다시 기록해야 합니다.

2. 클라이언트 측에서 BinaryData 레이아웃을 가져와서 채워야 하지만 COM 개체는 IE 브라우저에서만 지원되며 ActiveX 설정과 함께 작동하므로 다른 브라우저에서는 오랫동안 ActiveX 사용을 포기했습니다.

내 생각엔 "7명의" 프로그래머들 각자가 적어도 한 번씩은 이런 오류를 겪었던 것 같다. 이는 "구성 병합" 또는 "정보 보안 테스트 및 수정" 중에 발생할 수 있습니다.

그러나 모든 사람이 구성을 "수정"하려고 시도한 것은 아닙니다. 이러한 경우 일반적으로 그들은 미친 듯이 백업을 검색하거나 (더 복잡한 방법) "전설에 따르면" MD를 간단히 "분해"한 다음 "조립"하면 치료할 수 있는 GComp 유틸리티의 도움을 받습니다. ” 프로그램의 기능을 사용합니다. 실제로 그렇습니다. 하지만 모든 경우에 해당되는 것은 아닙니다... 이 기사에서 제가 조사하고 싶은 경우가 바로 이것입니다.

따라서 초기 데이터는 다음과 같습니다.

- "깨진 구성";

공익사업 MDDiag

- 멀리관리자그리고 플러그인 문서파일브라우저 그에게. 이 플러그인을 사용하면 MD 내부로 이동하여 해당 개체로 작업할 수 있습니다.

구성자는 이 "수정할 수 없는 오류" 표시조차 거부하므로 다음을 실행합니다. MDDiag그것을 식별하기 위해.

유틸리티를 시작한 후 원하는 구성을 선택한 다음 모든 기본 설정을 선택하고 실행하고 분석하고 결과를 얻으십시오.

그 밖에도 오류가 있을 수 있지만, 오류를 찾는 방법과 해결 방법에 대한 전반적인 이해가 있어야 오류를 알아낼 수 있을 것이라고 생각합니다.

1. 오류>(\\신문)

유틸리티는 "\\" 개체 2개에 대해 오류가 관찰되었음을 분명히 밝혔습니다.저널\저널_번호 212" 및 "\\저널\저널_번호 860". 이제멀리 그리고 거기 있는 물건들을 보세요.


여기서는 많은 개체와 "Container.Contents" 파일 하나를 볼 수 있습니다. 동일한 객체의 설명자를 저장합니다. 파일 내용을 주의 깊게 연구한 결과, 두 개체에 대한 설명자가 없다는 것을 알게 되었습니다.

그림과 같이 설명자를 추가합니다.

문제 해결됨.

2. 오류 문서.영수증 송장(\\TypedText\사용자도움말_번호434\컨테이너.내용물)

표시된 경로를 따라 MD로 다시 이동합니다. 파일 열기 "컨테이너. 내용물 "하고 그 내용을 잘 살펴보세요.

Cgntainer, Contentq, Prmgram이라는 이상한 단어가 즉시 눈에 띕니다. 맞습니다. 철자가 틀린 식별자입니다. 어떻게 정확해야 할지 추측하는 것은 어렵지 않습니다. (어려우면 다음 브랜치로 가서 동일한 "Container.Contents" 파일을 열고 어떻게 작성해야 하는지 확인하세요.)

3. 오류예배 규칙서.일반적인 작업(\\Subconto\Subconto_Number5870\WorkBook\Dialog Stream)

지정된 경로에서 파일을 열고 주의 깊게 살펴보십시오. 모든 매개변수는 따옴표로 묶어야 합니다. 매개변수 중 하나에 "따옴표" 대신 "공백"이 있습니다. 이를 수정합니다(이 오류는 개체 요소(필드, 버튼, 값 목록 등) 중 하나에 대한 설명에 단일 또는 큰따옴표, 또는 "특수 문자" 중 하나).

다시 출발해보자 MDDiag이전 오류는 모두 사라졌지만 또 다른 오류가 나타난 것을 확인할 수 있습니다..

이제 GComp 유틸리티를 사용하여 "범례"를 확인할 차례입니다...

유틸리티를 실행하고 손상된(현재는) MD와 구성을 저장할 폴더를 개체별로 정렬한 다음 모든 확인란이 기본적으로 표시되고 유일한 것은 "삭제" 확인란을 선택하는 것입니다. 빈 템플릿"일반 매개변수" 탭의 "테이블"에서 "디컴파일"을 클릭합니다.

그런 다음 더 이상 고민하지 말고 "컴파일" 탭으로 이동하여 방금 구성을 구문 분석한 디렉토리로 소스 디렉토리를 설정하고 새 MD의 경로를 표시하십시오.

유틸리티는 모든 것을 안전하게 조립합니다.

이제 우리는 원거리 관리자"깨진" MD 내부의 해당 파일을 "방금 조립한" MD와 동일한 파일(\\Subconto\Subconto_Number5870\WorkBook\Dialog Stream)로 교체합니다.

다음을 사용하여 구성을 다시 확인합니다. MDDiag.

모든 것이 괜찮은 것 같습니다. 이제 우리는 구성기로 가서 "정보 보안 테스트 및 수정"을 수행하여 더 이상 오류가 없는지 확인합니다.

그게 다야. 휴가를 떠나겠습니다. 그리고 포스가 당신과 함께하길 바랍니다!)

추신 예제에 사용된 유틸리티 개발자들에게 특별한 감사를 드립니다. 그들은 우리 모두의 삶에 많은 도움을 줍니다...

좋은 오후에요!. 지난번에 "변환 적용 오류. 지정된 변환 경로의 정확성을 확인하세요."를 해결하는 방법을 살펴보았으며, 오늘은 이로 인한 또 다른 결과에 대해 말씀드리겠습니다. 간행물 주제는 1C 플랫폼을 설치할 수 없는 상황이며 다음 메시지를 받게 됩니다. Windows 오류: 함수 실행 오류, 우리는 그것을 잠시 후에 해결합니다. 이 주제가 많은 사람들에게 유용할 것이라고 확신합니다.

함수 실행 오류는 어떤 모습인가요?

위에서 쓴 것처럼 1C 8.2 플랫폼을 설치하려고 하면 Windows Server 2012 R2 터미널 서버에서 이 문제가 발생합니다. setup.exe 파일을 실행하면 설치 마법사 창이 나타나고 즉시 다음 메시지가 포함된 추가 창이 나타납니다.

Windows 오류: 함수 실행 오류

이에 대해 다음 알림을 받게 됩니다.

대부분의 경우 1C 플랫폼과 마찬가지로 구성 파일을 약간만 수정하면 모든 것을 해결할 수 있습니다. 먼저 필요한 파일이 기본적으로 표시되지 않으므로 숨김 폴더 표시를 켭니다. 다음으로 C:\ 드라이브에서 해당 폴더를 찾으세요. 프로그램 데이터.

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

1CEStat.cfg 파일은 다음을 사용하여 열 수 있습니다. 텍스트 에디터, 마우스 오른쪽 버튼을 클릭하고 "다음으로 열기"를 선택한 다음 편리한 편집기를 선택하십시오.

1CEStat.cfg 파일에서 매개변수를 찾으면 이를 삭제하고 파일을 저장해야 합니다.

이벤트 뷰어에서 로그를 보면 다음과 같은 이벤트를 볼 수 있습니다.

이벤트 코드 1013: 제품: 1C:Enterprise 8.2 (8.2.19.130) -- Windows 오류: 함수 실행 오류입니다.

이벤트 ID 11708: 제품: 1C:Enterprise 8.2(8.2.19.130) - 설치 작업이 실패했습니다.

ADMINISTRATIONFUNC=0 매개변수를 제거한 후 우리는 이미 다음을 받았습니다.

이벤트 ID 1033: Windows Installer가 제품을 설치했습니다. 제품: 1C:엔터프라이즈 8.2(8.2.19.130). 버전: 8.2.19.130. 언어: 1049. 제조사: 1C. 상태: 1603으로 설치가 완료되었습니다.




맨 위