Глюк с числом при чтении DBF файла

1. ДмитрийF 31.10.06 09:17 Сейчас в теме
Создал обработку для импорта данных из DBF файла, но никак не могу понять причину глюка.
Следующий код ДБФ.ПолучитьЗначениеПоля(1) возвращает 9999.99 для чисел равных или больше 10000. Длина поля 7, точность 2.
Открываю в Excel нормально, т.е 12000 так и показывает а не 9999.99 Файл DBF создается старой ДОС программой, может что в самом файле? Почему тогда Excel правильно понимает.
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. vasilykushnir 63 31.10.06 10:36 Сейчас в теме
>ПолучитьЗначениеПоля(1) возвращает 9999.99

Куда возвращает? Проверь:
Сообщить (ДБФ.ПолучитьЗначениеПоля(1));
или
Сообщить (ДБФ.Первая());
3. ДмитрийF 31.10.06 11:30 Сейчас в теме
Смотрел в отладчике значение ДБФ.ПолучитьЗначениеПоля(1)
Для всех чисел меньше 10000 показывает правильно.
5. ДмитрийF 31.10.06 12:52 Сейчас в теме
VasilyKushnir Написал:
-------------------------------------------------------
> Спрашиваю еще раз - куда загоняешь полученное
> значение? Может с форматами нахимичил или
> разрядности приемника недостаточно...
>
> --------------------------------------------------
Какая разница чему буду присваивать, если выражение ПолучитьЗначениеПоля(1) рассчитано в отладчике до строки:
Заказы.УстановитьЗначение(СтрокаТаблицы,"Сдельно",ДБФ.ПолучитьЗначениеПоля(1));

Заказы это таблица значений. Колонка "Сдельно" задана:
Заказы.НоваяКолонка("Сдельно","Число",8,2,"Сумма",8);





6. vasilykushnir 63 31.10.06 13:39 Сейчас в теме
ДмитрийF Написал:
-------------------------------------------------------
> Какая разница чему буду присваивать, если
> выражение ПолучитьЗначениеПоля(1) рассчитано в
> отладчике до строки:

Что показывает отладчик?

>
> Заказы.УстановитьЗначение(СтрокаТаблицы,"Сдельно",
> ДБФ.ПолучитьЗначениеПоля(1));
>
> Заказы это таблица значений. Колонка "Сдельно"
> задана:
> Заказы.НоваяКолонка("Сдельно","Число",8,2,"Сумма",
> 8);
>
>
Все-таки попробуй
ТекСумма = ДБФ.ПолучитьЗначениеПоля(1); // или (ин1) если в цикле
Сообщить (ТекСумма);
Что покажет?
Смысл: исключить подозрение на формат Заказы.НоваяКолонка("Сдельно","Число",8,2,"Сумма",8)
Судя по формату в ДБФ 7.2 число 12000 должно грузится нормально (но, как вариант: НоваяКолонка("Сдельно","Число",8,2,"Сумма",12).
Черкни на мыло - скину приблуду для работы с ДБФными файлами и лекарство к ней же. А сам ДБФ большой? Мож скинешь - я его прощупаю...

7. vladko 31.10.06 14:58 Сейчас в теме
>Следующий код ДБФ.ПолучитьЗначениеПоля(1) возвращает
>9999.99 для чисел равных или больше 10000. Длина поля 7,
>точность 2.
9999.99 - это и есть 7.2
10000.00 - это уже 8.2
ps тоже могу попробовать прощупать дбф-ку...
8. ДмитрийF 01.11.06 08:56 Сейчас в теме
10000.00 - это уже 8.2
Видимо только в понимании программистов 1С, т.к. другими программами 10000.00 открывается как надо. Что делать-то.
Т.к. ПолучитьЗначениеПоля(1) берет длину поля из DBF, может в файле DBF тогда увеличить длину поля с 7 до 8? Как это сделать в 1С?
11. vladko 01.11.06 12:42 Сейчас в теме
ДмитрийF Написал:
-------------------------------------------------------
> Видимо только в понимании программистов 1С, т.к.
> другими программами 10000.00 открывается как надо.
> Что делать-то.
> Т.к. ПолучитьЗначениеПоля(1) берет длину поля из
> DBF, может в файле DBF тогда увеличить длину поля
> с 7 до 8? Как это сделать в 1С?
Конечно формат поля должен быть 8.2 для поля со значением 12656.2 , ведь это число 12656.20.
Средствами 1с разрядность поля не изменишь, чтобы потом с него числа считывать. Надо пользоваться программками, типа, DBF navigator
http://www.alxsoft.narod.ru/
Коротенькая и бесплатная
4. vasilykushnir 63 31.10.06 11:37 Сейчас в теме
Спрашиваю еще раз - куда загоняешь полученное значение? Может с форматами нахимичил или разрядности приемника недостаточно...
9. vasilykushnir 63 01.11.06 09:19 Сейчас в теме
Дмитрий, в том файле, что ты мне кинул максимальное значение по полю SUM = 8236.80. Ячейку со значением 12656.2, как ты писал в сопроводилове не обнаружил.
Сей час чуть разгребусь по работе - скину прогу для работы с ДБФ и лекарство.
10. ДмитрийF 01.11.06 12:08 Сейчас в теме
VasilyKushnir Написал:
-------------------------------------------------------
> Дмитрий, в том файле, что ты мне кинул
> максимальное значение по полю SUM = 8236.80.
> Ячейку со значением 12656.2, как ты писал в
> сопроводилове не обнаружил.
> Сей час чуть разгребусь по работе - скину прогу
> для работы с ДБФ и лекарство.
>
> --------------------------------------------------
> ------
> Лучше компьютера только пиво, но одно другому не
> мешает.

Ячейка со значением 8236.80 позиция 385
Ячейка со значением 12656.2 позиция 398

12. vasilykushnir 63 01.11.06 13:01 Сейчас в теме
Проверь почту. С помощью этой гадости можно очень много интересных вещей делать (сжатие, изменение аттрибутов и т.д.) - я даже восстанавливал вшарашенные заголовки ДЮФ в 1С.
13. ДмитрийF 02.11.06 09:46 Сейчас в теме
Коррекция длины поля помогла.
Vladko твоя ссылка не работает.

Бесплатная программа на русском языке есть здесь:
http://www.familytree.ru/ru/dbs.htm
14. vladko 02.11.06 09:49 Сейчас в теме
ДмитрийF Написал:
-------------------------------------------------------
> Vladko твоя ссылка не работает.
Хм, а у меня грузится.
Вот прямая ссылка на программу:
http://alxsoft.narod.ru/DBFNavigator201rus.zip
(308 кб.)
15. ДмитрийF 04.11.06 14:58 Сейчас в теме
Vladko все правильно,ссылка работает.
На работе сижу в инете через сервер (почемуто ошибка соединения по этой ссылке), а вот дома с прямым инетом без проблем. Так что извини.
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день