Проблема разных версий 1с 8.3 - как решить? #728689


#0 by floverr
условности: Компания состоит из 3х фирм. в каждой фирме своя версия 1с 8.3 Есть консолидированная база из которой должны идти подключения к базам 3х компаний. Проблема: Если подключение идет к серверу с такой же версией 1с 8.3 - все хорошо. Если нет - Ошибка не соответствия версий клиента и сервера. Возможности привести к единой версии в 3х компаниях нет. Есть способ как решить это? что бы 1с подключаясь к серверу компании №1 использовала коннектор от ее сервера, а подключаясь к компании №2 - ее ?
#1 by kosts
В окне запуска 1С в свойствах базы указать нужную версию.
#2 by DmitrO
мы решили эту проблему путем отказа от использования COMConnector-а в интеграционных механизмах, заменили веб-сервисом :)
#3 by Fish
Интересно, а в чём проблема установить везде одну и ту же платформу?
#4 by rasswet
"Возможности привести к единой версии в 3х компаниях нет."-пример того, как 3 компании создают себе проблемы на ровном месте.
#5 by Адский плющ
Просто надо зарегать комконнектор нужной версии.
#6 by floverr
Интересное решение! Но тут не прокатит... можно только подключаться и читать, а вот реализовывать Web Сервисы нет. т.е. вести разработку в базах тех компаний. , банально все просто - у них нет ни желания ни ресурсов...да многое чего... он зарегестрирован, но при вызове Новый COMObject("V83.ComConnector")  - 1с использует самую новейшую версию.
#7 by Йохохо
а если сделать РИБ и у себя уже рулить режимами совместимости просто?
#8 by Fish
"у них нет ни желания ни ресурсов" - значит, у вас нет желания иметь консолидированную отчётность. В противном случае и желание сразу придалось бы, и ресурс, который запустит сетап и пару раз нажмёт кнопку "далее", сразу бы нашёлся.
#9 by Господин ПЖ
забыть про com как про страшный сон
#10 by Кай066
места на харде нет, аххаха
#11 by Господин ПЖ
>он зарегестрирован, но при вызове Новый COMObject("V83.ComConnector")  - 1с использует самую новейшую версию уже не верю. 1с ее не с потолка берет
#12 by vladko
тоже не понимаю. Как может быть нет желания запустить сетапку от текущего релиза платформы и сделать пару кликов.
#13 by kortun
ну это не пара кликов, базы скорее всего серверные, уже геморойно, а потом еще пройти по каждому пользователю и ему переустановить.
#14 by b_ru
regsvr32 comccntr.dll для нужной версии платформы непосредственно перед созданием объекта ComConnector
#15 by Адский плющ
"Зарегать", значит:
#16 by DmitrO
эта проблема не такая простая как может показаться.. Просто зарегить comccntr.dll нужной версии не получится, т.к. если версия comccntr.dll будет совпадать с версией базы к которой идет подключение, но не будет совпадать с версией ИЗ которой идет подключение тоже будет ошибка только другая :)
#17 by DmitrO
+ вместо: "отличаются версии клиента и сервера" он будет писать что-то типа: "отличаются версии COMConnector и core.dll" а все потому что core.dll уже давно в памяти, а COMConnector-у она тоже шибко нужна (на самом деле не только она), и другой версии она быть не может (так можно и в космос улететь)..
#18 by alexei366
попробуй Новый COMObject("V83.ComConnector", "SERVER1") вдруг прокатит). Или тогда ветки реестра копируй
#19 by DmitrO
+ хотя я вот тут подумал.. есть вероятность, что от этого можно избавться если переобъявить COMConnector через COM+, т.о. избавться от Inproc-ности COMConnector-а (чтобы он работал в своем процессе), будет помедленее и с бубном, но тем у кого "нет ни желания ни ресурсов...да многое чего... " может и подойдет :)
#20 by Ase4kapwnz
Для 2х версий помогает установка последней платформы более старой. Т.е. если используется грубо говоря 8,2,19 и 8,2,14 то сначала ставим 19, потом 14, и тогда com подключается нормально. А как с 3мя быть- хз.
#21 by Адский плющ
ХЗ, у меня всё подключается.
#22 by Fish
Зачем ходить по пользователям? Для этого существуют политики.
#23 by H A D G E H O G s
У меня получилось подгрузить 2 версии core83.dll в процесс при подключении comconnector и они нормально жили. А потом я похерил код, надо восстанавливать.
#24 by g00dtlt
вариант привести все фирмы к одной версии 1с не рассматриваете? :)
#25 by b_ru
Тогда просто не ComConnector использовать, а V83.Application
#26 by alexei366
"Возможности привести к единой версии в 3х компаниях нет. ". Не майтесь фигней, приводите все к одной версии. Заодно версии обновите.
#27 by floverr
Каким образом получилось? как?
#28 by H A D G E H O G s
Подменой LoadLibraryEx
#29 by Garykom
особенно умиляет что "можно только подключаться и читать" -  и это при сом то соединении )) лучше бы действительно веб сервисы сделали хотя бы защита была от криворуких программеров
#30 by floverr
Спасибо. попробую
#31 by floverr
Решение найдено другим способом, через сервер 1с. Установили центральный сервер 1с 8.3 последнего релиза. В нём создали 3 базы со ссылками на сиквельные базы других организаций. В итоге По COM я обращаюсь к базам на своем сервере, а не к серверам других организаций для чтения инфы. Всем участникам кто писал по делу спасибо, да и флудерам то же за АП ветки.
#32 by oleg_km
Ну ходить в одну сиквельную базу с разных серверов 1С еще то извращение
#33 by Ювелир
Это работает. Просто при установке новой версии, регистрацию старого ком надо повторить. нормальное решение
#34 by Зеленый пень
Главное - регламентные задания отключить.
#35 by oleg_km
Есть способ создать нужный КОМ прямо из ДЛЛ без использования реестра и соответственно регистрации. На ИС по-моему была публикация
#36 by H A D G E H O G s
Это не поможет.
#37 by H A D G E H O G s
Я ХЗ, как я раньше добивался параллельной загрузки всей платформы предыдущей версии. Коды канули в неизвестность. Сейчас comcntr.dll предыдущей версии упорно говорит о другой версии core82.dll. И он даже для этого не вызывает ни: ни даже ldrGetDllHandleEx Такое ощущение, что он знает, что эаранее готовый hinstance, что странно, и я в растерянности, ведь не одним 1cv8 жив ComConnctor. p.s. Никакого дизассемблирования, просто стек вызовов.
#38 by Serginio1
#39 by H A D G E H O G s
не то.
#40 by Serginio1
Если lpModuleName не включает в себя путь и имеется больше, чем один загруженный модуль с тем же самым базовым именем и расширением, функция извлекает дескриптор модуля, который был загружен сначала.
#41 by H A D G E H O G s
comcntr.dll загружается по полному имени. А потом, при выполнении метода Connect говорит "Версия не соответствует..." При этом он не дергает ничего из ldrLoadDll ldrGetDllHandleEx а более низкоуровнего я ничего не знаю.
#42 by H A D G E H O G s
Если я подключаюсь из 1С. Если подключаюсь из сторонней проги - все дергает, нет проблем.
#43 by Serginio1
Правильно в сторонней проге не загружен core8x.dll
#44 by Serginio1
43 но как только подгрузишь то из этой же проги другую версию вызвать не сможешь
#45 by H A D G E H O G s
Почему? Как comcnctr узнает, что core82.dll уже загружена?
#46 by Serginio1
См 40
#47 by Serginio1
#48 by H A D G E H O G s
Я в курсе этого. Проблема не в этом.
#49 by DmitrO
как думаете, если на тех серверах обновят конфигурацию какой нибудь базы, ваш новый кластер об этом узнает? сбросит кеши? а регламентные задания? а менеджер блокировок? :)
#50 by H A D G E H O G s
Выйди в аську
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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