Не удалось подключиться с компьютера к кластеру серверов по причине произошла исключительная
Если сервер 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С , библиотека станет автоматически.
Все делать с соответствующими правами конечно
Т.е. все решения лежат в плоскости администрирования серверов, и не нужно тут же кидаться создавать компоненты и переписывать на него код и т.д..
Написал пост - так как статьи с появлением ручной регистрации компонент под новым именем все появляются и появляются(и плюсов еще кучу набирают) и в форумах аналогично клонируют
Если сервер 1С стоит на Windows х64, то рано или поздно Вы столкнетесь с проблемой создания COM-соединения, если соединение инициируется на стороне сервера. На стороне клиента COM-соединение работает нормально, на стороне сервера вываливается с ошибкой.
Данная статья позволяет снять проблему. НО – до переустановки или обновления платформы!
Столкнулся с проблемой создания COM-соединения на стороне сервера. Обновили версию платформы, но после установки, компонент COM-соединения не регистрировался в системе. Предлагаемая ниже методика позволяет избавиться от описываемой проблемы.
Ниже алгоритм настройки системы, со скрином к каждому действию. Внимание скрины взяты с другого сайта, для общего понимания действий!
Регистрируем компоненту. Компонента отсутствует, если установлен только сервер 1С. Почему-то 1С публикует ее только в составе клиента.
Теперь запускаем службу компонентов. Описывается для Windows Server 2008 R2 Standart.
Выбираем – Создать приложение
На этом окне – выбираем учетную запись под которой будет запускаться наше приложение. Лучше указать “учетку” с правами Администратора. Я ставил – текущий пользователь т.к., работал под Администратором.
После того как мы создали Приложение, заходим в него, в раздел – Компоненты и создаем новый компонент.
На данном этапе нужно указать где лежит библиотека dll. Как правило библиотека лежит – “С:\Program Files\1cv8\[номер платформы]\bin\comcntr.dll”
Теперь установи права на Приложение. Правой кнопкой на созданном Приложении – Свойства.
Выбираем вкладку – Безопасность и Снимаем галочку – Принудительная проверка доступа для приложений => (Ставим галочку) => Применить политику программных ограничений => Уровень ограничений => Неограниченный.
Далее переходим к самому Компоненту – Выбираем – Свойства, раздел Безопасность.
Описание способа подключения к базам 1С с помощью ComConnector, на различных версиях платформы.
При регистрации библиотек из разных версий 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". Данное действие проделываем для всех нужных версий платформ.
не помню что конкретно сделал, но статья с инфостарта не помогла, по моему привел разрядность к одному знаменателю
сижу уже с начала создания темы вспоминаю как эту бяку победил, хоть убей не помню, помню точно что по статье делал, не вылечилось и сервант ребутил и клиента
Не помогло. Службу Агент сервера 1С:Предприятия 8.3 (x86-64) перезапустить, выкинет пользователей?
(1) У Альфа-Авто должна быть 32-разрядная клиентская часть, иначе торговое оборудование не работает.
(4) Полностью C:\Windows\SysWOW64\regsvr32 "c:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll"? Не Program Files (x86)?
(5) как ты пытаешься вызвать х64 ком объект с х32 разрядного клиента? ответ, никак, регистрируй на клиенте х32 компненту
(8) Ничего, так должно все работать, у тебя из сабжа не создается ком объект, потому что он ее не видит, а точнее видит другой разрядности, это не проблема подключений к базе через ком(сервер х64,х32, не важно), это проблема создания объекта как такого
(9) Дык, как правильно ее регистрировать?
(10) Вроде все сделано. Описание: 1CV83 COM Connector Class, DLL: C:\Program Files\1cv8\8.3.10.2466\bin\comcntr.dll
(19) У тебя com соединение на сервере ведь создается, причем тут клиентская часть. Вот на сервере и регистрируй dll. Причем, если сервер 64х, то и dll нужно соответствующую. Сперва лучше отмени уже сделанную регистрацию, чтобы в реестре путаницы не было.
(20) (22) Уже всяко пробовал, в том числе с ключом /u (с отменой регистрации). Другой вариант: переустановить платформу, при этом она зарегистрирует все компоненты заново. Но это крайний вариант. Вроде дело не в регистрации.
Службы компонентов как перезапустить? Хотя сервер перезагрузил (все вышли), не помогло!?
(28) Поздравляю. Ты сделал первый шаг в правильном направлении - осознал, что "стоит поставить". Представляй, что я крепко держу тебя за руку, и потому делай уверенно следующий шаг.
(29) Не понял, что скачивать: ИНСТРУМЕНТЫ РАЗРАБОТЧИКА ПОРТАТИВНЫЕ 1С 8.2+ V5.67P или 1С 8.3 V5.67E (1С 8.2 смущает)?
(30) В командной строке (под админом)?
(31) да. а потом на всякий случай: regsvr32 "C:\Program Files (x86)\1cv8\8.3.10.2466\bin\comcntr.dll"
© ООО "1С-Софт", 1996-2019. Все права защищены.
Не сразу заметил эту (0) ошибку, потому что в ЖР в отборе на вкладке Данные отмечаю лишь объекты заслуживающие внимание (например, по кассе). Тогда ошибки по другим объектам не видны. Можно как-то настроить отбор, чтобы события с ошибками все отображались. А события Информация - только отмеченные на вкладке Данные?
В большинстве случаев никаких проблем с этой библиотекой не наблюдается - обновлятор сам автоматически регистрирует и использует библиотеку нужной версии 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С программистов и разработчик обновлятора).
Как помочь сайту: расскажите (кнопки поделиться ниже) о нём своим друзьям и коллегам. Сделайте это один раз и вы внесете существенный вклад в развитие сайта. На сайте нет рекламы, но чем больше людей им пользуются, тем больше сил у меня для его поддержки.
Читайте также: