Ошибка получения com фильтр сообщений

  

СЕсин

08.01.13 — 17:24

Всем привет! Печ. форма формируется через Word. Открывается файл Word, там делаются замены после чего он сохраняется. Все отлично работало, пока не перенес базу на SQL.

Причем, если на этом сервере развернуть эту же базу в файловом варианте — все работает. А на SQL — нет.

Пробовал давать какие-угодно права пользователю, от имени которого запускается Агент сервера. Запускал его и под встроенной учеткой и под админом… нифига.

Вот фрагмент кода, который перестает работать на SQL:

Word = Новый COMОбъект(«Word.Application»);

Word.Visible = 0;

Документ = Word.Documents.Open(ИмяФайлаШаблона);    

Fnd = Word.ActiveDocument.Range().Find;

Fnd.ClearFormatting();

Fnd.Forward = -1;

Выдает ошибку: «{ВнешняяОбработка.ФормированиеПоШаблону.МодульОбъекта(379)}: Ошибка при получении значения атрибута контекста (ActiveDocument)

   Fnd = Word.ActiveDocument.Range().Find;

по причине:

Произошла исключительная ситуация (Microsoft Word): Данная команда недоступна, так как не открыт ни один документ.»

Пожалуйста, помогите разобраться в чем дело.

  

zladenuw

1 — 08.01.13 — 17:28

ну а путь к файлу у тебя какой? файл сам где лежит?

  

Vladal

2 — 08.01.13 — 17:29

Сам Word установлен?

Что выдаст ПолучитьCOMОбъект(«», «Word.Application»)

или ПолучитьCOMОбъект(«d:temptemp.docx»)

  

Vladal

3 — 08.01.13 — 17:29

ИмяФайлаШаблона — существует ли файл по этому пути, и доступен ли?

  

СЕсин

4 — 08.01.13 — 17:30

Сначала делал так:

ИмяФайлаШаблона = КаталогВременныхФайлов() + «ШаблонДоговора.docx»;

Потом переделал жестко:

ИмяФайлаШаблона = «C:UsersPublicDocuments» + «ШаблонДоговора.docx»;

Но не помогло.

  

СЕсин

5 — 08.01.13 — 17:31

Да, Word установлен. Если в файловом варианте развернуть, все работает, документ отлично формируется и открывается.

  

Vladal

6 — 08.01.13 — 17:32

Ответь на (2)

  

Vladal

7 — 08.01.13 — 17:32

Только выполни на сервере

  

Vladal

8 — 08.01.13 — 17:33

Кода запускаешь файловую базу, доступны ком-обхекты локальной системы. Если сервер 1С находится на другой машине, откуда ему знать про «C:UsersPublicDocuments» терминального сервера или локальной машины?

  

СЕсин

9 — 08.01.13 — 17:38

Разумеется, я сто раз проверил существование файла, все права на него и все такое. В разные места его клал, админские права раздавал.

Запускаю я все на одном и том же сервере. И Word и 1C установлены на той машине, на которой я работаю.

Насчет (2): в первом случае результат тот же — «ни открыт ни один документ», во втором случае другая ошибка: «{ВнешняяОбработка.ФормированиеПоШаблону.МодульОбъекта(374)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)

   Word = ПолучитьCOMОбъект(ИмяФайлаШаблона);

по причине:

Ошибка получения объекта COM: Фильтр сообщений выдал диагностику о занятости приложения.»

  

Vladal

10 — 08.01.13 — 17:40

У тебя и сервер 1С на той же машине стоит?

  

zladenuw

11 — 08.01.13 — 17:41

может как вариант повис на сервере COMОбъект Ворда. посмотри в процессах.

  

СЕсин

12 — 08.01.13 — 17:46

Vladal, Да, я когда разбирался с проблемой, установил все на одну машину. Сервер 1С, SQL и Word. На ней и разбираюсь.

zladenuw, ты прав. Там висела целая пачка процессов Word. Я их выбил, но теперь другая ошибка:

{ВнешняяОбработка.ФормированиеПоШаблону.МодульОбъекта(374)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)

   Word = ПолучитьCOMОбъект(ИмяФайлаШаблона);

по причине:

Ошибка получения объекта COM: Операция прервана

  

Vladal

13 — 08.01.13 — 17:52

(12) Значит что-то из дочерних процессов может висеть и блокировать.

Скорее всего, он ответил на твой последний запрос com-объекта, что его прервали. Повтори через время или для верности перегрузи компьютер.

  

СЕсин

14 — 08.01.13 — 17:55

Я с проблемой второй день бьюсь и не раз перезагружал и даже переустанавливал платформу.

Если использовать «Word = Новый COMОбъект(«Word.Application»);», то COM объект создается. Т.е. по идее с СОМ все в порядке.

Для полной ясности скажу что стоит:

Платформа 8.2.17.153.

Сервер 1С — х64

Сервер SQL — 2012

Печатная форма для УТ 11. Хотя непонятно, какое это все имеет отношение к COM объекту… Короче, танцы с бубном продолжаются, спасибо за участие!

  

Pashkaa

15 — 08.01.13 — 21:51

Если танцы с бубном не помогут, есть вариант без ворда если у тебя простая замена по тексту на нужные значения.

Переименовываешь файл docx в zip, извлекаешь в папку, находишь в подпапках файл с данными в формате xml, производишь в нем замены и назад выполняешь упаковку и переименование.

  

СЕсин

16 — 09.01.13 — 00:56

Pashkaa, это всем бубнам бубен ))) Я уж лучше на файловой версии все оставлю, чем так. Думаю, решение рано или поздно найдется. Буду с разными платформами экспериментировать. Вряд ли я единственный пытаюсь документ Word сформировать из базы 1С на SQL. А судя по тому, что в поиске ничего подобного нет, то ситуация не популярная и легко все может заработать на другой системе или конфигурации. Такие мысли у меня.

  

hhhh

17 — 09.01.13 — 01:58

(16) напиши сетевую папку. Диск С: лучше не писать. Там есть такая фигня в правах как передача прав подчиненным папкам. Наследование.

То есть если ваш админ для диска С: задал неполные права твоему пользователю, то хоть ты застрелись, но хотя и будешь «давать какие-угодно права пользователю» на папку C:UsersPublicDocuments всё равно приоритет у прав на диск С:, которые и применятся.

  

sapphire

18 — 09.01.13 — 03:52

(4) Посмотри пути.

Выполняется наверняка на сервере, значит далеко не факт, что у учетки запуска rphost-a есть права на путь-файл.

  

СЕсин

19 — 11.01.13 — 02:35

Разобрался. Кто бы мог подумать… Как я уже писал, это УТ 11 — т.е. управляемые формы. Перенес выполнение всех операций с объектом «Word = Новый COMОбъект(«Word.Application»)» с сервера на клиент — все заработало. Не спешите кидать тухлыми помидорами типа «конечно, Word не откроется на стороне сервера». Но раньше-то как-то открывался. Именно это меня и пустило по ложному следу. Выходит, доступность методов COM объектов на файловом сервере и SQL — разная.

Какой я сделал вывод:

Что касается конкретно метода Word.Documents.Open — если база файл-серверная, методу все равно где выполняться, на клиенте или на сервере. Документ открывается и показывается ни смотря ни на что. Но когда я перешел на SQL, метод ошибки выдавать не стал и внешне отрабатывает как я писал выше. Но если выполняется на стороне сервера — ничего не открывает и дальнейшее обращение к документу дает ошибку, а на стороне клиента — открывает.

  

МихаилМ

20 — 11.01.13 — 07:43

сколько можно на эти грабли наступать.

http://infostart.ru/public/165910/

  

СЕсин

21 — 11.01.13 — 10:32

МихаилМ, по-моему не совсем по теме. Сом объект-то создается и остальные методы у него работают. Вы читали ветку или только последнее сообщение?

Сколько можно на эти грабли наступать… Сейчас-то конечно все сразу умные станут. )) Что раньше молчали? Давайте без этого.

  

НЕА123

22 — 11.01.13 — 10:47

(21)

из (9)>Разумеется, я сто раз проверил существование файла, все права на него и все такое. В разные места его клал, админские права раздавал.

не стыкуется с (19)

  

СЕсин

23 — 11.01.13 — 11:08

Чем же не стыкуется? В (9) я мудрил с самим файлом, а в (19) перенес выполнение кода с сервера на клиент. Короче, флуд пошел…

Похоже, вы не установили Option Explicit — поместите его в первую строку, и это поможет вам избежать ошибок. (С его помощью компилятор заставит вас объявить все ваши переменные. Это также будет означать, что когда вы его вставите, ваш код не будет работать, если вы не объявите все переменные.)


Первая проблема:

Set xlApp = CreateObject("Excel.Application")

Set MyXL = GetObject(, "Excel.Application")

Сначала вы создаете новый экземпляр Excel с CreateObject и сохраняете ссылку на него в xlApp (который впоследствии не используете). Затем вы пытаетесь получить ссылку на экземпляр существующий Excel с помощью GetObject и сохранить его ссылку в MyXL. Это работает надежно только потому, что вы сначала создаете новый экземпляр. В противном случае вы не могли бы гарантировать, что экземпляр Excel всегда доступен.

Связанная проблема заключается в том, что вы не отпускаете / не закрываете эти экземпляры. Если вы создаете экземпляр Excel, вам необходимо закрыть его с помощью xlApp.Quit после того, как вы закончите его использовать, иначе он будет задерживаться.
Однако будьте осторожны с экземплярами, которые вы переняли с GetObject — вызов MyXL.Quit закроет экземпляр независимо от того, какие другие книги открыты в это время.

