PDA

Просмотр полной версии : Ошибка при вызове конструктора (COMObject)



Akbar11
30.10.2018, 07:23
Всем привет, ребята ошибка распространённая. Облазил все темы. Даже в гуголе до 10 страницы добрался ничего не помогает. Все перепробовал. Вот сама ошибка. База серверная
Конфигурация ИТИЛ 1С:ITIL. Управление информационными технологиями предприятия. ПРОФ, редакция 1.1. Версия платформы 1С:Предприятие 8.3 (8.3.10.2466). При выполнение кода


ExcelApplication = Новый COMObject("Excel.Application");

Ошибка


{ВнешняяОбработка.Загрузка ЭлектроныхАдресовИзЭксель .Форма.Форма.Форма(4)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject("Excel.Application");
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса

Может кто подскажет что еще может быть, что еще можно сделать. Ну или хотябы вместе разберемся с этой проблемой.

DoCaru
30.10.2018, 08:27
скорее всего офис слетел на сервере. попробуй переустановить

vitalshim
30.10.2018, 08:29
regsvr32 "C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"

antoshik86
30.10.2018, 08:30
https://yandex.ru/search/?text=-2147221005(0x800401F3)%3A%20Недопустима я%20строка%20с%20указанием%20кл асса&clid=2261453&banerid=0899063707%3ASW-be3cfb6c4b05&win=333&lr=237

vitalshim
30.10.2018, 08:31
regsvr32 "C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"

Запускать от имени администратора

vitalshim
30.10.2018, 08:34
Я пользуюсь этим способом, работает везде:

&НаКлиенте
Процедура Загрузка(Команда)

Режим = РежимДиалогаВыбораФайла.О� �крытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Фильт� � = НСтр("ru = ''; en = ''")
+ "Excel 97 • 2003 (*.xls)|*.xls|Excel 2010 и выше (*.xlsx)|*.xlsx";

ДиалогОткрытияФайла.Множе� �твенныйВыбор = Ложь;
ДиалогОткрытияФайла.Загол� �вок = "Выберите файлы";
Если ДиалогОткрытияФайла.Выбра� �ь() Тогда

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

COMОб = ПолучитьCOMОбъект(ПолныйПут ь);
СтраницаФ = COMОб.WorkSheets(1);

Для НомСтроки = 2 По 100 Цикл

МассивЭлементов = Новый Массив;
МассивЭлементов.Вставить(0, СтраницаФ.Cells(НомСтроки,12).va lue);
МассивЭлементов.Вставить(1, СтраницаФ.Cells(НомСтроки,5).val ue);
МассивЭлементов.Вставить(2, СтраницаФ.Cells(НомСтроки,6).val ue);
МассивЭлементов.Вставить(3, СтраницаФ.Cells(НомСтроки,15).va lue);
МассивЭлементов.Вставить(4, СтраницаФ.Cells(НомСтроки,8).val ue);
МассивЭлементов.Вставить(5, СтраницаФ.Cells(НомСтроки,13).va lue);
МассивЭлементов.Вставить(6, СтраницаФ.Cells(НомСтроки,14).va lue);
МассивЭлементов.Вставить(7, НомСтроки);
//МассивЭлементов.Вставить(8, СтраницаФ.Cells(НомСтроки,11).va lue);
//МассивЭлементов.Вставить(9, СтраницаФ.Cells(НомСтроки,12).va lue);
//МассивЭлементов.Вставить(10 , СтраницаФ.Cells(НомСтроки,13).va lue);
//МассивЭлементов.Вставить(11 , СтраницаФ.Cells(НомСтроки,6).val ue);

Если НЕ ЗначениеЗаполнено(Страниц� �Ф.Cells(НомСтроки,12).value) И НЕ ЗначениеЗаполнено(Страниц� �Ф.Cells(НомСтроки,5).value) Тогда

Прервать;

КонецЕсли;

ЗагрузкаНаСервере(МассивЭ� �ементов,ПолныйПуть);

КонецЦикла;

Иначе

Режим = РежимДиалогаВопрос.ОК;
Ответ = Вопрос(НСтр("ru = 'Загрузка прервана!';"
+ " en = 'Do you want to continue?'"), Режим, 0);
Если Ответ = КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;

КонецЕсли;

КонецПроцедуры

Akbar11
30.10.2018, 08:34
Сейчас посмотрел, офис там и не стоит. Возможно ли это влияет на данную ошибку? Хотя вроде, работало раньше без офиса на сервре. Но точно утверждать не буду

vitalshim
30.10.2018, 08:35
Я пользуюсь этим способом, работает везде:

&НаКлиенте
Процедура Загрузка(Команда)

Режим = РежимДиалогаВыбораФайла.О� �крытие;
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
ДиалогОткрытияФайла.Фильт� � = НСтр("ru = ''; en = ''")
+ "Excel 97 • 2003 (*.xls)|*.xls|Excel 2010 и выше (*.xlsx)|*.xlsx";

ДиалогОткрытияФайла.Множе� �твенныйВыбор = Ложь;
ДиалогОткрытияФайла.Загол� �вок = "Выберите файлы";
Если ДиалогОткрытияФайла.Выбра� �ь() Тогда

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

COMОб = ПолучитьCOMОбъект(ПолныйПут ь);
СтраницаФ = COMОб.WorkSheets(1);

Для НомСтроки = 2 По 100 Цикл

МассивЭлементов = Новый Массив;
МассивЭлементов.Вставить(0, СтраницаФ.Cells(НомСтроки,12).va lue);
МассивЭлементов.Вставить(1, СтраницаФ.Cells(НомСтроки,5).val ue);
МассивЭлементов.Вставить(2, СтраницаФ.Cells(НомСтроки,6).val ue);
МассивЭлементов.Вставить(3, СтраницаФ.Cells(НомСтроки,15).va lue);
МассивЭлементов.Вставить(4, СтраницаФ.Cells(НомСтроки,8).val ue);
МассивЭлементов.Вставить(5, СтраницаФ.Cells(НомСтроки,13).va lue);
МассивЭлементов.Вставить(6, СтраницаФ.Cells(НомСтроки,14).va lue);
МассивЭлементов.Вставить(7, НомСтроки);
//МассивЭлементов.Вставить(8, СтраницаФ.Cells(НомСтроки,11).va lue);
//МассивЭлементов.Вставить(9, СтраницаФ.Cells(НомСтроки,12).va lue);
//МассивЭлементов.Вставить(10 , СтраницаФ.Cells(НомСтроки,13).va lue);
//МассивЭлементов.Вставить(11 , СтраницаФ.Cells(НомСтроки,6).val ue);

Если НЕ ЗначениеЗаполнено(Страниц� �Ф.Cells(НомСтроки,12).value) И НЕ ЗначениеЗаполнено(Страниц� �Ф.Cells(НомСтроки,5).value) Тогда

Прервать;

КонецЕсли;

ЗагрузкаНаСервере(МассивЭ� �ементов,ПолныйПуть);

КонецЦикла;

Иначе

Режим = РежимДиалогаВопрос.ОК;
Ответ = Вопрос(НСтр("ru = 'Загрузка прервана!';"
+ " en = 'Do you want to continue?'"), Режим, 0);
Если Ответ = КодВозвратаДиалога.ОК Тогда
Возврат;
КонецЕсли;

КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура ЗагрузкаНаСервере(МассивЭ� �ементов,ПолныйПуть)

ВремяОплаты = СокрЛП(МассивЭлементов.Пол учить(0));
КартаКлиента = СокрЛП(МассивЭлементов.Пол учить(1));
СнятаяСумма = СокрЛП(МассивЭлементов.Пол учить(2));
ТелФ = СокрЛП(МассивЭлементов.Пол учить(3));


ДатаФ = СокрЛП(МассивЭлементов.Пол учить(4));
НомерФ = СокрЛП(МассивЭлементов.Пол учить(5));
СуммаФ = СокрЛП(МассивЭлементов.Пол учить(6));
НомСтроки = СокрЛП(МассивЭлементов.Пол учить(7));
КонецПроцедуры

DoCaru
30.10.2018, 08:49
установи офис. раньше может у тебя не серверный вариант был (в толстом работает)

Akbar11
30.10.2018, 08:59
Делал, и не раз)

