Работа с Com-соединением, не возможно подключиться к базе 1С 8.1 #543080


#0 by likesport
Доброго времени суток! Подскажите пожалуйста, я не могу подключиться к базе 1С 8.1. История следующая, сама конфигурация написана на 8.2 на управляемых формах, в ней размещен серверный модуль, в котором происходит подключение к базе 8.1 - она файловая. База которую пишу находится в 2х вариациях - 1я файловая, 2я на сервере 1С на MSSQL, с файловой модуль срабатывает на ура, а вот с серверной никак. Не омжет подключиться. Что нужно сделать с сервером чтобы все заработало? На сервере установлена платформа 8.2 с администратором сервера, сам сервер 8.2 и платформа 8.1, без сервера 8.1 и без административной утилиты.
#1 by likesport
Вот код подключения, на всякий случай:
#2 by vicof
прописать другую строку подключения, типа такой СтрокаПодключения = "Srvr = """ + База + """; Ref = """ + ИмяБазы + """";
#3 by sergeev-ag-1977
#4 by Valerik0101
Серверная база!!! см
#5 by vicof
не взлетит, file - для файловой базы
#6 by likesport
Все верно, база к которой надо подключиться файловая, поэтому и проблема. Если подключаться к серверным базам, все Ok.
#7 by likesport
так и подключаюсь, но не пашет
#8 by likesport
А есть какая-то разница? между V81.COMConnector и V81.Application?
#9 by Snorkler
Буквы какие-нибудь появляются, когда "Не омжет подключиться"?
#10 by DmitrO
>>Что нужно сделать с сервером чтобы все заработало? Надо чтобы у пользователя, под которым работает рабочий процесс серверного модуля в 8.2 (который делает подключение), были полные права на каталог файловой базы данных к которой происходит подключение.
#11 by mikecool
есть, не создается приложение в памяти, как в случае с аппликацией
#12 by vicof
я чего-то не понимаю?
#13 by likesport
Вот буквы: {ОбщийМодуль.МодульФормированияДанных.Модуль(1796)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.1): Несоответствие версии формата файла информационной базы. Конвертация выполняется в режиме запуска Конфигуратор. Старая версия формата файла базы данных. Требуется выполнить конвертацию '\comp14ФайлыБазАлександровское/1Cv8.1CD' база которую пишу, консолидирует данные. Она написана на 8.2, есть на локальной машине - файловая, есть на сервере 1С, лежит на скулине. С этой базы (которую пишу) я подключаюсь к разным другим базам, одна из который файловая, лежит на сетевом ресурсе в общей сети.... К ней не получается подключиться из базы которая лежит на MSSQL. - более подробно - там настроено фоновое задание которое выполняется на стороне сервера, вот там то и вылазиет ошибка о невозможности подключиться... Как я догадываюсь, надо чтобы на сервере работало два сервера 1С предприятия 8.1 и 8.2... может конечно ошибаюсь
#14 by Vladal
Обратите внимание на двойные кавычки, если имя пользователя с пробелом!
#15 by likesport
Сразу скажу, что конвертить базу - это решение в лоб. Хотелось бы без этого
#16 by likesport
не то. С эти порядок
#17 by Vladal
А конвертить предлагает именно 8.2. У меня и из семерки коннектится...
#18 by Vladal
> Как я догадываюсь, надо чтобы на сервере работало два сервера 1С предприятия 8.1 и 8.2... может конечно ошибаюсь
#19 by DmitrO
а в Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.1) ненаходишь, что это прикольно :)
#20 by likesport
Пардон, буквы не те прислал, вот те, что надо: {ОбщийМодуль.МодульФормированияДанных.Модуль(1795)}: Ошибка при вызове конструктора (COMObject): Класс не зарегистрирован: Класс не зарегистрирован
#21 by likesport
эз / это уже у платформы глюки
#22 by likesport
а семерка какая? Файловая? или скуливская?
#23 by likesport
%)
#24 by DmitrO
а вот это уже лучше, надо зарегистрировать comcntr.dll
#25 by Vladal
Файливая. А какая разница?
#26 by Valerik0101
А если попробовать через COMApplication?
#27 by likesport
разница в том, что с файловой у меня все работает
#28 by likesport
Сейчас попробуем.... 5 мин...
#29 by likesport
такой же файл есть у 8.2, один другой не перерегистрирует?
#30 by Vladal
освежим информацию... тянем всё в 8.2 из: Но вот незадача - в условии я дочитал-таки "сам сервер 8.2 и платформа 8.1, без сервера 8.1" Вот... нетути сервера 8.1... Хотя можно ведь его заюзать, ведь база-то лежит на скуле и вертится (если это не удаленное подключение). Автор, давай-ка всю инфу в студию и весь код подключения
#31 by Vladal
Вот еще родственная душа:
#32 by hhhh
ну 8.1 - база у него файловая. 10 раз чел написал, а вы всё равно, сервер и сервер.
#33 by likesport
#34 by Snorkler
Грубо говоря, на том компе, где запускается серверная версия 8.2 отсутствует V81.COMConnector, то есть либо 8.1 не установлена вообще, либо установлена без компоненты 8.1 для COM-соединения.
#35 by Valerik0101
+100 Вот сейчас сам попробовал - изменил тарую рабочую обработку База 8.2 на сервере - коннект к файлово
#36 by Valerik0101
База 8.2 на сервере - коннект к файловой 8.1 не проходит т.к. на сервере компонента не установлена С локального компа с файловой 8.2 на файловую 8.1 все норм. т.к. локально 8.1 стоит
#37 by likesport
Ok, как установиться эту компаненту?
#38 by likesport
естественно так чтобы не затереть 8.2 вот что установленно
#39 by DmitrO
нет не перерегистрирует, каждая dll регистрирует свои имена (V81. и V82.) регистрировать надо на том сервере, где создается COMConnector (работает серверный модуль), естественно на этом сервере платформа (8.1) должна стоять, а не только сама dll (иначе не зарегится).
#40 by DmitrO
39+ вообще говоря при инсталляции платформы регистрация выполняется.
#41 by likesport
я правильно понимаю? мне нужно прописать комманду regsvr32 C:Program Files (x86)1cv81incomcntr.dll
#42 by Snorkler
Установить 8.1 без серверного куска. Бояться, что что-то затрется, не надо - 8.0, 8.1 и 8.2 могут быть установлены на одном компе одновременно.
#43 by DmitrO
да, но поскольку я смотрю сервер у тебя x64, а так ты зарегистрируешь именно x86-ой ComConnector (32разрядный), то успех создания ComConnector-а будет зависеть от разрядности сервера 8.2, который будет создавать ComConnector. Надо чтобы разрядность соответствовала.
#44 by likesport
Все, решение найдено! Хлопаем в ладоши! :) Ответ дал Павел Числов по ссылке Необходимо было зарегить компаненту не простым regsvr32 а через сервис компанент
#45 by likesport
Проверил - работает
#46 by likesport
Пардон, Максимка Радченко
#47 by DmitrO
43+ в составе дистрибутива 1С 8.1 (ну и 8.2 тоже) для Win x64 есть 64-разрядный COMConnector. Просто 1С немного не правильно распространяет свои дистрибутивы. COMConnector это вобщем-то отдельный компонент, но 64-разрядная его версия включена только в 64-разрядный дистрибутив, который объявлен как бы только серверным. решение в , это тоже решение только так COMConnector будет работать в отдельном процессе, это как бы медленее.
#48 by likesport
В 64х разрядной версии дистрибутива компанента так же называется?
#49 by DmitrO
что имеется в виду? ProgID: "V81.ComConnector"?
#50 by likesport
просто я вообще не знаю, что там с 64х разрядной системой.. не, сам файл comcntc.dll если ставить, скажем не 32х дисптибутив, а 64х разрядный, то танцевать с бубном не прийдется? или тоже надо будет создавать com+ приложени?
#51 by DmitrO
Если речь про название "V81.ComConnector", то да, оно от разрядности не зависит, но дело в том что на 64-ных ОС сделано разделение реестра, и в зависимости от разрядности вызывающего процесса он получает от ОС разные ветки регистрации.
#52 by DmitrO
в том то и дело, что если бы у тебя был установлен 64разрядный дистрибутив, то регистрировать в COM+ не пришлось бы, т.к. 64разрядный COMConnector смог бы работать в контексте вызывающего 64разрядного процесса сервера 8.2, + не тратилось бы время на межпроцессное взаимодействие (маршалинг, который всегда есть при использовании V81.Application).
#53 by likesport
Гы :) Спасибо DmitrO!! Будем знать. Спасибо всем кто участвовал в теме!
#54 by DmitrO
на пальцах маршалинг можно объяснить просто: допустим надо передать строку из вызывающего процесса COM-объекту. Строка это последовательность байтов, соответственно передается её адрес. Но адрес в процессе источние не имеет никакого смысла для процесса получателе, т.к. память виртуальная, поэтому компоненты ОС отвечающие за COM маршалинг копируют строку сначала из источника разделяемую память, потом из разделяемой памяти в память процесса приемника. Обратная передача данных происходит аналогично. А когда COM сервер может работать в контексте вызывающего процесса, никаких лишних копирований не происходит, адресное пространство общее, и строка копируется просто из памяти принадлежащей вызывающему объекту в память принимающего объекта, а чаще всего (поскольку есть еще механизмы оптимизации) строка просто читается с переданного адреса.
#55 by likesport
%) тут надо закругляться или поподробнее, а то не совмем понятно о чем ты толкуешь, я где-то после второго слова "маршалинг" в посте уже завис
#56 by DmitrO
Ну да ладно, я не настаиваю. Тут конечно нужен уровень не 1С программиста, а С/С++-ника.
#57 by likesport
опыт работы с С++ и C# (где впервые столкнулся со словом маршалинг) был, но очень давно.. в глубоком детстве.. Как жаль что не получилось применить эти знания на благо общества ;)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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