Точно так же, если вы открываете файл таким образом, вам нужно обязательно закрыть его после этого. В противном случае вы столкнетесь с проблемой, с которой столкнетесь: Запишите защищенные файлы.


Итак, чтобы решить вашу проблему: закройте все открытые экземпляры Excel (лучше всего через диспетчер задач, так как некоторые из них могут быть невидимы). Затем настройте свой код, чтобы использовать только одну ссылку на Excel.Application. И, наконец, не забудьте записать книгу в .Close после сохранения, а в .Quit — свой экземпляр Excel. Надеюсь, это предотвратит повторное появление ошибки.

'Dim xlApp As Excel.Application    ' early-bound declaration
'Set xlApp = New Excel.Application    ' early-bound assignment
Dim xlApp As Object    ' late-bound declaration
Set xlApp = CreateObject("Excel.Application")    ' late-bound assignment

'Dim wb As Workbook    ' early-bound declaration
Dim wb as Object
Set wb = xlApp.Workbooks.Open(FPath)

' stuff you want to do with the workbook

wb.Close SaveChanges:=True
xlApp.Quit

Если вы можете добавить ссылку на объектную модель Excel в свой проект Catia VBA (не уверен в этом), вы можете закомментировать строки с поздней привязкой и вместо этого использовать строки с ранней привязкой. Таким образом вы получите очень полезный IntelliSense для объектов Excel. Это значительно упрощает программирование.

  • Remove From My Forums
  • General discussion

  • Hi, powerful experts!

    I have a problem on a personal matter.

    I’m coding the project using by VSTO, VB.Net.

    The project is the excel spreadsheet code behind document.

    The code is to search about the 20000 cells and to get all different values.

    I completed the code, but I’ve encounted the error running.

    The error is following.

    System.Runtime.InteropServices.COMException   {«The message filter indicated that the application is busy.

          (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))»} 

    ErrorCode: -2147417846

    Message: «The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))»

    If anyone know to resolve this error, please answer.

    Best Regards.

    Jinjinfuture

  1. На главную

  2. How

  3. как решить Фильтр сообщений указал, что приложение занято. (Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
  • 2023
  • Редактор:
    Christopher Sullivan |
    Написать мне


Я получаю следующее исключение для кода .

Сообщение об исключении: Фильтр сообщений показал, что приложение занято. (Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

Ранее я не получал эту ошибку в этом блоке кода. Раньше все работало отлично. Кто-нибудь может помочь?

  • 1 В этой ветке есть ценная информационная ссылка. У меня была аналогичная проблема, и добавление сна помогло.

В итоге я удалил:


И это сработало … !!!

  • из любопытства — вы пытались поменять строчки местами? Таким образом, вы делаете приложение видимым ПОСЛЕ открытия презентации …
  • @ Ахмедильяс: я этого не пробовал. Однако, как я уже сказал, раньше работал тот же код.
  • 8 Офисное приложение (powerpoint) может просто показывать какое-то сообщение (например, сообщение о повторной активации, новости или любое другое сообщение, которое оно может показывать при запуске) и ждет, когда вы нажмете на него .. «DisplayAlerts = «Нет» не блокирует их. Иногда это является причиной этой ошибки. Попробуйте просто запустить PowerPoint вручную, чтобы проверить, не появляется ли всплывающее сообщение при запуске.
  • 1 Как бы то ни было, я также обнаружил, что мне не удалось получить COM-объект при выполнении моего процесса как запланированной задачи. Однако запуск его как стандартного приложения, похоже, помог.

Я работаю над аналогичной проблемой (управление Excel через PowerShell) и хотел добавить, что — в способе, которым я не могу начать объяснять — аналог предложения @Milind Anantwar заставил мой скрипт начать работать.

Подробнее, если они помогут:

  • В моем случае при локальном запуске все работало нормально. Я начал видеть

    Приложение занято

    исключение только тогда, когда я перешел к выполнению через Azure Hybrid Worker Runner.

  • Что касается следующего фрагмента, я видел исключение после строка 2, но удаление строки 2 «устранило» проблему:

    
    
  • Я видел исключение, когда было установлено на .

  • Я только что столкнулся с той же проблемой, что и OP, использующий Perl-модуль Win32 :: OLE для чтения файлов Excel. В примере, над которым я работал, была строка . Комментируя это, я решил проблему.

Проверьте свой диспетчер задач; у вас может быть потерянный экземпляр приложения из сеанса отладки. Убейте его и попробуйте еще раз. Так было со мной раньше.

Detailed Error Information

RPC_E_SERVERCALL_RETRYLATER[1]

Message The message filter indicated that the application is busy.
Declared in winerror.h

HRESULT analysis[2]

Flags Severity Failure
Reserved (R) false
Origin Microsoft
NTSTATUS false
Reserved (X) false
Facility Code 1 (0x001)
Name FACILITY_RPC[2][1]
Description The source of the error code is an RPC subsystem.[2][1]
Error Code 266 (0x010a)

Questions

how to resolve The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

PowerPoint.Application PowerPoint_App; PowerPoint_App = new PowerPoint.ApplicationClass(); PowerPoint_App.DisplayAlerts = PowerPoint.PpAlertLevel.ppAlertsNone; PowerPoint.Presentation presentation; presentation = null; try { PowerPoint_App.Visible = MsoTriState.msoTrue; presentation = PowerPoint_App.Presentations.Open(strPptFilePath, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse, Microsoft.Office.Core.MsoTriState.msoFalse); PowerPoint.Slide tempSlide = null; int totalSlides = presentation.Slides.Count; int slideNo = 0; I am getting the below exception on PowerPoint_App.Presentations.Open code. > Exception Message: The […] read more

Using Interop Library for Web Server Side Excel Creation

I am trying to create excel files using interop library, but below is the error I get: Creating an instance of the COM component with CLSID {00024500-0000-0000- C000-000000000046} from the IClassFactory failed due to the following error: 8001010a The message filter indicated that the application is busy. (Exception from HRESULT: […] read more

System.UnauthorizedAccessException only using multithreading

I wrote a code to parse some Web tables. I get some web tables into an IHTMLElementCollection using Internet Explorer with this code: TabWeb = IE.document.getelementsbytagname(«table») Then I use a sub who gets an object containing the IHTMLElementCollection and some other data: Private Sub TblParsing(ByVal ArrVal() As Object) Dim WTab […] read more

DCOM Config settings for Microsoft Interop Word Automation

I am using Microsoft Office Interop Word to generate documents using C#. In order for the document generation to work, there should be an entry for the «Microsoft Office Word 97 — 2003 Document» under the Dcom Config Settings as shown below: enter image description here [https://i.stack.imgur.com/fDrld.jpg] The Local Path […] read more

Why parallelized code will not write in an Excel spreadsheet?

Writing many worksheets in an Excel spreadsheet can take a while. Parallelizing it would be helpful. This code works well, it makes an Excel spreadsheet pop on the screen with four worksheets named Sheet1,1, 2, and 3. open Microsoft.Office.Interop.Excel open FSharp.Collections.ParallelSeq let backtestWorksheets = [1..3] let app = new ApplicationClass(Visible […] read more

Processing large Excel files using multiple threads

I am using c# VSTO and Interop lib for developing excel add-in. for validating each cell’s value before pasting these values into another workbook with formatting. My actual query is to process, (in fastest possible way) cells with some criteria. I have used WorkSheet.Cells.SpecialCells() for getting Excel.Range objects of my […] read more

Windows Anniversary Update (1607) & ComException

I have an application (C#) which uses ComInterop to manipulate and print documents from a 3rd Party App (Corel Draw x8). After Updating to Windows 1607 (Anniversary Update), things stop working immediately with creating my object (cdr = new CorelDRAW.Application();), or with the next line (hiding CorelDraw’s window) with an […] read more

Excel file operations using interop in multithreaded C# application fails

I’ve an application that automates some file related jobs. Every job is executed inside separate threads. One kind of job is exporting an Excel file to HTML format. I use Microsoft.Office.Interop.Excel namespace for this purpose. My application was working fine under Windows Server 2008 environment but we upgraded our server […] read more

Excel Interop Apply Chart Template

Problem Overview: I am automating the report generation (excel) for a customer using C# with «native» excel support (microsoft.office.interop.excel) and the EPPlus library. My customer is not very flexible about charts design so my charts must have the exact same style as theirs. No problem, i exported their chart templates […] read more

«Cannot find file» error during T4 template compilation

I’ve customized a T4 template in Visual Studio 2012, and while building I’m getting the following error message: Error 54 Running transformation: System.Runtime.InteropServices.COMException (0x80004005): Cannot find file «E:xxxyyyzzzSqliteSqliteUser.cs». Server stack trace: at EnvDTE.ProjectItems.AddFromFile(String FileName) at Microsoft.VisualStudio.TextTemplatingEC6A2B3A41C616DAF7A733C5085314E2C3F5CE23DBE80E719FD33995883D5E510F37A17C37D9079D1256CDE20C927D612B6A821F33CC97A0D9F806591BA9D314.GeneratedTextTransformation.EntityFrameworkTemplateFileManager.VsEntityFrameworkTemplateFileManager.ProjectSync(ProjectItem templateProjectItem, IEnumerable`1 keepFileNames) at Microsoft.VisualStudio.TextTemplatingEC6A2B3A41C616DAF7A733C5085314E2C3F5CE23DBE80E719FD33995883D5E510F37A17C37D9079D1256CDE20C927D612B6A821F33CC97A0D9F806591BA9D314.GeneratedTextTransformation.EntityFrameworkTemplateFileManager.VsEntityFrameworkTemplateFileManager.<.ctor>b__6a(IEnumerable`1 keepFileNames) at System.Runtime.Remoting.Messaging.StackBuilderSink._PrivateProcessMessage(IntPtr md, Object[] args, Object server, Object[]& […] read more

Trapping COM exception in F#

I have some F# code that calls a method on a COM Automation object. Sometimes that COM object throws an exception. I tried wrapping the calls to the COM object in a try…with block: try do some COM stuff with _ -> Printf.printf «got an exnrn» But the exception-handling code […] read more

Excel DNA resize return array vertically

I am trying to return dynamic array with help of Excel-DNA api. I am able to produce desired output. But I want to produce output in vertical . here is the c# code for my UDF. i have used this link for producing my sample. http://excel-dna.net/2011/01/30/resizing-excel-udf-result-arrays/ Below code produces this […] read more

Exception for powerpoint Interop while reading slides

I have a block of code which reads powerpoint slides and creates xml for them.Everything is working fine on my local machine.but on server,when second slide is read.I Get the exception: EXCEPTION:The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)) for Powerpoint Interop Function Throwing […] read more

VSTO Cancel Workbook Open event by sending Keystroke

When a large file (lets say a csv file greater than 50MB) is opened in Microsoft Excel, it opens with a little progress bar in the bottom right corner of the screen and it says «Press ESC to cancel». If you press the ESC key while the file is opening, […] read more

Error:-(Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

I am getting the following error while debugging my Windows Form Application for generating an excel sheet: Application is Busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)). I have gone thoroughly through the code and have not found any errors. An internet search suggests the problem is in Microsoft.Office.Interop.dll. How can I […] read more

Get all projects fron solution throws error

I am in debugging, I got the reference to current solution as DTE2. (as from «adabyron») I often got the following error when I tried foreach loop on vsSolution.Projects: > The message filter indicated that the application is busy. (Exception from > HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)) Click continue, I can still […] read more

Can sort the Excel tables in multi-thread?

My codes as follow: Parallel.ForEach(listSheets, (xlWorkSheet1) => { // Excel.Worksheet xlWorkSheet1 = (Excel.Worksheet)excelbk.Worksheets[«Sheet1»]; xlRange = (Excel.Range)xlWorkSheet1.Cells[xlWorkSheet1.Rows.Count, 1]; lock (xlRange) { // nRows = (long)xlRange.get_End(Excel.XlDirection.xlUp).Row; nRows = xlWorkSheet1.UsedRange.Cells.Rows.Count; xlRange = (Excel.Range)xlWorkSheet1.Rows[«5:» + nRows, Type.Missing]; xlRange.Sort(xlRange.Columns[clnum1, Type.Missing], Excel.XlSortOrder.xlAscending, xlRange.Columns[clnum2, Type.Missing], Type.Missing, Excel.XlSortOrder.xlAscending, Type.Missing, Excel.XlSortOrder.xlAscending, Excel.XlYesNoGuess.xlNo, Type.Missing, Type.Missing, Excel.XlSortOrientation.xlSortColumns, Excel.XlSortMethod.xlStroke, Excel.XlSortDataOption.xlSortTextAsNumbers, Excel.XlSortDataOption.xlSortNormal, Excel.XlSortDataOption.xlSortNormal); […] read more

RPC_E_SERVERCALL_RETRYLATER during powershell automation

I’m using PowersHell to automate iTunes but find the error handling / waiting for com objects handling to be less than optimal. Example code #Cause an RPC error $iTunes = New-Object -ComObject iTunes.Application $LibrarySource = $iTunes.LibrarySource # Get «playlist» objects for main sections foreach ($PList in $LibrarySource.Playlists) { if($Plist.name -eq […] read more

GetIDsOfNames always fails with RPC_E_SERVERCALL_RETRYLATER for getting a property ID in Photoshop

I wrote the following C++ code, trying to perform some OLE automation tasks for currently-running Photoshop: IUnknown* unk = NULL; IDispatch* disp = NULL; CLSID clsId; if (FAILED(CLSIDFromProgID(L»Photoshop.Application», &clsId))) goto err; puts(«CLSIDFromProgID succeeded»); if (FAILED(GetActiveObject(&clsId, NULL, &unk))) goto err; puts(«GetActiveObject succeeded»); if (FAILED(IUnknown_QueryInterface(unk, &IID_IDispatch, (void**)&disp))) goto err; puts(«QueryInterface succeeded»); DISPID […] read more

How to reliably add projects to solution programmatically

The key word here is «reliably». When I create solution and add few projects I will get an exception: Unhandled Exception: System.Runtime.InteropServices.COMException: The message filter indicated that the application is busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)) at EnvDTE.Project.get_Object() As ugly hack I added Thread.Sleep to avoid timeouts and this works, […] read more

In Excel Interop.Excel why would PivotField.ShowDetail = false throws exception?

I have a code which tries to Collapse Entire Field. At the very beginning of the foreach loop (with Worksheet), it crashes stating > Exception thrown: ‘System.Runtime.InteropServices.COMException’ in > CSVDiffUtility.exe > > Additional information: The message filter indicated that the application is > busy. (Exception from HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)) Did […] read more

Excel automation in windows service

I just finished with excel automation on my windows console application and it works. Now i want to move it to windows service, but i faced an error, which dont kno how to solve. When i run my application i get this error in my log file: System.Runtime.InteropServices.COMException (0x8001010A): The […] read more

Starting a new Outlook 2007 Message from C# .NET

I’m looking for the most barebones complete example, to launch Outlook 2007 with a new message started via C# .NET (I happen to be using VS2008 .NET 3.0) Here’s what I’m trying: using System; using System.Collections.Generic; using System.Text; using Microsoft.Office.Interop.Outlook; namespace CreateMessage { class Program { static void Main ( […] read more

WMPLib Console app exception on media play

I am not used to using InteropServices but what I am doing is using WMPLib to play songs from a console application. The application works as expected when I debug it from Visual Studio. But it crashes and gives me the following exception: Unhandled Exception: System.Runtime.InteropServices.COMException: The message filter indicated […] read more

Exporting Data to Word Doc using IIS on Windows Server 2008 R2 fails

> Creating an instance of the COM component with CLSID > {00020906-0000-0000-C000-000000000046} from the IClassFactory failed due to > the following error: 8001010a The message filter indicated that the > application is busy. (Exception from HRESULT: 0x8001010A > (RPC_E_SERVERCALL_RETRYLATER)). I get the above error message on my Windows 2008 Server […] read more

Trying fetch data from word document?

i am trying fetch data from word document using string Mainer(string pathfile) { Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); object miss = System.Reflection.Missing.Value; object path = pathfile; object readOnly = true; Microsoft.Office.Interop.Word.Document docs = word.Documents.Open(ref path, ref miss, ref readOnly, ref miss, ref miss, ref miss, ref miss, ref miss, ref […] read more

The message filter indicated that the application is busy

When I try to read content of word doc by oWordDoc.Content, It throws exception: > The message filter indicated that the application is busy. (Exception from > HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)) I tried OApplication.Visible = false, It also did not work. read more

Error automating Word on Test Server

I am trying to open a Word document from a .Net web application. The code (in brief) contains … using Word = Microsoft.Office.Interop.Word; using System.Reflection; and, the code that actually creates the document includes: object oMissing = System.Reflection.Missing.Value; object oEndOfDoc = «endofdoc»; // endofdoc is a predefined bookmark object oTemplate […] read more

Running Word from a SharePoint Workflow

based on Join MS Word documents I have made a console application that splices multiple word files into one. Now I want to do the same from a Workflow in SharePoint. In short, my code before it fails looks like this: object oMissing = System.Reflection.Missing.Value; Microsoft.Office.Interop.Word.ApplicationClass oWord = new Microsoft.Office.Interop.Word.ApplicationClass(); […] read more

Comments

Leave a comment

Sources

  1. winerror.h from Windows SDK 10.0.14393.0
  2. https://msdn.microsoft.com/en-us/library/cc231198.aspx

User contributions licensed under CC BY-SA 3.0

Перейти к содержимому раздела

Форумы CADUser

Информационный портал для профессионалов в области САПР

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Дерево сообщений Активные темы Темы без ответов

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

#1 3 апреля 2008г. 11:13:02

  • Shavt
  • Восстановленный участник
  • На форуме с 3 апреля 2008г.
  • Сообщений: 7
  • Спасибо: 0

Тема: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Во время импорта блоков из ACAD (посредством COM интерфейса) получаю исключение с описанием: Фильтр сообщений выдал диагностику о занятости приложения. (Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)).
Исключение генерируется в тот момент, когда одновременно с импортом пользователь продолжает работать с чертежом. Подскажите каким образом можно заблокировать чертеж на время импорта или проверять занято приложение или нет

#2 Ответ от Александр Ривилис 3 апреля 2008г. 12:10:39

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,660
  • Спасибо: 157

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

> Shavt
Попробуй:

IAcadApplication.GetAcadState().IsQuiescent

#3 Ответ от Shavt 3 апреля 2008г. 12:28:04

  • Shavt
  • Восстановленный участник
  • На форуме с 3 апреля 2008г.
  • Сообщений: 7
  • Спасибо: 0

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Получается, что эту проверку нужно делать при каждом обращении к ACAD примерно так:

while(!acadApp.GetAcadState().IsQuiescent);
//что то делаем

#4 Ответ от Александр Ривилис 3 апреля 2008г. 14:13:57

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,660
  • Спасибо: 157

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

> Shavt
Это вопрос или утверждение? smile

#5 Ответ от Shavt 4 апреля 2008г. 05:55:11

  • Shavt
  • Восстановленный участник
  • На форуме с 3 апреля 2008г.
  • Сообщений: 7
  • Спасибо: 0

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Это был вопрос :)
Попробовал — работает. Вот только выглядет это
не очень хорошо приложение висит в цикле и ждет
когда освободится ACAD вот если можно было бы както заблокировать чертеж или все приложение ACAD было бы намного лучше.