DoCaru
30.10.2018, 09:03
Делал, и не раз)

ты про что?

Akbar11
30.10.2018, 09:04
Запускать от имени администратора

Делал, и не раз. Не помогло. Все что предлагает гугол сделал

DoCaru
30.10.2018, 09:21
Делал, и не раз. Не помогло. Все что предлагает гугол сделал

ты на сервере офис поставил?

Akbar11
30.10.2018, 09:23
ты на сервере офис поставил?

Нет, если поставить решит проблему?

avm3110
30.10.2018, 09:23
regsvr32 "C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"

мдя-я-я.. а причем тут 1С, когда проблема в Экселе...


Всем привет, ребята ошибка распространённая. Облазил все темы. Даже в гуголе до 10 страницы добрался ничего не помогает. Все перепробовал. Вот сама ошибка. База серверная
Конфигурация ИТИЛ 1С:ITIL. Управление информационными технологиями предприятия. ПРОФ, редакция 1.1. Версия платформы 1С:Предприятие 8.3 (8.3.10.2466). При выполнение кода


ExcelApplication = Новый COMObject("Excel.Application");

Ошибка


{ВнешняяОбработка.Загрузка ЭлектроныхАдресовИзЭксель .Форма.Форма.Форма(4)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject("Excel.Application");
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса

Может кто подскажет что еще может быть, что еще можно сделать. Ну или хотя бы вместе разберемся с этой проблемой.



Если проблема с экселем - значит не зарегистрирован ком-объект Экселя. Как правило при установке офиса под админскими правами - это делается автоматически. но я сталкивался с ситуациями, когда офис ставили под обрезанными правами "пользователя" и другой раз ставили "офис 365" - и соответствующие ком-компоненты экселя и ворда не регились.

Akbar11
30.10.2018, 09:42
мдя-я-я.. а причем тут 1С, когда проблема в Экселе...





Если проблема с экселем - значит не зарегистрирован ком-объект Экселя. Как правило при установке офиса под админскими правами - это делается автоматически. но я сталкивался с ситуациями, когда офис ставили под обрезанными правами "пользователя" и другой раз ставили "офис 365" - и соответствующие ком-компоненты экселя и ворда не регились.

Офис стоит, под правами администратора у меня на компутере. Заметил что на сервере не стоит Эксель, Возможно, что это как то влияет.

DoCaru
30.10.2018, 09:43
Офис стоит, под правами администратора у меня на компутере. Заметил что на сервере не стоит Эксель, Возможно, что это как то влияет.

тебе уже 2 человека сказали, что поставь на сервер под правами админа офис. Че еще то не понятно?

avm3110
30.10.2018, 09:59
Офис стоит, под правами администратора у меня на компутере. Заметил что на сервере не стоит Эксель, Возможно, что это как то влияет.

Мдя-я-я.. А какая разница что "стоит"??? Смысл гадать? Зайди в regedit и поиском посмотри - есть ли у тебя зарегистрированная компонента "Excel.Application"

Akbar11
30.10.2018, 10:05
тебе уже 2 человека сказали, что поставь на сервер под правами админа офис. Че еще то не понятно?

Теперь понятно, попробую)

