Имя: Пароль:
1C
1C 7.7
v7: Присоединение DBF-базы к sql-базе для обмена данными.
,
0 Последняя_
Надежда
 
07.08.12
12:48
Есть обработка по обмену данными между базами, все они на Sql. Подключение идет через функцию приведенную ниже. Можно ли как-то присоединить аналогичным образом DBF-базу? и будут ли выполняться запросы в формате sql над ней?

Функция ПодключитьсяКБазе(ТекБаза,рсОбмена,дбОбмена,v7=0)  
   бд = СоздатьОбъект("ODBCDataBase");
   рсОбмена = СоздатьОбъект("ODBCRecordSet");
   Если v7=1 Тогда
       ПутьКБД = СокрЛП(ТекБаза.ПолучитьАтрибут("Путь"));
       v7 = CreateObject("V77.Application");
       result = v7.Initialize(v7.RMTrade,"/D"+ПутьКБД+ " /Nchange /Pchange","");
   КонецЕсли;
   Если ТекБаза.ПолучитьАтрибут("Код")="0" Тогда
       // Если это локальная  база    
       рсОбмена.УстБД1С();
   Иначе    
       // если выполняем соединение с сторонней 1с базой данных
       бд = СоздатьОбъект("ODBCDataBase");
       Попытка ;
           бд.ПрисоединитьИБ(СокрЛП(ТекБаза.ПолучитьАтрибут("Путь")),"change","change");
           рсОбмена.УстБД(бд);
       Исключение;                        
           рсОбмена = "";
           Сообщить(бд.ПолучитьОписаниеОшибки());
           Предупреждение("Не удалось подключиться базе:"+ТекБаза.ПолучитьАтрибут("Имя"));
           Возврат 0 ;
       КонецПопытки;                  
   КонецЕсли;
   Возврат 1;
КонецФункции
1 stix2010
 
07.08.12
12:55
можно
2 МихаилМ
 
07.08.12
12:55
Sqlite Вам в помощь
3 dk
 
07.08.12
12:55
тут какая-то мешанина 1с++ и OLE
OLE пофигу SQL или DBF
1с++ вроде тока на SQL пашет
4 Ёпрст
 
07.08.12
12:56
(2) ну-ну.
5 stix2010
 
07.08.12
12:57
6 Последняя_
Надежда
 
07.08.12
12:59
обработка выполняется из под SQL'ной базы. надо зацепиться на др.сервер к dbf-базе.
(5) вообще не то, но спасибо.
7 Ork
 
07.08.12
13:00
Если речь о базе в формате ДБФ - семерка имеет встроенный класс XBASE. Он немного кастрирован по сравнению с нормальным. Но для обмена данными его вполне себе достаточно.

Если речь именно о семерочной файловой базе - можно юзать возможности ОЛЕ сервера. Уж ему-то абсолютно все равно в каком формате хранятся данные.
8 Ёпрст
 
07.08.12
13:01
(0) короче, ставишь oledb провайдер и пишешь запрос к любой дбф базе..
9 Ork
 
07.08.12
13:03
(8) Судя по вот этому : "v7 = CreateObject("V77.Application");" - он таки работает с базами 1С. И работает ЧерезПосредством ОЛЕ. Поэтому все у ТС будет работать и так как есть.
10 Ёпрст
 
07.08.12
13:14
(9) неа, оле тут вообще не причем - он же использует

  бд = СоздатьОбъект("ODBCDataBase");
  бд.ПрисоединитьИБ(СокрЛП(ТекБаза.ПолучитьАтрибут("Путь")),"change","change");
  рсОбмена.УстБД(бд);
11 Ёпрст
 
07.08.12
13:14
у него оля - только для получения пути к базе.. и .. непонятно зачем такой изврат нужен был
12 stix2010
 
07.08.12
14:02
хочешь sql запросы к базе то ADODBConnection или OLEDBData http://itland.ru/forum/index.php?showtopic=11339
13 stix2010
 
07.08.12
14:06
14 stix2010
 
07.08.12
14:11
а если тебе по OLE к 7 надо, то это и подключит

v7 = CreateObject("V77.Application");
 result = v7.Initialize(v7.RMTrade,"/D"+ПутьКБД+ " /Nchange /Pchange","");
15 Ёпрст
 
07.08.12
14:14
(12-14) откуда такую бесполезную некрофилию находишь ? Неужели гугля выдает ?
16 Последняя_
Надежда
 
07.08.12
14:29
(14) да вроде подключение идет, вижу как загружает, но вылетает в Исключение с ошибкой "State IM001, native 0, message [Microsoft][Диспетчер драйверов ODBC] Драйвер не поддерживает данной функции"
17 Ёпрст
 
07.08.12
14:30
(16) ты определись сперва, что ты хочешь - обычное оле-подключение к дбф базе, или выполнить прямой запрос к сторонней дбф базе.
18 Последняя_
Надежда
 
07.08.12
14:35
(17) я в этом мало что понимаю. мне главное чтобы работало... но видимо проще будет сделать через txt файлы.
19 Ёпрст
 
07.08.12
14:40
(18) круто.
Мот нанять того, кто эту обработку писал ?
20 Ёпрст
 
07.08.12
14:40
чтоб переделал часть запросов под дбф ?
21 Последняя_
Надежда
 
07.08.12
14:49
(21) тому кто это делал уже нафиг все это не надо.
22 Последняя_
Надежда
 
07.08.12
14:49
ладно, сделаю через файлы. быстрее получится.
23 Ёпрст
 
07.08.12
14:49
(21) ну, тогда занимайся.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.