Можно ли использовать технологию OLE, если базы на разных компьютерах?
Написана обработка, которая связывает данные двух баз с помощью OLE. Изначально базы находились на одном компьютере, и никаких проблем не было. Потом по неким причинам оказалось, что необходимо расположить на разных компьютера. Можно ли использовать технологию OLE, если базы на разных компьютерах? Если можно, то как?
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(6)
Что должно быть записано в "Каталог"?
показывайте код, чтобы было подробнее.
А обработка прекрасно работает, если базы на одном компьютере.
ИмяCOM=УправлениеСоединениямиИБ.ИмяCOMСоединителя();
Состояние("База проверка ...");
Пользователь=СокрЛП(Пользователь);
Пароль=СокрЛП(Пароль);
// Создается объект-коннектор
БД = Новый COMObject(ИмяCOM);
СоединениеБД = БД.Connect("File="+СокрЛП(Каталог)+";Usr="+Пользователь+";pwd=" + Пароль + ";");
Что должно быть записано в "Каталог"?
(9)
Общий сетевой ресурс, доступный пользователю, под которым запущен сервис 1С, на котором вы запускаете обработку.
Если все базы файловые, то путь к файлу базы вида \\MachineName\ShareName
А в этом случае компьютеры должны быть в локальной сети? В нашем случае компьютере находятся в разных городах.
Если все базы файловые, то путь к файлу базы вида \\MachineName\ShareName
(11)
В нашем случае через файлы не получается. С помощью обработки в базу-приемник нужно перенести только недостающие данный. При формировании файла в базе-источнике не известно чего не хватает в базе-приемнике. Получается, что нужно практически сформировать файл по всей базе, а в базе-приемнике уже отбирать данные.
(10)Конечно, компьютеры должны быть объединены в единую локальную сеть.
Если этого нет, то только по web/http-сервису, с помощью почты/внешнего хранилища файлов возможно реализовать обмен данными.
Печально. Т.е. OLE работает только в локальной сети?
Если этого нет, то только по web/http-сервису, с помощью почты/внешнего хранилища файлов возможно реализовать обмен данными.
В нашем случае через файлы не получается. С помощью обработки в базу-приемник нужно перенести только недостающие данный. При формировании файла в базе-источнике не известно чего не хватает в базе-приемнике. Получается, что нужно практически сформировать файл по всей базе, а в базе-приемнике уже отбирать данные.
(12)
То есть, вторая база должна быть доступна для вашего компьютера.
Т.е. OLE работает только в локальной сети?
OLE работает примерно так, на пальцах: на вашем компьютере скрыто запускается 1С (еще одна), она подключается к указанной базе и читает/пишет в нее данные.
То есть, вторая база должна быть доступна для вашего компьютера.
(1) У нас базы - на разных серверах. Те, соответственно, в разных ЦОДах. ЦОДы с клиентскими ПК соединены через поток интернета. Всё - работает. Конечно , желательно, чтобы базы были не файловые, а клиент-серверные, устойчивость выше.
Но, при разумных размерах файловых баз , можно использовать и такие. Формируя данные по OLE, внимательно оценивайте возможный объем данных - соединение довольно медленное, предрасположено к закрытию сокета при сбоях и сложно диагностировать потерю связи в процессе . Поэтому, надежнее, использовать COM-объекты ADODB. Мы используем единые базы на MySQL, прекрасно работает при запросах из разных регионов
Но, при разумных размерах файловых баз , можно использовать и такие. Формируя данные по OLE, внимательно оценивайте возможный объем данных - соединение довольно медленное, предрасположено к закрытию сокета при сбоях и сложно диагностировать потерю связи в процессе . Поэтому, надежнее, использовать COM-объекты ADODB. Мы используем единые базы на MySQL, прекрасно работает при запросах из разных регионов
V8 = Новый COMОбъект("V83.ComConnector");
//Открытие = "file='" + КаталогБазыДанных + "'; usr='" + Пользователь + "'; pwd='" + Пароль + "';";
Открытие= "srvr='" + Сервер + "'; ref='" + БазаДанных + "'; usr='" + Пользователь + "'; pwd='" + Пароль + "';"; ///Каталог 1 базы
БАЗА1= V8.Connect(Открытие);
V8 = Новый COMОбъект("V83.ComConnector");
//Открытие = "file='" + КаталогБазыДанных + "'; usr='" + Пользователь + "'; pwd='" + Пароль + "';";
Открытие= "srvr='" + Сервер + "'; ref='" + БазаДанных + "'; usr='" + Пользователь + "'; pwd='" + Пароль + "';"; ///Каталог 2 базы
БАЗА2= V8.Connect(Открытие);
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот