Имя: Пароль:
1C
1С v8
Засада с заменой символа
0 palpetrovich
 
14.04.20
09:56
не могу поменять символ "¶"
кусок кода:
Спр = ВыборкаДетальныеЗаписи.Ссылка.ПолучитьОбъект();
//Спр.НаименованиеДляКлиента = "MS Motorservice  International   GmbH¶ (MSI)"
НаименованиеДляКлиента = СокрЛП(Спр.НаименованиеДляКлиента);
НаименованиеДляКлиента = СтрЗаменить(НаименованиеДляКлиента, Символ(182) ," ");
НаименованиеДляКлиента = СтрЗаменить(НаименованиеДляКлиента, "¶"," ");

Сообщить("НаименованиеДляКлиента  "+НаименованиеДляКлиента); // "¶" - на месте :(

ЧЯНТД?
1 mikecool
 
14.04.20
09:57
а через кодсимв()?
2 mikecool
 
14.04.20
09:58
или вернее симв()
3 mikecool
 
14.04.20
09:58
+2 а, я не читатель )))
4 mikecool
 
14.04.20
09:58
это точно 182 код или может еще какой?
5 palpetrovich
 
14.04.20
10:01
(4) 162 получено из КодСимвола("¶");
6 palpetrovich
 
14.04.20
10:02
(5) * 182
7 RomanYS
 
14.04.20
10:03
(0) Скорее всего в самой строке другой служебный символ. Возможно перенос строки. А этот символ - "представление" того служебного символа.
8 Fish
 
14.04.20
10:05
(6) Попробуй символы.ПС
9 Aleksey
 
14.04.20
10:05
Функция УбратьХреньСимволы(Строка)
    Количество = СтрЧислоСтрок(Строка);
    Стр ="";
    Для Инд=0 по Количество-1 Цикл
        Стр = Стр + СтрПолучитьСтроку(Строка,Инд)+" ";    
    КонецЦикла;
    Возврат СокрЛП(Стр);
КонецФункции
(с) v8: Убрать из строки символы табуляции.
10 palpetrovich
 
14.04.20
10:06
(8) это есть, я просто не показал
НаименованиеДляКлиента = СтрЗаменить(НаименованиеДляКлиента, Символы.НПП ," ");
НаименованиеДляКлиента = СтрЗаменить(НаименованиеДляКлиента, Символы.ПС ," ");
11 palpetrovich
 
14.04.20
10:10
(9) сработало, но как-то Не так  :)
"MS Motorservice  International   GmbH"
а хотелось бы
"MS Motorservice  International   GmbH (MSI)"

... но это уже прогресс )
12 Aleksey
 
14.04.20
10:15
(11) я так понимаю у тебя это зрень перед скобками? И получаеться что хвостик на второй строке. По идеи не должен теряться
13 palpetrovich
 
14.04.20
10:17
(12) наверное скобки не виноваты, вот еще пример "Фазатинов А.Х¶  ИП"
14 palpetrovich
 
14.04.20
10:19
+(13)   Количество = СтрЧислоСтрок(Строка); для "Фазатинов А.Х¶  ИП" возвращает 2
15 Lama12
 
14.04.20
10:23
(14) Считаю что дело в (7).
16 Aleksey
 
14.04.20
10:27
(14) ну вот в цикле он и должен склить в строки и на выходе дать результат. Смотри отладчиком, что и как происходит
17 palpetrovich
 
14.04.20
10:28
непонятный результат кодика
Строка =  "Фазатинов А.Х¶  ИП";
Для Индекс = 0 По СтрДлина(Строка) Цикл
текСимвол = Сред(Строка, Индекс, 1);
Сообщить(""+текСимвол+"  код "+КодСимвола(текСимвол));
КонецЦикла;

Ф  код 1 060
Ф  код 1 060
а  код 1 072
з  код 1 079
а  код 1 072
т  код 1 090
и  код 1 080
н  код 1 085
о  код 1 086
в  код 1 074
   код 32
А  код 1 040
.  код 46
Х  код 1 061

  код 13
   код 32
   код 32
И  код 1 048
П  код 1 055
меняю символ ¶
18 Aleksey
 
14.04.20
10:29
А что возвращает КодСимвола(Сред(Строка,14,1)) ?
19 Aleksey
 
14.04.20
10:31
(17) так работать не будет ¶ это представление и у него другой код символа нежели в изначальной строке.
Грубо говоря есть 2 разных служебных символа с разными кодами и действиями, но графическое представление у них одно и тоже
20 palpetrovich
 
14.04.20
10:32
ПО ХОДУ ЭТО РАБОТАЕТ
НаименованиеДляКлиента = СтрЗаменить(НаименованиеДляКлиента, Символ(13) ," ");
НаименованиеДляКлиента = СтрЗаменить(КратНаименованиеДляКлиентако, Символ(32) ," ");
21 Aleksey
 
14.04.20
10:35
(20) По идеи  ¶  это как раз и означает конец абзаца в ворде, что и соответствует коду (13)
А 32 - это и есть пробел, поэтому вторая строка лишняя
22 palpetrovich
 
14.04.20
10:36
(21) согласен
всем спасибо!
23 Aleksey
 
14.04.20
10:40
И да Символы.ПС - это Перевод Строки - или Символ(10)
А Символ(13) - это Возврат Коретки, или Символы.ВК
24 BeerHelpsMeWin
 
14.04.20
10:42
Не лучше ли вместо замены всех плохих символов выбрать все хорошие и сделать из них новую строку?
25 mikecool
 
14.04.20
11:07
(22) ну вот! я еще в (4) был прав )))  я доволен )))
26 Garykom
 
гуру
14.04.20
12:37
(24) +1

Хорошие/плохие можно определять по коду символа, условиями на > или <
27 pechkin
 
14.04.20
13:27
Нужно бы код определять по данным из базы а не контрастом стоки
28 pechkin
 
14.04.20
13:28
Копипастом