Имя: Пароль:
1C
 
v8: Импорт из ДБФ, имеющей длинное наименование поля
0 SergeiK
 
07.05.10
07:21
Сделал экспорт эл. накладной в самописную конфигурацию из файла ДБФ. Но одно из полей в этом файле имеет имя более 8 символов, и 1с выкидывает ошибку... Можно ли это каким-нибудь образом обойти?
Спасибо
1 Ювелир
 
07.05.10
07:23
А заранее файл обработать нельзя?
2 Ювелир
 
07.05.10
07:24
имя поля скорректировать и вуаля!
3 Маленький Вопросик
 
07.05.10
07:24
в самописной конфигурации поле никак увеличить?
4 sda553
 
07.05.10
07:24
Насколько я помню, никак не обойти, переделывайте имена полей до 8-ми символов. И вообще отказывайтесь от ДБФ - для импорта экспорта у восьмерки есть xml
5 Ювелир
 
07.05.10
07:27
ДБФ-ку можно обрабатывать не в 1с первоначально. В том числе можно и на автомате настроить преобразование.
6 SergeiK
 
07.05.10
07:28
(4) я бы отказался, но эл.документы только в ДБФ приходят.
Или может как-то сделать что-бы в командной строке имя этого поля переименовать.
Чтобы в обработке 1с это выполнялось.
7 xoma1c
 
07.05.10
07:29
Экселем открывается? (0)
8 SergeiK
 
07.05.10
07:30
(7) да, открывается
9 dk
 
07.05.10
07:36
ado попробовать
10 Jofa
 
07.05.10
07:36
Почему не хочешь при загрузке в базу обрезать? Например Прав(Строка, КолСимв)
11 Alpinist22
 
07.05.10
07:36
Вчера доделал загрузку данных из дбф, оказывается мне еще и повезло с длиной полей.
(0) ты как к XBASE-объекту обращаешься?
12 SergeiK
 
07.05.10
07:38
(11) вот таким образом:

       Файл = Новый XBASE;
       Файл.ОткрытьФайл(Диалог.ПолноеИмяФайла,,0);
       Файл.Кодировка = КодировкаXBase.OEM;
13 shuhard
 
07.05.10
07:39
(12) забей на Новый XBASE
кури ADODB
14 Alpinist22
 
07.05.10
07:40
(12) четко, прям как у меня, даже кодировка DOS ))
Я думаю (9) и (13) правы в этом случае
(10) а к полю он как будет обращаться?
15 SergeiK
 
07.05.10
07:42
Нет маленького примерчика с ADODB?
16 Alpinist22
 
07.05.10
07:43
Судя по тому как ADO позволяет работать с XLS-доками, может быть и для DBF это прокатит, вот пример:
MyCon=Новый COMОбъект ("ADODB.Connection");
   MyCon.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+ПутьКФайлу+";Extended Properties=""Excel 8.0;HDR=No;IMEX=1""");
   MyRst=Новый COMОбъект ("ADODB.Recordset");
   MyStr="select * from [Лист1$]";
   MyRst.Open (MyStr, MyCon, 2, 3);//adOpenDynamic, adLockOptimistic
   Пока НЕ MyRst.EOF() Цикл
...
MyRst.MoveNext();
   КонецЦикла;
   MyRst.Close();
   MyCon.Close();
17 dk
 
07.05.10
07:44
18 Alpinist22
 
07.05.10
07:44
Прикол в том что ему главное наличие винды начиная с XP и старше, дрова для самих файлов не нужны.
19 Alpinist22
 
07.05.10
07:46
(17) спасибо гуру, много полезного по ссылке!
20 shuhard
 
07.05.10
07:47
21 SergeiK
 
07.05.10
07:47
Спасибо - сегодня попробую
Что и как получится - обязательно расскажу
22 SergeiK
 
07.05.10
07:48
(20) после этого должно обязательно получиться!!!
23 shuhard
 
07.05.10
07:51
(21) [Что и как получится - обязательно расскажу]
это лишние
24 SergeiK
 
07.05.10
13:25
Имеем следующий код:
   Path="c:\";
   DBConn = Новый COMОбъект("ADODB.Connection");
   DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Path+";Extended Properties=DBASE IV");
   
   Persons = DBConn.Execute("SELECT * FROM [736582.DBF]");

При обработке вылетает ошибка:
Ошибка при вызове метода контекста (Execute): Произошла исключительная ситуация (Microsoft JET Database Engine): Неопознанная ошибка
   Persons = DBConn.Execute("SELECT * FROM [736582.DBF]");

Такой файл существует, и обрабатыается и с помощью кода XBASE обрабатывается без ошибок...

В тоже вермя с помощью ADODB другой файл обрабатывается без ошибок.
В чем может быть проблема, Может в версиях DBASE?
25 SergeiK
 
07.05.10
13:54
можно ли программн проверить к какому типу относится открываемый файл?
26 shuhard
 
07.05.10
14:03
(25) можно, например по хэдеру файла
или тупо обернуть Execute в Попытка и перебрать все типы dbf
27 SergeiK
 
07.05.10
14:32
(26) попробовать перебрать такие значения?
";Extended Properties=DBASE IV"
";Extended Properties=DBASE V"
";Extended Properties=DBASE VI"
28 dk
 
07.05.10
14:57
29 shuhard
 
07.05.10
15:06
(27) не верю, нет в природе BASE VI