Имя: Пароль:
1C
1С v8
Подключение к внешней файловой базе
0 Csar
 
03.02.15
20:21
Добрый вечер.
У меня вопрос из двух частей, но с общей шапкой.
Каким методом лучше всего подключаться из файловой 1С8.3 Бухгалтерия 3.0 к другой аналогичной в следующих случаях:
1) Требуется лишь получить во внешней базе запросом информацию по определенным документам. В своей базе выполнить ряд действий.
2) Требуется лишь получить во внешней базе запросом информацию по определенным документам. В своей базе выполнить ряд действий. Передать во внешнюю базу информацию из текущей базы и создать документы там.
1 AHuk87
 
03.02.15
20:30
я бы через COMОбъект сделал сделал
2 nordbox
 
03.02.15
20:33
если базы удаленно друг от друга то обормоткой
если на одном компе/сети в офисе COM
3 Csar
 
03.02.15
20:44
(1) (2) а какой именно метод? 8.3 комконнектор или через адодб?
4 Csar
 
03.02.15
20:47
+ (3) или 8.3 апликэйшн
5 ShoGUN
 
03.02.15
20:50
(3) Через ADODB ты по первости опухнешь данные их другой базы добывать, да и не нужно это. COMConnector в самый раз, но есть нюансы.
Книга знаний: Охота на Com-ов
6 Csar
 
03.02.15
21:02
(5) я с COMConnector работал и с ADODB. Понял, что ADODB гораздо  быстрее работает, в частности устанавливает подключение. Плюс с COMConnector были трудности с созданием документов во внешней базе.
7 Csar
 
03.02.15
21:06
(5) спасибо за ссылку, изучаю.
8 shuhard
 
03.02.15
21:07
(6) к файловой 8.Х нет  ADODB и обсуждение бессмысленно
9 Csar
 
03.02.15
21:09
(8) Ясно, я только с серверными базами работал по удаленке.
Выходит, что остается лишь ComConnector и Application?
10 ShoGUN
 
03.02.15
21:11
(9) Забудь про Application, если тебе не нужно интерфейсом манипулировать(в 99% случаев это так). Он очень медленный.
11 ShoGUN
 
03.02.15
21:12
+(10) Насчёт проблем с созданием документов - озвучьте, пожалуйста, не сталкивался никогда ни с какими проблемами. Разумеется, надо понимать, что и как в КОМ-соединении работает.
12 Csar
 
03.02.15
21:16
(11) К сожалению уже не помню, т.к. было 2 года назад уже. Может это из-за того, что только начинал работать и не было опыта. А вот скульными подключениями через ADO в последнее время пользовался. Спасибо большое за советы. Значит использую V83.COMConnector!
13 Провинциальный 1сник
 
03.02.15
21:16
(9) Application для твоих задач избыточно. COM самое то. Главное не забыть учесть представление чисел через COM с плавающей точкой, а то можно получить потерю точности при передаче.. Вообще рекомендую все нецелые числа через COM прогонять в сериализованном в строку виде, тогда искажений не будет.
14 Csar
 
03.02.15
21:20
(13) Спасибо, ценный совет.
15 Csar
 
03.02.15
22:11
Подскажите, пожалуйста, как запомнить существующее подключение, что бы второй раз заново не подключаться к базе?
Я создал глобальную переменную Соединения к базе и проверяю ее на Неопределено. По идее после первого подключения к внешней базе она далжная иметь тип COMОбъект, а не Неопределено и так и получается, но стоит мне нажать кнопку Обновить (процедура получения данных из Внешней базы), как мое Соединение становится Неопределено и приходится заново переподключаться к базе.
16 ShoGUN
 
03.02.15
22:17
(15) Управляемое приложение? Сервер - stateless, так что:
Книга знаний: Хранение COM Объектов на Сервере ТонкогоКлиента
17 Csar
 
03.02.15
22:22
(16) Супер! Спасибо. А как вы находите в книге знаний раздел по OLE? Я не вижу там вообще веток.
18 ShoGUN
 
03.02.15
22:24
(17) Я просто знаю, что искать :)
19 ShoGUN
 
03.02.15
22:28
(17) Да, и в примере Application. Не перепутай, тебе надо не COMConnector в хранилище запихивать, а конкретное подключение(возвращаемое методом Connect). Вроде ты в курсе, судя по (15), ну на всякий случай.
20 Csar
 
03.02.15
22:36
(19) Нарисовал вот что:
    Попытка
        V8 = Новый COMObject ("V83.COMConnector");
        ВнешняяБаза = V8.Connect ("File=""D:\1cv82\А""; Usr =""""; Pwd =""""");
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    Объект.ВнешняяБазаСоединение = ПоместитьВоВременноеХранилище(ВнешняяБаза, Новый УникальныйИдентификатор());

В результате ошибка:
{Форма.Форма.Форма(84)}: Ошибка при вызове метода контекста (ПоместитьВоВременноеХранилище)
    Объект.ВнешняяБазаСоединение = ПоместитьВоВременноеХранилище(ВнешняяБаза, Новый УникальныйИдентификатор());
по причине:
Переданное значение не может быть помещено во временное хранилище
Переданное значение не может быть помещено во временное хранилище
21 Csar
 
03.02.15
22:38
+ (20) у меня Объект.ВнешняяБазаСоединение = реквизит типа Строка. Код выполняется с директивой #НаСервере.
22 ShoGUN
 
03.02.15
22:45
(20) Тьфу ты, оно только в 8.2 работало :(
23 ShoGUN
 
03.02.15
22:51
+(22) Можно через общий модуль с повторно возвращаемыми значениями v8: Повторное использование возвращаемых значений
Либо через COM+, но готовая компонента не уверен, что есть.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn