#0
by likesport
Доброго времени суток! Подскажите пожалуйста, я не могу подключиться к базе 1С 8.1. История следующая, сама конфигурация написана на 8.2 на управляемых формах, в ней размещен серверный модуль, в котором происходит подключение к базе 8.1 - она файловая. База которую пишу находится в 2х вариациях - 1я файловая, 2я на сервере 1С на MSSQL, с файловой модуль срабатывает на ура, а вот с серверной никак. Не омжет подключиться. Что нужно сделать с сервером чтобы все заработало? На сервере установлена платформа 8.2 с администратором сервера, сам сервер 8.2 и платформа 8.1, без сервера 8.1 и без административной утилиты.
#2
by vicof
прописать другую строку подключения, типа такой СтрокаПодключения = "Srvr = """ + База + """; Ref = """ + ИмяБазы + """";
#6
by likesport
Все верно, база к которой надо подключиться файловая, поэтому и проблема. Если подключаться к серверным базам, все Ok.
#10
by DmitrO
>>Что нужно сделать с сервером чтобы все заработало? Надо чтобы у пользователя, под которым работает рабочий процесс серверного модуля в 8.2 (который делает подключение), были полные права на каталог файловой базы данных к которой происходит подключение.
#13
by likesport
Вот буквы: {ОбщийМодуль.МодульФормированияДанных.Модуль(1796)}: Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.1): Несоответствие версии формата файла информационной базы. Конвертация выполняется в режиме запуска Конфигуратор. Старая версия формата файла базы данных. Требуется выполнить конвертацию '\comp14ФайлыБазАлександровское/1Cv8.1CD' база которую пишу, консолидирует данные. Она написана на 8.2, есть на локальной машине - файловая, есть на сервере 1С, лежит на скулине. С этой базы (которую пишу) я подключаюсь к разным другим базам, одна из который файловая, лежит на сетевом ресурсе в общей сети.... К ней не получается подключиться из базы которая лежит на MSSQL. - более подробно - там настроено фоновое задание которое выполняется на стороне сервера, вот там то и вылазиет ошибка о невозможности подключиться... Как я догадываюсь, надо чтобы на сервере работало два сервера 1С предприятия 8.1 и 8.2... может конечно ошибаюсь
#18
by Vladal
> Как я догадываюсь, надо чтобы на сервере работало два сервера 1С предприятия 8.1 и 8.2... может конечно ошибаюсь
#19
by DmitrO
а в Ошибка при вызове метода контекста (Connect): Произошла исключительная ситуация (V82.COMConnector.1) ненаходишь, что это прикольно :)
#20
by likesport
Пардон, буквы не те прислал, вот те, что надо: {ОбщийМодуль.МодульФормированияДанных.Модуль(1795)}: Ошибка при вызове конструктора (COMObject): Класс не зарегистрирован: Класс не зарегистрирован
#30
by Vladal
освежим информацию... тянем всё в 8.2 из: Но вот незадача - в условии я дочитал-таки "сам сервер 8.2 и платформа 8.1, без сервера 8.1" Вот... нетути сервера 8.1... Хотя можно ведь его заюзать, ведь база-то лежит на скуле и вертится (если это не удаленное подключение). Автор, давай-ка всю инфу в студию и весь код подключения
#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 стоит
#39
by DmitrO
нет не перерегистрирует, каждая dll регистрирует свои имена (V81. и V82.) регистрировать надо на том сервере, где создается COMConnector (работает серверный модуль), естественно на этом сервере платформа (8.1) должна стоять, а не только сама dll (иначе не зарегится).
#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 а через сервис компанент
#47
by DmitrO
43+ в составе дистрибутива 1С 8.1 (ну и 8.2 тоже) для Win x64 есть 64-разрядный COMConnector. Просто 1С немного не правильно распространяет свои дистрибутивы. COMConnector это вобщем-то отдельный компонент, но 64-разрядная его версия включена только в 64-разрядный дистрибутив, который объявлен как бы только серверным. решение в , это тоже решение только так 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).
#54
by DmitrO
на пальцах маршалинг можно объяснить просто: допустим надо передать строку из вызывающего процесса COM-объекту. Строка это последовательность байтов, соответственно передается её адрес. Но адрес в процессе источние не имеет никакого смысла для процесса получателе, т.к. память виртуальная, поэтому компоненты ОС отвечающие за COM маршалинг копируют строку сначала из источника разделяемую память, потом из разделяемой памяти в память процесса приемника. Обратная передача данных происходит аналогично. А когда COM сервер может работать в контексте вызывающего процесса, никаких лишних копирований не происходит, адресное пространство общее, и строка копируется просто из памяти принадлежащей вызывающему объекту в память принимающего объекта, а чаще всего (поскольку есть еще механизмы оптимизации) строка просто читается с переданного адреса.
#55
by likesport
%) тут надо закругляться или поподробнее, а то не совмем понятно о чем ты толкуешь, я где-то после второго слова "маршалинг" в посте уже завис
#56
by DmitrO
Ну да ладно, я не настаиваю. Тут конечно нужен уровень не 1С программиста, а С/С++-ника.
#57
by likesport
опыт работы с С++ и C# (где впервые столкнулся со словом маршалинг) был, но очень давно.. в глубоком детстве.. Как жаль что не получилось применить эти знания на благо общества ;)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Тормозит выпадающее меню
- ЗУП: Не рассчитывает договорника
- ЗУП: временное прекращение планового начисления
- Установить значение реквизита справочника типа перечесление по OLE
- Текущее время 1с 8
- Перевыставление ЖД тарифа в 1с БП 2.0
- КД как увидеть параметр при загрузке?
- ЗУП: Не проставляется МКС в СЗВ-6, не распределяются выплаты
- Добавление регистратора в ОСВ по счету. Не найдено поле замены.
- 1C 8.1 УТ. Подскажите как получить Тип цен номенклатуры Контрагентов?
- Как ускорить запрос по регистру?
- формирование xml документа из 1С 8
- ЗУП -> ЗУП Корп
- v8: Разделение УАТ+УПП на отдельные базы УАТ и УПП
- v8: ЗУП: пропала база в анализе налогов и взносов
- 1С Предприятие 8.2 ошибка при установке
- Удаление Элементов справочника Контрагенты, не удалется.
- Как зафиксировать шапку таблицы
- 1С82: &НаСервере. Передача значения из серверной процедуры
- запуск службы батником