Имя: Пароль:
1C
 
Изменение кодовой страницы файла
0 Кукуев
 
01.10.07
17:44
Есть файл для загрузки, *.txt, открываю его:

   Если ФС.ВыбратьФайл(0,Файл,Катал,"Открыть файл для загрузки","Текстовые файлы(*.txt)|*.txt","",) = 0 Тогда  
       Возврат 0;
   КонецЕсли;

При этом копирую его в каталог архива и, изменив расширение на .csv, в каталог для непосредственно открытия в Excel и загрузки данных.

   Если ФС.СуществуетФайл(КаталогАрхива) = 1 Тогда
       ФС.КопироватьФайл(Файл, КаталогАрхива + "\" +Файл, 0);
       ФС.КопироватьФайл(Файл, Каталог + "\" +"Temp.csv", 0);
   Иначе
       Сообщить("Каталога архива пока не существует");
   КонецЕсли;  
   ВрФайл = Каталог + "\" +"Temp.csv";
   Возврат 1;

Затем другой процедурой принимаю данные:

   ДБФ = СоздатьОбъект("XBase");
       ВрФайл = КаталогИБ() +"Temp.csv";/
   Попытка
       Excel = СоздатьОбъект("Excel.Application");
   Исключение
       Сообщить("Excel на компьютере не установлен.","!");
       Возврат;
   КонецПопытки;

   Excel.Workbooks.Open(ВрФайл);
   Книга = Excel.ActiveWorkbook;
……….. и т.д….
Все это работает, но сделано для исходного файла, у которого кодовая страница  1251 (Win). А если кодовая страница DOS – естественно, пишет кракозябры вместо русских символов.
Для перекодировки нужно использовать метод КодоваяСтраница(1), но вот где это делать – не могу найти… Пробовал ставить после ДБФ = СоздатьОбъект("XBase"); строку ДБФ.КодоваяСтраница(1); - никаких эмоций… Пробовал также и в другие места вставлять – не помогает…
Подскажите, как, имея файл в DOS кодировке, открыть его для корректной загрузки?
1 ТелепатБот
 
гуру
01.10.07
17:44
2 Ёпрст2
 
01.10.07
17:53
(0)
СоздатьОбъект
КодоваяСтраница
ОткрытьФайл
3 Кукуев
 
01.10.07
18:02
(2)Спасибо, это знаю, пробовал, но не могу понять - в какое место, на каком этапе это вставлять...
4 Ёпрст2
 
01.10.07
18:11
(3) Ну этот же метод возвращает тебе , в какой кодировке файло ... вот и проверяй. потом устанавливай что надо ..
5 smaharbA
 
01.10.07
18:13

Ексель.Workbooks.OpenText(ВрФайл, 866, 1, 1, -4142, 0, 0, 0, 0, 0, -1, ",;")
Книга = Ексель.Workbooks(ВрФайл);

...
только вот нафига ?
6 Кукуев
 
01.10.07
18:22
Я точно знаю, что в DOS кодировке, по-всякому уж пробовал эту КодовуюСтраницу вставлять, и перед копированием, и перед открытием - никак не получается...
С файлом в кодировке Win у меня все работает...Я бы даже сделал "перекодирование" из Dos в Win отдельной процедурой, но и это не знаю как сделать, т.е. имея файл в Dos кодировке пересохранить его в Win кодировке...
7 Кукуев
 
01.10.07
18:24
(5)Спасибо большое, пока писал предыдущее сообщение - этот пост не видел!
попробую...
8 Кукуев
 
01.10.07
18:41
Эх, что-то я видать, не так написал... сделал так:
   Excel.Workbooks.OpenText(ВрФайл, 866, 1, 1, -4142, 0, 0, 0, 0, 0, -1, ",;");
   Книга = Excel.Workbooks(ВрФайл);
   Строк = Excel.Cells.CurrentRegion.Rows.Count;

Файл выбираю, но при запуске загрузки сразу выдает ошибку
Книга = Excel.Workbooks(ВрФайл);
{C:\1С\КОНФИГУРАЦИИ\1SBDEMO\EXTFORMS\1ЗАГРУЗКА ДАННЫХ.ERT(1400)}: :
и все, больше ничего не происходит...
9 Кукуев
 
01.10.07
18:46
(5)Вкраце поясню - зачем все это...
Обработка у меня работает с файлом в Win-кодировке, все принимает, все хорошо, но изменили условие задачи - принимаемый файл должен быть в Dos-кодировке. Вот и  встал вопрос - как изменить обработку, чтобы корректно, без кракозябров принимался этот файл. Или хотя бы как описать процедуру, которая изменяет кодировку файла, чтобы потом принимать файл уже в Win кодировке...
10 smaharbA
 
01.10.07
18:54
//*******************************************
Процедура Сформировать()
   Перем Путь,Имя;
   Если ФС.ВыбратьФайл(0,Имя,Путь,"","txt (*.txt)|*.txt| csv (*.csv)|*.csv","txt")=0 Тогда
       Возврат;
   КонецЕсли;
   Excel=СоздатьОбъект("Excel.Application");
   ВрФайл=Путь+Имя;
   Excel.Workbooks.OpenText(ВрФайл, 866, 1, 1, -4142, 0, 0, 0, 0, 0, -1, ",;");
   Книга = Excel.Workbooks(Имя);
   Строк = Excel.Cells.CurrentRegion.Rows.Count;
   Сообщить(Строк);
КонецПроцедуры
11 Кукуев
 
01.10.07
19:16
(10)Эту процедуру просто повесил на кнопку, она открывает окно выбора файла, показывает число строк в нем а вот кодировка какая была - не меняется... или что-то не так делаю?
12 Кукуев
 
01.10.07
19:35
(10)Спасибо, тебе, о гуру!!! Конечно же, все было верно... Дело в моей некомпетентности, разобрался, все правильно перекодируется и принимается, осталось в порядок привести...
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.