Имя: Пароль:
1C
 
Чтение DBF файла (кодировка) 8.1.
0 dReamzzz
 
18.08.09
11:46
При загрузке DBF файла в 1С 8.1. текст отображается «иероглифами». Пробовала и OEM и ANSI кодировку.
Если открыть данный файл в Excel, то все нормально читается.

Подскажите, пожалуйста, в чем может быть проблема.
1 dReamzzz
 
18.08.09
12:19
Up
2 butterbean
 
18.08.09
12:26
надо кодировку устанавливать ДО открытия файла
3 Salvador Limones
 
18.08.09
12:27
(2) +1
И код покажи.
4 butterbean
 
18.08.09
12:29
(3)+ еще лучше фотку
5 dReamzzz
 
18.08.09
12:37
Функция ИмпортDBF(Параметры)
   
   ИмяФайла = Параметры.ИмяФайла;
   
   ФайлDBF = Новый XBase;

   ФайлDBF.Кодировка = КодировкаXBase.OEM;    //DOS

   Попытка
       ФайлDBF.ОткрытьФайл(ИмяФайла,,Истина); //Только для чтения
   Исключение
       Предупреждение("Ошибка открытия файла " + ИмяФайла);
       Возврат Неопределено;
   КонецПопытки;        
   
   Если НЕ ФайлDBF.Открыта() Тогда
       Предупреждение("Ошибка открытия файла " + ИмяФайла);
       Возврат Неопределено;
   КонецЕсли;
   
   тзВыписка =  Новый ТаблицаЗначений;
   тзВыписка.Колонки.Добавить("НомерПП");
   тзВыписка.Колонки.Добавить("Приход");
   тзВыписка.Колонки.Добавить("Расход");
   тзВыписка.Колонки.Добавить("ОКПО");
   тзВыписка.Колонки.Добавить("Контрагент");
   тзВыписка.Колонки.Добавить("МФО");
   тзВыписка.Колонки.Добавить("РСчет");
   тзВыписка.Колонки.Добавить("Содержание");
   
   ФайлDBF.Первая();
   
   Пока НЕ ФайлDBF.ВКонце() Цикл
       
       Если ФайлDBF.ЗаписьУдалена() Тогда
           ФайлDBF.Следующая();
           Продолжить;
       КонецЕсли;    
       
       // проверка на дату платежа
       Если ФайлDBF.DAT <> Параметры.ДатаДок Тогда
           ФайлDBF.Следующая();
           Продолжить;
       КонецЕсли;    
       
       Если СокрЛП(Формат(ФайлDBF.RR_DB, "ЧГ=0")) = Параметры.РСчет Тогда
           НовСтрока = тзВыписка.Добавить();
           НовСтрока.Приход    = 0;
           НовСтрока.Расход    = ФайлDBF.SUM;
           НовСтрока.НомерПП        = СокрЛП(Формат(ФайлDBF.N_DOC,"ЧГ=0"));
           НовСтрока.ОКПО            = СокрЛП(Формат(ФайлDBF.OKPO_CR,"ЧГ=0"));
           НовСтрока.Контрагент    = СокрЛП(ФайлDBF.NAIM_K);
           НовСтрока.МФО            = СокрЛП(Формат(ФайлDBF.MFO_CR,"ЧГ=0"));
           НовСтрока.РСчет            = СокрЛП(Формат(ФайлDBF.RR_K,"ЧГ=0"));
           НовСтрока.Содержание    = ФайлDBF.PRIZN;
       ИначеЕсли СокрЛП(Формат(ФайлDBF.RR_K, "ЧГ=0")) = Параметры.РСчет Тогда
           НовСтрока = тзВыписка.Добавить();
           НовСтрока.Расход    = 0;
           НовСтрока.Приход    = ФайлDBF.SUM;
           НовСтрока.НомерПП        = СокрЛП(Формат(ФайлDBF.N_DOC,"ЧГ=0"));
           НовСтрока.ОКПО            = СокрЛП(Формат(ФайлDBF.OKPO_DB,"ЧГ=0"));
           НовСтрока.Контрагент    = СокрЛП(ФайлDBF.NAIM_D);
           НовСтрока.МФО            = СокрЛП(Формат(ФайлDBF.MFO_DB,"ЧГ=0"));
           НовСтрока.РСчет            = СокрЛП(Формат(ФайлDBF.RR_DB,"ЧГ=0"));
           НовСтрока.Содержание    = ФайлDBF.PRIZN;
       Иначе    
           ФайлDBF.Следующая();
           Продолжить;
       КонецЕсли;
       ФайлDBF.Следующая();
       
   КонецЦикла;    
   
   Если НЕ тзВыписка.Количество() И ФайлDBF.КоличествоЗаписей() Тогда
       Предупреждение("В текущем файле нет платежей с данной датой выписки и расчетным счетом!");
   КонецЕсли;
   
   ФайлDBF.ЗакрытьФайл();
   
   Возврат тзВыписка;
   
КонецФункции
6 dReamzzz
 
18.08.09
12:50
Кодировка у меня ДО открытия и стоит. Работала с DBF-файлами раньше неоднократно, таких проблем не возникало. Обычная загрузка выписки.
Банк-клиент стоит на ОС Vista. Файл и на Vista и на XP читается «иероглифами».
7 dReamzzz
 
18.08.09
14:20
Up
8 Snorkler
 
18.08.09
14:44
KOI-8?
9 dReamzzz
 
18.08.09
17:04
(8) В синтаксисе 8 можно выбрать или OEM или ANSI кодировку. Как установить KOI-8 (я так понимаю это кодировка)?
10 Snorkler
 
18.08.09
17:26
В Клиент-Банке есть настройка кодировки?
11 dReamzzz
 
18.08.09
17:31
(10)Скорее всего есть какие-то. Но у меня в наличии только файлы.
12 Zeldan
 
18.08.09
17:38
все иероглифами или только часть текста?
13 Zeldan
 
18.08.09
17:42
(9)KOI-8,это кодировка действительно,но стандартными средствами 1с можно считать только в кодировке OEM или ANSI
14 dReamzzz
 
18.08.09
17:43
‡  Ї« вҐ¦ ‘®Ј« б­® ¤®Ј®ў®аг Ї.2.2.¤®Ј.ь110 ўi¤ 23.07.2003а. 03.01.2002 §  12.08.2009-12.08.2009. ЃҐ§ Џ„‚

‘Ї« в  §  б⮬ в. Ї®б«гЈЁ §Ј. а е. ь112 ўi¤ 15,07,09. ўбм®Ј® - 3230,00 Ја­. ЃҐ§ Џ„‚

Вот, например.
15 sttt
 
18.08.09
17:46
(14) ваще за досил :0)
16 Snorkler
 
18.08.09
17:47
Как-то мне под руку попадался dbf-viewer, с возможностью менять кодировку, но это же не выход. Чем каждый раз обрабатывать файл, может лучше попросить выдавать файлы в правильной кодировке?
17 sapphire
 
18.08.09
17:48
(0) Используйте Visual Fox Pro ODBC Driver или связку MS Access - dbf.
18 Zeldan
 
18.08.09
17:49
(17)к чему это все?нужно чтоб выдали файл в нужной кодировке.зачем лишние телодвижения
19 sapphire
 
18.08.09
17:49
(18) Банки, например далеко не всегда идут на такое
20 sttt
 
18.08.09
17:50
пришли мне файл на st2009st собака qip.ru
21 sttt
 
18.08.09
17:51
(14)То что ты прислала, это - "База в формате DOS" ОЕМ
22 Snorkler
 
18.08.09
17:52
(19) Надо им правильно объяснять, почему клиент всегда прав...  :0)
23 Snorkler
 
18.08.09
17:52
(21) Только какой-то украинский DOS...
24 Zeldan
 
18.08.09
17:55
в коде как раз и считывается в таком формате...
25 sttt
 
18.08.09
17:56
(23) ну да "послуги зг" :0)))
26 dReamzzz
 
18.08.09
18:11
(20) отправила письмо с файлом
27 sttt
 
18.08.09
18:21
пока не получил :0(
28 sttt
 
19.08.09
09:29
так и не получил файл. попробуй на sttt собака bk.ru отправить
29 vde69
 
19.08.09
09:39
попробуй пропатчить реестр и перезагрузить комп

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Xbase]
"DataCodePage"="ANSI"
"BDE"=dword:00000002

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
30 dReamzzz
 
19.08.09
13:10
Проблема решилась, после того как кодировка:

ФайлDBF.Кодировка = КодировкаXBase.OEM;

Была установлена ПОСЛЕ открытия файла, а не ДО.

Всем спасибо!
31 НЕА123
 
19.08.09
13:13
вот это развод...
32 sttt
 
19.08.09
13:22
(31) да, развели как пацанов, причем меня дважды в (26) :0))
33 dReamzzz
 
19.08.09
13:43
(31) проблему решила не я, а один из наших сотрудников. Он сказал, что кодировку файла установил уже после его открытия и таким образом проблема решилась. Я просто пересказываю слова, хотя сама еще не проверяла действительность сказанного. Но, думаю, что так оно и есть - врать не зачем.
(32) файл я действительно отправляла, но только сегодня мне пришел отчет о том, что письмо не было доставлено.
34 rasswet
 
20.08.09
09:20
(5) ФайлDBF.ЗаписьУдалена()  это что он проверяет? есть какая-то отметка в файле что строка удалена, но физически она есть?