v7: загрузка из ДБФ, округляет число до целого #690511


#0 by Z_Z
Добры день. столкнулся с такой проблемой. Делаю обычное чтение dbf файла 1с77 ................. КонецЦикла; И числя с 2 знаками после запятой читаются как целое число, 2 знака просто отбрасывается. пробовал на Win 7 и Win server 2008. может такой быть из-за операционки? Раньше работал на win xp никогда такого не было.
#1 by v4442
может разделитель не правильный, посмотри в отладчике может в настройках винды что-то не так
#2 by Z_Z
отладчик уже видит как целое число. А в просмоторщике dbа все ок.
#3 by Dolly_EV
покажи, как (куда) читаешь?
#4 by Z_Z
сумма = Число(ДБФ.AMT); сумма = ДБФ.AMT; и в отладчики смотрел все поля текущей строки ДБФ и там нет 2 знаков.
#5 by Wobland
ставлю на имя файла
#6 by Z_Z
Могу файл выложить в студию))
#7 by Wobland
да!
#8 by Z_Z
имя файла 1.dbf ))
#9 by Z_Z
12 колонка , AMT - сумма с 2 знаками после запятой
#10 by МишКа
Файл в порядке. Смотри, что у тебя в коде.
#11 by Chum
код покажи
#12 by МишКа
А нет. У меня показывает AMT N 16 0
#13 by Z_Z
какая винда у тебя? У меня нет xp под рукой. может кто-то на XP проверить.
#14 by МишКа
Посмотрел блокнотом. У тебя дробная часть отделяется запятой. Думаю, в этом все дело.
#15 by Wobland
как-то заголовок дбфки от винды не зависит
#16 by Z_Z
а должна чем отделяться?
#17 by МишКа
Точкой.
#18 by МишКа
+ Во всяком случае, драйвер, который использует 1С, ожидает точку.
#19 by Mikeware
параметры поля N16.0
#20 by Z_Z
а в этом файле в 3 колонке какой разделитель у вас?
#21 by Z_Z
этот файл читается нормально, хотя разделитель у меня "запятая" и в первом и во втором файле((
#22 by alexexe
десятичной нет, видимо конвертировали данные неверно, если попробовать вручную изменить десятичную часть, то она обнулится в соответствие с типом. поменять тип колонки
#23 by Chum
хм... посмотрел я файлик. Excel открывает, но колонка АМТ пустая кроме нулей. Открываю в акцессе, там колонка заполнена, но нет дробной части нигде. Кстати, тип dBase какой? На 4-й как-то не похож, а клюшки работают с ним.
#24 by Chum
А дробная часть присутствует, простой листер показывает "100494,63"
#25 by Z_Z
тип не известен, это делает экспорт клиент-банк
#26 by Dolly_EV
Хде 2 знака после запятой??
#27 by Chum
Имхо нужно делать что-то вроде:
#28 by Z_Z
А Объект.АМТ у вас строка? и с запятой?
#29 by Dolly_EV
+
#30 by aka AMIGO
функцией СтрЗаменить он автоматом переводится в строку
#31 by Z_Z
На входе в эту функцию уже нет дробной части((
#32 by Dolly_EV
см. "...На 4-й как-то не похож, а клюшки работают с ним."
#33 by aka AMIGO
угу.. в сам деле нет др.части вот картинка в DBFnavigator
#34 by Chum
Ну почему на Украине все не как у людей?
#35 by Z_Z
переводим тему в политическую плоскость?:)))))
#36 by Z_Z
как же нету если тут явно видно (выделено красным), что есть 2 знака после запятой ))
#37 by Mikeware
Структура описания полей в заголовке 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 by Z_Z
А можно объяснить для простых смертных, о чем это говорит?
#39 by Mikeware
железяка смотрит не глазами. она читает дескриптор поля, и видит в дескрипторе 0x10 - длина поля, и 0x00 - количество знаков после запятой. И поступает так, как положено.
#40 by КонецЦикла
А там что дробная часть есть у значений этого поля? Интересно...
#41 by Mikeware
#42 by Тьма
Было такое чудо когда-то в Проминвесте-банкклиенте. Решалось настройкой банк-клиента по подсказкам банковских программеров - были там скрипты, по которым строился файл экспорта и смысл был в замене неправильного скрипта. Но Проминвест вроде на бифите уже работает?
#43 by Torquader
Если dbf-файл записывается утилитой на Си и т.п., то никто не обещает, что структура файла будет правильной, так как обычно записывают сначала заголовок (копируя просто заранее созданный), а потом при помощи fprintf-а пишут данные, не заглядывая в заголовок и соблюдая только длину полей (хотя и этого можно не делать). Причём, если на другой стороне программа точно также "читает" файл, проверяя заголовок на полное совпадение, а записи читая из строки фиксированной длины (размером со всю запись), то никто и не узнает, что заголовок такой. Кстати, если использовать Scripting.FileSystemObject и MsScriptControl, то можно прямо в 1С написать альтернативную программу чтения файла, которая прекрасно прочитает всё, не обращая внимание на кривизну типов в заголовке.
#44 by ЧеловекДуши
Посмотри в файле ДБФ, может там уже все округлено :)
#45 by ЧеловекДуши
АМТ, целое число :)
#46 by ЧеловекДуши
Дарю...   DBF Viewer...
#47 by Mikeware
это только если структура фисированная. зы. но таких идиотов вроде не так уж и много.... хотя.. старые умнеют - новые плодятся...
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С