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

   IKSparrow

02.06.14 — 16:08

Код такой:

    Попытка

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

    Исключение

        ЗаписьЖурналаРегистрации(

            «#COM»,

            УровеньЖурналаРегистрации.Ошибка,

            ЭтотОбъект,

            «Коннектор = ПолучитьCOMОбъект(Объект.ИмяФайла): «+Объект.ИмяФайла,

            ОписаниеОшибки());

        Возврат;

    КонецПопытки;

Ошибка такая: Ошибка получения объекта COM: -2147221014(0x800401EA): Не удается открыть файл при помощи специального имени

Платформа вот такая: 8.3.4.482

Где ошибка?

   1cVandal

1 — 02.06.14 — 16:11

Объект.ИмяФайла что там?

   IKSparrow

2 — 02.06.14 — 16:11

(1) D:Книга1.xls

   1cVandal

3 — 02.06.14 — 16:14

Коннектор = ПолучитьCOMОбъект(Объект.ИмяФайла,»Excel.Application»);

а так?

   1cVandal

4 — 02.06.14 — 16:15

да и прежде чем его обрабатывать,попробуй закрой его

   IKSparrow

5 — 02.06.14 — 16:16

(3) Неа, теперь так Ошибка получения объекта COM: -2147221005(0x800401F3): Недопустимая строка с указанием класса. Вроде же всю жизнь было Excel.Application.

   salvator

6 — 02.06.14 — 16:20

(5) Эксель не установлен?

   1cVandal

7 — 02.06.14 — 16:20

(5) а он у тебя установлен? может код на сервере выполняется?

   IKSparrow

8 — 02.06.14 — 16:24

(6) Excel установлен.

Балин…. Ну да… В процедуре формы с директивой &НаСервере

   IKSparrow

9 — 02.06.14 — 16:25

А на сервере Excel’я нет. А у меня тонкий клиент. Стало быть мне только Excel на сервак ставить и без вариантов, да?

   RomaH

10 — 02.06.14 — 16:27

(9) почему? — читаешь таблицу на клиенте

пишешь её в формат 1С — любая коллекция

передаешь её на сервер

   IKSparrow

11 — 02.06.14 — 16:32

(10) ТЬфу, не в тот раздел СП посмотрел и не на тот метод «ПолучитьCOMОбъект» =)))

Всем спасибо =)

   IKSparrow

12 — 02.06.14 — 16:33

Ну вот же гадство. Теперь Ошибка в получении объекта COM (0x80004002) Интерфейс не поддерживается. Что за фигня.

   IKSparrow

13 — 02.06.14 — 16:34

Процедура теперь на клиенте выполняется.

  

1cVandal

14 — 02.06.14 — 17:00

наКлиенте

Режим = РежимДиалогаВыбораФайла.Открытие;

    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);

    ДиалогОткрытияФайла.ПолноеИмяФайла = «»;

    Фильтр = «Таблица(*.xlsx)|*.xlsx»;

    ДиалогОткрытияФайла.Фильтр                = Фильтр;

    ДиалогОткрытияФайла.МножественныйВыбор    = Ложь;

    ДиалогОткрытияФайла.Заголовок            = «Выберите файл c описью вложения»;

    
    Если ДиалогОткрытияФайла.Выбрать() Тогда

        ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;

    Иначе

        Возврат;

    КонецЕсли;

    
    Тз = объект.ТЗ;

    Тз.Очистить();

    //Тз.Колонки.Добавить(«ШК»);

    //Тз.Колонки.Добавить(«Сумма»);

    
    
    
    Попытка

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

        Excel.WorkBooks.Open(ПутьКФайлу);

        ExcelЛист = Excel.Sheets(1);

    Исключение

        Сообщить(«Не установлено приложение MS Excel!»);

        Возврат;

    КонецПопытки;

Перейти к контенту

Я
   IKSparrow

02.06.14 — 16:08

Код такой:

    Попытка

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

    Исключение

        ЗаписьЖурналаРегистрации(

            «#COM»,

            УровеньЖурналаРегистрации.Ошибка,

            ЭтотОбъект,

            «Коннектор = ПолучитьCOMОбъект(Объект.ИмяФайла): «+Объект.ИмяФайла,

            ОписаниеОшибки());

        Возврат;

    КонецПопытки;

Ошибка такая: Ошибка получения объекта COM: -2147221014(0x800401EA): Не удается открыть файл при помощи специального имени

Платформа вот такая: 8.3.4.482

Где ошибка?

   1cVandal

1 — 02.06.14 — 16:11

Объект.ИмяФайла что там?

   IKSparrow

2 — 02.06.14 — 16:11

(1) D:Книга1.xls

   1cVandal

3 — 02.06.14 — 16:14

Коннектор = ПолучитьCOMОбъект(Объект.ИмяФайла,»Excel.Application»);

а так?

   1cVandal

4 — 02.06.14 — 16:15

да и прежде чем его обрабатывать,попробуй закрой его

   IKSparrow

5 — 02.06.14 — 16:16

(3) Неа, теперь так Ошибка получения объекта COM: -2147221005(0x800401F3): Недопустимая строка с указанием класса. Вроде же всю жизнь было Excel.Application.

   salvator

6 — 02.06.14 — 16:20

(5) Эксель не установлен?

   1cVandal

7 — 02.06.14 — 16:20

(5) а он у тебя установлен? может код на сервере выполняется?

   IKSparrow

8 — 02.06.14 — 16:24

(6) Excel установлен.

Балин…. Ну да… В процедуре формы с директивой &НаСервере

   IKSparrow

9 — 02.06.14 — 16:25

А на сервере Excel’я нет. А у меня тонкий клиент. Стало быть мне только Excel на сервак ставить и без вариантов, да?

   RomaH

10 — 02.06.14 — 16:27

(9) почему? — читаешь таблицу на клиенте

пишешь её в формат 1С — любая коллекция

передаешь её на сервер

   IKSparrow

11 — 02.06.14 — 16:32

(10) ТЬфу, не в тот раздел СП посмотрел и не на тот метод «ПолучитьCOMОбъект» =)))

Всем спасибо =)

   IKSparrow

12 — 02.06.14 — 16:33

Ну вот же гадство. Теперь Ошибка в получении объекта COM (0x80004002) Интерфейс не поддерживается. Что за фигня.

   IKSparrow

13 — 02.06.14 — 16:34

Процедура теперь на клиенте выполняется.

  

1cVandal

14 — 02.06.14 — 17:00

наКлиенте

Режим = РежимДиалогаВыбораФайла.Открытие;

    ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);

    ДиалогОткрытияФайла.ПолноеИмяФайла = «»;

    Фильтр = «Таблица(*.xlsx)|*.xlsx»;

    ДиалогОткрытияФайла.Фильтр                = Фильтр;

    ДиалогОткрытияФайла.МножественныйВыбор    = Ложь;

    ДиалогОткрытияФайла.Заголовок            = «Выберите файл c описью вложения»;

    

    Если ДиалогОткрытияФайла.Выбрать() Тогда

        ПутьКФайлу = ДиалогОткрытияФайла.ПолноеИмяФайла;

    Иначе

        Возврат;

    КонецЕсли;

    

    Тз = объект.ТЗ;

    Тз.Очистить();

    //Тз.Колонки.Добавить(«ШК»);

    //Тз.Колонки.Добавить(«Сумма»);

    

    
    
    Попытка

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

        Excel.WorkBooks.Open(ПутьКФайлу);

        ExcelЛист = Excel.Sheets(1);

    Исключение

        Сообщить(«Не установлено приложение MS Excel!»);

        Возврат;

    КонецПопытки;

TurboConf — расширение возможностей Конфигуратора 1С

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

i am try to hook to outlook application from windows Service but getting an exception Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) here is my code.

   public void ItemSendEvent()
    {
        try
        {
           if (Process.GetProcessesByName(ApplicationConstants.OUTLOOK_PROCESS_NAME).Count() > 0)
                {
                    // If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
                    outlookApplication = Marshal.GetActiveObject(ApplicationConstants.OUTLOOK_APPLICATION_NAME) as Microsoft.Office.Interop.Outlook.Application;
                    Microsoft.Office.Interop.Outlook.NameSpace nameSpace = outlookApplication.GetNamespace(ApplicationConstants.OUTLOOK_NAME_SPACE);
                    nameSpace.Logon("", "", Missing.Value, Missing.Value);
                    nameSpace = null;
                    outlookApplication.ItemSend += outlookApplication_ItemSend;
                }
                log.Info("Outlook Item Send event registered successfully.");
        }
        catch (System.Exception ex)
        {
            log.Error("Exception occurred while registering Outlook Item Send event. " + ex.Message);
        }
    }

