Ошибка инициализации 1с коннектора не хватает прав доступа к классу com
Если сервер 1С стоит на Windows х64, то рано или поздно Вы столкнетесь с проблемой создания COM-соединения, если соединение инициируется на стороне сервера. На стороне клиента COM-соединение работает нормально, на стороне сервера вываливается с ошибкой. Данная статья позволяет снять проблему. НО - до переустановки платформы.
В свое время столкнулся с проблемой создания COM-соединения на стороне сервера. Проблема трудно диагностируется, т.к. код, прекрасно работающий под клиентом отказывается работать на сервере, например, если код исполняет регламентное задание.
Предлагаемая ниже методика позволяет избавиться от описываемой проблемы. К сожалению, после переустановки платформы все возвращается на круги своя и процедуру приходится повторять.
Upd. Дополнение: если на Windows-сервере 64-бит стоит Сервер 1С Предприятие 64-бит (в дистрибутиве windows64.rar),
то такой проблемы не будет. Уставщик позволяет поставить COM-коннектор без установки самого севера. Это полезно, когда приложение реализовано на платформе 8.3, а COM-соединение нужно к базам на 8.2.
За дополнение спасибо brix8x .
Приведен алгоритм настройки системы, со скрином к каждому действию.
1. Остановка сервера 1С (рекомендуется, но не обязательно)
3. Создание обертки COM+, позволяющей 64-битному приложению взаимодействовать с 32-битном.
4. Перезагрузка сервера (физического). Не обязательно, но рекомендуется
5. Старт сервера 1С. (обязательно :)
Регистрируем компоненту. Компонента отсутствует, если установлен только сервер 1С. Почему-то 1С публикует ее только в составе клиента.
Upd. Если компонента не регистрируется, то возможно придется сначала удалить старую компоненту, только затем встанет новая.
Делаем regsvr32 /u "c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll"
Затем тоже самое, но без "/u" regsvr32 "c:\Program Files\1cv8\8.2.18.82\bin\comcntr.dll"
За дополнение спасибо shur52.
Запускаем службу компонентов. Описывается для Windows Server 2008 R2 Standart.
В ветке Components добавляем новую компоненту comcntr.dll
ВАЖНО. После установки нужно немного изменить свойства. Эта тонкость нигде не описана, без нее у меня не работало!
Перезапуск физического сервера
Старт сервера 1С.
Специальные предложения
(2) Да есть, но тут гораздо нагляднее что с картинками и еще есть форум где можно обсудить у кого какие проблемы.
Так что автор молодец, жалко только что для английской версии.
Nelli_A86; rosinfo1; IML_1C; Мах; klaus38; agentesecreto; CratosX; dutlovva; Algado; Draconus; fzt; + 11 – Ответить
Спасибо помогло. Я так понял мы запускаем COM+ приложение которое может работать как с 32 так и с 64. А когда это не используем то наш 64 сервер просто не знает (не может) запустить 32 библиотек.
ну вот, кому-то помогло и то хлеб. :) не зря старался значит.
А вообще эту статью я и сам часто использую. Не забиваю память лишней информацией, смотрю на картинки и делаю. :)
Подскажите, пожалуйста, как быть если нужно зарегистрировать comcntr.dll от 2-х версий платформы? Есть 2 скрипта, которые запускают базы от 8.2.17 и 8.2.14 версий платформы.
В качестве дополнения: если на Windows-сервере 64-бит стоит Сервер 1С Предприятие 64-бит (в дистрибутиве windows64.rar),
то такой проблемы не будет. Уставщик позволяет поставить COM-коннектор без установки самого севера. Это полезно, когда приложение реализовано на платформе 8.3, а COM-соединение нужно к базам на 8.2.
(10)
К сожалению, в таком решении тоже могут быть свои проблемы.
У меня при использовании 64-битной версии COM-коннектора на сервере 8.3 (8.3.9.1818) при подключении к базам 8.2, периодически, без видимых на то причин, умирали рабочие процессы. Начал искать по форумам - оказалось, что у некоторых наблюдаются аналогичные проблемы. Пришлось использовать 32-битную версию COM-коннектора, завернув ее в COM+ обертку. В результате все стало ОК.
(31) Ключевой момент в решении этой проблемы на 32-битность, а внепроцессность, т.е. использование COM+ приложения во внепроцессном режиме запуска.
(32)
Сергей, спасибо за подсказку. Я сначала пробовал "завернуть" в COM+ именно 64-битную библиотеку, но у меня возникли проблемы с подключением. Позже выяснилось, что ошибки были связаны с настройками безопасности, а в голове засело, что 64-битная библиотека - это зло :). Надо еще раз попробовать завернуть в COM+ 64-битную версию компоненты.
А что, уже просто поставить клиента 8.2 недостаточно? Ведь установщик сам устанавливает и регистрирует соединение "v82.COMConnector". Обязательно вот так вот всё сложно делать ?
Доброго времени суток, коллеги! Внесу свои маленькие пять копеек - чуть подробнее опишите момент про добавление пользователей в роль CreateOwner (на скрине есть этот момент с кнопкой Add User to Role описание только добавьте) без этого у меня долго не взлетало и не мог понять в чем причина..
У меня вот такая ошибка стала вываливаться, не могу разобраться в чём дело. помогите
QVX_UNKNOWN_ERROR: В результате вызова компонента COM возвращена ошибка в формате HRESULT E_FAIL.. Stack trace written to C:\Documents and Settings\All Users\Application Data\QlikTech\Custom Data\connector1c\Log\StackTrace.txt
Здравствуйте, коллеги!
Другая проблема. Соединение через com устанавливает. Но при попытки создания какого либо объекта - зависает намертво.
Платформа 8.2.19.130. Клиент-сервер.
Причем если этот код выполнять на физическом сервере 1с, то все выполняется на ура.
В чем может быть загвоздка?
По коду видно, что соединение COM не устанавливает.
Создает ком-коннектор без привязки к базе - это да. Но видно что зависает именно при подключении к базе.
Попробуйте подключиться сами к себе, т.е. из базы к самой себе.
Это позволит понять, проблема в базе-приемнике или где-то еще
Спасибо, помогло.
Перезапускать сервер не пришлось, оказалось достаточно запустить созданное приложение COM+.
Поставить крыж на "CreatorOwner" не смог (он был disabled). Пользователя USR1CV82 в эту роль добавил руками.
Upd. Дополнение: если на Windows-сервере 64-бит стоит Сервер 1С Предприятие 64-бит (в дистрибутиве windows64.rar),
то такой проблемы не будет.
Т.е. основная часть была написана до Upd.
В настоящее время (2015 год), если вы не подключаетесь со старыми версиями - ничего такого делать не надо, платформа сама все сделает.
Причина появление ошибки - в падении , затирании, зависании процесса, т.е. типовые ошибки приложения, которые и решаются соответственно
Решение на сегодняшний момент - убить процесс com(зависло) - и вновь запустить регламент. При этом ничего останавливать не придется.
Если не помогло(затерли) - перерегистрировать библиотеку, запустить регламент.
Если не помогло - перезагрузить сервер.
Если не помогло - переустановить сервер 1С , библиотека станет автоматически.
Все делать с соответствующими правами конечно
Т.е. все решения лежат в плоскости администрирования серверов, и не нужно тут же кидаться создавать компоненты и переписывать на него код и т.д..
Написал пост - так как статьи с появлением ручной регистрации компонент под новым именем все появляются и появляются(и плюсов еще кучу набирают) и в форумах аналогично клонируют
6. Вводим имя «V82COMConnector». Устанавливаем переключатель «Серверное приложение». Нажимаем «Далее».
17. Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку «Применить политику программных ограничений». Устанавливаем Уровень ограничений - «Неограниченный».
Специальные предложения
А я обычно делаю так: запускаем cmd под администратором и выполняем команду regsvr32 /i "C:\Program Files (x86)\1cv8\8.3.10.2667\bin\comcntr.dll"
Конечно при каждом обновлении 1С платформы нужно указывать правильную версию платформы, в приведенном мною примере это 8.3.10.2667.
cleaner_it; itmind; Serg O.; Serg3141; user859251; Trancer64; user705522_constantin_h; + 7 – Ответить
(1) Тоже, как правило, так делаю. Но тут появилась проблема несовпадения версии клиента и сервера и убился с такой регистрацией - ничего не выходит. Удалил и установил заново новый релиз платформы. Зарегил dll-ку. Ничего не помогло. Коннектор остался от предыдущего релиза. Только когда снес все версии платформы и установил последнюю - заработало.
Такой чисто админский подход.
У меня проще.
(4) А вот у меня уже лет 5 такой подход (через regsvr32.exe) не работает, причём в разных компаниях и под админ. правами (когда установлено несколько версий COM-компонент 1С8) - видать что-то в политики безопасности намутили админы (а дома давно так не пробовал). Для смены версии COM спасает только подмена записи в реестре через reg файл. Но для решения указанной в теме проблемы проходится делать как указано у автора статьи. К счастью - очень редко такое бывает.
А можно поподробнее о Вашем методе? Может мне пригодится. У меня два 1С сервера на одном сервере. Когда OLE-подключаюсь из базы на одном 1С-сервере к базе на другом 1С-сервере, то возникает ошибка различия версии: серверная база правильно указана (в строке соединения к имени сервера приписываю порт), клиентская - нет:
Просмотры 19139
Загрузки 0
Рейтинг 39
Создание 27.11.17 12:22
Обновление 27.11.17 12:22
№ Публикации 705363
Тип файла Нет файла
Конфигурация 1С:Бухгалтерия 3.0
Операционная система Windows
Страна Россия
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Да
См. также
Как я начал администрировать сервер 1С: Предприятие 8.3 с телефона Промо
Развитие инструментов управления кластером серверов 1С:Предприятие 8.3.
14.04.2017 68974 user700211_a.straltsou 30
Ферма ОДИНа или как управлять множеством Серверов 1С: Предприятие из одной точки
У Вас много серверов приложений 1С Предприятие разных версий и их надо мониторить и администрировать. Новое приложение для управления фермой ОДИНа как раз для тебя.
26.08.2021 1432 khorevaa 8
Легкий способ регистрации библиотеки COMCNTR.DLL (для COM-соединения)
Устали от командных строк, нюансов с разрядностью 32х/64х или ручного создания V83COMConnector в службе компонентов? Предлагаю простой способ регистрации библиотеки COMCNTR.DLL.
22.12.2020 35622 vakrikun 32
Выгрузка в dt на сервере 1С по расписанию с завершением соединений и подключением к консоли сервера через com
Была задача настроить по расписанию выгрузку серверной базы в dt, готового решения не нашел, делюсь, может, кому пригодится.
16.04.2020 10837 karamazoff 49
Копирование числовых ячеек из 1С в Excel Промо
15.01.2019 38395 itriot11 27
Пошаговая инструкция по установке веб-сервера Apache и завязка с 1С
Данная статья больше предназначена для начинающих администраторов, но «бывалые» тоже могут освежить свои знания и в этой статье в деталях расскажу, как устанавливать Apache и использовать веб-сервер для работы с 1С.
В большинстве случаев никаких проблем с этой библиотекой не наблюдается - обновлятор сам автоматически регистрирует и использует библиотеку нужной версии 1с, но изредка возникают случаи (в основном на серверных ОС), когда требуются "пляски с бубном".
Как понять, что у нас проблемы с COM
Для этого нажимаем кнопку "Проверить настройки" удерживая клавишу "Shift" на клавиатуре:
При нормальной работе COM отчёт будет примерно таким:
При проблемах же с COM возникнет вот такая или похожая ошибка:
Ещё может писать, что -то типа " Не удалось создать программное подключение к 1С ".
Да, судя по тесту, у нас проблемы с COM
Прежде всего, о какой именно библиотеке идёт речь? Эта библиотека comcntr.dll, которая находится в папке bin конкретной платформы 1с:
Эта библиотека устанавливается и автоматически регистрируется в системе при установке платформы.
Кроме того, обновлятор перед тем как подключаться к базе через внешнее соединение сам дополнительно регистрирует в системе библиотеку из нужной версии платформы при помощи команды:
Итак, что мы можем предпринять?
Шаг №0
Обратите внимание на утилиту для отображения и регистрации библиотек RegDllView. При помощи неё вы как минимум сможете контролировать результат работы следующих шагов.
Шаг №1
Прежде всего убеждаемся, что у нас действительно проф-версия платформы, потому что для базовой версии платформы внешнее подключение к базам работать и не должно (это ограничение платформы).
Чтобы понять какая у нас платформа (базовая или проф) выполним вот этот пункт.
Если лицензия на платформу у нас всё же не проф, а базовая, то все остальные шаги не имеют смысла. Внешнее подключение к базам у нас работать не будет (из-за ограничений платформы). Ничего не остаётся, кроме как настроить базы вот так.
Шаг №2
Далее пробуем запустить обновлятор с правами администратора.
Если у вас включён UAC, то добиться этого можно, нажав на ярлыке обновлятора правой кнопкой, и выбрав вариант "Запуск от имени администратора".
Далее выбираем базу и нажимаем кнопку "Проверить настройки". Если ошибка пропала и больше не воспроизводится даже при обычном запуске обновлятора (без прав администратора) - поздравляю, проблема решена. Если нет - идём дальше.
Шаг №3
В 32-битной версии ОС пробуем выполнить команду
В 64-битной версии ОС команда будет такой:
- для регистрации 64-битной платформы 1С:
- для регистрации 32-битной платформы 1С:
Эти команды запускаем от имени пользователя с правами администратора. А при включённом UAC, запускаем cmd через "Запуск от имени администратора", либо через такой же запуск написанного батника.
Если команда регистрации не помогла, то нужно предварительно удалить регистрацию библиотеки comcntr.dll, запустив ту же команду вызова regsvr32 с ключом /u
Если этот шаг не помог - идём дальше.
Шаг №4
Похоже, что у обновлятора не получается зарегистрировать COM компоненту из-за настроек безопасности на вашем сервере.
В этом случае:
- Заходим в Панель управления - Администрирование - Службы компонентов.
- Переходим к ветке Компьютеры - Мой компьютер - Приложения COM+.
- В контекстном меню выбираем Создать - Приложение. Откроется Мастер установки приложений COM+.
- Нажимаем "Далее".
- Выбираем "Создать новое приложение".
- Вводим имя "V83COMConnector". Устанавливаем переключатель "Серверное приложение". Нажимаем "Далее".
- На следующем шаге устанавливаем "Текущий пользователь". Нажимаем "Далее".
- Нажимаем "Готово".
- В появившейся ветке V83COMConnector переходим к подветке Компоненты.
- В контекстном меню выбираем Создать - Компонент. Откроется Мастер установки компонентов COM+.
- Нажимаем "Далее".
- Выбираем "Установка новых компонентов".
- Выбираем файл \bin\comcntr.dll.
- Нажимаем "Далее" - "Готово".
- Переходим к ветке V83COMConnector.
- В контекстном меню выбираем "Свойства". В открывшемся окне переходим на вкладку «Безопасность».
- Снимаем галку «Принудительная проверка доступа для приложений». Ставим галку "Применить политику программных ограничений". Устанавливаем Уровень ограничений - "Неограниченный".
- Нажимаем "ОК".
После этого обновлятор должен смочь самостоятельно регистрировать компоненты всех версий платформ, а не только той, которую мы прописали в компоненте.
Шаг №5
Бывает так, что помогает только повторная переустановка платформы (при этом происходит корректная регистрация компоненты).
Шаг №6
Если проблема начала возникать сразу после обновления платформы 1с, то вероятнее всего новой версии платформы 1с не хватает какого-нибудь сервиспака или обновления для вашей операционной системы. Поэтому если есть возможность - ставим их все, если нет - действуем выборочно согласно этой ссылке.
Шаг №7
Бывает так, что всё работает при обычном запуске обновлятора, но не работает при запуске с повышением привилегий до администратора, когда вы запускаете обновлятор через пункт меню "Запустить от имени администратора" или из программы (типа TotalCommander), которая сама запущена с повышенными привилегиями.
С уважением, Владимир Милькин (преподаватель школы 1С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Если сервер 1С стоит на Windows х64, то рано или поздно Вы столкнетесь с проблемой создания COM-соединения, если соединение инициируется на стороне сервера. На стороне клиента COM-соединение работает нормально, на стороне сервера вываливается с ошибкой.
Данная статья позволяет снять проблему. НО – до переустановки или обновления платформы!
Столкнулся с проблемой создания COM-соединения на стороне сервера. Обновили версию платформы, но после установки, компонент COM-соединения не регистрировался в системе. Предлагаемая ниже методика позволяет избавиться от описываемой проблемы.
Ниже алгоритм настройки системы, со скрином к каждому действию. Внимание скрины взяты с другого сайта, для общего понимания действий!
Регистрируем компоненту. Компонента отсутствует, если установлен только сервер 1С. Почему-то 1С публикует ее только в составе клиента.
Теперь запускаем службу компонентов. Описывается для Windows Server 2008 R2 Standart.
Выбираем – Создать приложение
На этом окне – выбираем учетную запись под которой будет запускаться наше приложение. Лучше указать “учетку” с правами Администратора. Я ставил – текущий пользователь т.к., работал под Администратором.
После того как мы создали Приложение, заходим в него, в раздел – Компоненты и создаем новый компонент.
На данном этапе нужно указать где лежит библиотека dll. Как правило библиотека лежит – “С:\Program Files\1cv8\[номер платформы]\bin\comcntr.dll”
Теперь установи права на Приложение. Правой кнопкой на созданном Приложении – Свойства.
Выбираем вкладку – Безопасность и Снимаем галочку – Принудительная проверка доступа для приложений => (Ставим галочку) => Применить политику программных ограничений => Уровень ограничений => Неограниченный.
Далее переходим к самому Компоненту – Выбираем – Свойства, раздел Безопасность.
Ошибка при соединение с 1С при получении списка документов на ТСД. Промежуточная база соединяется с базой 1С нормально.
3; 11; 06.03.2017 16:56:38.963 ERROR
at Cleverence.Warehouse.ServerEvents.Invoke(String methodName, Object[] args, DeviceInfo dInfo, Boolean& isDemo)
at Cleverence.Warehouse.DataStorage.GetServerHostedDescriptions(String docTypeName, String deviceInfoString)
Ответы 13
Добрый день,
Судя по логу функция не найдена которая вызывается.
Проверьте что подключение к нужной базе в коннекторе, что обработка драйвера верно указана. Функция должна быть помечена Экспорт.
Уточните версию 1С, название и версию конфигурации.
1С:Предприятие 8.3 (8.3.8.2054)
Серверная база tsd - это промежуточная база драйвера?
У Вас в настройках подключения не указана обработка драйвера. Коннектор вызывает функции из модуля указанной обработки.
tsd - это промежуточная база.
установил в обработку драйвера ВнешниеВызовыУТиУПП .
И вот результат:
MESSAGE: Не удалось создать обработку ВнешниеВызовыУТиУПП
at Cleverence.Warehouse.ServerEvents.Invoke(String methodName, Object[] args, DeviceInfo dInfo, Boolean& isDemo)
at Cleverence.Warehouse.DataStorage.GetServerHostedDescriptions(String docTypeName, String deviceInfoString)
Я подозреваю, что это из-за того что из-за того что база располагается на сервере.
У Вас платформа Mobile Smarts установлена на сервер? Если подключаетесь к серверу с другого ПК и на нем должна быть одинаковая версия платформы и 1С.
Если платформа установлена, проделайте:
Запустите cmd.exe от администратора и не важно если Вы админ на пк, запуск именно правой кнопкой мыши! - запуск от имени .
1) Запустите из командной строки команды: 1cv8.exe /RegServer и regsvr32
comcntr.dll из папки 1С\bin (пример расположения папки: C:\Program Files
(x86)\1cv82\8.2.19.83\bin)
2) Запустите с правами администратора
файл "Зарегистрировать COM.bat" из папки C:\Program Files
(x86)\Cleverence Soft\Mobile SMARTS\Connectivity
3) Перезапустите службу драйвера. Запустите Mobile Smarts, нажмите "Настройки локального
сервера", выберите ваш сервер. Затем нажмите на кнопку "Остановить
сервер данных", затем "Запустить сервер данных"
4) Переподключите промежуточную базу "C:\ProgramData\Cleverence\Базы Mobile SMARTS\1С
Драйвер ТСД Wi-Fi ПРОФ\OnlineConnection\1CBaseSelector.exe"
Получилось при условии, что промежуточная база должна быть файловой.
Если указываешь, что промежуточная база на сервере, то выдает следующие ошибки.
MESSAGE: Ошибка при выполнении операции с информационной базой
server_addr=tsd descr=11001(0x00002AF9): Этот хост неизвестен. line=1048 file=src\DataExchangeCommon.cpp
at Cleverence.Warehouse.ServerEvents.Invoke(String methodName, Object[] args, DeviceInfo dInfo, Boolean& isDemo)
at Cleverence.Warehouse.DataStorage.GetServerHostedDescriptions(String docTypeName, String deviceInfoString)
at Cleverence.Warehouse.ServerEvents.Invoke(String methodName, Object[] args, DeviceInfo dInfo, Boolean& isDemo)
at Cleverence.Warehouse.DataStorage.GetServerHostedDescriptions(String docTypeName, String deviceInfoString)
Читайте также: