Имя: Пароль:
1C
1С v8
Проблема разных версий 1с 8.3 - как решить?
,
0 floverr
 
15.12.14
10:10
условности:
Компания состоит из 3х фирм.
в каждой фирме своя версия 1с 8.3
Есть консолидированная база из которой должны идти подключения к базам 3х компаний.

Проблема:
Если подключение идет к серверу с такой же версией 1с 8.3 - все хорошо.
Если нет - Ошибка не соответствия версий клиента и сервера.

Возможности привести к единой версии в 3х компаниях нет.

Есть способ как решить это?
что бы 1с подключаясь к серверу компании №1 использовала коннектор от ее сервера, а подключаясь к компании №2 - ее ?
1 kosts
 
15.12.14
10:12
(0) В окне запуска 1С в свойствах базы указать нужную версию.
2 DmitrO
 
15.12.14
10:13
мы решили эту проблему путем отказа от использования COMConnector-а в интеграционных механизмах, заменили веб-сервисом :)
3 Fish
 
15.12.14
10:17
Интересно, а в чём проблема установить везде одну и ту же платформу?
4 rasswet
 
15.12.14
10:18
"Возможности привести к единой версии в 3х компаниях нет."-пример того, как 3 компании создают себе проблемы на ровном месте.
5 Адский плющ
 
15.12.14
10:20
Просто надо зарегать комконнектор нужной версии.
6 floverr
 
15.12.14
10:25
(2) Интересное решение!

Но тут не прокатит... можно только подключаться и читать, а вот реализовывать Web Сервисы нет. т.е. вести разработку в базах тех компаний.

(3),(4) банально все просто - у них нет ни желания ни ресурсов...да многое чего...

(5) он зарегестрирован, но при вызове Новый COMObject("V83.ComConnector")  - 1с использует самую новейшую версию.
7 Йохохо
 
15.12.14
10:26
(6) а если сделать РИБ и у себя уже рулить режимами совместимости просто?
8 Fish
 
15.12.14
10:28
(6) "у них нет ни желания ни ресурсов" - значит, у вас нет желания иметь консолидированную отчётность. В противном случае и желание сразу придалось бы, и ресурс, который запустит сетап и пару раз нажмёт кнопку "далее", сразу бы нашёлся.
9 Господин ПЖ
 
15.12.14
10:29
(0) забыть про com как про страшный сон
10 Кай066
 
15.12.14
10:29
места на харде нет, аххаха
11 Господин ПЖ
 
15.12.14
10:30
>он зарегестрирован, но при вызове Новый COMObject("V83.ComConnector")  - 1с использует самую новейшую версию

уже не верю. 1с ее не с потолка берет
12 vladko
 
15.12.14
10:33
(8) тоже не понимаю. Как может быть нет желания запустить сетапку от текущего релиза платформы и сделать пару кликов.
13 kortun
 
15.12.14
10:47
(12) ну это не пара кликов, базы скорее всего серверные, уже геморойно, а потом еще пройти по каждому пользователю и ему переустановить.
14 b_ru
 
15.12.14
10:48
(0) можно делать
regsvr32 comccntr.dll
для нужной версии платформы непосредственно перед созданием объекта ComConnector
15 Адский плющ
 
15.12.14
10:51
(6) "Зарегать", значит:
regsvr32 "C:\Program Files (x86)\1cv8\8.3.4.482\bin\comcntr.dll"
16 DmitrO
 
15.12.14
10:54
(14)(15)эта проблема не такая простая как может показаться..
Просто зарегить comccntr.dll нужной версии не получится, т.к. если версия comccntr.dll будет совпадать с версией базы к которой идет подключение, но не будет совпадать с версией ИЗ которой идет подключение тоже будет ошибка только другая :)
17 DmitrO
 
15.12.14
11:05
(16)+
вместо: "отличаются версии клиента и сервера"
он будет писать что-то типа: "отличаются версии COMConnector и core.dll"

а все потому что core.dll уже давно в памяти, а COMConnector-у она тоже шибко нужна (на самом деле не только она), и другой версии она быть не может (так можно и в космос улететь)..
18 alexei366
 
15.12.14
11:13
попробуй Новый COMObject("V83.ComConnector", "SERVER1") вдруг прокатит).
Или тогда ветки реестра копируй
19 DmitrO
 
15.12.14
11:16
(17)+
хотя я вот тут подумал..
есть вероятность, что от этого можно избавться если переобъявить COMConnector через COM+, т.о. избавться от Inproc-ности COMConnector-а (чтобы он работал в своем процессе), будет помедленее и с бубном, но тем у кого "нет ни желания ни ресурсов...да многое чего... " может и подойдет :)
20 Ase4kapwnz
 
15.12.14
11:41
(0) Для 2х версий помогает установка последней платформы более старой. Т.е. если используется грубо говоря 8,2,19 и 8,2,14 то сначала ставим 19, потом 14, и тогда com подключается нормально. А как с 3мя быть- хз.
21 Адский плющ
 
15.12.14
11:49
(16) ХЗ, у меня всё подключается.
22 Fish
 
15.12.14
11:50
(13) Зачем ходить по пользователям? Для этого существуют политики.
23 H A D G E H O G s
 
15.12.14
11:51
(19) У меня получилось подгрузить 2 версии core83.dll в процесс при подключении comconnector и они нормально жили. А потом я похерил код, надо восстанавливать.
24 g00dtlt
 
15.12.14
12:33
вариант привести все фирмы к одной версии 1с не рассматриваете? :)
25 b_ru
 
15.12.14
12:42
(16) Тогда просто не ComConnector использовать, а V83.Application
26 alexei366
 
15.12.14
12:46
"Возможности привести к единой версии в 3х компаниях нет. ".
Не майтесь фигней, приводите все к одной версии. Заодно версии обновите.
27 floverr
 
15.12.14
14:55
(23) Каким образом получилось? как?
28 H A D G E H O G s
 
15.12.14
14:55
(27) Подменой LoadLibraryEx()
29 Garykom
 
гуру
15.12.14
14:58
(6) особенно умиляет что "можно только подключаться и читать" -  и это при сом то соединении ))

лучше бы действительно веб сервисы сделали хотя бы защита была от криворуких программеров
30 floverr
 
15.12.14
15:34
(28) Спасибо. попробую
31 floverr
 
17.12.14
13:31
Решение найдено другим способом, через сервер 1с.

Установили центральный сервер 1с 8.3 последнего релиза.
В нём создали 3 базы со ссылками на сиквельные базы других организаций.

В итоге По COM я обращаюсь к базам на своем сервере, а не к серверам других организаций для чтения инфы.
Всем участникам кто писал по делу спасибо, да и флудерам то же за АП ветки.
32 oleg_km
 
17.12.14
13:37
(31) Ну ходить в одну сиквельную базу с разных серверов 1С еще то извращение
33 Ювелир
 
17.12.14
13:52
(14)(15) Это работает. Просто при установке новой версии, регистрацию старого ком надо повторить.

(31) нормальное решение
34 Зеленый пень
 
17.12.14
13:57
(31) Главное - регламентные задания отключить.
35 oleg_km
 
17.12.14
14:08
Есть способ создать нужный КОМ прямо из ДЛЛ без использования реестра и соответственно регистрации. На ИС по-моему была публикация
36 H A D G E H O G s
 
17.12.14
14:14
(35) Это не поможет.
37 H A D G E H O G s
 
17.12.14
14:21
Я ХЗ, как я раньше добивался параллельной загрузки всей платформы предыдущей версии. Коды канули в неизвестность.

Сейчас comcntr.dll предыдущей версии упорно говорит о другой версии core82.dll. И он даже для этого не вызывает ни:
ldrLoadDll
ни даже
ldrGetDllHandleEx

Такое ощущение, что он знает, что эаранее готовый hinstance, что странно, и я в растерянности, ведь не одним 1cv8 жив ComConnctor.

p.s. Никакого дизассемблирования, просто стек вызовов.
38 Serginio1
 
17.12.14
14:51
39 H A D G E H O G s
 
17.12.14
14:59
(38) не то.
40 Serginio1
 
17.12.14
15:51
(39) Если lpModuleName не включает в себя путь и имеется больше, чем один загруженный модуль с тем же самым базовым именем и расширением, функция извлекает дескриптор модуля, который был загружен сначала.
41 H A D G E H O G s
 
17.12.14
15:55
(40) comcntr.dll загружается по полному имени.
А потом, при выполнении метода Connect() говорит "Версия не соответствует..."

При этом он не дергает ничего из
ldrLoadDll
ldrGetDllHandleEx
а более низкоуровнего я ничего не знаю.
42 H A D G E H O G s
 
17.12.14
15:56
(41) Если я подключаюсь из 1С. Если подключаюсь из сторонней проги - все дергает, нет проблем.
43 Serginio1
 
17.12.14
16:32
(42) Правильно в сторонней проге не загружен
core8x.dll
v8: v8: Использование сборок .NET в 1С 7.x и 8.x
44 Serginio1
 
17.12.14
16:33
43 но как только подгрузишь то из этой же проги другую версию вызвать не сможешь
v8: v8: Использование сборок .NET в 1С 7.x и 8.x
45 H A D G E H O G s
 
17.12.14
16:38
(44) Почему? Как comcnctr узнает, что core82.dll уже загружена?
46 Serginio1
 
17.12.14
16:42
См 40
47 Serginio1
 
17.12.14
16:45
48 H A D G E H O G s
 
17.12.14
16:57
(46) (47) Я в курсе этого. Проблема не в этом.
49 DmitrO
 
17.12.14
16:58
(31) как думаете, если на тех серверах обновят конфигурацию какой нибудь базы, ваш новый кластер об этом узнает? сбросит кеши? а регламентные задания? а менеджер блокировок? :)
50 H A D G E H O G s
 
17.12.14
17:05
(47) Выйди в аську