Ошибка при вызове конструктора comобъект 2147024891 0x80070005 отказано в доступе

Обновлено: 18.04.2024

Есть конфа Документооборот 8 Проф 1,2. Сделан механизм загрузки некоторых данных в Документооборот из БП 2.0 через COM-объект ! Всё это благополучно работало и не могу понять, что случилось. Выскакивает вот такая ошибка :

Ошибка при загрузке данных через (Обработка "Выгрузка и загрузка данных XML")
Доброго времени суток. Возникла проблема при загрузке документов с УПП 1.3. (не типовая) на УПП.

Ошибка при подключении: "can't open device "\\. \COM1" : Отказано в доступе"
подкрючаю ардуино уно к компу. Win 7 sp1 2009 года. На компе стоит система безопасности secret.

скопируй(воспроизведи) объект на свой комп и подключи его, а не с сервера.
если не будет работать, тогда ищем дальше
А иначе может сервер украли(((

Выгрузил базу и подключил на своём компе локально ! Всё работает ! А как раньше на серваке не хочет ! Проверил права на серваке ! Права без ограничений ! Что ещё может быть ?

Запускается от имени администратора сервера и администратора 1С. Прав должно быть достаточно ? Администратор базы 1С и администратор кластера серверов 1С - это одна роль ?

Служба запускается либо из под локального пользователя, либо из под доменного (По умолчанию локальный кажется USR1С8)

исделай на серве новый директорий, перемести туда объект, дай себе любимому все права к директ и к объекту и (помогай нам Бог!). А сервом ты сам заведуешь?

Запускается от имени администратора сервера и администратора 1С. Прав должно быть достаточно ? Администратор базы 1С и администратор кластера серверов 1С - это одна роль ?

Раз сходу, не получается решить, пойдем по порядку:
1. Версия ОС на сервере?
2. На сервере у Вас 1С работает в клиент-серверном варианте или в файловом?
3. Приведите скринщот ошибки, с текстом доступным по кнопке "Подробнее".

1. Что возвращает функция ИмяCOMСоединителя()?
2. Какой разрядности сервер 1С:Предприятия?
3. Производились ли какие то действия, до ошибки? Обновление платформы например?

Клиентскую 32 разрядную часть на сервер устанавливали/обновляли недавно?

Отказано в доступе. Ну как бы в голову приходят два варианта
1. Нет прав у запускающего этот процесс на просмотр реестра
2. Нет прав у запускающего этот процесс на создание нового процесса (ком процесса)

Вы сами запускаете обмен? Он выполняется через регламентное/фоновое задание?

*И все же ответьте что возвращает функция ИмяCOMСоединителя()

Добавлено через 3 минуты
Попробуй зарегить его еще раз КомКонектор
regsrv32 C:\Program Files\1cv82\8.2.**.**\bin\comcntr.dll

свою версию платформы подставь

Добавлено через 8 минут
Стальная Крыса

12 - 23.08.11 - 03:30
сделал как в (5)
но получаю отлуп в виде "Отказано в доступе", это уже лучше, но результат все равно нулевой.

зы. внес учетку сервера 1С в группу "администраторы", перезапустил службу сервера 1С - успеха не дало.
в обед планирую перезапустить сам сервак - может этого-то как раз и не хватает.
Alex375

13 - 23.08.11 - 03:33
Я сталкивался с проблемами доступа при выполнении кода на сервере 8.2. В результате завел в домене учетку и запускаю от ее имени службу 1С сервера - проблем с доступом больше нет
Стальная Крыса

14 - 23.08.11 - 03:51
серверная учетка - именно доменная
Стальная Крыса

15 - 23.08.11 - 04:25
уф, заработало

при просмотре журнала "Система" увидел строку ошибки, которая гласит:

это навело на мысль.
в ветке созданного приложения COM+ в "ролях" добавил пользователя и указал учетку сервера.

Здравствуйте. Подскажите, никто не сталкивался с такой проблемой?
Если запускать этот код из внешней обработки , то всё нормально, но как только я разместил код в общий модуль (сервер, привилегированный, вызов сервера) и подцепил рег. задание, то вылетает ошибка:

Может в настройках модуля что-то убрать?

(3) yurowski, у тебя 1С:Сервер запускается под конкретным пользователем - вот ему дать права, а не только, как по-умолчанию, "Разрешить запуск как службs"

Чтобы была возможность НА СЕРВЕРЕ обращаться к Excel через COM надо дать права доступа пользователю, от которого запускается сервер 1С. Если мы говорим про регламентные задания, то "перетащить на клиента" не вариант. Есть вариант - использовать умение платформы 8.3.6(7?) читать книги Excel в табличный документ без использования Excel - ТабличныйДокумент.Прочитать()
Там есть нюансы:
1. все листы склеиваются в один табличный документ через разделитель страниц. Вот тут находили решение по обратному разделению на страницы. К сожалению, имена страниц теряются.
2. Могут быть проблемы со считыванием значений как значения (например, дата). По умолчанию считываются текстовые представления. Можно указать параметр для чтения значений а не текста, но с первой попытки у меня что-то не срослось, и больше я не пробовал.
3. Цветовое оформление может быть считано не совсем точно.
Даже с такими ограничениями в одном проекте мне удалось успешно отказаться от обращения к Excel.

Теперь про права, если всё-таки без обращения через COM не обойтись.
Потребуется зайти в "Службы компонентов" (Панель управления-Администрирование, или comexp.msc, или dcomcnfg.exe) - Настройка DCOM, и найти там Microsoft Excel Application.
Если его там нет - значит у вас 64-разрядная система и установлен 32-разрядный Excel. Решение - запустить "comexp.msc /32" для управления 32-разрядными COM-серверами.
Что тут нужно:
1. установить явно от имени какого пользователя будет запускаться Excel (вкладка "Удостоверение").
2. На вкладке "Безопасность" пользователя, от которого стартует 1С (обычно USR1CV8), явно прописать в списках на запуск и доступ.

Maspi; Egovigor; klaus38; etri; vlast; N191119; rolin555; Ghost_X; onetone; tiniji; Tangram; mythos; natarezn; + 13 – Ответить



Значит дело было так. Появилась необходимость подключаться к базам по com соединению, для анализа тамошних объектов метаданных. Проблема оказалась в том, что базы могли работать на разных версиях 1С. Пошел в интернет, искал, читал, но все фигня, в оновном все предлагают держать базы на одной версии, что для меня было невозможным.

Кроме, вот этой статьи. Огромное спасибо автору (Леонид Кириенко) и zakiap

Тут уже интересней, но есть пару минусов

1) 1С должна работать от имени учетки с админскими правами.

2) "Варварское" поведение по отношению dllhost.exe :)

