Внешний источник данных, неправильные данные в результате запроса по числовой колонке

1. GeterX 1319 15.04.15 11:25 Сейчас в теме
Есть БД Парус 7.40 в формате DBF.
Подключаемся к ней через внешний источник данных с помощью FoxPro Driver.

Делаем выборку данных с помощью запроса с одним и тем же условием и каждый раз получаем разный результат по числовой колонке.
Если результат запроса поместить в таблицу значений и посчитать итог по колонке (тип: число), то результат каждый раз разный.

Базу DBF прикрепляю к сообщению и БД 1С с процедурой для подключения и запросом.

Количество записей при выполнении запроса одно и тоже.
А вот числовые значения каждый раз разные.

Подскажите как обойти эту ошибку.

Воспроизведение ошибки (видео-лучше скачать):
https://yadi.sk/i/_KfA8q4qfzXKU

БД 1С:
https://yadi.sk/d/n1mwhnzyfzX98

БД DBF:
https://yadi.sk/d/LxsZE5rtfzXCf
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 15.04.15 12:34 Сейчас в теме
(1) GeterX, в свое время по переносу данных в 1С тоже столкнулся с таким явлением.
Если это нужно только для одноразового переноса данных в 1С, то можно поступить так же как и я.
Сделал временную базу 1С и полностью загрузил все данные в нее. И уже из временной выбирать нужные.
4. GeterX 1319 15.04.15 17:37 Сейчас в теме
(3) spacecraft, я так понимаю, что 1с только так работает только с числами?
6. spacecraft 15.04.15 18:37 Сейчас в теме
(4) GeterX, нет. Похоже, что не все данные считываются запросом по условию. Как буфер какой ограничен, или время выборки. Но это косяк 1С. Подробно не стал вникать. Но данные каждый раз не полностью выбирались. И самое интересно, каждый раз разное количество.
10. AlexanderKai 20.04.15 10:15 Сейчас в теме
(6) spacecraft,
На сколько я помню была такая проблема, во внешнем источнике данных считываются только первые 100 записей. Но могу ошибаться.
7. GeterX 1319 16.04.15 09:53 Сейчас в теме
(3) spacecraft, как ни странно, но такая же фигня и без выборки по условию, даже если полностью загружаем таблицу.

Методом проб и ошибок, нашел как обойти эту ошибку. Такое возникает если в структуре DBF в одной из колонок стоит тип "бинарная строка (двоичная)", почему-то 1С ее неправильно понимает (хоть и идет преобразование по ВИД в строку).
Обойти это можно сменой типа в DBF на строку (Character (binary) -> Character).
При этом в моем случае БД остается работоспособной.
8. spacecraft 16.04.15 09:59 Сейчас в теме
(7) GeterX, тут еще может сказываться порядок сортировки. У 1С проблемы с этим.
Так удалось заставить работать как надо?
9. GeterX 1319 16.04.15 10:35 Сейчас в теме
(8) spacecraft, вроде работает так как надо. 100 % пока не скажу.
Изменил так в Visual FoxPro, может кому пригодится. (см.скриншот)
А так жду ответ от тех. поддержки.
Прикрепленные файлы:
5. GigaBit 43 15.04.15 17:48 Сейчас в теме
(1) GeterX, мне не удалось подружиться или победить "Внешние источники данных". Поэтому взял себе за правило напрямую подключаться к источникам данных.
Пример выборки данных запросом, на основе вышеперечисленных данных:
Процедура КнопкаВыполнитьНажатие(Кнопка)
	КолвоЗаписей = 0; СуммаКВыдаче = 0;
	НаборСтрок = Новый COMОбъект("ADODB.Recordset");
	ТекстЗапроса = "sel ect * FR OM his.dbf WHERE period = '1501'";
	//Внимание: "Provider=" - может быть другой см. список источников данных ODBC
	//          "Initial Catalog=" - путь до файла
	СтрокаПодключения = "Provider=MSDASQL.1;Persist Security Info=False;Data Source=his.dbf;Initial Catalog=F:\";
	НаборСтрок.Open(ТекстЗапроса,СтрокаПодключения);
	Пока Не НаборСтрок.EOF() Цикл
		КолвоЗаписей = КолвоЗаписей + 1;
		СуммаКВыдаче = СуммаКВыдаче + НаборСтрок.Fields("total").Value;
		НаборСтрок.MoveNext();
	КонецЦикла;
	НаборСтрок.Close();
	ЭлементыФормы.Надпись1.Значение = "     Сумма: " + СуммаКВыдаче;
	ЭлементыФормы.Надпись2.Значение = "Количество: " + КолвоЗаписей;
КонецПроцедуры
Показать
2. GeterX 1319 15.04.15 12:22 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот