Имя: Пароль:
1C
 
Выгрузка в csv файл
0 Гектор
 
28.06.11
21:36
csv- это текстовый файл с разделителем строк точка с запятой.Но при открытии этого файла в блокноте в файле показывается одна строка(есть пример правильного файла csv).

Такая постановка задачи:
"Разделители строк должны иметь формат MS Windows/DOS - два последовательных символа 0x0D 0x0A. Одинарный разделитель формата Unix 0x0D не допускается."

Как эти символы записать после каждой строки в файле?

Например такая строка
стр="1;2;3;";

Делаю из нее 3 строки для проверки
стр=стр+Символы.ВК+стр+Символы.ВК+стр+Символы.ВК;

Текст = Новый ЗаписьТекста(ИмяФайлаCSV,КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку(стр);    

Файл получаю почти такой как мне надо, но за исключением того что в конце всей строки символа возврата каретки нет, а после первой и второй строки есть
1 Fragster
 
гуру
28.06.11
21:37
надо грузить через ADO
2 Fragster
 
гуру
28.06.11
21:38
а что такое символы.вк?
3 Гектор
 
28.06.11
21:38
Символы.ВК это как я понял "0x0D"
а "0x0A" это что?

в паре как я понял это символ нажатия клавиши ENTER
но как эти пару символов программно записать?
4 Гектор
 
28.06.11
21:39
(2)возврата каретки
5 Гектор
 
28.06.11
21:39
нигде не могу найти примера кода формирования файла csv из 1С
6 AlexNew
 
28.06.11
21:44
Закрыть зоопарк, сколько можно издеваться над животными???
7 Гектор
 
28.06.11
21:50
кодировку поправил на DOS
Текст = Новый ЗаписьТекста(ИмяФайлаCSV,КодировкаТекста.OEM);

но это не помогло
8 Fragster
 
гуру
28.06.11
21:51
(4) а ничего, что следующая строка - это все-таки перевод строки, а не возврат каретки?
9 ДенисЧ
 
28.06.11
21:52
(8) А ничо, что мы в винде? И следующая строка - это 0x13 0x10 ?
10 Гектор
 
28.06.11
21:56
мне надо два последовательных символа 0x0D 0x0A
это как сделать?
визуально вроде это символ возврата каретки
но в конце всего текста он почему то не добавляется
11 Гектор
 
28.06.11
21:57
вот пример кода если кто хочет посмотреть файл

Процедура КнопкаВыполнитьНажатие(Кнопка)
стр="10000;20000;30000;";

//Делаю из нее 3 строки для проверки
стр=стр+Символы.ВК+стр+Символы.ВК+стр+Символы.ВК;

Текст = Новый ЗаписьТекста("C:\1.csv",КодировкаТекста.OEM);
Текст.ЗаписатьСтроку(стр);  

КонецПроцедуры
12 Гектор
 
28.06.11
22:00
вот из вики
wiki:CSV
"Строки разделяются парой символов CR LF (0x0D 0x0A) (в DOS и Windows эта пара генерируется нажатием клавиши Enter)."
плин, как программно их в файл записать?
13 H A D G E H O G s
 
28.06.11
22:03
Текст = Новый ЗаписьТекста("C:\1.csv",КодировкаТекста.OEM);
Текст.ЗаписатьСтроку(стр);
Текст.Записать(Символы.ПС);
14 Гектор
 
28.06.11
22:08
(13)нет, появляется лишняя пустая строка
15 H A D G E H O G s
 
28.06.11
22:14
Ты очень хреново читаешь мануал
16 H A D G E H O G s
 
28.06.11
22:14
стр="1;2;3";
а не
стр="1;2;3;";
17 H A D G E H O G s
 
28.06.11
22:17
стр=стр+Символы.ВК+Символы.ПС+стр+Символы.ВК+Символы.ПС+стр;

Текст = Новый ЗаписьТекста(ИмяФайлаCSV,КодировкаТекста.ANSI);
Текст.Записать(стр);
18 H A D G E H O G s
 
28.06.11
22:18
Либо
19 Гектор
 
28.06.11
22:19
(15) у меня есть пример правильного файла.там в конце ";" надо ставить
20 H A D G E H O G s
 
28.06.11
22:19
стр=стр+Символы.ВК+Символы.ПС+стр+Символы.ВК+Символы.ПС+стр;

Текст = Новый ЗаписьТекста(ИмяФайлаCSV,КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
Текст.Записать(стр);
21 H A D G E H O G s
 
28.06.11
22:19
Вернее

Текст = Новый ЗаписьТекста(ИмяФайлаCSV,КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
Текст.Записать(стр);
22 H A D G E H O G s
 
28.06.11
22:20
(19) Я не знаю какие у тебя там примеру, я смотрю
wiki:CSV

на которые ты ссылаешься.
23 Гектор
 
28.06.11
22:23
(21) нет. Символы.ПС
разбивает в файле содержимое на строки. мне не надо разбивать
ну чтобы в блокноте файл csv при открытии показывало как одну строку.
но эксель например отображает 3 строки

(22) я в (12) обратить внимание на
"Строки разделяются парой символов CR LF (0x0D 0x0A) (в DOS и Windows эта пара генерируется нажатием клавиши Enter)."
плин, как программно их в файл записать?
24 H A D G E H O G s
 
28.06.11
22:24
(23) Взаимоисключающие параграфы!
25 H A D G E H O G s
 
28.06.11
22:24
"Строки разделяются парой символов CR LF (0x0D 0x0A) (в DOS и Windows эта пара генерируется нажатием клавиши Enter)."
плин, как программно их в файл записать?

Текст.Записать(Символы.ВК+Символы.ПС);
26 H A D G E H O G s
 
28.06.11
22:25
p.s. Кстати, excel при сохранении в csv добавляет 1310 в конец файла
27 H A D G E H O G s
 
28.06.11
22:26
Так что

Текст = Новый ЗаписьТекста(ИмяФайлаCSV,КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
Текст.Записать(стр);

заменить на

Текст = Новый ЗаписьТекста(ИмяФайлаCSV,КодировкаТекста.ANSI);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
Текст.ЗаписатьСтроку(стр,Символы.ВК+Символы.ПС);
28 H A D G E H O G s
 
28.06.11
22:27
Но также excel не добавляет ; в конец строки, так что вики права.

И excel добавляет Символы.ВК+Символы.ПС в конец строки.
29 H A D G E H O G s
 
28.06.11
22:27
Короче, автор не тупи, объясни свою гениальную задумку.
30 Гектор
 
28.06.11
22:29
вики может и права, но мне надо требования заказчика см(0).
у меня еть пример такого файла
блокно открывает csv как одну строку
эксель как несколько
мне тоже нужно такой же файл сформировать из 1С.
не получается, а вот как в вики проблем сформировать нет.т.е. блокнот открывает три строки
31 Гектор
 
28.06.11
22:32
(27) твой пример формирует в блокноте открывает 3 строки:
10000;20000;30000;
10000;20000;30000;
10000;20000;30000;

мне надо чтобы в одну и показывало символ возврата каретки после каждой из 3х строк
32 Гектор
 
28.06.11
22:33
10000;20000;30000;
10000;20000;30000;
10000;20000;30000;
33 Гектор
 
28.06.11
22:33
в хотел скопировать(32) не копируется символ возврата каретки
34 AlexNew
 
28.06.11
22:36
В блокноте? Закройте клетки.
35 Гектор
 
28.06.11
22:43
ап
36 H A D G E H O G s
 
28.06.11
22:47
стр=стр+Символы.ВК+стр+Символы.ВК+стр+Символы.ВК;

Текст = Новый ЗаписьТекста(ИмяФайлаCSV,КодировкаТекста.ANSI);
Текст.Записать(стр);
37 vis_tmp
 
28.06.11
22:48
Постобработка полученного файла не поможет?
38 AlexNew
 
28.06.11
23:50
(37) Чиво?
39 Fragster
 
гуру
28.06.11
23:57
ну автор, ты тугой. сделай разделителем Символы.ПС и не задавай больше никаких вопросов.
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.