Имя: Пароль:
1C
 
непонятка с импортом DBF
0 serg_k
 
27.09.07
18:25
Импортирую файл из клиент банка, суммы должны быть с копейками, а копеек нет, в отладчике тоже нет, внешние DBF листеры ведут себя по-разному: одни показывают без копеек (разделитель дробной части - .), другие показывают (разделитель дробной части - ,), третьи оказывают 1,7Е308
Кто такую бяку встречал? Как с этим бороться?
He-e-e-e-e-e-e-e-e-lp!!!!!
1 sapphire
 
27.09.07
18:27
умножать, например на 1.00000 а смотришь небось через Сообщить?
2 Обдолбанный Вася
 
27.09.07
18:27
а внутренний листер чего кричит?
3 sapphire
 
27.09.07
18:28
Опять же при выводе 1С-ом - использовать функцию Формат
4 sapphire
 
27.09.07
18:28
(0) Открой Excelью и посмотри
5 serg_k
 
27.09.07
18:31
(4) а в Excel вообще чисел нет!!!!!!!!!!!!!!!!!!!!
пустые поля, я сам в шоке
(1) внутренний листер ничего не кричит, просто один показывает 106.00 а другой 106,67
He-e-e-e-e-e-e-e-e-lp!!!!!
6 serg_k
 
27.09.07
18:32
если не верите могу выслать
7 Обдолбанный Вася
 
27.09.07
18:36
код...
8 sapphire
 
27.09.07
18:36
(7) слей куда-нибудь
9 serg_k
 
27.09.07
18:39
да код не причем 100%
но если просишь..............

Функция Импорт_Файла_ДБФ(Параметр)
   ФайлБД = СоздатьОбъект("XBase");
   Попытка
       ФайлБД.ОткрытьФайл(Путь,,1);
   Исключение
       Предупреждение(Путь + РазделительСтрок + "Ошибка открытия файла!");
       Возврат 0;
   КонецПопытки;
   Если ФайлБД.Открыта() = 0 Тогда
       Предупреждение(Путь + РазделительСтрок + "Ошибка открытия файла!" + РазделительСтрок + "Возможно, файл используется другим приложением.");
       Возврат 0;
   КонецЕсли;
   ФайлБД.КодоваяСтраница(2-Кодировка);
   ФайлБД.Первая();
   Пока (ФайлБД.вКонце() = 0)  Цикл
       Если ФайлБД.ЗаписьУдалена() = 1 Тогда
           ФайлБД.Следующая();
           Продолжить;
       КонецЕсли;

       Состояние("Обрабатывается строка №" + ФайлБД.НомерЗаписи());
       
       
       ДатаОплаты = СокрЛП(ФайлБД.DATA);
       ДатаОплаты = Дата(Число(Сред(ДатаОплаты,7,4)),Число(Сред(ДатаОплаты,4,2)),Число(Сред(ДатаОплаты,1,2)));
       
       Если (ДатаОплаты <> Параметр.Получить("ДатаДок")) или (СокрЛП(ФайлБД.KL_CHK) <> РСчет) или (Цел(ФайлБД.CUR_ID) <> 980) Тогда
           ФайлБД.Следующая();
           Продолжить;
       КонецЕсли;

       Если ФайлБД.DK = 1 Тогда // расход
           Сп = СоздатьОбъект("СписокЗначений");
           Сп.Установить("Расход", ФайлБД.S);
           Сп.Установить("Приход", 0);
       ИначеЕсли ФайлБД.DK = 0 Тогда // приход
           Сп = СоздатьОбъект("СписокЗначений");
           Сп.Установить("Расход", 0);
           Сп.Установить("Приход", ФайлБД.S);                
       Иначе
           ФайлБД.Следующая();
           Продолжить;
       КонецЕсли;
       
       Сп.Установить("Контрагент", ЗаменитьСимволыНазад((СокрЛП(ФайлБД.KL_NM_K))));
       Сп.Установить("РСчет", ФайлБД.KL_CHK_K);
       Сп.Установить("ОКПО", СокрЛП(Цел(ФайлБД.KL_OKP_K)));
       Сп.Установить("МФО",СокрЛП(Цел(ФайлБД.MFO_K)));
       Сп.Установить("Содержание",ЗаменитьСимволыНазад(СокрЛП(ФайлБД.TEXT1)));
       Сп.Установить("НомерПП",СокрЛП(ФайлБД.ND));                
       Параметр.ДобавитьЗначение(Сп);
       ФайлБД.Следующая();          
       
   КонецЦикла;
   ФайлБД.ЗакрытьФайл();
   
   Возврат 1;