but the same code when i launch it through Windows Form Application its working Fine. i gone through some site’s and they were saying that outlook object is not in ROT Table. what will be the solution.

asked Jun 2, 2016 at 10:58

Ravi Kanth's user avatar

0

Outlook, or any other Office app, cannot run in a Windows service even if your service is running as an interactive user. Only Extended MAPI (C++ or Delphi only) or an Extended MAPI wrapper like Redemption (I am its author — its RDO family objects) can be used in a service.

In your particular case, it looks like you are trying to trap the Application.ItemSend event. There is absolutely no reason to create a Windows service for that. Create a COM addin — it will be loaded by Outlook and run as long as Outlook itself is running in the same process in the same security context.

answered Jun 2, 2016 at 22:45

Dmitry Streblechenko's user avatar

4

Two common issues could cause this.

The first would be that you are running Visual Studio in Administrator mode and you are starting your program from within VS, and the Office application is not. To fix that, you need to run your Office application with elevated privileges, in Administrator mode, as well.

The second could be caused by the application not being fully started/loaded when you call Marshal.GetActiveObject(...).

answered Jun 2, 2016 at 11:14

gmiley's user avatar

gmileygmiley

6,4561 gold badge11 silver badges24 bronze badges

3

Old, but still significant thread.

I collided with this error when tried to access Outlook data using the MS example.

Treating the error in a Try / Catch block and offering the option of newing Outlook solves the problem:

const int ERROR_HRESULT_0x800401E3_MK_E_UNAVAILABLE= -2147221021;
        Outlook.Application application = null;
        // Check whether there is an Outlook process running.
        if (Process.GetProcessesByName("OUTLOOK").Any())
        {
            try
            {
                // If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
                application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
                }
            }
            catch (Exception ex)
            {
                //This is the branch where you can get correctly the current Outlook instance
                if (ex.HResult == ERROR_HRESULT_0x800401E3_MK_E_UNAVAILABLE)
                {
                    application = new Outlook.Application();
                }
            }
        }
        else
        {
            application = new Outlook.Application();
        }

Although the newing trick functions, no other Outlook instance is created, as Outlook behaves like a Singleton.

I only tested it with Office 365 64 bits installed.

answered Nov 15, 2020 at 15:44

Marcelo Scofano Diniz's user avatar

you don’t need to have your application as a service to get it on the background …

if your winform work well, just put your winform in background running on the systray for instance

answered Nov 8, 2016 at 21:11

bobzer's user avatar

bobzerbobzer

891 silver badge7 bronze badges

i am try to hook to outlook application from windows Service but getting an exception Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) here is my code.

   public void ItemSendEvent()
    {
        try
        {
           if (Process.GetProcessesByName(ApplicationConstants.OUTLOOK_PROCESS_NAME).Count() > 0)
                {
                    // If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
                    outlookApplication = Marshal.GetActiveObject(ApplicationConstants.OUTLOOK_APPLICATION_NAME) as Microsoft.Office.Interop.Outlook.Application;
                    Microsoft.Office.Interop.Outlook.NameSpace nameSpace = outlookApplication.GetNamespace(ApplicationConstants.OUTLOOK_NAME_SPACE);
                    nameSpace.Logon("", "", Missing.Value, Missing.Value);
                    nameSpace = null;
                    outlookApplication.ItemSend += outlookApplication_ItemSend;
                }
                log.Info("Outlook Item Send event registered successfully.");
        }
        catch (System.Exception ex)
        {
            log.Error("Exception occurred while registering Outlook Item Send event. " + ex.Message);
        }
    }

but the same code when i launch it through Windows Form Application its working Fine. i gone through some site’s and they were saying that outlook object is not in ROT Table. what will be the solution.

asked Jun 2, 2016 at 10:58

Ravi Kanth's user avatar

0

Outlook, or any other Office app, cannot run in a Windows service even if your service is running as an interactive user. Only Extended MAPI (C++ or Delphi only) or an Extended MAPI wrapper like Redemption (I am its author — its RDO family objects) can be used in a service.

In your particular case, it looks like you are trying to trap the Application.ItemSend event. There is absolutely no reason to create a Windows service for that. Create a COM addin — it will be loaded by Outlook and run as long as Outlook itself is running in the same process in the same security context.

answered Jun 2, 2016 at 22:45

Dmitry Streblechenko's user avatar

4

Two common issues could cause this.