#6 Ответ от Александр Ривилис 4 апреля 2008г. 07:43:13

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,660
  • Спасибо: 157

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

И пользователю будет очень затруднительно что-нибудь с ним сделать. smile

#7 Ответ от Shavt 4 апреля 2008г. 12:00:59

  • Shavt
  • Восстановленный участник
  • На форуме с 3 апреля 2008г.
  • Сообщений: 7
  • Спасибо: 0

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Сегодня проверил как справляется с задачей импорта/экспорта другая программа, так вот никаких проблем одновременной работы юзера в ACAD и импорта/экспорта блоков небыло. Может я ссылку на блок получаю ни от того объекта от которого следовало ее получать. Я работаю с объектом ModelSpace…

#8 Ответ от Александр Ривилис 4 апреля 2008г. 12:09:48

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,660
  • Спасибо: 157

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Это внешнее .NET-приложение? Если внутреннее, то таких проблем возникать не должно. Если это внешнее приложение, то оно запускает второй AutoCAD или работает с уже запущенным? Если второй, то проблем быть не должно (разве что при попытке работать с одним и тем же чертежом). Ну а если с запущенным, то это (IMHO) глупость давать возможность работать с AutoCAD одновременно и своему приложению и пользователю.

#9 Ответ от Shavt 4 апреля 2008г. 13:11:24

  • Shavt
  • Восстановленный участник
  • На форуме с 3 апреля 2008г.
  • Сообщений: 7
  • Спасибо: 0

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Оба приложения внешнии. То которое я сегодня тестировал и которое работало без проблем не .NET-приложение. Мое приложение .NET. Оба подключаются к уже запущенному AutoCAD. На счет глупости я не знаю, но факт остается фактом неуправляемое приложение работает параллельно даже в том случае если пользователь работает с AutoCAD..Net приложение без проверки IAcadApplication.GetAcadState().IsQuiescent сразу же генерирует исключение, а с проверкой состояния крутится в цикле while(!acadApp.GetAcadState().IsQuiescent) до тех пор пока пользователь не завершит какое либо действие, вот и возникает вопрос:  можно ли работать с блоками AutoCAD как нибудь иначе нежели через ModelSpace

#10 Ответ от Александр Ривилис 4 апреля 2008г. 13:35:42

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,660
  • Спасибо: 157

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

> Shavt
Что такое «работать с блоками»? И что ты понимаешь под блоками (AcadBlock или  AcadBlockReference)?

#11 Ответ от Shavt 4 апреля 2008г. 13:40:44

  • Shavt
  • Восстановленный участник
  • На форуме с 3 апреля 2008г.
  • Сообщений: 7
  • Спасибо: 0

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Работаю через AcadBlockReference. Получив ссылку на блок получаю ссылку на коллекцию его атрибутов. Из этих атрибутов получаю уже нужную мне информацию

#12 Ответ от Александр Ривилис 4 апреля 2008г. 14:21:52

  • Александр Ривилис
  • Александр Ривилис
  • Активный участник
  • Откуда: Украина / Киев
  • На форуме с 15 апреля 2005г.
  • Сообщений: 8,660
  • Спасибо: 157

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

> Shavt
Попробуй окаймить свой код такой парой:

acadDoc.Utility.SendModelessOperationStart("OP");
//
// Код
//
acadDoc.Utility.SendModelessOperationEnd("OP");

Не уверен, но возможно поможет.

#13 Ответ от Shavt 5 апреля 2008г. 08:52:34

  • Shavt
  • Восстановленный участник
  • На форуме с 3 апреля 2008г.
  • Сообщений: 7
  • Спасибо: 0

Re: Ошибка: Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER)

Не помогло… :(
Вариант с ожиданием момента когда AutoCAD перейдет в состоянии idle тоже неплох, но во время экспорта если сильно часто щелкать левой кнопкой мыши по листу чертежа, имитируя процесс выделения его фрагментов, приложение стабильно где-нибудь(имеется ввиду в цикле где происходит непосредственная работа с AutoCAD) да загнется, хотя каждое обращение по ссылке предваряется проверкой например:

while(!app.GetAcadState().IsQuiescent);
ar.TextString = value;
//где ar есть AcadAttributeReference

При импорте, после того как ввел проверки состояния AutoCAD (см. выше), ошибок не наблюдалось хоть защелкайся по листу.
Наверное в конечном итоге остановлюсь на варианте

Сообщения 13

Тему читают: 1 гость

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

   СЕсин

08.01.13 — 17:24

Всем привет! Печ. форма формируется через Word. Открывается файл Word, там делаются замены после чего он сохраняется. Все отлично работало, пока не перенес базу на SQL.

Причем, если на этом сервере развернуть эту же базу в файловом варианте — все работает. А на SQL — нет.

Пробовал давать какие-угодно права пользователю, от имени которого запускается Агент сервера. Запускал его и под встроенной учеткой и под админом… нифига.

Вот фрагмент кода, который перестает работать на SQL:

Word = Новый COMОбъект(«Word.Application»);

Word.Visible = 0;

Документ = Word.Documents.Open(ИмяФайлаШаблона);    

Fnd = Word.ActiveDocument.Range().Find;

Fnd.ClearFormatting();

Fnd.Forward = -1;

Выдает ошибку: «{ВнешняяОбработка.ФормированиеПоШаблону.МодульОбъекта(379)}: Ошибка при получении значения атрибута контекста (ActiveDocument)

   Fnd = Word.ActiveDocument.Range().Find;

по причине:

Произошла исключительная ситуация (Microsoft Word): Данная команда недоступна, так как не открыт ни один документ.»

Пожалуйста, помогите разобраться в чем дело.

   zladenuw

1 — 08.01.13 — 17:28

ну а путь к файлу у тебя какой? файл сам где лежит?

   Vladal

2 — 08.01.13 — 17:29

Сам Word установлен?

Что выдаст ПолучитьCOMОбъект(«», «Word.Application»)

или ПолучитьCOMОбъект(«d:temptemp.docx»)

   Vladal

3 — 08.01.13 — 17:29

ИмяФайлаШаблона — существует ли файл по этому пути, и доступен ли?

   СЕсин

4 — 08.01.13 — 17:30

Сначала делал так:

ИмяФайлаШаблона = КаталогВременныхФайлов() + «ШаблонДоговора.docx»;

Потом переделал жестко:

ИмяФайлаШаблона = «C:UsersPublicDocuments» + «ШаблонДоговора.docx»;

Но не помогло.

   СЕсин

5 — 08.01.13 — 17:31

Да, Word установлен. Если в файловом варианте развернуть, все работает, документ отлично формируется и открывается.

   Vladal

6 — 08.01.13 — 17:32

Ответь на (2)

   Vladal

7 — 08.01.13 — 17:32

Только выполни на сервере

   Vladal

8 — 08.01.13 — 17:33

Кода запускаешь файловую базу, доступны ком-обхекты локальной системы. Если сервер 1С находится на другой машине, откуда ему знать про «C:UsersPublicDocuments» терминального сервера или локальной машины?

   СЕсин

9 — 08.01.13 — 17:38

Разумеется, я сто раз проверил существование файла, все права на него и все такое. В разные места его клал, админские права раздавал.

Запускаю я все на одном и том же сервере. И Word и 1C установлены на той машине, на которой я работаю.

Насчет (2): в первом случае результат тот же — «ни открыт ни один документ», во втором случае другая ошибка: «{ВнешняяОбработка.ФормированиеПоШаблону.МодульОбъекта(374)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)

   Word = ПолучитьCOMОбъект(ИмяФайлаШаблона);

по причине:

Ошибка получения объекта COM: Фильтр сообщений выдал диагностику о занятости приложения.»

   Vladal

10 — 08.01.13 — 17:40

У тебя и сервер 1С на той же машине стоит?

   zladenuw

11 — 08.01.13 — 17:41

может как вариант повис на сервере COMОбъект Ворда. посмотри в процессах.

   СЕсин

12 — 08.01.13 — 17:46

Vladal, Да, я когда разбирался с проблемой, установил все на одну машину. Сервер 1С, SQL и Word. На ней и разбираюсь.

zladenuw, ты прав. Там висела целая пачка процессов Word. Я их выбил, но теперь другая ошибка:

{ВнешняяОбработка.ФормированиеПоШаблону.МодульОбъекта(374)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)

   Word = ПолучитьCOMОбъект(ИмяФайлаШаблона);

по причине:

Ошибка получения объекта COM: Операция прервана

   Vladal

13 — 08.01.13 — 17:52

(12) Значит что-то из дочерних процессов может висеть и блокировать.

Скорее всего, он ответил на твой последний запрос com-объекта, что его прервали. Повтори через время или для верности перегрузи компьютер.

   СЕсин

14 — 08.01.13 — 17:55

Я с проблемой второй день бьюсь и не раз перезагружал и даже переустанавливал платформу.

Если использовать «Word = Новый COMОбъект(«Word.Application»);», то COM объект создается. Т.е. по идее с СОМ все в порядке.

Для полной ясности скажу что стоит:

Платформа 8.2.17.153.

Сервер 1С — х64

Сервер SQL — 2012

Печатная форма для УТ 11. Хотя непонятно, какое это все имеет отношение к COM объекту… Короче, танцы с бубном продолжаются, спасибо за участие!

   Pashkaa

15 — 08.01.13 — 21:51

Если танцы с бубном не помогут, есть вариант без ворда если у тебя простая замена по тексту на нужные значения.

Переименовываешь файл docx в zip, извлекаешь в папку, находишь в подпапках файл с данными в формате xml, производишь в нем замены и назад выполняешь упаковку и переименование.

   СЕсин

16 — 09.01.13 — 00:56

Pashkaa, это всем бубнам бубен ))) Я уж лучше на файловой версии все оставлю, чем так. Думаю, решение рано или поздно найдется. Буду с разными платформами экспериментировать. Вряд ли я единственный пытаюсь документ Word сформировать из базы 1С на SQL. А судя по тому, что в поиске ничего подобного нет, то ситуация не популярная и легко все может заработать на другой системе или конфигурации. Такие мысли у меня.

   hhhh