КонецФункции //Импорт_Файла
10 serg_k
 
27.09.07
18:41
11 serg_k
 
27.09.07
18:48
Ну как, посмотрели?
Какие будут предложения?
Лично я такое вижу первый раз в жизни
12 Обдолбанный Вася
 
27.09.07
18:49
Сообщить (ФайлБД.S)?
13 serg_k
 
27.09.07
18:51
в отладчике суммы БЕЗ КОПЕЕК!!!!
14 serg_k
 
27.09.07
18:52
Сообщить (ФайлБД.S) тоже БЕЗ КОПЕЕК!!!!
15 Конь в пальто
 
27.09.07
19:00
как вариант через адо запросом выбери все и прогони...
16 serg_k
 
27.09.07
19:04
я тоже так думал сделать, решил поспрашать, может есть какой-то камень подводный, не хотелось велик изобретать
17 serg_k
 
27.09.07
22:07
Увы, через АДО тоже без дробной части

He-e-e-e-e-e-e-e-e-lp!!!!!
18 КонецЦикла
 
27.09.07
23:16
(10) пришли на мыло в карточке, что-то я туплю, забыл куда там тискать :)
19 КонецЦикла
 
27.09.07
23:53
Через АДО все получается, ложная тревога
У товарища все суммы в поле "S" заканчиваются на .00
20 serg_k
 
28.09.07
00:02
(19) внимательно прочти (0)
21 serg_k
 
28.09.07
00:10
Для всех кто сомневается воспользуйтесь вот этим ридером

http://rapidshare.com/files/58698581/DBFRead.rar.html
22 КонецЦикла
 
28.09.07
00:38
(21) Зачем пользоваться именно этим? Хочешь секса до субботы? Ну давай...
Адо и wDBFview показывают достаточно хорошие результаты :)
23 serg_k
 
28.09.07
00:48
(22) Пойми, формируется файл ДБФ, мне инфу из этого файла надо загнать в банковскую выписку, через АДО копейки не видны, выписки приходят каждый день, никто файл ДБФ руками лопатить не будет добавляя копейки
"Адо и wDBFview показывают достаточно хорошие результаты :)" - АДО копейки не показывает
DBConn = CreateObject("ADODB.Connection");
// 3 варианта
//DBConn.Open("Driver={Microsoft dBASE Driver (*.dbf)};DriverID=277;Dbq=c:\temp;");
//DBConn.Open("Driver={Microsoft dBase Driver (*.dbf)};datasource=dBase Files;");
DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp;Extended Properties=dBASE III;");

//бд = DBConn.Execute("Select * from 26092007.dbf");
//бд = DBConn.Execute("Select * from C:\temp\26092007.dbf");
бд = DBConn.Execute("Select * from 26092007.dbf");

Пока бд.EOF=0 Цикл //Цикл по записям DBF
 
 Сообщить(бд.Fields("S").value);

 
 бд.MoveNext(); //Переходим к след. записи DBF
КонецЦикла;

DBConn.Close(); //Закрываем соединение
 
КонецПроцедуры



что это за хреновина я не знаю
24 КонецЦикла
 
28.09.07
00:53
(23) Дятел? Я тебе говорю ЕЩЕ РАЗ...
ВОЗЬМИ wDBFview, ПОСТАВЬ В ПОЛЕ "S" ВМЕСТО 5 -> 5.23 И СМОТРИ ЧТО ВЫВОДИТ ADO

ЗЫ. Кто мешает загнать в банковскую выписку число 5? Тебе надо именно 5.00? Текстовая выписка что ли? Значит юзай Формат()
25 serg_k
 
28.09.07
20:45
Обьясняю специально для Конца:
В програме клиент-банка формируется файл выписок в формате ДБФ, мне инфу каждый день из этого файла (10-60 строк) надо загнать в банковскую выписку, НО:.....
1.Суммы из 1С в этом файле (10) и через XBase, и через АДО видны без копеек, например 106.00
2.В DBF вьюерах ситуация неоднозначная, варианты:
    - копейки не видны, как и в 1С - 106.00
    - копейки видны (21)           - 106,57
    - пишется бред                 - 1,7Е308
    - в Exel в этом поле вообще чисел нет, - оно пустое (5)
Отсюда вопрос, как быть в этой ситуации, файл формируется автоматически, каждый день и загружать его в 1С тоже каждый день, никто из бухов в дбф-ине ковырятся не будет
Понимаю так что проблема не в 1С, может системных файлов каких-то не хватает, или чего-то доустановить надо, проблемка то системная раз один вюьер правильно показывает а другой нет, значит подходы к считыванию записей разные, вот я у думаю, может кто-то встречался с такой проблемой и сможет подсказать
(а то после последнего ответа начал думать что попал на форум юных натуралистов ;-)   )
26 Темный Эльф
 
28.09.07
21:19
Встречал дбф-ы такого формата в банк-клиентах. Бил ногами банкиров. Банкиры плакали и обещали исправиться. Свяжись с банком - у них должны быть варианты выгрузки, в одном из которых есть приличный дбф.
27 serg_k
 
28.09.07
22:48
(26) а у тебя с каким банком былп проблема?
28 Темный Эльф
 
28.09.07
22:59
(27)Кажется, Проминвест, но точно не скажу.
29 serg_k
 
28.09.07
23:02
у меня тоже!!!!
30 Темный Эльф
 
28.09.07
23:08
(29)Там в банк-клиенте в отдельном каталоге лежат файлы, по которым выгрузка формируется. В настройках команды выгрузки можно увидеть командную строку, которой выгрузка формируется и увидеть файл настройки выгрузки. Рядом могут лежать файлы с похожими именами, которые формируют дбф чуть другого формата. Если нет, то звони в банк, мне сразу выслали на мыло еще пару вариантов файла настройки, какой-то из них подошел. В общем тереби банковских программистов, они должны быть в курсе.
31 serg_k
 
28.09.07
23:10
(30) Спасибо тебе большое Темный Эльф, хоть кто-то глаза открыл на непонятку!
32 КонецЦикла
 
28.09.07
23:24
Ну и куле? Тот что ты мне прислал - нормальный!
Ладно, завтро мистовстреча, нельзя волноваться...
33 Темный Эльф
 
28.09.07
23:31
(32)Ты Иксбэйзом открывал или АДО?
34 serg_k
 
29.09.07
00:24
(32) и так, и так
35 Темный Эльф
 
29.09.07
00:31
+(33)Просто дбф-ы разные и АДО-драйверы, наверное, тоже разные бывают. Какие-то открывают, какие-то нет. АДО просто только один раз использовал, поэтому добивался нормального дбф-а.
36 КонецЦикла
 
29.09.07
01:01
(33) АДО, wDBFview тоже нормально все показал
Про ИксБейс - может быть что-то и не так, не пробовал ибо...
На крайняк можно конвертнуть формат
37 Темный Эльф
 
29.09.07
02:04
(36)Покажи мне бухгалтера, который сможет выучить заклинание "конвертация формата"
38 Вьюн
 
29.09.07
23:00
(0) У тебя в dbf в суммах стоят "," вместо ".", как должно быть у нормального dbf-файла. Поэтому разные вьюеры и показывают по-разному. Попробуй замени все "," на "."
AdBlock убивает бесплатный контент. 1Сергей