# Форум 1С > Конфигурирование, программирование 1С - Предприятие > 1С - Предприятие 8.0, 8.1, 8.2, 8.3 >  Ошибка при вызове конструктора (COMObject)

## Akbar11

Всем привет, ребята ошибка распространённая. Облазил все темы. Даже в гуголе до 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

скорее всего офис слетел на сервере. попробуй переустановить

----------


## vitalshim

regsvr32 "C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"

----------


## antoshik86

https://yandex.ru/search/?text=-2147...win=333&lr=237

----------


## vitalshim

> regsvr32 "C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"


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

----------


## vitalshim

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

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

	Режим = РежимДиалогаВыбораФайла.О  крытие;
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
	ДиалогОткрытияФайла.Фильт   = НСтр("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

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

----------


## vitalshim

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

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

	Режим = РежимДиалогаВыбораФайла.О  крытие;
	ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);
	ДиалогОткрытияФайла.Фильт   = НСтр("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

установи офис. раньше может у тебя не серверный вариант был (в толстом работает)

----------


## Akbar11

Делал, и не раз)

----------


## DoCaru

> Делал, и не раз)


ты про что?

----------


## Akbar11

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


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

----------


## DoCaru

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


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

----------


## Akbar11

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


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

----------


## avm3110

> 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");
> ```
> 
> ...




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

----------


## Akbar11

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


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

----------


## DoCaru

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


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

----------


## avm3110

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


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

----------


## Akbar11

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


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

----------


## DoCaru

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

----------


## malakhovua

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

----------


## malakhovua

http://buh.ruboard.ru/public/197627/

----------


## avm3110

> http://buh.ruboard.ru/public/197627/


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

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

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

----------


## malakhovua

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



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

----------


## avm3110

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


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

----------


## Akbar11

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



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

----------


## Akbar11

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

----------


## avm3110

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


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

----------


## avm3110

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


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

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



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


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

----------


## Akbar11

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

----------


## Akbar11

> А сколько есть попыток угадать какую именно библиотеку ставил "2 раза"? Где ставил (на клиенте или на сервере)? под какими правами (пользователя или админа)?
> 
> Да и по синтаксису... У тебя в диагностике:
> 
> Что явно указывает на ошибку - "лишняя запятая". Параметр "Excel.Application" должен быть *первым* :mad:
> правильно:
> ExcelApplication = Новый COMObject("Excel.Application");


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



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

----------


## avm3110

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


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

----------


## Akbar11

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


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

----------


## avm3110

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


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

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

----------

Akbar11 (26.11.2018)

----------


## avm3110

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


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

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

----------


## Akbar11

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


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

----------


## avm3110

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


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

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

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

----------


## Akbar11

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


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

----------


## Akbar11

На сервере ошибка




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

----------


## avm3110

> В файловой на сервере все работает
> На сервере ошибка


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

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

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

----------


## Akbar11

> ну е-е-е-е... еще раз.. выше уже писал... Если на одном и том же компе одна и та же база поднята в файловом режиме, а затем в клиент-серверном (когда и сервер и клиент это один и тот же ком). И при этом на файловом "все работает", а на клиент-сервере подобная ошибка - следовательно проблема в правах под которым работает база.
> 
> При файл серверном - это права пользователя под которым идет запуск базы, а на клиент сервере это права пользователя под которым крутиться сервер 1С предприятия.
> 
> Решение - смотреть и фиксить эти права. Например как описано тут: - http://buh.ruboard.ru/public/196323/


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

----------


## nemo22

> ну е-е-е-е... еще раз.. выше уже писал... Если на одном и том же компе одна и та же база поднята в файловом режиме, а затем в клиент-серверном (когда и сервер и клиент это один и тот же ком). И при этом на файловом "все работает", а на клиент-сервере подобная ошибка - следовательно проблема в правах под которым работает база.
> 
> При файл серверном - это права пользователя под которым идет запуск базы, а на клиент сервере это права пользователя под которым крутиться сервер 1С предприятия.
> 
> Решение - смотреть и фиксить эти права. Например как описано тут: - http://buh.ruboard.ru/public/196323/


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

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

----------

