bdd2

Связь 8.2 и 7.7 по OLE управляемое приложение (нюансы подключения)

Опубликовал Ловыгин Антон (wunderland) в раздел Обмен - Перенос данных из 1С7.7 в 1C8.X

Казалось бы, тривиальная задача - связать 2 этих приложения. Многие это не раз успешно делали, море статей и примеров... А я как всегда наступил на грабли :(

Появилась задача связать "УНФ" (8.2 упр.форм.) и "Бух. ПРОФ" для синхронизации некоторых справочников (сама задача значения не имеет). Сперва казалось, что все просто, много раз такое делал. Сделал копии конфигураций (7.7 - SQL; 8.2 - клиент-сервер), создал обработку, в которую планировал всю эту синхронизацию поместить...и все. Дальше дело не пошло. Вот текст функции, которая выполняет подключение (лежит в серверном модуле):

Функция ПодключениеКИБ77(SQL,Путь,ИмяПользователя,Пароль,БазаОле) Экспорт
    Если SQL = Ложь Тогда
        БазаОле = Новый COMОбъект("V77.Application");
    Иначе
        БазаОле = Новый COMОбъект("V77s.Application");
    КонецЕсли;
    Если Не ПустаяСтрока(Путь) и Не ПустаяСтрока(ИмяПользователя) Тогда
        СтрокаПодключения = "/D"""+СокрЛП(Путь)+""" /N"""+СокрЛП(ИмяПользователя)+""" /P"""+СокрЛП(Пароль)+"""";
        Connection = БазаОле.Initialize(БазаОле.RMTrade , СтрокаПодключения,"NO_SPLASH_SHOW");
        Сообщить("Подключение прошло нормально!");
    Иначе
        Сообщить("Не все данные указаны!");
        БазаОле = "";
        Возврат 0;
    КонецЕсли;
    Если Connection = 0 Тогда
        Сообщить("Не подключились!!!");
        БазаОле = "";
    КонецЕсли; 
    Возврат Connection;
КонецФункции;

Ошибка при вызове конструктора (COMОбъект): Интерфейс не поддерживается.

Быстренько сделал обработку с обычной формой, принудительно запустил в обычном режиме - все работает.

Порылся в Интернете и нашел такую вот статью: http://mitkin.blogspot.com/2011/07/ole.html

Смысл ясен - соединение выполняется не от пользователя, который запускает клиента 8.2 а от пользователя, под которым запущен сервер Предприятия, который не может получить доступ к V77. По некоторым причинам делать точно как в статье не стал. Запустил сервер предприятия не под USR1CV82 а под Locale System и все заработало!!! Тут же от радости поменял параметры и попробовал подключиться к рабочей базе - и опять облом. Теперь ошибки не было, просто  Connection = 0. Не сразу дошло, что есть между рабочей базой и копией одно маленькое отличие. Файловая часть конфигурации 7.7 для копии лежит на локальном диске, а для рабочей - на сетевом. Снова перезапустил сервер, но теперь уже от имени доменного пользователя, который и к сетевому ресурсу доступ имеет, и в группу локальных администраторов входит. Дальше, вроде, без проблем пошло...

См. также

Добавить вознаграждение
Комментарии
1. Димон * (DDos76) 179 31.10.14 10:52 Сейчас в теме
Хорошая идея - "не USR1CV82 а под Locale System и все заработало!!!" Под администратором и то наверное безопаснее будет.
Local System - это полный доступ ко всем ресурсам компьютера, подключение к сетевым ресурсам в контексте учетной записи компьютера, на котором запущена.
2. Ловыгин Антон (wunderland) 183 31.10.14 12:03 Сейчас в теме
Согласен, что вариант не самый лучший, но на тот момент мне важен был результат. А когда дойдут руки до вопросов безопасности будет понятно в каком направлении копать.
З.Ы. я давно уже заменил на администратора :))