3) Могут возникнуть проблемы при одновременном обращении к базам на разных версиях.

Но, как оказалось, самым для меня полезным, оказалась не сама статья, а один из комментариев к ней.


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

Инструкция

1. Идем "Панель управления" - "Администрирование" - "Службы компонентов"

2. В оснастке служб компонентов, "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Приложения COM+"

3. Создаем новое приложение, правой кнопкой по "Приложения COM+" - "Создать" - "Приложение"

4. Выбираем "Создать новое приложение", называем например "1cv8", тип выбираем "Библиотечное приложение"

должно полчуить так


5. Раскрываем "1cv8", правой кнопкой по "Компоненты" - "Создать" - "Компонент".

6. Выбираем вариант "Установка новых компонентов", находим нашу библиотеку comcntr.dll

Находится она в катлоге BIN установленной платформы, у меня например путь такой

"C:\Program Files (x86)\1cv8\8.3.10.2168\bin\comcntr.dll"

должны получить следующую картину


7. Правой кнопкой по "V83.COMConnector.1" - "Псевдоним. ", меняем наименование с "CopyOf.V83.COMConnector.1" на "V83.COMConnector_8.3.9.2033". Данное действие проделываем для всех нужных версий платформ.

8. Открываем "regedit" через пуск или команду "Выполнить", нажимаем F3 и указываем для поиска строку с наименованием созданой нами обертки, например "V83.COMConnector_8.3.9.2033". Или использум для поиска CLSID созданной обертки.

9. Ищем значение в ветке "HKEY_LOCAL_MACHINE" у меня путь такой HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\\ выглядеть должно так


В ветке "InprocServer32" меняем значение у меня, "C:\Program Files (x86)\1cv8\8.3.10.2168\bin\comcntr.dll" на путь к нужной версии длл, в данном случае "C:\Program Files (x86)\1cv8\8.3.9.2033\bin\comcntr.dll".

Данное дейстие проделываем для всех созданных оберток.

Все готово) Для подключения к конкретной версии базы, в 1С теперь нужно использовать следующую конструкцию

В файлах утилита, которая выполнит все эти действия автоматически. Подходит для тех у кого 1С лежит в каталоге

"C:\Program Files (x86)\1cv8". У кого что то отличается, вот ссылка на GitHub . Запустить утилиту нужно от имени администратора. Надеюсь данный материал будет вам полезен)

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Готовые переносы данных

Алкогольная декларация

54-ФЗ

Инструментарий разработчика

Маркетплейсы и 1С

Траектория обучения 1С-разработчика

Управление проектом на Инфостарте

При регистрации библиотек из разных версий 8.3, в одном СОМ приложении, возможно подключиться только к одной из версий.
(15) Решил проблему, создав компоненты в отдельных приложениях СОМ

Спасибо за статью. Мне она помогла, но если просто сделать как написано, возникали ошибки. Куча комментариев с разными ошибками не дали быстрого решения как именно сделать настройки. Предлагаю слегка скорректированный алгоритм. (*) - измененные шаги. В нем нет последних шагов по работе с реестром. У меня сработало на двух серверах.
Если автор посчитает возможным - можно было бы перенести в шапку.

1. Идем "Панель управления" - "Администрирование" - "Службы компонентов"
2. В оснастке служб компонентов, "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Приложения COM+"
3. Создаем новое приложение, правой кнопкой по "Приложения COM+" - "Создать" - "Приложение"
4*. Выбираем "Создать новое приложение", называем например "1cv8", тип выбираем "Серверное приложение",
Учетная запись - Текущий пользователь, Пользователь с ролью Owner - поставил администратора компьютера (сервера).
(без этого возможна ошибка -2147024769(0x8007007F): Не найдена указанная процедура)
5*. Нажимаем правой кнопкой по ветке 1cv8 – Свойства – Безопасность:
- Снимаем галку «Принудительная проверка доступа для приложений»
- Ставим галку «Применить политику программных ограничений»
- Уровень ограничений «Неограниченный»
(без этого возможна ошибка -2147024891(0x80070005): Отказано в доступе)
6. Раскрываем "1cv8", правой кнопкой по "Компоненты" - "Создать" - "Компонент".
7. Выбираем вариант "Установка новых компонентов", находим нашу библиотеку comcntr.dll (той версии платформы, к которой надо будет подключаться)
-* Если установка платформы на сервер не требуется, то достаточно скопировать в некую папку на сервере все содержимое папки bin соответствующей платформы и указать comcntr.dll из этой папки
8. Правой кнопкой по "V83.COMConnector.1" - "Псевдоним. ", меняем наименование с "CopyOf.V83.COMConnector.1" на "V83.COMConnector_8.3.9.2033". Данное действие проделываем для всех нужных версий платформ.


3327


956


1352


991


3327


956

в Яндексе посмотреть. Много причин.


960


1401

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


391


52


960


1401

Так программа после ошибки запускается или закрывается?
В какой момент появляется ошибка?
Скриншот ошибки можете сюда приложить?


391


52

Вложения:


40


3

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


391


52

в правах доступа данного конкретного компьютера к серверу


162


96

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


391


52

Кэш почистил.
В журнале абсолютно пусто. Точнее "Сеанс. Начало", "Сеанс. Аутентификация" и все.
"относительно другого компьютера присутствует, а относительно этого - нет" - компьютер один, просто с него заходят в Камин под разными пользователями.


3327


956


391


52


391


52

Если на другом компьютере запустить сеанс под "проблемным" пользователем, ошибка проявляется?


3327


956

Если на другом компьютере запустить сеанс под "проблемным" пользователем, ошибка проявляется?

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

Так как текст ошибки системный и в журнале регистрации не фиксируется, определить причину мы не можем. "Поймать" её Вы сможете в режиме отладки именно на этой "проблемной" машине.


391


52

Тут вопрос скорее не об ошибке конфигурации, а что она такое делает под администратором, чего не делает под обычным пользователем. И чего не делала раньше.



Значит дело было так. Появилась необходимость подключаться к базам по com соединению, для анализа тамошних объектов метаданных. Проблема оказалась в том, что базы могли работать на разных версиях 1С. Пошел в интернет, искал, читал, но все фигня, в оновном все предлагают держать базы на одной версии, что для меня было невозможным.

Кроме, вот этой статьи. Огромное спасибо автору (Леонид Кириенко) и zakiap

Тут уже интересней, но есть пару минусов

1) 1С должна работать от имени учетки с админскими правами.

2) "Варварское" поведение по отношению dllhost.exe :)

3) Могут возникнуть проблемы при одновременном обращении к базам на разных версиях.

Но, как оказалось, самым для меня полезным, оказалась не сама статья, а один из комментариев к ней.


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

Инструкция

1. Идем "Панель управления" - "Администрирование" - "Службы компонентов"

2. В оснастке служб компонентов, "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Приложения COM+"

3. Создаем новое приложение, правой кнопкой по "Приложения COM+" - "Создать" - "Приложение"

4. Выбираем "Создать новое приложение", называем например "1cv8", тип выбираем "Библиотечное приложение"

должно полчуить так


5. Раскрываем "1cv8", правой кнопкой по "Компоненты" - "Создать" - "Компонент".

6. Выбираем вариант "Установка новых компонентов", находим нашу библиотеку comcntr.dll

Находится она в катлоге BIN установленной платформы, у меня например путь такой

"C:\Program Files (x86)\1cv8\8.3.10.2168\bin\comcntr.dll"

должны получить следующую картину


7. Правой кнопкой по "V83.COMConnector.1" - "Псевдоним. ", меняем наименование с "CopyOf.V83.COMConnector.1" на "V83.COMConnector_8.3.9.2033". Данное действие проделываем для всех нужных версий платформ.

8. Открываем "regedit" через пуск или команду "Выполнить", нажимаем F3 и указываем для поиска строку с наименованием созданой нами обертки, например "V83.COMConnector_8.3.9.2033". Или использум для поиска CLSID созданной обертки.

9. Ищем значение в ветке "HKEY_LOCAL_MACHINE" у меня путь такой HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Wow6432Node\CLSID\\ выглядеть должно так


В ветке "InprocServer32" меняем значение у меня, "C:\Program Files (x86)\1cv8\8.3.10.2168\bin\comcntr.dll" на путь к нужной версии длл, в данном случае "C:\Program Files (x86)\1cv8\8.3.9.2033\bin\comcntr.dll".

Данное дейстие проделываем для всех созданных оберток.

Все готово) Для подключения к конкретной версии базы, в 1С теперь нужно использовать следующую конструкцию

В файлах утилита, которая выполнит все эти действия автоматически. Подходит для тех у кого 1С лежит в каталоге

"C:\Program Files (x86)\1cv8". У кого что то отличается, вот ссылка на GitHub . Запустить утилиту нужно от имени администратора. Надеюсь данный материал будет вам полезен)

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Готовые переносы данных

Алкогольная декларация

54-ФЗ

Инструментарий разработчика

Маркетплейсы и 1С

Траектория обучения 1С-разработчика

Управление проектом на Инфостарте

При регистрации библиотек из разных версий 8.3, в одном СОМ приложении, возможно подключиться только к одной из версий.
(15) Решил проблему, создав компоненты в отдельных приложениях СОМ

Спасибо за статью. Мне она помогла, но если просто сделать как написано, возникали ошибки. Куча комментариев с разными ошибками не дали быстрого решения как именно сделать настройки. Предлагаю слегка скорректированный алгоритм. (*) - измененные шаги. В нем нет последних шагов по работе с реестром. У меня сработало на двух серверах.
Если автор посчитает возможным - можно было бы перенести в шапку.

1. Идем "Панель управления" - "Администрирование" - "Службы компонентов"
2. В оснастке служб компонентов, "Службы компонентов" - "Компьютеры" - "Мой компьютер" - "Приложения COM+"
3. Создаем новое приложение, правой кнопкой по "Приложения COM+" - "Создать" - "Приложение"
4*. Выбираем "Создать новое приложение", называем например "1cv8", тип выбираем "Серверное приложение",
Учетная запись - Текущий пользователь, Пользователь с ролью Owner - поставил администратора компьютера (сервера).
(без этого возможна ошибка -2147024769(0x8007007F): Не найдена указанная процедура)
5*. Нажимаем правой кнопкой по ветке 1cv8 – Свойства – Безопасность:
- Снимаем галку «Принудительная проверка доступа для приложений»
- Ставим галку «Применить политику программных ограничений»
- Уровень ограничений «Неограниченный»
(без этого возможна ошибка -2147024891(0x80070005): Отказано в доступе)
6. Раскрываем "1cv8", правой кнопкой по "Компоненты" - "Создать" - "Компонент".
7. Выбираем вариант "Установка новых компонентов", находим нашу библиотеку comcntr.dll (той версии платформы, к которой надо будет подключаться)
-* Если установка платформы на сервер не требуется, то достаточно скопировать в некую папку на сервере все содержимое папки bin соответствующей платформы и указать comcntr.dll из этой папки
8. Правой кнопкой по "V83.COMConnector.1" - "Псевдоним. ", меняем наименование с "CopyOf.V83.COMConnector.1" на "V83.COMConnector_8.3.9.2033". Данное действие проделываем для всех нужных версий платформ.

Читайте также: