Имя: Пароль:
1C
1С v8
Регламентное задание: не всегда создается COMConnector
, ,
0 PVS_Mtl
 
23.06.15
10:44
Добрый день!
1С 82 клиент-сервер, толстый клиент, УПП 1.3
В регламентном задании создается объект COMConnector

COMСоединитель = Новый COMОбъект(ОбщегоНазначения.ИмяComСоединителя());

Проблема в следующем: пока на сервере 1С (на котором запущен агент сервера и т.п.) создан процесс Администратора (подключаемся при помощи удаленного рабочего стола), ком-объект создается. Как только соединение с сервером разрывается, при отработке задания возникает ошибка:
Процесс сервера не может быть запущен, т.к. указана неправильная идентификация. Проверьте правильность указания имени пользователя и пароля.

DLL для v82.comconnector зарегистрирован администратором без отключения агента сервера (было произведено позже). Причем регистрация ком-объекта делалась под другую задачу, но гораздо позже развертывания сервера с 1С (т.е. COMConnector, по словам администратора, несколько лет зарегистрирован не был).
Предполагали, причина в том, что dll была зарегистрирована только для пользователя Администратор. Однако сисадмин утверждает, что все-таки для всех.
Как быть?
1 butterbean
 
23.06.15
10:49
Администрирование - службы компонентов - настройка DCOM - там проверить права на запуск для 1С application
2 DmitrO
 
23.06.15
10:54
"Процесс сервера не может быть запущен, т.к. указана неправильная идентификация. Проверьте правильность указания имени пользователя и пароля."

Имхо, это говорит о том, что у вас ComConnector зарегистрирован в COM+(DCOM) и работает в выделенном процессе.
Если бы вы использовали его как прямой Inproc сервер, то такой ошибки в принципе не могло бы быть так как в этом случае он бы работал в контексте вызывающего процесса, кроме того он бы работал быстрее.
Зачем вы его используете так?
3 PVS_Mtl
 
23.06.15
11:00
администратор говорит, зарегистрировал через
//перешли в каталог 1См82 в ProgrammFiles, затем
regsvr32 comcntr.dll

Потом используем через
COMСоединитель = Новый COMОбъект(ОбщегоНазначения.ИмяComСоединителя());

А как нужно было?
4 DmitrO
 
23.06.15
11:02
администратора надо спросить есть что нибудь в настройках COM+(DCOM) про ComConnector (есть ли регистрация?).
5 DmitrO
 
23.06.15
11:03
(3)это все понятно, и правильно.
6 PVS_Mtl
 
23.06.15
11:09
говорит есть всё, он точно зарегистрирован, т.к. при залогинивании Администратора на сервер нормально создается агентом сервера.
Что сделали сейчас: на сервере 1С
сл компонентов - компьютеры - мой комп - приложения com+ - v82_comconnector - свойства - удостоверение - добавил пользователя, от чьей учетной записи будет создаваться (Администратора). Ошибка изменилась:
Ошибка при вызове конструктора (COMОбъект). Интерфейс не поддерживается.
7 DmitrO
 
23.06.15
11:13
(6)так вот в этом и проблема, что ЕСТЬ! Если ее убрать (удалить к чертовой матери), то ComConnector будет использоваться как inproc сервер, ибо он для этого и сделан таким разработчиками платформы.
8 DmitrO
 
23.06.15
11:17
(7)+ но, надо чтобы разрядность вызывающего процесса, в нашем случае сервера 1С, совпадала с разрядностью ComConnector-а.
9 PVS_Mtl
 
23.06.15
11:18
(7) подскажите, а как нам сейчас правильно поступить? каким образом удалить регистрацию?

PS Насколько я понимаю, регистрация проводилась после того, как админ написал vbs скрипт отключения пользователей 1С (соединений) перед снятием бекапа, и в этом скрипте была аналогичная строка (создание ком-объекта), и на ней какая-то ошибка (уже сейчас не скажем).
10 DmitrO
 
23.06.15
11:19
справка: в составе 64-битного сервера 1С есть 64-битный COMConnector
11 PVS_Mtl
 
23.06.15
11:22
(10) Нам его (COMConnector) разрегистрировать? Или через оснастку как-то удалить? Из vbs-скрипта он станет. я так понимаю, недоступен?
12 DmitrO
 
23.06.15
11:24
(9)не торопитесь
еще вопрос, а версии серверов 1С вызывающего (регл. задание) и тот на котором расположениа база к которой подключаетесь комконнектором, одинаковые?
13 DmitrO
 
23.06.15
11:43
Суть регистрации в COM+ в следующем:
Изначально комконнектор разработан в самом оптимальном варианте: inproc ком-сервер (работающий в контексте вызывающего процесса).
Существуют версии: для 32-битного процесса (в составе обычного дистрибутива для Windows), и для 64-битного процесса (в составе 64-битного сервера 1С).

В процессе установки/обновления платформы происходит регистрация ComConnectora (regsvr32 comcntr.dll) в 32-битном дистрибутиве ВСЕГДА, в 64-битном есть возможность его не ставить и соответственно не регистрировать при установке.

А COM+ позволяет использовать ком-сервера под теми же именами в контексте отдельного выделенного процесса, (т.е. это как бы переопределение), и по скольку процесс все равно другой, то разрядность вызывающего процесса и процесса ком-сервера может не совпадать.
14 flyer63
 
23.06.15
12:17
Добрый день, система x64, 1C - x32 (установлена в Program Files x 86)
15 DmitrO
 
23.06.15
12:20
(14)это админ? (пытаюсь догадаться)
16 flyer63
 
23.06.15
12:22
Да, админ
17 DmitrO
 
23.06.15
12:25
служба Агент сервера 1С:Предприятия точно запускается из Program Files x86..?
потому что установлено может в принципе и 32 и 64.
18 DmitrO
 
23.06.15
12:26
если так, то у вас 32 битный сервер.
тогда я вообще не понимаю зачем у вас сделана регистрация в COM+.
19 PVS_Mtl
 
23.06.15
12:34
а что сейчас посоветуете нам сделать?
20 leonidkorolev
 
23.06.15
12:39
(19) Что мешает попробовать удалить регистрацию и перерегистрировать dll?
21 DmitrO
 
23.06.15
12:39
я хочу сначала получить ответ на мой вопрос из (12)
22 DmitrO
 
23.06.15
12:41
на этот вопрос должен ваш 1Сник ответить сразу, даже если его разбудят среди ночи.
23 DmitrO
 
23.06.15
12:42
релизы 1С одинаковые или нет, или это вообще тот же сервер, я просто не знаю как еще сформулировать :)
24 flyer63
 
23.06.15
12:43
Да, это тот же сервер
25 PVS_Mtl
 
23.06.15
12:44
это один сервер
26 DmitrO
 
23.06.15
12:48
тогда удаляйте регистрацию в com+ без сомнения
27 DmitrO
 
23.06.15
12:50
не надо это вам вообще, все будет работать как положено без всяких выделенных процессов
28 DmitrO
 
23.06.15
12:52
прямо в консоли ком+, приложение ком+ удаляете и все, ничего страшно и необратимого не случится, приспичит снова пропишете
29 flyer63
 
23.06.15
13:43
После чего заработало:

Удалил ComConnector из приложений COM+, не заработало

Отменил регистрацию comcntr.dll
(Regsvr32 «C:\Program Files (x86)\1cv82\8.2.14.533\bin\comcntr.dll» \u)

Снова зарегистрировал comcntr.dll
(Regsvr32 «C:\Program Files (x86)\1cv82\8.2.14.533\bin\comcntr.dll»)

Снова создал приложение COM+
1. Администрирование - Службы компонентов – Компьютеры – Мой компьютер – Приложения COM+ - Создать приложение – Создать новое приложение – имя «V82_COMConnector»(переключатель «Серверное приложение») – Указанный пользователь (ИмяСервера\Администратор)
2. В появившейся ветке V82COMConnector – Компоненты – создание нового компонента – Установка новых компонентов - <каталог 1С>\bin\comcntr.dll
3. Правой кнопкой по ветке V82COMConnector – Свойства – Безопасность – Снял галку «Принудительная проверка доступа для приложений» - Поставил галку «Применить политику программных ограничений» - Уровень ограничений «Неограниченный»
4. Во вкладке Удостоверение  выбрал -  Указанный пользователь
ИмяСервера\Администратор, пароль

Видимо, когда это приложение создавали в прошлый раз, просто написали Администратор, в этот раз выбрал пользователя через Обзор - подставилось ИмяСервера\Администратор, отличия заметил только в этом
30 Serginio1
 
23.06.15
13:56
(29) А зачем тебе COM+
31 DmitrO
 
23.06.15
14:00
(30)это, чёрт побери, всем интересно :)
32 DmitrO
 
23.06.15
14:06
релиз 8.2.14.540 вышел 31.10.11
вероятно 8.2.14.533 чуть раньше, но его нет даже среди рекомендованных..

Счастливые вы люди! Вот оно: меньше обновлений меньше проблем, работает не трогай!
33 DmitrO
 
23.06.15
14:13
1)надо было попробовать просто после перерегистрвации проверить, до создания COM+ приложения.
2)и по идее "не заработало", это не конструктивно, текст ошибки бы увидеть.
34 Стальная Крыса
 
23.06.15
14:39
(30) действительно не знаешь зачем он нужен автору ?
35 PVS_Mtl
 
24.06.15
15:52
(34) возможно и не нужен, однако не хотелось бы убедиться в обратном в самый неподходящий момент.
Спасибо за помощь!