DoCaru
30.10.2018, 10:37
не забудь отписаться, если помогло. Чтобы потом другие не лопатили 10 страниц гугла

malakhovua
30.10.2018, 11:02
Класс зарегистрируй там где у тебя выполняется обработка. comcntr.dll

malakhovua
30.10.2018, 11:04
http://buh.ruboard.ru/public/197627/

avm3110
30.10.2018, 11:19
http://buh.ruboard.ru/public/197627/

ну ё-ё-ё-ё-ё... Топик читать сложно???? :mad:

В топике проблема: С созданием ExcelApplication = Новый COMObject("Excel.Application");
а ваша ссылка про "Ошибка V82.COMConnector на сервере 64. Решение проблемы"

Или думаете что это одно и тоже :confused:

malakhovua
30.10.2018, 12:09
А, что Application не через ком создается? Я натолкнул на мысль, а там решайте как применить в вашем случае. Сказано же "Недопустимая строка с указанием класса". Вопрос: Какого класса?

COMОбъект (COMObject)
Конструкторы:

По имени приложения

Описание:

Создает COM-объект (например, Word, Excel и т.д.). Методы и свойства СОМ-объектов в дальнейшем становятся доступными через данный объект.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

avm3110
30.10.2018, 13:06
А, что Application не через ком создается? Я натолкнул на мысль, а там решайте как применить в вашем случае. Сказано же "Недопустимая строка с указанием класса". Вопрос: Какого класса?

Да-да... Безусловно... Конечно натолкнул.. Это примерно как на вопрос..
"- Как проехать из Москвы в Иваново?"
Давать ответ... "- Приходите в Марселе в морской порт и покупаете билет до Лондона".
Уточнение - "Ни в Иваново, ни В Москве нет моря".:mad:
"- И что? Я же натолкнул на мысль.. А уж сами решайте как этой мыслью пользоваться":confused:

Akbar11
13.11.2018, 02:01
Поставил эксель на сервер, ноль на массу. Перезагрузил его даже.
ошибка снова.