17 — 09.01.13 — 01:58

(16) напиши сетевую папку. Диск С: лучше не писать. Там есть такая фигня в правах как передача прав подчиненным папкам. Наследование.

То есть если ваш админ для диска С: задал неполные права твоему пользователю, то хоть ты застрелись, но хотя и будешь «давать какие-угодно права пользователю» на папку C:UsersPublicDocuments всё равно приоритет у прав на диск С:, которые и применятся.

   sapphire

18 — 09.01.13 — 03:52

(4) Посмотри пути.

Выполняется наверняка на сервере, значит далеко не факт, что у учетки запуска rphost-a есть права на путь-файл.

   СЕсин

19 — 11.01.13 — 02:35

Разобрался. Кто бы мог подумать… Как я уже писал, это УТ 11 — т.е. управляемые формы. Перенес выполнение всех операций с объектом «Word = Новый COMОбъект(«Word.Application»)» с сервера на клиент — все заработало. Не спешите кидать тухлыми помидорами типа «конечно, Word не откроется на стороне сервера». Но раньше-то как-то открывался. Именно это меня и пустило по ложному следу. Выходит, доступность методов COM объектов на файловом сервере и SQL — разная.

Какой я сделал вывод:

Что касается конкретно метода Word.Documents.Open — если база файл-серверная, методу все равно где выполняться, на клиенте или на сервере. Документ открывается и показывается ни смотря ни на что. Но когда я перешел на SQL, метод ошибки выдавать не стал и внешне отрабатывает как я писал выше. Но если выполняется на стороне сервера — ничего не открывает и дальнейшее обращение к документу дает ошибку, а на стороне клиента — открывает.

   МихаилМ

20 — 11.01.13 — 07:43

сколько можно на эти грабли наступать.

http://infostart.ru/public/165910/

   СЕсин

21 — 11.01.13 — 10:32

МихаилМ, по-моему не совсем по теме. Сом объект-то создается и остальные методы у него работают. Вы читали ветку или только последнее сообщение?

Сколько можно на эти грабли наступать… Сейчас-то конечно все сразу умные станут. )) Что раньше молчали? Давайте без этого.

   НЕА123

22 — 11.01.13 — 10:47

(21)

из (9)>Разумеется, я сто раз проверил существование файла, все права на него и все такое. В разные места его клал, админские права раздавал.

не стыкуется с (19)

  

СЕсин

23 — 11.01.13 — 11:08

Чем же не стыкуется? В (9) я мудрил с самим файлом, а в (19) перенес выполнение кода с сервера на клиент. Короче, флуд пошел…

По сути, такое сообщение:

  • Ошибка при вызове конструктора (COMОбъект): Интерфейс не поддерживается.

Как и другие подобные сообщения:

  • «Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Класс не зарегистрирован»
  • «Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: Сервер RPC недоступен»

Возникает в следующих случаях:

У службы «Запуск серверных процессов DCOM» тип запуска должен быть «Авто». (После изменения этой настройки, перезагрузите компьютер).

Если служба «Агент сервера 1С:Предприятия 8.2 / 8.3» запускается от имени специального пользователя, то у него должны быть права на запуск компоненты «Приложение Microsoft Excel»

Служба «Агент сервера 1С:Предприятия 8.2» не должна запускаться от имени пользователя с ограниченными правами, у него должны быть права на запуск компоненты «Приложение Microsoft Excel».

1С предприятие установлено в 64-битном варианте, а Excel — в 32-битном. Может помочь установка 1С в 32-битном варианте или наоборот.

У службы «Запуск серверных процессов DCOM» тип запуска необходимо установить в «Авто».

Повреждён установленный пакет MS Office. Переустановите.

Источник

ПолучитьCOMОбъект не работает на сервере.

При использование ПолучитьCOMОбъект() на файловой базе прекрасно работает, при запуске на серверной базе выдает ошибку

<Документ.ИсходящиеПисьма.Форма.ФормаДокумента.Форма(571)>: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147467259(0x80004005): Неопознанная ошибка

Windows 2008 R2, MS SQL 2008, 1c 8.3.4.437. Агент запускается от пользователя USR1CV который имеет права администратора. Установлен MS office 2010.
Если использовать:

Файл = Новый Файл(ВремФайл);
Файл.Удалить();

Не находить процедуру Удалить().

Видимо дело в правах и доступе, но не пойму, где забыл открыть доступ.

ОболочкаActiveDocument.Записать (ActiveDocumentShell.Write)
ОболочкаActiveDocument (ActiveDocumentShell)
Записать (Write)
Синтаксис:

Тип: Строка.
Имя файла, в который необходимо записать Active document. Если файл существует, он будет перезаписан, иначе — создан.
Описание:

Записывает Active document в файл.

(16) tiz7, Воспользуйтесь другой функцией работы с COM объектом
О = Новый COMОбъект()
O.Open
.

И второе вынесете код работы с COM объектом во внешний модуль

Если работа идёт в режиме управляемых форм, то перед началом функции, которая вызывает ПолучитьCOMОбъект() должно стоять НаСервере.

Файл = Новый Файл(ВремФайл);
Файл.Удалить();

Такой файл удалить нельзя, так как он не сохранён. Его можно только Файл.Закрыть();

Часть кода.
&НаСервере
Функция ПолучитьМакетНаСервереИП()
ВремФайл = ПолучитьИмяВременногоФайла(«doc»);
Попытка
КомОбъект = ПолучитьCOMОбъект(ВремФайл);
Исключение
Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
Сообщить(«Ошибка создания»);
Возврат неопределено;
КонецПопытки;
//.
КонецФункции

Все это работало до на другом сервере и в серверной базе. Просто видимо забыл про какие то права пользователя(

Да как-бы пофиг. Главное под какой учеткой сервер 1С крутится.
Околосабж:
Я так понял нужно MS Office документы создавать? С моей точки зрения не очень хорошо ставить офисный пакет на сервер БД.
Можно и без офиса документы то создавать, вот вордовский http://infostart.ru/public/16215/ так-же и с экселем легко найти. Лицензия жеж, деньги жеж. Кстати чтение из excel «летаить», если читать драйвером ODBC. и SQL запросы можно ! Ня!

Загружаем данные из Excel

Все работает великолепно. Но сжирает лицензии. После этой обработки уже никто не может зайти в подсистему. Приходится перегружать сервер. Подскажите, как с этим можно бороться?
ЗЫ. Обработка работает 1 раз в неделю. Пользователи могут быть разными.

Источник

Ошибка класса при использовании COM-объекта

Всем добрый день.
Внезапно перестала работать печатная форма — выводившая трудовой договор в документ OpenOffice через COM-объект. Платформа: 8.3.10.2580; Конфигурация: ЗУП Корп – 3.1.3.224. Проявляется и на файловой и на клиент-серверной базе.

Выскакивает в момент вывода ошибка «Класс не зарегистрирован».

Текст ошибки в конфигураторе:
<ВнешняяОбработка.ТрудовойДоговор.Форма.Форма.Форма(204)>: Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147417846(0x8001010A): Фильтр сообщений выдал диагностику о занятости приложения.
Т.е. ошибка при команде » ПолучитьCOMОбъект» (см. ниже код).
Часть кода :
ServiceManager = Новый COMОбъект(«com.sun.star.ServiceManager»);
Desktop = ServiceManager.createInstance(«com.sun.star.frame.Desktop»);
Scr = Новый COMОбъект(«MSScriptControl.ScriptControl»);
Scr.Language=»javascript»;
Scr.Eval(«Args=new Array()»);
Args = Scr.Eval(«Args»);
Scr.AddObject(«ServiceManager», ServiceManager);

ДвоичныеДанныеМакета = ПолучитьИзВременногоХранилища(ПолучитьМакетСКлиента());
ИмяВрем = ПолучитьИмяВременногоФайла(«.odt»);
ДвоичныеДанныеМакета.Записать(ИмяВрем);
// выводим данные
Попытка
OpenOffice = Desktop.LoadComponentFromURL(ПреобразоватьВURL(ИмяВрем), «_blank», 0, Args);
Документ = ПолучитьCOMОбъект(ИмяВрем);
OpenOffice.ReplaceAll(Документ).

Что за ошибка, отчего может быть? Переустановку платформы — пробовали.

Источник

Ошибка при получении списка доменов

Подскажите куда копать не могу получить список доменов.
Вылетает на -> ПолучитьCOMОбъект(«LDAP://RootDSE»);
ошибка следующая:
//<ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(61)>:
//Ошибка при вызове метода контекста (ПолучитьCOMОбъект):
//Ошибка получения объекта COM: -2147023541(0x8007054B):
//Указанный домен не существует или к нему невозможно подключиться.

Win2008 R2 64x
1C8.3

Процедура ПолучитьСписокДоменов ()
КомандаАДО = Новый COMОбъект(«ADODB.Command»);
СоединениеАДО = Новый COMОбъект(«ADODB.Connection»);
СоединениеАДО.Provider = «ADSDSOObject»;
Попытка
СоединениеАДО.Open(«Active Directory Provider»);
Исключение
Сообщить(«Ошибка при открытии Active Directory Provider: » + ОписаниеОшибки());
КонецПопытки;

КомандаАДО.ActiveConnection = СоединениеАДО;
//Получаем имя домена к которому принадлежит данный компьютер
Попытка
RootDSE = ПолучитьCOMОбъект(«LDAP://RootDSE»);
//Валится после данного запроса
//=================================================================
//<ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(61)>:
//Ошибка при вызове метода контекста (ПолучитьCOMОбъект):
//Ошибка получения объекта COM: -2147023541(0x8007054B):
//Указанный домен не существует или к нему невозможно подключиться.
//=================================================================
Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;

(1) или, например, пользоваться поиском в гугле. Или, хотя бы, по форуму:

Источник

Содержание

  1. Ошибка «-2147467262(0х80004002) Интерфейс не поддерживается» при выводе печатных шаблонов WORD в тонком и веб-клиенте
  2. Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается
  3. Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается
  4. Особенности
  5. Устранение:
  6. Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае
  7. Заключение
  8. Ошибка при вызове конструктора (COMОбъект) ; по причине: Интерфейс не поддерживается
  9. Ошибка — 2147467262: Интерфейс не поддерживается — как исправить?
  10. Причины возникновения ошибки в Windows
  11. Ошибка 2147467262 в Windows — что делать
  12. Восстановление системных файлов
  13. Утилита Windows Fix
  14. Другие способы решения ошибки

Ошибка «-2147467262(0х80004002) Интерфейс не поддерживается» при выводе печатных шаблонов WORD в тонком и веб-клиенте

Сложности в процессе решения:

Согласно инструкции разработчиков, по словам ошибки «интерфейс не поддерживается» проделали следующее:

1. Пользователю USR1CV82, от имени которого запускается сервер 1С, дать права на запуск DCOM MicrosoftWord и DCOM Microsoft Excel (при необходимости).

Для этого нужно:

1.1. Запустить службу компонентов. Из командной строки набрать

mmccomexp.msc

и найти компоненту Word или Excel. Пример для Word представлен на рисунке ниже:

При запуске службы компонентов на 64-х разрядной машине, 32-х разрядные компоненты могут не отображаться, тогда запуск нужно осуществить через команду:

C:WINDOWSSysWOW64>mmc comexp.msc /32

1.2. Открыть свойства компоненты и перейти на закладку Безопасность.

1.3. В разделе Разрешения на запуск выбрать пункт Настроить и нажать кнопку Изменить. Добавить пользователя USR1CV82.

Не помогло, база выдавала ошибку: Данная команда недоступна, так как не открыт ни один документ.

В ходе работ закончилась лицензия на MS Office, и в конфигурации после создания COM-объекта «Word.Application» на каждом шаге в отладке ОС запускает процесс завершения установки и активации MS Office. Клиент купил лицензию для сервера на MS Office.

После установки лицензий вернулась ошибка -2147467262(0х80004002) Интерфейс не поддерживается.

По словам разработчиков, перевод обработки Word на клиента не решит проблему. Судя по предоставленным нами логам — ошибка возникает в режиме веб-клиента. В этом режиме программная обработка Word на клиенте не возможна, только серверная обработка.

Но для работы базы необходимо было решить данную проблему. Мы вернули все изменения, которые сделали по инструкции разработчика. Долго прорабатывали доступы к папкам временного хранилища для пользователей извне. Создали еще одного администратора без пользовательских настроек, для него заново настраивали IIS.

Настроили работу сервера через Apache. Создали папку, в которой находятся редактируемые шаблоны Word, дали общий доступ к этой папке, для пользователя IUSR и группы пользователей IIS_users.

На Windows Server 2012 (64 разрядности) установлен Word 2013 (32 разрядности), а у пользователей установлен Adobe Reader. Шаблон договора заполняется в 1С на сервере и конвертируется в PDF, сохраняется во временную папку на сервере.

Мы переписали обработку, чтобы документ сохранился в формат PDF (по требованию клиента для запрета редактирования, изменения документа) и сохранялся во временное хранилище 1С. Из хранилища документ/файл передается на указанный нами путь (во временные папки у клиента), как для тонкого клиента, так и для веб-клиента. Открывается файл именно из этой временной папки. Ниже пример кода, который мы дописали для передачи файла с сервера на клиент.

&НаКлиенте
Попытка
ЗапуститьПриложение(ПолноеИмяФайлаНаКлиенте);
Исключение
Адрес = УПН_ОбщиеПроцедуры.ПолучитьФайл(ПолноеИмяФайлаНаКлиенте);
Описание = Новый ОписаниеПередаваемогоФайла(«C:doc» + ДанныеФайла.ИмяФайла,Адрес);
МассивОписаний=Новый Массив;
МассивОписаний.Добавить(Описание);
ПолучитьФайлы(МассивОписаний. Ложь);
ЗапуститьПриложение(«C:doc» + ДанныеФайла.ИмяФайла);
КонецПопытки;

В настроках Панель управления, далее путь: Администрирование->Управление групповой политикой->Домены – выбираем наш сервер и во вкладке «Делегирование» добавляем группу IIS_users и пользователя IUSR (через которого подключаются внешние пользователи).

В веб-клиенте после отправки документа на печать браузе попросит установить расширение. Нужно установить, и все заработает:

Предпочтительнее использовать Internet Explorer (IE) не ниже 8 версии. При использовании Google Chrome (гугл хром) возникает ошибка: Использование модальных окон в данном режиме запрещено.

Если Internet Explorer не запускает документ на печать, можно принудительно запустить браузер от имени администратора:

В тонком клиенте сразу открывается заполненный шаблон (на примере ниже стерты данные клиента). Форма открывается в формате PDF по требованию клиента, чтобы пользователь не мог редактировать документ перед печатью.

Источник

Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается

Ошибка при вызове конструктора (COMObject) по причине: Интерфейс не поддерживается

Ошибка происходит при попытке загрузить из Excel в 1С, когда код обработчика выполняется не на клиенте, а на сервере и в большинстве случаев текст ошибки говорит об отсутствии прав у пользователя сервера 1С.

Особенности

Кодом со стороны 1С без изменения места исполнения не устраняется, использование других функций подключения Com также не дает положительных результатов.

Убедиться в причине ошибки возможно, если посмотреть логи системы.

Устранение:

  • на сервере убиваем excel (taskkill /im excel.exe /f)
  • открываем оснастку «Службы компонентов» (Пуск->Администрирование->Службы компонентов)
  • в ней раскрываем ветку Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM
  • справа в списке находим Microsoft Excel Application, открываем Свойства, вкладка Удостоверение, выбираем пользователя с администраторскими правами, ОК.

Может оказаться, что «Microsoft Excel Application» отсутствует в списке, в данном случае

  1. Запускаем REGEDIT
  2. Открываем ветку ComputerHKEY_CLASSES_ROOTAppIDEXCEL.EXE, если ее нет, то создаем
  3. Создаем в ней строковый параметр AppID =
  4. Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.
  5. После этого в Component Services должен появиться «Microsoft Excel Application»

Чтобы решить эту проблему, я включил пользователя USRV82, под которым запускается сервер приложений 1С Предприятия 8.3, в группу Distributed COM Users, но ошибка сразу не ушла, потребовалась перезагрузка.

Осложняло проблему то, что ошибка плавала: периодически выходила, либо в момент создания объекта, либо уже в момент вызова методов excel-application.

Так что нельзя однозначно сказать, что же решило проблему.

Заключение

В большинстве случаев уйти от дополнительной настройки операционной системы возможно, если использовать вызова Com-Объекта на клиенте. При правильной установке объектов они работают даже при различных по битности 1с и Excel, OS.

В моем же случае клиентские компьютеры работали на Ubuntu, поэтому вся обработка перенесена на сервер.

Бывает такое: вы прописываете для компонента пользователя и пароль.

Затем через некоторое время меняете пароль и компонент перестает работать: выходит такая же ошибка «Интерфейс не поддерживается». Следует просто вбить новый пароль.

Реклама — виновница того, что народ выбрал себе в вожди Гитлера. Реклама призвана убеждать граждан, что ситуация нормальна, когда она катастрофически ненормальна.

Источник

Ошибка при вызове конструктора (COMОбъект) ; по причине: Интерфейс не поддерживается

Необходимо сравнить данные в трех базах: УТ 10.3, БП 2.0 и Бух 7.7
Хочу использовать для этого COM-подключение к базам 7.7 и 2.0 из УТ.
Если базы поставить на Win XP, то COM-подключение работает.

Начинается лето и некоторое время я хотел поработать на даче. Перенес базы на ноутбук с Win 8.1. Отдельно все базы доступны и с ними можно делать что угодно. Но COM-подключение не работает

Выдается ошибка:
Ошибка при вызове конструктора (COMОбъект)
БазаОлеТек= Новый COMОбъект(«V77.Application»);
по причине:
-2147467262(0x80004002): Интерфейс не поддерживается

Что можно (нужно) сделать чтобы все-таки COM-подключение заработало ?

Платформа 7.7 устанавливалась копированием.
Для УТ и БП использовалась платформа 8.2 и 8.3

Цитата
Платформа 7.7 устанавливалась копированием

Геннадий Новосибрск пишет:

Цитата
Платформа 7.7 устанавливалась копированием

Я впервые слышу об установке копированием.
Почему бы не установить штатно ?

Геннадий Новосибрск , На Win 8 (а также и на Win 7) штатно не устанавливается
Почитайте об этом в интернете

Рисовод , Про «бесплатно» не понятно. Из установочного комплекта 7.7 в Win 8 не устанавливается
Рекомендуют установить платформу на XP, а потом скопировать каталог, в который установлена 7.7, скопировать на компьютер с Win 8.
Так и было сделано. Отдельно все базы доступны работают, а COM-подключение не работает.
И причем здесь «бесплатно» ?

Цитата
Геннадий Новосибирск , На Win 8 (а также и на Win 7) штатно не устанавливается
Почитайте об этом в интернете

Как-то странноватенько — задавать один вопрос, под которым закамуфлирован на самом деле — другой, для разгадывания которого отсылать в интернет без конкретных ссылок

Там же в интернете и пишут — что делать. надо было очень постараться, чтобы понять это так, чтобы не работало и не устанавливалось.
Первые 2 самых очевидных способа, среди множества других без установок копированием, которые находятся сразу поиском в интернете:

  • поднять виртуальную машину с Windows XP из под Windows 8.1 и там всё устанавливать без копирования
  • в свойствах файла запуска в разделе Совместимость отметить:
    — запустить программу в режиме совместимости c:
    Windows XP (Пакет Обновления 3)
    — Выполнять эту программу от имени администратора

Источник

Ошибка — 2147467262: Интерфейс не поддерживается — как исправить?

При установке программ, запуск которых доступен из контекстного меню Windows, происходит ошибка — 2147467262 Интерфейс не поддерживается. Как исправить её, вы сможете узнать в этой статье. Такая проблема может появляться на всех версиях ОС Windows. Но чаще она возникает на Windows 7. Будут использованы разные методы устранения. Если не подойдет один — используйте другой.

Причины возникновения ошибки в Windows

Причиной ошибки могут быть сбои системных файлов при установке программного обеспечения. При этом нарушения могли быть уже в системе до установки программ. Появляется сообщение, когда пользователь пытается воспользоваться контекстным меню (нажимая правую кнопку мыши (ПКМ)). Эти симптомы ОС могут говорить о наличии вирусов в компьютере, которые часто нарушают системные файлы.

Ошибка 2147467262 в Windows — что делать

Для начала попробуйте простые действия, которые могут решить большинство временных сбоев в системе. Прежде всего перезагрузите компьютер и попробуйте вызвать ошибку отсутствия поддержки интерфейса. Следующий шаг может помочь определить, с какой программой связано появление ошибки. Нам нужно попытаться загрузиться в «чистую» Windows. Для этого выполните следующие рекомендации:

  1. Нажмите внизу на значок «Пуск» и найдите строку поиска;
  2. В ней нужно ввести словосочетание «Конфигурация системы». Она нам необходима для настройки чистой загрузки ОС;
  3. В результатах найдите пункт «msconfig» и выберите его;
  4. В окне вверху расположены вкладки. Выберите «Общие»;
  5. Затем уберите галочку с пункта «Обычная загрузка» и переместите её на «Выборочная загрузка»;

  • В этом разделе уберите галочку с пункта «Загружать элементы автозагрузки»;
  • Затем выберите вверху другую вкладку «Службы» и внизу на чек-боксе поставьте галку «Не отображать службы»;

  • Затем нажмите внизу кнопку «Применить» и подтвердите свои действия, нажав «Ок».
  • Перезагрузите компьютер и снова попытайтесь вызвать ошибку. Если она появляется, значит системные службы не имеют к ней отношения. Но если системное сообщение больше не появляется, можно определить какая из служб вызывает её. Для этого необходимо по очереди ставить одну галочку на службе и перезагружать свой ПК. Для ускорения процесса поиска причинной службы вы можете выбирать не одну, а сразу несколько служб. Главное — запоминать группу, чтобы потом определить нерабочую из этой группы.

    Во вкладке «Автозагрузки» выберите каждое приложение, которое запускается вместе с Windows и нажмите внизу кнопку «Выключить». При входе в систему способом чистой загрузки, их также нужно поочередно включить, чтобы определить причину ошибки. Когда вы определите службу, её можно временно отключить. После этого выясните, как можно устранить проблемы с этой службой. Также попробуйте переустановить или удалить программу, которую вы устанавливали на рабочую операционную систему.

    1. Откройте «Пуск» и нажмите справа на пункт «Панель управления»;
    2. Выберите здесь «Удаление программ» и найдите нужную в списке установленных;

  • Нажмите на название ПО и вверху выберите мышью кнопку «Удалить»;
  • Перезагрузите компьютер.
  • Восстановление системных файлов

    Если предыдущий метод не помог устранить ошибку, попробуем восстановить все возможные сбои в системных файлах. Для этого в Windows есть собственные утилиты. Вам понадобится стабильное подключение к интернету, так как утилитам нужен будет доступ к серверу Майкрософт для скачивания поврежденных файлов. Выполните следующую инструкцию:

    1. Необходимо запустить командную строку. Делать это нужно так: откройте «Пуск» и напишите в поиске «Командная строка». В результатах выберите её ПКМ. В контекстном меню появится пункт «От имени администратора». Нажмите его;
    2. В окне нужно записать «sfc /scannow» и нажать кнопку ввода. Дождитесь её завершения и проверьте, появляется ли ошибка 2147467262 «Интерфейс не поддерживается». Если вам удалось её исправить, можно закрыть все ненужные окна и продолжить работу;
    3. Если сбой снова появляется, в этом же окне введите другую команду: «dism /online /cleanup-image /checkhealth» без кавычек и нажмите кнопку ввода;
    4. Дождитесь завершения процесса проверки файлов, перезагрузите компьютер и снова попробуйте выполнить действия, которые вызывали ошибку.

    Если этот метод также не помог, как и предыдущий, попробуйте восстановить систему при помощи загрузочного диска Windows. DVD, с которого вы устанавливали систему. Чтобы загрузиться с диска, вам снова нужно будет установить параметры загрузки с дискового привода в BIOS. Следующие действия схожи с установкой. Только при выборе действий нужно указать «Восстановление системы», вместо установки. Далее следуйте подсказкам мастера.

    Утилита Windows Fix

    Раньше на официальном сайте Microsoft была доступна утилита от создателей Windows. Она позволяла устранять множество проблем на компьютере и называлась Windows Fix It. Разработчики утилиты реализовали её функции иначе. Уже долгое время она не доступна по адресу загрузки. В последних версиях Windows разработчики присвоили возможности когда-то существовавшей утилиты во встроенной в ОС «Устранение проблем». В ранних версиях этот пункт никогда не рассматривался пользователями как действенный. Но сегодня, запустив «Устранение неполадок» в Windows 8.1, 10, мастер действительно становится полезным.

    Группой программистов была разработана другая неофициальная версия этой утилиты. Загрузить её можно по адресу https://windowsfix.ru/. Так как разработчик неизвестен, перед запуском и установкой проверьте утилиту на вирусы. Для ОС Windows 10 есть другая утилита, которая также решает множество ошибок и сбоев. Скачать её можно на странице . Её не нужно устанавливать, это портативная программа. Требуется только запуск исполняемого файла. В целях безопасности компьютера, утилиту также нужно проверить на вирусы.

    Если уж речь пошла о неофициальных методах решения, попробуйте скачать и запустить утилиту с данного форума — http://delphidevelop.ru/forum/29-312-1/. Ссылка находится в первом посте. Каждый, кто испробовал её утверждают, что ошибку удалось устранить.

    Другие способы решения ошибки

    Если появляется ошибка, и вы не можете открыть папки на своем компьютере, попробуйте создать новую учетную запись. Она не поможет решить ошибку на учетной записи администратора, но у вас будет доступ к файлам, которые можно перенести на другой диск, флэшку или в облако.

    1. Если пользователю не доступно стандартное окно «Пуск» или «Панель управления», нажмите вместе WIN+R и введите «netplwiz». Нажмите ENTER;
    2. Нажмите кнопку «Добавить» и создайте нового пользователя, присвоив нужные параметры;
    3. Перезагрузите компьютер и выберите новую учетную запись.

    Когда вы окажитесь в системе, попробуйте открыть папки, где находятся важные данные и перенесите их. Сохранив копии файлов, систему можно попытаться восстановить или переустановить.

    Есть еще один способ, который может решить ошибку 2147467262 — интерфейс не поддерживается. Он заключается в перерегистрации файлов динамической библиотеки (dll). Для его применения вам нужно вводить последовательно большое количество команд. По сложности он сопоставим с переустановкой Windows.

    Источник

    1. На главную

    2. How

    3. как решить Фильтр сообщений указал, что приложение занято. (Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))
    • 2023
    • Редактор:
      Christopher Sullivan |
      Написать мне

    
    

    Я получаю следующее исключение для кода .

    Сообщение об исключении: Фильтр сообщений показал, что приложение занято. (Исключение из HRESULT: 0x8001010A (RPC_E_SERVERCALL_RETRYLATER))

    Ранее я не получал эту ошибку в этом блоке кода. Раньше все работало отлично. Кто-нибудь может помочь?

    • 1 В этой ветке есть ценная информационная ссылка. У меня была аналогичная проблема, и добавление сна помогло.

    В итоге я удалил:

    
    

    И это сработало … !!!

    • из любопытства — вы пытались поменять строчки местами? Таким образом, вы делаете приложение видимым ПОСЛЕ открытия презентации …
    • @ Ахмедильяс: я этого не пробовал. Однако, как я уже сказал, раньше работал тот же код.
    • 8 Офисное приложение (powerpoint) может просто показывать какое-то сообщение (например, сообщение о повторной активации, новости или любое другое сообщение, которое оно может показывать при запуске) и ждет, когда вы нажмете на него .. «DisplayAlerts = «Нет» не блокирует их. Иногда это является причиной этой ошибки. Попробуйте просто запустить PowerPoint вручную, чтобы проверить, не появляется ли всплывающее сообщение при запуске.
    • 1 Как бы то ни было, я также обнаружил, что мне не удалось получить COM-объект при выполнении моего процесса как запланированной задачи. Однако запуск его как стандартного приложения, похоже, помог.

    Я работаю над аналогичной проблемой (управление Excel через PowerShell) и хотел добавить, что — в способе, которым я не могу начать объяснять — аналог предложения @Milind Anantwar заставил мой скрипт начать работать.

    Подробнее, если они помогут:

    • В моем случае при локальном запуске все работало нормально. Я начал видеть

      Приложение занято

      исключение только тогда, когда я перешел к выполнению через Azure Hybrid Worker Runner.

    • Что касается следующего фрагмента, я видел исключение после строка 2, но удаление строки 2 «устранило» проблему:

      
      
    • Я видел исключение, когда было установлено на .

    • Я только что столкнулся с той же проблемой, что и OP, использующий Perl-модуль Win32 :: OLE для чтения файлов Excel. В примере, над которым я работал, была строка . Комментируя это, я решил проблему.

    Проверьте свой диспетчер задач; у вас может быть потерянный экземпляр приложения из сеанса отладки. Убейте его и попробуйте еще раз. Так было со мной раньше.

      msm.ru

      Нравится ресурс?

      Помоги проекту!

      !
      user posted image

      Пожалуйста, выделяйте текст программы тегом [сode=pas] … [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

      Соблюдайте общие правила форума

      Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
      1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
      2. Как «свернуть» программу в трей.
      3. Как «скрыться» от Ctrl + Alt + Del (заблокировать их и т.п.)
      4. Как запустить программу/файл? (и дождаться ее завершения)
      5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры — внедрение в удаленное адресное прстранство)
      … (продолжение следует) …


      Внимание:
      Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
      Повторная попытка — 60 дней. Последующие попытки — бан.
      Мат в разделе — бан на три месяца…


      Полезные ссылки:
      user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


      Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

      >
      Как убрать ошибку одновременного доступа «OLE error 800AC472» при работе с Excel
      , Проблема возникает при одновременной работе программ с 1 файлом

      • Подписаться на тему
      • Сообщить другу
      • Скачать/распечатать тему



      Сообщ.
      #1

      ,
      03.04.07, 08:39

        Помогите решить проблему :
        Задача: готовое приложение (А) — поставщик данных, экспортирует их или в Excel через DDE или по ODBC. На выбор.
        Второе приложение (Б) работает с текстовыми файлами , считывает один файл и пишет результаты в другой.
        Третье приложение (В) — генерирует команды (вызов процедур с передачей данных) которые через OLE передаю на Сервер ом (приложение -(С)).
        Приложения (А) , (Б) и (В) не мои с ними ничего не сделаещь.
        Сервер, который реализовал как ActiveX — exe, должен на базе данных из программ (А) , (Б) и (В) производить расчеты и записывать результаты в текстовый файл. (с которым работает приложение (Б)).
        Так как все данные представляют из себя строки с несколькими данными то вся работа идет с таблицами.
        Использовал Excel через OLE (не через компонент). Вроде все работает, но проблема возникновения ошибок при попытке:
        Использовал Excel через OLE (не через компонент). Вроде все работает, но проблема возникновения ошибок при попытке
        1) 2-х программ (А) и Сервера работать с страницами одной книги Excel которая является фактически базой данных. Ошибка : «Фильтр сообщений выдал диагностику о занятости приложения»
        2) Попыток пользователя что либо делать руками с ячейками Excel на любом листе. При этом ведь всегда адресую ячейки не через ActiveCell а напрямую типа Sheet1.Cells[1,2].Value, тем не менее ошибка вида:
        «OLE error 800AC472»
        Эти ошибки, не то чтоб останавливают программу, но забивает весь экран сообщенями (об ошибках). Наверное можно все сообщения убрать через try но это как-то не нормально, ведь ошибка то остается ? Хотя вроде требуемые действия программа исполняет.
        Как с этим боротся (если не отказываться от Excel) ?
        — думаю может поможет если Сервер будет работат с Excel через DDE (писать все в буфер и скидывать буфер в зависимости от требований или в Cells или Range? Или это я ошибаюсь и это не устранит проблемму?
        Excel выбирался как вариант базы данных с возможностью (и необходимостью) легкого изменения формул расчета различных переменных которые используют данные получаемые из различных источников.

        Master

        jack128



        Сообщ.
        #2

        ,
        03.04.07, 10:28

          Excel — это НЕ база данных, со всеми вытекающими. Отказывайся от одновременнной работы нескольких программ с одним файлом Excel’я, ни к чему хорошему это не приведет.


          cheska



          Сообщ.
          #3

          ,
          03.04.07, 17:57

            А что еще использовать учитывая что у меня в файле Excel 24 страницы с данными и каждая страница — это нужно делать отдельную базу , так как наборы столбцов — разные.
            У меня не большой опыт програмирования и мне сложно представить чем заменить Excel с его листовым методом организации данных, и какую базу можно быстро освоить чтоб реализовать вывод в нее данных ( как уже писал можно от поставщика данных получать их и по DDE и ODBC)
            И Excel это возможность оперативно менять разные параметры и формулы расчета (обработки данных)

            Master

            jack128



            Сообщ.
            #4

            ,
            03.04.07, 20:28

              OBDC драйвера есть практически под все базы данных.
              Я кстати не говорил, что нужно совсем отказаться от EXcel’я. К тому же ты сам сказал, что

              Цитата cheska @ 03.04.07, 08:39

              Приложения (А) , (Б) и (В) не мои с ними ничего не сделаещь.

              так что тут ты ничего не сможешь изменить. Я лишь сказал, что тебе нужно отказаться

              Цитата jack128 @ 03.04.07, 10:28

              от одновременнной работы нескольких программ с одним файлом Excel’я


              cheska



              Сообщ.
              #5

              ,
              05.04.07, 14:27

                Сделал пока через DDE. Так вроде переписывать ничего особо не нужно, и шлет устойчиво, изгалялся как мог, вроде ничего не падает.

                ExpandedWrap disabled

                  {Экспортируем данные в Excel}

                        if DdeClientConv1.SetLink(‘EXCEL’, ‘D:[test001.xls]L002’)

                        and DdeClientConv1.OpenLink then

                        begin

                          try

                          xlRange:=’R’+inttostr(fRow)+’C1:R’+Inttostr(eRow)+’C11′;

                          DDEClientItem1.DdeItem :=xlRange;

                          DdeClientConv1.PokeData(DDEClientItem1.DdeItem, PChar(Buffer));

                          finally

                          DdeClientConv1.CloseLink;

                          end;

                        end;

                Вопрос остался нужно ли (и зачем если нужно) обрамлять это все командами в начале процедуры DdeClientConv1.Create(Self) а в конце DdeClientConv1.Destroy.
                И как часто стоит делать DdeClientConv1.OpenLink {… } DdeClientConv1.CloseLink . Как я понимаю только если меняю Link ?


                Mikola_17



                Сообщ.
                #6

                ,
                12.04.07, 12:27

                  Скажите, а никто не знает как «перевести» механизм DDE например в ODBC?

                  Есть программа «А», которая умеет выдавать данные только по DDE.
                  Есть программа «Б», которая умеет принимать данные по SNMP, ODBC, текстовый-файл

                  Нада их поддружить

                  Master

                  jack128



                  Сообщ.
                  #7

                  ,
                  12.04.07, 16:27

                    Цитата Mikola_17 @ 12.04.07, 12:27

                    Нада их поддружить

                    ну напиши третью программу, которая будет уметь принемать данные от программы A и передовать их программе Б

                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

                    0 пользователей:

                    • Предыдущая тема
                    • Delphi: Система, Windows API
                    • Следующая тема

                    Рейтинг@Mail.ru

                    [ Script execution time: 0,0319 ]   [ 16 queries used ]   [ Generated: 13.06.23, 23:00 GMT ]  

                    Понравилась статья? Поделить с друзьями:
                  • Ошибка положения селектора акпп шкода рапид
                  • Ошибка положения селектора акпп шкода октавия а7
                  • Ошибка положения руля шкода рапид
                  • Ошибка положения руля киа сид
                  • Ошибка положения руля бмв е60