Имя: Пароль:
1C
1C 7.7
v7: 1c++ и внешний файл DBF
0 DES
 
12.07.18
18:50
Есть ли в 1с++ функции запросов к внешним файлам DBF ?
1 Djelf
 
12.07.18
18:54
(0) А штатные возможности чем не устраивают?
2 DES
 
12.07.18
18:57
не знаю о таких
3 Djelf
 
12.07.18
18:59
(2) Печально. Изучай встроенный объект 1С - XBASE
4 Djelf
 
12.07.18
19:02
5 NSSerg
 
12.07.18
19:05
(0) если по каким то причинам xbase не устраивает, то иожно через ado
Вопрос к vde69 по ADO
6 DES
 
12.07.18
19:07
(3) Здрасьте, приехали...
Найдите в Вашей ссылке слово ЗАПРОС или SELECT
7 Djelf
 
12.07.18
19:20
(6) "ЗАПРОС" вообще не относится к 1C++, SELECT относится.
Но вопроса про SELECT не было, хотя он тоже запрос.
Прямое чтение DBF в 1C++ не встроена. Работает через ado или oledb.
В 1sqlite тоже не встроено, но если подключить к 1sqlite расширение libspatialite то чтение DBF возможно.
8 Emery
 
12.07.18
19:36
(0) > Есть ли в 1с++ функции запросов к внешним файлам DBF ?

У себя я предпочел воспользоваться внешним приложением на Visual FoxPro, которое вызывается из «семерки», а в VFP доступ к 1С77 осуществляется как к DDE-серверу. При этом VFP передает рассчитанные с его помощью данные в особых dbf-файлах (с подключением к 1С-овским cdx-индексам из VFP) в экспортируемую функцию 1С, которая уже отображает расчет заработной платы в режиме он-лайн. Схема работы просто великолепная для «семерки» и, похоже, что никто, кроме меня, ее не использует в профессиональных конфигурациях.
9 DES
 
12.07.18
19:38
сделал подключение по
DBConn = CreateObject("ADODB.Connection");
    DBConn.Open("Provider=vfpoledb;"+
           "Data Source=E:\TEMPO\zz.dbf;"+
           "Mode=ReadWrite|Share Deny None;"+
           "Collating Sequence=MACHINE;"+
           "Password='';");          
  
А как указать более чем одного файла источника?
10 DES
 
12.07.18
19:39
или как указывать их прямо в запросе?
11 Попытка1С
 
12.07.18
20:13
А что ты собрался делать с несколькими источниками?
Читай последовательно, пихай в ТЗ или еще куда
12 Попытка1С
 
12.07.18
20:14
Если хочешь делать прямой запрос с нескольких файлов, тогда грузи в ТЗ, а тз уже помещай в ВТ на скуле, и к ним уже обращайся.
13 DES
 
12.07.18
20:15
а как тз закинуть в вт?
14 DES
 
12.07.18
20:15
и не читаются цифровые поля, говорит
{Обработка.OLEDB_FoxPro.Форма.Модуль(22)}: Тип переменой не поддерживается
15 Попытка1С
 
12.07.18
20:20
Покури метод ВыполнитьSQL_ИзТЗ

вроде так называется
16 Попытка1С
 
12.07.18
20:21
17 DES
 
12.07.18
20:25
(12) ну мне же нужно свзать данные из двух файлов, а в ТЗ  это проблематично делать
18 big
 
12.07.18
20:32
База = СоздатьОбъект("OLEDBData");
        Соединение ="
        |Provider=VFPOLEDB.1;
        |Data Source=" + КаталогИБ() + ";
        |Mode=Read;
        |";
        Рез        = База.Соединение(Соединение);
        Запрос    = База.СоздатьКоманду();

ТЗ=Запрос.ВыполнитьИнструкцию(ТекстЗапроса)

Ессно в ТекстЗапроса можно поместить запросы по разным таблицам с объединением и т.д. и т.п.
19 Попытка1С
 
12.07.18
20:33
(17) Да я понял, читай ветку что я скинул, там в первом посте есть код.
20 DES
 
12.07.18
20:38
(19) у меня не считывается из DBF поля типа NUMERICВернее считывается в рекордсет, а
objRecordset.Fields(6).Value = Ошибка в выражении!
причем
objRecordset.Fields(5).Value = "пять"
21 NSSerg
 
12.07.18
20:59
(20) CAST(STR as CHAR) в запросе не поможет?
22 DES
 
12.07.18
21:08
(21 ) Да!
23 DES
 
13.07.18
06:17
а есть способ как то загонять результаты ADODB.Connection в ТЗ ?
24 big
 
13.07.18
06:52
(23) То есть штатный режим работы 1С++ не устраивает? Ковыряться с ADO больше удовольствия доставляет? ;)

В (18) результат в ТЗ выгружается
25 DES
 
13.07.18
07:53
(24)спс, чет затупил...
26 DES
 
13.07.18
08:07
подскажите синтаксис для начала
"SELECT a.*, b.*  FROM [pp.dbf] AS a, [lg.dbf] AS b where a.LIZ=b.LIZ ";    
так?
27 Sserj
 
13.07.18
08:10
(26) Поля нужно все расписать, а то у тебя "LIZ" сразу в обеих файлах есть.
28 DES
 
13.07.18
08:20
и что странно работает, в ТЗ две одинаковые колонки
29 DES
 
13.07.18
09:54
и что странно
Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ТЗ);
Если ТЗ имеет тип индексированнаятаблица
то ТЗ пустая получется
Если ТЗ таблицаЗначений-  то запрос выполняется
и далее не могу поместить ТЗ обычную в индексированную
ни .Загрузить()  , ни  .Выгрузить()
в результате интексированнаятаблица пуста.

        ТЗ.УдалитьСтроку(1);
        ТЗ.Выгрузить(ТЗи);
        ТЗи.Загрузить(ТЗ);

При обычных ТЗ все работает .

в чем дело ?
30 Ёпрст
 
13.07.18
10:29
(0)
на вот, развлекайся
https://cloud.mail.ru/public/BrqJ/e2ikRvcgs
31 Ёпрст
 
13.07.18
10:33
ну и для ИТЗ, на так, заменить:

    начало = _GetPerformanceCounter();
    ИТЗ = СоздатьОбъект("ИндексированнаяТаблица");
    Запрос.ВыполнитьИнструкцию(ТекстЗапроса,ИТЗ);
    Сообщить("время запроса: "+(_GetPerformanceCounter()-начало));
    ИТЗ.ВыбратьСтроку();
32 DES
 
13.07.18
12:30
спс
опс!
Это примочка РедакторТЗ() не фунциклирует с ИндексированнойТаблицей корректно.
Показывает Пусто
33 Ёпрст
 
13.07.18
13:01
(32) я хз, че там за редактор тз ты используешь. Как правило, это лишнее
34 DES
 
13.07.18
23:54
А как в индексированнойтаблице поменять тип колонки с данными с числового на символьный или наоборот ?
35 Chieftain
 
14.07.18
00:44
(34) в ИТЗ колонки нетипизированны