COMConnector - разные версии предприятия #626720


#0 by wladimir90
Всем добрый день. В череде нормальных баз существует одна, коию в нормальный вид преобразовать нельзя - висит на старой версии. Все базы нужно через ком коннектор выгрузить. Разумеется на "той самой" базе выходит ошибка несоответствия версий. Я пробовал обойти ошибку, вызывая перед проблемной базой regsvr32 "...старая82..comcntr.dll" Однако это не помогает. Есть ли возможность обойти ошибку и как-то запустить ком коннектор из под старой версии 8.2? Выгрузку делает vbs скрипт.
#1 by Широкий
как это?
#2 by jk3
>regsvr32 "...старая82..comcntr.dll" Оно иногда криво отрабатывает, всё равно потом приходится реестр править. А раз выгрузку делает vbs-скрипт, то будет, видимо, проще править реестр перед вызовом, а потом возвращать значение на место.
#3 by le_
А без коннектора выгрузить не?
#4 by almar
я делаю через COM+
#5 by wladimir90
Да - с n-го раза регистрация прошла. Но это не дело для скрипта. Через реестр тоже вариант, только я пока нужные ветки не отследил. ? Не слышал. Посмотрю, спасибо.
#6 by jk3
А чего там сложного, запускаешь поиск по реестру по номеру релиза и всего делов-то. Там буквально в 1-2 местах нужно править.
#7 by trantor77
Как вариант, скопируйте в реестре ветку существующего com-объекта. Задайте новый GUID com-объекта, поменяйте путь и назовите его типа COMConnector2. Должно сработать и каждый раз реестр не переписывать.
#8 by wladimir90
Не скажи - мест пара десятков. Как бы во время замены не задеть лишнего. К сожалению вываливает ошибку "Невозможно создание объекта контейнером ActiveX. Наверное не все скопировал, пока не нашел что(гуиды в копиях новые поставил, как и имена). Отваливается на добавлении dll в компоненты. Либо говорит что файла нет, либо что он уже зарегестрирован. (Пробовал отменять регистрацию и переименовывать файл).
#9 by jk3
Аха, пара десятков, ну-ну. Вот полный список, всего 8 мест и это при том, что половина тупо повторяет друг друга (т.е. изменив в 1 месте сразу же само меняется в другом). Т.о. там место всего 2 или максимум 4, определяется экспериментальным путём.
#10 by НаборДанных
Странно у меня обертка для запуска разных версий предприятия и там тупо regsvr32 нужной comcntr.dll и запуск нужной версии платформы, все робит.
#11 by jk3
Всё верно, в идеале так и должно работать. Но иногда не прокатывает и приходится лезть в реестр.
#12 by wladimir90
А какая у тебя винда? jk3 прав, regsvr32 может глючить - я на server 2008 r2 Да, ты прав. Я не правильно вчера поисковый запрос писал. На всякий случай перепроверил - у меня получился точно такой же список из 8 элементов. Но должен признаться в своем бессилии - несмотря на то что во все 8 элементов пишу путь к старой базе, выходит та же ошибка несовместимости версий. Факты: Если в коде считать значение записи реестра после ее изменения, она дает верный результат, т.е. там путь к старой версии длл. Если в реестре провести поиск по имении длл после изменений записей, там не найти путей на новую версию. Скрипт каким то образом подцепляет для исполнения именно новую версию несмотря на отсутствие ссылок на нее в реестре. Возможно данные хранятся не только в реестре? Или может реестр нужно еще как-то обновить по типу обновления бд? Если интересно, его величество код (vbs): В Obj хранится в том числе one1CPath  - т.е. путь до папки 1с. '        Формируем строку регистрации длл
#13 by Homer
аналогично менял все пути в реестре, не помогает!
#14 by Homer
я уже удалил все версии, и поставил новую на клиенте, не помогло. Все равно пишет что Различаются версии клиента и сервера (8.2.15.289 - 8.2.15.317), клиентское приложение: COM-соединение
#15 by wladimir90
Странно. В твоем случае проблем вообще быть не должно - с n-го раза regsvr32 все таки отрабатывает как надо, жаль что только вручную а не внутри скрипта. Ну или я не отследил какие-то зависимости.
#16 by jk3
Попробуй после изменений в реестре пересоздай WshShell, ты же дальше по коду через него обращаешься к 1с?
#17 by wladimir90
Да, WshShell я не пересоздаю - использую один. Даже не подумал что может быть из-за этого. Завтра попробую.
#18 by wladimir90
Не, не так. WshShell действительно в дальнейшем используется для запуска 1с, но на данном этапе это не важно, т.к. вылетает на этапе коннекта через только что созданный объект ком коннектор (ниже блок кода). WshShell прямо перед этим кодом пересоздаю, бесполезно. Возможно это какая то непонятная особенность реестра, или просто баг. Думаю отказаться от идеи "все в одном" и запускать скрипт с двух разных машин (или терминальных аккаунтов сервера).    ObC = "V82.COMConnector"
#19 by wladimir90
В терминале похоже, один реестр на все аккаунты. Так что только разные физические машины остаются.
#20 by jk3
Ну тогда в отдельный скрипт выноси и вызывай его. Возможно кэшируются значения на уровне скрипта, хз.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С