The first would be that you are running Visual Studio in Administrator mode and you are starting your program from within VS, and the Office application is not. To fix that, you need to run your Office application with elevated privileges, in Administrator mode, as well.

The second could be caused by the application not being fully started/loaded when you call Marshal.GetActiveObject(...).

answered Jun 2, 2016 at 11:14

gmiley's user avatar

gmileygmiley

6,4561 gold badge11 silver badges24 bronze badges

3

Old, but still significant thread.

I collided with this error when tried to access Outlook data using the MS example.

Treating the error in a Try / Catch block and offering the option of newing Outlook solves the problem:

const int ERROR_HRESULT_0x800401E3_MK_E_UNAVAILABLE= -2147221021;
        Outlook.Application application = null;
        // Check whether there is an Outlook process running.
        if (Process.GetProcessesByName("OUTLOOK").Any())
        {
            try
            {
                // If so, use the GetActiveObject method to obtain the process and cast it to an Application object.
                application = Marshal.GetActiveObject("Outlook.Application") as Outlook.Application;
                }
            }
            catch (Exception ex)
            {
                //This is the branch where you can get correctly the current Outlook instance
                if (ex.HResult == ERROR_HRESULT_0x800401E3_MK_E_UNAVAILABLE)
                {
                    application = new Outlook.Application();
                }
            }
        }
        else
        {
            application = new Outlook.Application();
        }

Although the newing trick functions, no other Outlook instance is created, as Outlook behaves like a Singleton.

I only tested it with Office 365 64 bits installed.

answered Nov 15, 2020 at 15:44

Marcelo Scofano Diniz's user avatar

you don’t need to have your application as a service to get it on the background …

if your winform work well, just put your winform in background running on the systray for instance

answered Nov 8, 2016 at 21:11

bobzer's user avatar

bobzerbobzer

891 silver badge7 bronze badges

  • Remove From My Forums
  • Question

  • I am trying to access Microsoft word instance through my service (windows service) but I am getting this error

    Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE)) ,

     I have opened word document ( i can also see WINWORD.EXE in Task Manager) ,

    I am using VS 2010 and MS Office 2003. Here is my code

    Dim fs As New FileStream("D:log.txt", FileMode.OpenOrCreate,
    FileAccess.Write)
    
                Dim sw As
    New StreamWriter(fs)
    
               
    sw.BaseStream.Seek(0, SeekOrigin.End)
    
                Dim
    wordapp As Word.Application
    
                wordapp = Marshal.GetActiveObject("Microsoft.Office.Interop.Word.Application")
    
                For Each
    doc As Word.Document In wordapp.Documents
    
                   
    sw.WriteLine(doc.FullName.ToString() + "n" +
    
                   
    doc.ActiveWindow.WindowState.ToString())
    
                Next
    
                sw.Flush()
    
                sw.Close()

    if i use this code in windows form application it works perfect, but doesn’t works in windows service.Why is that for ? Windows Service Doesn’t support Microsoft.Office.Interop ? If it does work please guide.

    • Moved by

      Tuesday, February 26, 2013 9:58 AM

Answers

  • As Ken mentioned — this is not supported so do not expect any real help for this on Microsoft forum. That said, ProgId you pass to Marshal.GetActiveObject is wrong, fix this.

    • Marked as answer by
      Quist Zhang
      Tuesday, March 5, 2013 10:53 AM
  • Even if you do succeed in somehow automating Word or another Office application in a Windows service it will break or fail at the worst possible moment. It’s just not relable, and if an error message or warning or other UI message
    is spawned that will hang your application compltely. What you want to do is really a very bad and unreliable thing to do.

    thanks,

    if Progid is wrong then why does this code works fine in windows form application ?


    Ken Slovak MVP — Outlook

    • Marked as answer by
      Quist Zhang
      Tuesday, March 5, 2013 10:53 AM

After searching on the web without success, here’s my question.

I’ve a task that i want to schedule to retrieve the attachment of an email from outlook and extract the data.
It works fine when I launch the task manually but whenever I try to launch it through a scheduled task it fails with the error :

COMException (0x800401E3): Operation unavailable (Exception from HRESULT: 0x800401E3 (MK_E_UNAVAILABLE))

It occurs when the program tries to retrieve or create an instance of Outlook as follow:

private Application GetApplicationObject()
    {

        Application application = null;

        if (Process.GetProcessesByName("OUTLOOK").Any())
        {
            application = Marshal.GetActiveObject("Outlook.Application") as Application;
        }
        else
        {
            application = new Application();
        }
        return application;
    }

I tried several ways (batch file, .exe file, parameter from a program) but they all failed.
It was launched with the same account that was use to launch the task manually.

Can someone help me ? Any help would be appreciated!
Cheers!

asked Nov 5, 2015 at 12:05

A.Brg's user avatar

3

Microsoft does not currently recommend, and does not support, Automation of Microsoft Office applications from any unattended, non-interactive client application or component (including ASP, ASP.NET, DCOM, and NT Services), because Office may exhibit unstable behavior and/or deadlock when Office is run in this environment.

If you are building a solution that runs in a server-side context, you should try to use components that have been made safe for unattended execution. Or, you should try to find alternatives that allow at least part of the code to run client-side. If you use an Office application from a server-side solution, the application will lack many of the necessary capabilities to run successfully. Additionally, you will be taking risks with the stability of your overall solution. Read more about that in the Considerations for server-side Automation of Office article.

You may consider using a low-level API (or any other third-party wrappers) — Extended MAPI on which Outlook is based on. Or EWS in case of Exchange profiles, see EWS Managed API, EWS, and web services in Exchange for more information.

answered Nov 5, 2015 at 12:27

Eugene Astafiev's user avatar

Eugene AstafievEugene Astafiev

41.6k3 gold badges21 silver badges39 bronze badges

1

Just a couple of thoughts:

  1. It could be a GUI issue. According to this answer, GUI tasks cannot be run from scheduled tasks. There may be a workaround, but I am not aware of one.

  2. It could be a context or permission issue. What settings are you configuring in the task, and are they the same as when you run the task outside of task scheduler?

Community's user avatar

answered Nov 5, 2015 at 12:26

theMayer's user avatar

theMayertheMayer

15.1k7 gold badges56 silver badges87 bronze badges

1

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

  • Ошибка при вызове конструктора (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.

    Источник

    wardamask

    0 / 0 / 0

    Регистрация: 10.02.2016

    Сообщений: 13

    1

    1C 8.x

    15.02.2016, 16:14. Показов 13897. Ответов 6

    Метки нет (Все метки)


    Студворк — интернет-сервис помощи студентам

    Help me!!!
    Написал в процедуру заполнения реквизитов документа из шаблонного Word документа.
    И возникла проблема что в файловом (тестовом) варианте все прекрасно работает, а в клиент-серверном ни в какую(((

    Вот так ругается…
    {Документ.ИсполнительныйЛист.Форма.ФормаДокумента.Форма(153)}: Ошибка при вызове метода контекста (ПолучитьCOMОбъект)
    Об = ПолучитьCOMОбъект(ПутьКПрофилю);
    по причине:
    Ошибка получения объекта COM: -2147221014(0x800401EA): Не удается открыть файл при помощи специального имени

    1C
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    &НаКлиенте
    Процедура ЗагрузитьПрофиль()
     
        Режим = РежимДиалогаВыбораФайла.Открытие;
        ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
        ДиалогОткрытияФайла.Заголовок = "Выберите файл";
        Если ДиалогОткрытияФайла.Выбрать() Тогда
            ПутьКПрофилю = ДиалогОткрытияФайла.ПолноеИмяФайла;
                Иначе
            Текст = "ru = ""Файл не выбран!""; en = ""File not selected!""";
            Предупреждение(НСтр(Текст));
            Возврат;
        КонецЕсли;
               
    Загрузка(ПутьКПрофилю);
     
    КонецПроцедуры

    1C
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    
    &НаСервере 
    Процедура Загрузка (ПутьКПрофилю) Экспорт
     
     
            Об = ПолучитьCOMОбъект(ПутьКПрофилю);
            Об.Application.Visible = 0;
                    Word = Об.Application;
            ThisDocument = Word.Documents(1);
                    ThisDocument.Activate();
     
    ...
                
    КонецПроцедуры;

    Подскажите пожалуйста что мне делать?



    0



    Модератор

    Эксперт 1С

    3724 / 2918 / 575

    Регистрация: 10.03.2011

    Сообщений: 11,491

    Записей в блоге: 1

    15.02.2016, 17:30

    2

    wardamask, на сервере установлен офис?



    0



    0 / 0 / 0

    Регистрация: 10.02.2016

    Сообщений: 13

    15.02.2016, 17:34

     [ТС]

    3

    Да установлен



    0



    Модератор

    Эксперт 1С

    3724 / 2918 / 575

    Регистрация: 10.03.2011

    Сообщений: 11,491

    Записей в блоге: 1

    15.02.2016, 17:38

    4

    wardamask, а с сервера доступен файл который ты открываешь (путь с клиента)?

    Добавлено через 48 секунд
    Т.е. на компьютере А пытамся открыть файл который на компьютере Б

    Думаешь он откроется?

    Добавлено через 35 секунд
    wardamask, просто попробуй сделать это без 1С



    0



    wardamask

    0 / 0 / 0

    Регистрация: 10.02.2016

    Сообщений: 13

    15.02.2016, 18:11

     [ТС]

    5

    Решил проблему так…

    1C
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    
     &НаКлиенте
    Процедура Записать();
     
    Режим = РежимДиалогаВыбораФайла.Открытие;
        ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
        ДиалогОткрытияФайла.Заголовок = "Выберите файл";
        Если ДиалогОткрытияФайла.Выбрать() Тогда
            ПутьКПрофилю = ДиалогОткрытияФайла.ПолноеИмяФайла;
                Иначе
            Текст = "ru = ""Файл не выбран!""; en = ""File not selected!""";
            Предупреждение(НСтр(Текст));
            Возврат;
        КонецЕсли;
        
     
        
            Об = ПолучитьCOMОбъект(ПутьКПрофилю);
            Об.Application.Visible = 0;
            Word = Об.Application;
            ThisDocument = Word.Documents(1);
            ThisDocument.Activate();
                    
                НаимКонтр = ThisDocument.ContentControls.Item(2).Range.Text;
                ИНН = ThisDocument.ContentControls.Item(3).Range.Text;
                Взыскатель = ThisDocument.ContentControls.Item(4).Range.Text;          
                Куратор = ThisDocument.ContentControls.Item(5).Range.Text;       
                ДатаПолученияЛистаИзЮУ = ThisDocument.ContentControls.Item(6).Range.Text;
                НомерЛиста = ThisDocument.ContentControls.Item(7).Range.Text; 
                ДатаНаправленияВОСП = ThisDocument.ContentControls.Item(8).Range.Text;
                ФИОНаправившегоЛист = ThisDocument.ContentControls.Item(9).Range.Text;   
                НомерПочтовогоИдентификатора = ThisDocument.ContentControls.Item(10).Range.Text;
                НаименованиеОСП = ThisDocument.ContentControls.Item(11).Range.Text;      
                ДатаПолученияВОСП = ThisDocument.ContentControls.Item(12).Range.Text;
                ДатаВозбуждения = ThisDocument.ContentControls.Item(13).Range.Text;
                НомерПостановления = ThisDocument.ContentControls.Item(14).Range.Text;    
                ФИОСудебногоПристава = ThisDocument.ContentControls.Item(15).Range.Text;
                КонтактнаяИнфПристава = ThisDocument.ContentControls.Item(16).Range.Text;
                ОсновнойДолг = ThisDocument.ContentControls.Item(17).Range.Text;
                Пени = ThisDocument.ContentControls.Item(18).Range.Text;            
                ПроцентыЗаПользование = ThisDocument.ContentControls.Item(19).Range.Text;  
                ГосПошлина = ThisDocument.ContentControls.Item(20).Range.Text;
                //ОплатаУслугПредставителя = ThisDocument.ContentControls.Item(21).Range.Text;
                
                    
            РеквВорд = Новый Массив(21);
            РеквВорд[1]= НаимКонтр;
            РеквВорд[2]=ИНН;
            РеквВорд[3]=Взыскатель; 
            РеквВорд[4]=Куратор;     
            РеквВорд[5]=ДатаПолученияЛистаИзЮУ; 
            РеквВорд[6]=НомерЛиста;
            РеквВорд[7]=ДатаНаправленияВОСП;
            РеквВорд[8]=ФИОНаправившегоЛист;
            РеквВорд[9]=НомерПочтовогоИдентификатора;
            РеквВорд[10]=НаименованиеОСП;
            РеквВорд[11]=ДатаПолученияВОСП;
            РеквВорд[12]=ДатаВозбуждения;
            РеквВорд[13]=НомерПостановления;
            РеквВорд[14]=ФИОСудебногоПристава;
            РеквВорд[15]=КонтактнаяИнфПристава;
            РеквВорд[16]=ОсновнойДолг;
            РеквВорд[17]=Пени;
            РеквВорд[18]=ПроцентыЗаПользование;
            РеквВорд[19]=ГосПошлина;
            //РеквВорд[20]=ОплатаУслугПредставителя; 
                    
            Записать1(РеквВорд);
            
            ThisDocument.Close();
    КонецПроцедуры

    Теперь не важно есть ли на сервере офис, главное что бы он на клиенте был. На сервер только строковые значения передаются. И как не странно работает в три раза быстрее предыдущего варианта.

    Спасибо)))



    0



    Злой самаритянин

    182 / 182 / 94

    Регистрация: 24.04.2014

    Сообщений: 686

    15.02.2016, 18:11

    6

    wardamask, тоже долго возился с этим, правда в экселе, в итоге сделал все, что с экселем связано, на клиенте, специально для серверной базы. Можешь посмотреть мой пример, только там запись, а не чтение.



    0



    Модератор

    Эксперт 1С

    3724 / 2918 / 575

    Регистрация: 10.03.2011

    Сообщений: 11,491

    Записей в блоге: 1

    16.02.2016, 00:55

    7

    да не за что, главное что ты мозг включил……..



    0



    1. Приветствую.

      Столкнулся с проблемой:
      Создал обработку, которая запускает Excel, читает файл, заполняет его и записывает.
      На клиенте все великолепно выполняется.
      Создал регламентное задание, которое запускает в определенное время это на сервере.
      При выполнении на сервере вылезает ошибка про то, что типа MS Excel не удалось получить доступ к файлу. При этом доподлинно известно, что ком. объект Excel даже не создался (нет его в процессах диспетчера задач).
      Примечательно, что если запустить обработку клиентом с машины, где установлен сервер 1С, то все выполняется.

      Excel = Новый COMОбъект("Excel.Application");
      Книга = Excel.WorkBooks.Open("D:DstOrder.xls");
      

      Чувствую, что дело тут в том, что при работе с клиента Excel запускается из-под пользователя в реальном сеансе, а в случае сервера — под пользователем хоть и с полными правами, но без запущенного сеанса.

      Сервер Windows Server 2008 R2 Standart. Service Pack 1
      Как это обойти?


    2. shurikvz

      Offline

      shurikvz
      Модераторы
      Команда форума
      Модератор

      Регистрация:
      1 окт 2009
      Сообщения:
      8.547
      Симпатии:
      344
      Баллы:
      104

      1) Файл D:DstOrder.xls действительно существует на сервере?
      2) У пользователя под которым запущен сервер есть право доступа к каталогу D:Dst?

    3. 1. Да, файл существует. Обработка при запуске на этом же сервере из-под клиента выполняется без проблем.
      2. Доступ есть. Пользователь — администратор. Пробовал файл в разные папки класть.

      — Объединение сообщений, 15 авг 2014

      Полный текст ошибки. Ошибка от имени Microsoft Excel, однако процесса EXCEL в диспетчере задач нет!

      Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft Excel): Приложению Microsoft Excel не удается получить доступ к файлу «D:DstOrder.xls». Это может быть вызвано одной из следующих причин.

      • Указан несуществующий файл или путь.
      • Файл используется другой программой.
      • Имя книги, которую вы пытаетесь сохранить, совпадает с именем другой книги, открытой в данный момент.

      — Объединение сообщений, 15 авг 2014

      8.3.4.496

      Последнее редактирование: 15 авг 2014

    4. shurikvz

      Offline

      shurikvz
      Модераторы
      Команда форума
      Модератор

      Регистрация:
      1 окт 2009
      Сообщения:
      8.547
      Симпатии:
      344
      Баллы:
      104

      Т.е. сервер (ragent.exe и т.д.) стартует от имени Администратора? Или все же от USR1CV82 (не знаю как там по умолчанию под 8.3 пользователь называется).

    5. У меня пользователь USR1CV81 со старых времен. Он входит в группу Администраторы.

      Сейчас провел эксперимент. Зашел на сервер от имени этого пользователя и в клиенте запустил обработку — без проблем.

    6. Попробовал вместо COMОбъект использовать ПолучитьCOMОбъект. Вот результат

      Ошибка при вызове метода контекста (ПолучитьCOMОбъект): Ошибка получения объекта COM: -2147221021(0x800401E3): Операция недоступна


    7. shurikvz

      Offline

      shurikvz
      Модераторы
      Команда форума
      Модератор

      Регистрация:
      1 окт 2009
      Сообщения:
      8.547
      Симпатии:
      344
      Баллы:
      104


    8. shurikvz

      Offline

      shurikvz
      Модераторы
      Команда форума
      Модератор

      Регистрация:
      1 окт 2009
      Сообщения:
      8.547
      Симпатии:
      344
      Баллы:
      104


    9. shurikvz

      Offline

      shurikvz
      Модераторы
      Команда форума
      Модератор

      Регистрация:
      1 окт 2009
      Сообщения:
      8.547
      Симпатии:
      344
      Баллы:
      104


      likalim и Mark768 нравится это.
    10. Спасибо тебе, добрый человек. Сам бы не допер…


    11. shurikvz

      Offline

      shurikvz
      Модераторы
      Команда форума
      Модератор

      Регистрация:
      1 окт 2009
      Сообщения:
      8.547
      Симпатии:
      344
      Баллы:
      104

      Да не за что.
      Не совсем я это, разум это коллективный.. :)

    12. Небольшое уточнение:
      При выборе «Текущий пользователь», обработка на сервере запускает Excel только в том случае, если на сервер выполнил вход кто-нибудь из пользователей.
      Если это условие не выполняется, то получаем ошибку:

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

      На вкладке «Удостоверения» есть 3-й вариант запуска — указать конкретного пользователя и пароль.
      Я указал пользователя, от имени которого работает сервер 1С (USR1CV81).
      В таком варианте обработка запускает Excel при отсутствии работающих пользователей на сервере.
      Это меня устраивает.

      В моем случае не бывает работающих пользователей на сервере и тем более, запускающих Excel
      Могу предположить, что при запуске Excel любым пользователем (не USR1CV81) могут возникнуть проблемы.
      Например, Excel запускается и работает, однако при старте выдает «Невозможно использовать связывание и внедрение объектов».

    13. Приветствую.

      Когда в этой теме мне очень помогли. Восстановили сервер после аварии. Теперь восстанавливаю возможность работы пользователя USR1CV81 с Excel.
      Столкнулся с тем, что в Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM теперь нет ветки Microsoft Excel Application, хотя сам Excel установлен.
      Что я сделал не так?


    14. alexburn

      Offline

      alexburn
      Модераторы
      Команда форума
      Модератор

      Регистрация:
      5 янв 2009
      Сообщения:
      15.150
      Симпатии:
      560
      Баллы:
      204

      Переустанавливать эксель пробовали ?

    15. Да, уже несколько раз и разные версии.
      Вычитал в сети, что если нет ветки явно, то нужно в реестре найти его наименование в виде кода. В реестре нашел, но его кода в Настройка DCOM тоже нет.


    16. Ardak

      Offline

      Ardak

      Регистрация:
      21 дек 2015
      Сообщения:
      1
      Симпатии:
      1
      Баллы:
      1

      Вдруг кому понадобится
      Выполняем команду «mmc comexp.msc /32», которая делает то же что и DCOMCONFIG, но позволяет видеть 32 битные компоненты.


    17. limus80

      Offline

      limus80

      Регистрация:
      30 май 2013
      Сообщения:
      5
      Симпатии:
      0
      Баллы:
      1

      важное как мне кажется дополнение
      ко всему вышесказанному надо добавить учетке права входа в качестве сервиса на компьютер
      без этого у меня не работало на W2K12R2


    18. Gucci76

      Offline

      Gucci76
      Опытный в 1С

      Регистрация:
      9 мар 2008
      Сообщения:
      75
      Симпатии:
      0
      Баллы:
      26

      Здравствуйте.
      У меня похожая проблема, но только с ВОРДом
      В файловом варианте я могу Новый COMОбъект(«Word.Application»), а в клиент-серверном нет.
      Службы компонентов->Компьютеры->Мой компьютер->Настройка DCOM тут НЕ нашел ворда (открывал через команду «mmc comexp.msc /32»).


    1C-pro.ru - форум по 1С:Предприятию 7.7, 8.0, 8.1, 8.2, 8.3

    Понравилась статья? Поделить с друзьями:
  • Ошибка получения потока с ip камеры beward
  • Ошибка получения объекта com 2147467262 0x80004002 интерфейс не поддерживается
  • Ошибка получения потока ip камера beward
  • Ошибка получения объекта com 2147467259 0x80004005 неопознанная ошибка
  • Ошибка получения параметров строки соединения возможно драйвер не позволяет