Имя: Пароль:
1C
1С v8
Как прочитать текстовый файл в 8.2
0 23th
 
22.03.12
05:03
у меня допустим такой текст.

"123","Масло",566
"321","Маргарин",578

как прочитать строку чтобы; 1 - код, 2 Наименование, 3 цена

в помощнике
Стр = Текст.ПолучитьСтроку(Ном);

он читает строку целиком, а надо раздельно через запятую!

Зарание спасибо за ответы! и Доброго Утра
1 Kavar
 
22.03.12
05:10
К = СтрЗаменить(ТвояСтрока,",",РазделительСтрок);
Код = СтрПолучитьСТроку(К,1);
Наименование = СтрПолучитьСТроку(К,2);
Цена = СтрПолучитьСТроку(К,3);
2 badboychik
 
22.03.12
05:17
регулярками еще можно
3 23th
 
22.03.12
05:29
спасибо, а что такое "регулярки"?
4 Wobland
 
22.03.12
05:30
(3) regular expression
5 Wobland
 
22.03.12
05:30
есть гарантия, что в наименовании товара не будет запятой?
6 Kavar
 
22.03.12
05:43
(5) да. запятая не самый лучший разделитель.

(0) если сам формируешь текстовый файл, вместо запятой для разделителя лучше использовать какой-нибудь редко встречающийся символ.
7 big
 
22.03.12
05:48
(1) немного не так. Вот правильнее ИМХО

Стр = Сред(Стр,2,СтрДлина(Стр)-2);
Стр = СтрЗаменить(Стр,""",""",Символы.ВК);
Код = СтрПолучитьСтроку(СтрокаТипЗаписи,1);
Наименование = СтрПолучитьСтроку(СтрокаТипЗаписи,2);
Цена = СтрПолучитьСтроку(СтрокаТипЗаписи,3);
8 big
 
22.03.12
05:49
(7) блин... не глядя скопипастил ))

Код = СтрПолучитьСтроку(Стр,1);
Наименование = СтрПолучитьСтроку(Стр,2);
Цена = СтрПолучитьСтроку(Стр,3);
9 23th
 
22.03.12
05:49
тут выгрузка из 7ки а там разделитель ","
я неправильно вначале написал

"1223","Масло","566"
"321","Маргарин","444"
10 Wobland
 
22.03.12
05:49
(7) Стр = Сред(Стр,2) имел в виду?
11 big
 
22.03.12
05:52
(10) Не, именн -2. Чтобы последнюю кавычку тоже отбросить.

У ТС цена не в кавычках, но кажись он их просто нам не показал. Если из 7-ки выгружает (из СпискаЗНачений как правило), то кавычки всяко должны быть
12 Kavar
 
22.03.12
05:53
(9) >> тут выгрузка из 7ки а там разделитель ","
Вставь там другой символ и проблем не будет.
13 23th
 
22.03.12
05:54
"76761","Коллектор выпускной 4213 Е-2,3","4213.1008024-01                  ","33               ","Заволжье"
"40839","Насос масляный ЗМЗ-406","406.1011010-03                   ","но      ","ОАО ""ЗМЗ"""
"43968","Переходник масляного фильтра 402","4021                             ","53          ","ООО""ШансПлюс"""

вот оригинал, точнее его кусок
14 Kavar
 
22.03.12
05:54
(11) Можно и без кавычек выгрузить. я бы сказал  - нужно.
проще потом это все обрабатывать.
15 big
 
22.03.12
05:55
(9) вообще-то разделитель не запятая, а запятая в кавычках.
16 Kavar
 
22.03.12
05:55
(13) Переделывый выгрузку.
ковычки нах. и разделитель другой используй.
17 big
 
22.03.12
05:55
(13) за такое надо по рукам линейкой пи**дить )))
18 big
 
22.03.12
05:56
(16) да не надо ничего переделывать. Смысл?
19 Kavar
 
22.03.12
05:57
(18) Смысл в более простой обработке результата.
20 Kavar
 
22.03.12
06:00
(18) и номенклатура содержащая в названии "," так же может быть.
21 big
 
22.03.12
06:03
(20) да на скорость и сложность это особо не влияет. Хотя справедливости ради скажу, что я при выгрузке меняю двойную кавычку на одинарную. На всякий случай ))
22 23th
 
22.03.12
06:06
так там в 7ке он не меняется!
у меня таой текст получился в 8ке


Процедура КнопкаВыполнитьНажатие(Кнопка)
   ТекстДок = Новый ТекстовыйДокумент;
   ТекстДок.Прочитать("1.txt");
   Ном = 1;
   
   Пока Ном <10 цикл
       Стр = ТекстДок.ПолучитьСтроку(Ном);
       //ТекстДок.РазделительСтрок = ",";
       К = СтрЗаменить(Стр,",",ТекстДок.РазделительСтрок);
       Код = СтрПолучитьСТроку(К,1);
       Наименование = СтрПолучитьСТроку(К,2);
       ВИН = СтрПолучитьСТроку(К,3);
       КН = СтрПолучитьСТроку(К,4);
       Производитель = СтрПолучитьСТроку(К,5);
       Ном = Ном +1;
       Сообщить(Производитель);
   КонецЦикла;    
   //
КонецПроцедуры
23 Wobland
 
22.03.12
06:10
Производитель = СтрЗаменить(СтрПолучитьСТроку(К,5), """", ""), не?
24 Wobland
 
22.03.12
06:11
(23) не. запятая - плохой разделитель, и кавычки мешаются
25 big
 
22.03.12
06:16
(22)

вот так правильно!!!!

К = СтрЗаменить(Стр,""",""",РазделительСтрок);
26 23th
 
22.03.12
06:21
""",""" он вообще ничего не читает!!!
27 0xFFFFFF
 
22.03.12
06:27
А почему никто не вспомнил про
РазложитьСтрокуВМассивПодстрок
?
28 0xFFFFFF
 
22.03.12
06:28
(13) Следи за руками
Стр = ","+Стр+",";
МассивПолей = РазложитьСтрокуВМассивПодстрок(Стр, """,""");
29 0xFFFFFF
 
22.03.12
06:29
+28 Вернее вот
Стр = ""","+Стр+",""";
МассивПолей = РазложитьСтрокуВМассивПодстрок(Стр, """,""");
30 badboychik
 
22.03.12
06:47
(20) и не просто может быть, а уже есть, вон в первой же строчке
31 Kavar
 
22.03.12
06:51
(30) нет. в первой строчке просто запятая, а у него разделитель запятая в кавычках.