{ВнешняяОбработка.Загрузка ВITIL.Форма.Форма.Форма(124)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject(,"Excel.Application");
по причине:
-2147221005(0x800401F3): Недопустимая строка с указанием класса

Akbar11
13.11.2018, 02:06
У себя регистрировал библеотеку 2 раза, и удалял и по новой регистрировал. Так же сколько тем не находил везде одно и тоже, добавить компоненту, поставить эксель и регистрация библеотеки

avm3110
13.11.2018, 06:39
У себя регистрировал библеотеку 2 раза, и удалял и по новой регистрировал. Так же сколько тем не находил везде одно и тоже, добавить компоненту, поставить эксель и регистрация библеотеки

А сколько есть попыток угадать какую именно библиотеку ставил "2 раза"? Где ставил (на клиенте или на сервере)? под какими правами (пользователя или админа)?

avm3110
13.11.2018, 06:45
У себя регистрировал библеотеку 2 раза, и удалял и по новой регистрировал. Так же сколько тем не находил везде одно и тоже, добавить компоненту, поставить эксель и регистрация библеотеки

А сколько есть попыток угадать какую именно библиотеку ставил "2 раза"? Где ставил (на клиенте или на сервере)? под какими правами (пользователя или админа)?

Да и по синтаксису... У тебя в диагностике:

ExcelApplication = Новый COMObject(,"Excel.Application");
Что явно указывает на ошибку - "лишняя запятая". Параметр "Excel.Application" должен быть первым :mad:
правильно:
ExcelApplication = Новый COMObject("Excel.Application");

Akbar11
13.11.2018, 08:12
Регистрировал библиотеку на клиенте, под администратором. Той платформы которую запускаю

Akbar11
13.11.2018, 08:23
А сколько есть попыток угадать какую именно библиотеку ставил "2 раза"? Где ставил (на клиенте или на сервере)? под какими правами (пользователя или админа)?

Да и по синтаксису... У тебя в диагностике:

Что явно указывает на ошибку - "лишняя запятая". Параметр "Excel.Application" должен быть первым :mad:
правильно:
ExcelApplication = Новый COMObject("Excel.Application");

Теперь ошибка немного другая

{ВнешняяОбработка.Загрузка ВITIL.Форма.Форма.Форма(123)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject("Excel.Application");
по причине:
-2147024891(0x80070005): Отказано в доступе.

avm3110
13.11.2018, 11:13
Регистрировал библиотеку на клиенте, под администратором. Той платформы которую запускаю

Продолжаю занудно. Какую библиотеку регистрируете? Какой командой? У вас база файловая или клиент-сервер?
Опишите поподробнее - как именно регистрируете "под администратором".

Akbar11
14.11.2018, 05:04
Продолжаю занудно. Какую библиотеку регистрируете? Какой командой? У вас база файловая или клиент-сервер?
Опишите поподробнее - как именно регистрируете "под администратором".

Регистрация библиотеки командой regsvr32 "C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"
Клиент - сервер
Процес, нажимаю вин + Q, пишу командная строка строка, контекстное меню запустить от имени админа, запускаю, Логин + пароль и регистрирую библиотеку

avm3110
14.11.2018, 06:05
Регистрация библиотеки командой regsvr32 "C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"
Клиент - сервер
Процес, нажимаю вин + Q, пишу командная строка строка, контекстное меню запустить от имени админа, запускаю, Логин + пароль и регистрирую библиотеку

Мдя-я-я... все как в анекдоте...
"Пьяный ходит вокруг фонаря ночью и о чем-то материться. Прохожий хочет помочь и участливо спрашивает в чем дело.
Да я ключи потерял и уже полчаса не могу найти - следует ответ.
прохожий оглядывает место под фонарем и удивляется. Да тут же ровный асфальт, сухо и отлично видно что ключей тут нет. Ты уверен что именно тут потерял?
Да нет.. потерял я в грязной луже, вон там в подворотне. Но там же очень темно искать и очень грязно и очень мокро - поэтому я ищу именно тут".

Уважаемый... У Вас диагностика "не зарегистрирован класс Excel.Application". Ну и что же вы хотите добиться "упорством достойного лучшего применения" регистрируя библиотеку 1с предприятия???? :mad:

avm3110
14.11.2018, 06:10
Теперь ошибка немного другая
{ВнешняяОбработка.Загрузка ВITIL.Форма.Форма.Форма(123)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject("Excel.Application");
по причине:
-2147024891(0x80070005): Отказано в доступе.

А эта ошибка показывает, что пользователю под которым выполняется строка
ExcelApplication = Новый COMObject("Excel.Application");
нет прав на создание ком-объекта.

У вас база клиент-серверная или файловая? Для файловой запустите 1с с правами администратора и попробуйте выполнить внешнюю обработку под админом с полными правами и правами администрирования.

Akbar11
14.11.2018, 07:14
А эта ошибка показывает, что пользователю под которым выполняется строка
ExcelApplication = Новый COMObject("Excel.Application");
нет прав на создание ком-объекта.

У вас база клиент-серверная или файловая? Для файловой запустите 1с с правами администратора и попробуйте выполнить внешнюю обработку под админом с полными правами и правами администрирования.

В файловой все работает, даже не под админимон

avm3110
14.11.2018, 12:33
В файловой все работает, даже не под админимон

Поднимите файловую на сервере и там попробуйте.

Если интерактивно в файловой будет работать, а в запущенном клиенте на сервере в клиент-сервере - нет. нужно смотреть права пользователя под которым работает 1С предприятие. А есть еще ряд настоек которые нужно будет проверять.

Пришлите вначале результаты этого тестирования

Akbar11
27.11.2018, 02:06
Поднимите файловую на сервере и там попробуйте.

Если интерактивно в файловой будет работать, а в запущенном клиенте на сервере в клиент-сервере - нет. нужно смотреть права пользователя под которым работает 1С предприятие. А есть еще ряд настоек которые нужно будет проверять.

Пришлите вначале результаты этого тестирования

Здравствуйте. В файловой на сервере все работает

Akbar11
27.11.2018, 02:26
На сервере ошибка


{ВнешняяОбработка.Загрузка ВITIL.Форма.Форма.Форма(123)}: Ошибка при вызове конструктора (COMObject)
ExcelApplication = Новый COMObject("Excel.Application");
по причине:
-2147467262(0x80004002): Интерфейс не поддерживается

avm3110
27.11.2018, 06:59
В файловой на сервере все работает
На сервере ошибка

ну е-е-е-е... еще раз.. выше уже писал... Если на одном и том же компе одна и та же база поднята в файловом режиме, а затем в клиент-серверном (когда и сервер и клиент это один и тот же ком). И при этом на файловом "все работает", а на клиент-сервере подобная ошибка - следовательно проблема в правах под которым работает база.

При файл серверном - это права пользователя под которым идет запуск базы, а на клиент сервере это права пользователя под которым крутиться сервер 1С предприятия.

Решение - смотреть и фиксить эти права. Например как описано тут: - http://buh.ruboard.ru/public/196323/

Akbar11
27.11.2018, 08:47
ну е-е-е-е... еще раз.. выше уже писал... Если на одном и том же компе одна и та же база поднята в файловом режиме, а затем в клиент-серверном (когда и сервер и клиент это один и тот же ком). И при этом на файловом "все работает", а на клиент-сервере подобная ошибка - следовательно проблема в правах под которым работает база.

При файл серверном - это права пользователя под которым идет запуск базы, а на клиент сервере это права пользователя под которым крутиться сервер 1С предприятия.

Решение - смотреть и фиксить эти права. Например как описано тут: - http://buh.ruboard.ru/public/196323/

Тогда есть кое что еще.
База: 1С:Предприятие 8.3 (8.3.12.1595)
Такой же вызав класса эксель, и с моего компа под обычными права функция отрабатывает. Серваная

nemo22
05.12.2020, 15:15
ну е-е-е-е... еще раз.. выше уже писал... Если на одном и том же компе одна и та же база поднята в файловом режиме, а затем в клиент-серверном (когда и сервер и клиент это один и тот же ком). И при этом на файловом "все работает", а на клиент-сервере подобная ошибка - следовательно проблема в правах под которым работает база.

При файл серверном - это права пользователя под которым идет запуск базы, а на клиент сервере это права пользователя под которым крутиться сервер 1С предприятия.

Решение - смотреть и фиксить эти права. Например как описано тут: - http://buh.ruboard.ru/public/196323/

Добрый день .
Прошу помощи с ошибкой -
Ошибка при загрузке Microsoft Excel.
{Документ.ЗаказКлиента.Фор� �а.ФормаДокумента.Форма(6003)} : Ошибка при вызове конструктора (COMОбъект): -2147024891(0x80070005): Отказано в доступе.

указанные выше описания проверил.
Как проверить -
При файл серверном - это права пользователя под которым идет запуск базы, а на клиент сервере это права пользователя под которым крутиться сервер 1С предприятия???