Имя: Пароль:
1C
1С v8
Заменить строчку в файле на новую
,
0 AugustBlack
 
07.12.11
13:00
сабж....помогите чего-то туплю, ищу строчку которая содержит знак & нада заменить на & что не так:
   Текст = Новый ТекстовыйДокумент;
   Текст.Прочитать(ФайлДанных);    
   Для Номер = 1 По Текст.КоличествоСтрок() Цикл
       Строка = Текст.ПолучитьСтроку(Номер);
       Строка = СтрЗаменить(Строка, "&", "&");
   КонецЦикла;
  Текст.Записать(ФайлДанных);
1 PCcomCat
 
07.12.11
13:06
Текст = Новый ТекстовыйДокумент;
   Текст.Прочитать(ФайлДанных);    
   Для Номер = 1 По Текст.КоличествоСтрок() Цикл
       СтрокаТекста = Текст.ПолучитьСтроку(Номер);
       СтрокаТекста = СтрЗаменить(СтрокаТекста , "&", "&");
       Текст.ВставитьСтроку(Номер, СтрокаТекста);
   КонецЦикла;
  Текст.Записать(ФайлДанных);
2 PCcomCat
 
07.12.11
13:07
+(1) Ой! Вместо ВставитьСтроку = ЗаменитьСтроку.
3 AugustBlack
 
07.12.11
13:10
(3), спс
// Вставить содержимое обработчика.
   Текст = Новый ТекстовыйДокумент;
   Текст.Прочитать(ФайлДанных);    
   Для Номер = 1 По Текст.КоличествоСтрок() Цикл
       Строка = Текст.ПолучитьСтроку(Номер);
       Если Найти(Строка, "&")<>0 Тогда
            СтрокаЗамены = СтрЗаменить(Строка, "&", "&amp;");
            Текст.ЗаменитьСтроку(Номер,СтрокаЗамены);
       КонецЕсли;
   КонецЦикла;
Текст.Записать(ФайлДанных);
4 Wobland
 
07.12.11
13:13
(3)  Если Найти(Строка, "&")<>0 Тогда - это лишнее
5 PCcomCat
 
07.12.11
13:13
Только не стоит использовать в качестве переменных Строка, Число и т.д.
6 AugustBlack
 
07.12.11
13:15
(4) Находит в исходной строке все вхождения подстроки поиска и заменяет ее на подстроку замены.
м, тогда да...
(5) не совсем понял...
7 Wobland
 
07.12.11
13:16
(6) не называй переменные Строка, Число, Дата и т.п. Говори ласково: Строчечка, Числочко, Датенька (никогда в зарезервированных не появятся )
8 AugustBlack
 
07.12.11
13:16
а...спс...
9 acsent
 
07.12.11
13:22
(0) А если  в файле уже &amp ?
10 Godofsin
 
07.12.11
13:24
(7) "Числочко" - зач0т!!! =)))))
11 AugustBlack
 
07.12.11
13:34
(9) как раз такого и не может быть, но все же верно подмечено....
12 hhhh
 
07.12.11
14:20
(9) как-то так

           СтрокаЗамены = СтрЗаменить(Строка, "&", "&amp;");
         СтрокаЗамены = СтрЗаменить(СтрокаЗамены, "&amp;аmp;", "&amp;");
13 AugustBlack
 
12.12.11
12:55
почему после этого кода изменяется весь файл к примеру было:
<?xml version="1.0" encoding="UTF-8"?>
<V8Exch:_1CV8DtUD xmlns:V8Exch="http://www.1c.ru/V8/1CV8DtUD/" xmlns:v8="http://v8.1c.ru/data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <V8Exch:Data>
       <CatalogObject.Контрагенты>
           <Ref>0000001</Ref>
           <IsFolder>false</IsFolder>
           <DeletionMark>false</DeletionMark>
           <Code>000000041</Code>
           <Description>ООО "Вертикаль"</Description>
           <Комментарий/>
           <ЮрФизЛицо>ЮрЛицо</ЮрФизЛицо>
           <ИНН>7203250760</ИНН>
           <КодПоОКПО/>
           <КПП/>
           <НаименованиеПолное>ООО "Вертикаль"</НаименованиеПолное>
           <ОсновнойБанковскийСчет/>
       </CatalogObject.Контрагенты>
стало:

<?xml version="1.0" encoding="UTF-8"?>
<V8Exch:_1CV8DtUD xmlns:V8Exch="http://www.1c.ru/V8/1CV8DtUD/" xmlns:v8="http://v8.1c.ru/data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <V8Exch:Data>
       <CatalogObject.Контрагенты>
           <Ref>0000001</Ref>
           <IsFolder>false</IsFolder>
           <DeletionMark>false</DeletionMark>
           <Code>000000041</Code>
           <Description>РћРћРћ "Вертикаль"</Description>
           <Комментарий/>
           <ЮрФизЛицо>ЮрЛицо</ЮрФизЛицо>
           <Р?РќРќ>7203250760</Р?РќРќ>
           <РљРѕРґРџРѕРћРљРџРћ/>
           <РљРџРџ/>
           <НаименованиеПолное>РћРћРћ "Вертикаль"</НаименованиеПолное>
           <ОсновнойБанковскийСчет/>
       </CatalogObject.Контрагенты>
       <CatalogObject.Контрагенты>

добавил:
Текст.Записать(ФайлДанных,КодировкаТекста.UTF8);
тот же результат
14 AugustBlack
 
12.12.11
13:03
up
15 ЧеловекДуши
 
12.12.11
13:08
Неправильно сохраняешь.
Так же метод "ТекстовыйДокумент" считывает весь файл в память.
А после обрабатывает.
Так что при записи, вы на самом деле опять записываете весь документ :)
...т.е. попросту идет полная перезапись...
16 ЧеловекДуши
 
12.12.11
13:09
+ посмотри в отладчике, как ты открыл файл.
17 Дядя Васька
 
12.12.11
13:12
(13) А почему собсно UTF8? 1251 же наверняка.
18 PCcomCat
 
12.12.11
13:14
+(13)В кодировке дело. А если КодировкаТекста.ANSI?
19 AugustBlack
 
12.12.11
13:14
(15) - Текст.Записать(ФайлДанных,КодировкаТекста.UTF8); но я же указал это
(13) xml файл в формате UTF8 (без BOM)
20 AugustBlack
 
12.12.11
13:17
(13) гы...сработало, я невдоумении
21 AugustBlack
 
12.12.11
13:17
т.е (18) ANSI кодировку поставил
22 PCcomCat
 
12.12.11
13:19
(21) Потому как ты не с XML в данный момент работаешь, а с текстовым документом.
23 Дядя Васька
 
12.12.11
13:20
(19) А при чтении указать не надо? )
24 Дядя Васька
 
12.12.11
13:20
+(23) Прочитал как ANSI, записал как UTF8, и фигли ты хочешь...
AdBlock убивает бесплатный контент. 1Сергей