|
v7: загрузка из ДБФ, округляет число до целого | ☑ | ||
---|---|---|---|---|
0
Z_Z
04.12.13
✎
10:00
|
Добры день. столкнулся с такой проблемой. Делаю обычное чтение dbf файла 1с77
ДБФ.ОткрытьФайл(ИмяФайла); ДБФ.Первая(); Пока ДБФ.ВКонце() = 0 Цикл ................. КонецЦикла; И числя с 2 знаками после запятой читаются как целое число, 2 знака просто отбрасывается. пробовал на Win 7 и Win server 2008. может такой быть из-за операционки? Раньше работал на win xp никогда такого не было. |
|||
1
v4442
04.12.13
✎
10:01
|
может разделитель не правильный, посмотри в отладчике
может в настройках винды что-то не так |
|||
2
Z_Z
04.12.13
✎
10:05
|
отладчик уже видит как целое число. А в просмоторщике dbа все ок.
|
|||
3
Dolly_EV
04.12.13
✎
10:06
|
покажи, как (куда) читаешь?
|
|||
4
Z_Z
04.12.13
✎
10:11
|
сумма = Число(ДБФ.AMT); сумма = ДБФ.AMT; и в отладчики смотрел все поля текущей строки ДБФ и там нет 2 знаков.
и пробовал ДБФ.ОписаниеПоля(12, имяПоля, тип, длина, точность); выдает тип -1, точность - 0 ((( |
|||
5
Wobland
04.12.13
✎
10:13
|
ставлю на имя файла
|
|||
6
Z_Z
04.12.13
✎
10:13
|
Могу файл выложить в студию))
|
|||
7
Wobland
04.12.13
✎
10:13
|
(6) да!
|
|||
8
Z_Z
04.12.13
✎
10:13
|
(6) имя файла 1.dbf ))
|
|||
9
Z_Z
04.12.13
✎
10:15
|
http://rghost.ru/50665602
12 колонка , AMT - сумма с 2 знаками после запятой |
|||
10
МишКа
04.12.13
✎
10:18
|
(9) Файл в порядке. Смотри, что у тебя в коде.
|
|||
11
Chum
04.12.13
✎
10:19
|
(0) код покажи
|
|||
12
МишКа
04.12.13
✎
10:21
|
(10) А нет. У меня показывает AMT N 16 0
|
|||
13
Z_Z
04.12.13
✎
10:23
|
(12) какая винда у тебя? У меня нет xp под рукой. может кто-то на XP проверить.
|
|||
14
МишКа
04.12.13
✎
10:25
|
(9) Посмотрел блокнотом. У тебя дробная часть отделяется запятой. Думаю, в этом все дело.
|
|||
15
Wobland
04.12.13
✎
10:25
|
(13) как-то заголовок дбфки от винды не зависит
|
|||
16
Z_Z
04.12.13
✎
10:28
|
(14) а должна чем отделяться?
|
|||
17
МишКа
04.12.13
✎
10:29
|
(16) Точкой.
|
|||
18
МишКа
04.12.13
✎
10:30
|
+(17) Во всяком случае, драйвер, который использует 1С, ожидает точку.
|
|||
19
Mikeware
04.12.13
✎
10:33
|
параметры поля N16.0
|
|||
20
Z_Z
04.12.13
✎
10:36
|
а в этом файле в 3 колонке какой разделитель у вас?
http://rghost.ru/50665989 |
|||
21
Z_Z
04.12.13
✎
10:37
|
(20) этот файл читается нормально, хотя разделитель у меня "запятая" и в первом и во втором файле((
|
|||
22
alexexe
04.12.13
✎
10:37
|
десятичной нет, видимо конвертировали данные неверно, если попробовать вручную изменить десятичную часть, то она обнулится в соответствие с типом.
поменять тип колонки |
|||
23
Chum
04.12.13
✎
10:40
|
хм... посмотрел я файлик. Excel открывает, но колонка АМТ пустая кроме нулей.
Открываю в акцессе, там колонка заполнена, но нет дробной части нигде. Кстати, тип dBase какой? На 4-й как-то не похож, а клюшки работают с ним. |
|||
24
Chum
04.12.13
✎
10:41
|
А дробная часть присутствует, простой листер показывает "100494,63"
|
|||
25
Z_Z
04.12.13
✎
10:42
|
(23) тип не известен, это делает экспорт клиент-банк
|
|||
26
Dolly_EV
04.12.13
✎
10:45
|
Хде 2 знака после запятой??
|
|||
27
Chum
04.12.13
✎
10:45
|
(25) Как определить тип DBF?
Имхо нужно делать что-то вроде: л_АМТ = Число(СтрЗаменить(Объект.АМТ, ",", ".")); |
|||
28
Z_Z
04.12.13
✎
10:48
|
(27) А Объект.АМТ у вас строка? и с запятой?
|
|||
29
Dolly_EV
04.12.13
✎
10:48
|
||||
30
aka AMIGO
04.12.13
✎
10:51
|
(28) функцией СтрЗаменить() он автоматом переводится в строку
|
|||
31
Z_Z
04.12.13
✎
10:54
|
(29)http://rghost.ru/50666288
(30)На входе в эту функцию уже нет дробной части(( |
|||
32
Dolly_EV
04.12.13
✎
10:56
|
(31) см. (23) "...На 4-й как-то не похож, а клюшки работают с ним."
|
|||
33
aka AMIGO
04.12.13
✎
11:05
|
(31) угу.. в сам деле нет др.части
вот картинка в DBFnavigator http://gyazo.com/f5f11e06cf08518d8ebeacf4d510adf5 |
|||
34
Chum
04.12.13
✎
11:06
|
Ну почему на Украине все не как у людей?
|
|||
35
Z_Z
04.12.13
✎
11:07
|
переводим тему в политическую плоскость?:)))))
|
|||
36
Z_Z
04.12.13
✎
11:08
|
(33) как же нету если тут явно видно (выделено красным), что есть 2 знака после запятой ))
http://rghost.ru/50666288 |
|||
37
Mikeware
04.12.13
✎
11:11
|
(36) Структура описания полей в заголовке DBF-файла
№ байта Размер Значение Описание Используется 00 11 ASCII Имя поля с 0x00 завершением Все 11 1 ASCII Тип поля см. Таблицу 4 Все 12 4 n,n,n,n Адрес поля в памяти D3 0,0,n,n Смещение относительно начала записи Fp 0,0,0,0 Игнорируется FS, D4, D5, Fb, CL 16 1 Byte Размер поля см. Таблицу 4 Все 17 1 Byte Количество знаков после запятой Все 18 2 0,0 Зарезервировано Все 20 1 Byte Идентификатор рабочей области D4,D5 0x00 Не используется FS, D3, Fb, Fp, CL 21 2 n,n Многопользовательский dBase D3, D4, D5 0,0 Игнорируется FS Fb, Fp, CL 23 1 0x01 Установленные поля D3, D4, D5 0x00 Игнорируется FS Fb, Fp, CL 24 7 0..0 Зарезервировано Все 31 1 0x01 Поле включено в .mdx индекс D4, D5 0x00 Игнорируется D3, FS, Fb, Fp, CL |
|||
38
Z_Z
04.12.13
✎
11:13
|
(37) А можно объяснить для простых смертных, о чем это говорит?
|
|||
39
Mikeware
04.12.13
✎
11:13
|
(33) железяка смотрит не глазами. она читает дескриптор поля, и видит в дескрипторе 0x10 - длина поля, и 0x00 - количество знаков после запятой. И поступает так, как положено.
|
|||
40
КонецЦикла
04.12.13
✎
11:15
|
А там что дробная часть есть у значений этого поля? Интересно...
|
|||
41
Mikeware
04.12.13
✎
11:16
|
||||
42
Тьма
04.12.13
✎
11:20
|
(0)Было такое чудо когда-то в Проминвесте-банкклиенте. Решалось настройкой банк-клиента по подсказкам банковских программеров - были там скрипты, по которым строился файл экспорта и смысл был в замене неправильного скрипта. Но Проминвест вроде на бифите уже работает?
|
|||
43
Torquader
04.12.13
✎
13:43
|
Если dbf-файл записывается утилитой на Си и т.п., то никто не обещает, что структура файла будет правильной, так как обычно записывают сначала заголовок (копируя просто заранее созданный), а потом при помощи fprintf-а пишут данные, не заглядывая в заголовок и соблюдая только длину полей (хотя и этого можно не делать).
Причём, если на другой стороне программа точно также "читает" файл, проверяя заголовок на полное совпадение, а записи читая из строки фиксированной длины (размером со всю запись), то никто и не узнает, что заголовок такой. Кстати, если использовать Scripting.FileSystemObject и MsScriptControl, то можно прямо в 1С написать альтернативную программу чтения файла, которая прекрасно прочитает всё, не обращая внимание на кривизну типов в заголовке. |
|||
44
ЧеловекДуши
04.12.13
✎
13:44
|
(0) Посмотри в файле ДБФ, может там уже все округлено :)
|
|||
45
ЧеловекДуши
04.12.13
✎
13:50
|
(9) АМТ, целое число :)
|
|||
46
ЧеловекДуши
04.12.13
✎
13:53
|
Дарю... http://yadi.sk/d/G1GpnLhVDmheU
DBF Viewer... |
|||
47
Mikeware
04.12.13
✎
13:59
|
(43) это только если структура фисированная.
зы. но таких идиотов вроде не так уж и много.... хотя.. старые умнеют - новые плодятся... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |