Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Замена нескольких символов в строке

Замена нескольких символов в строке
Я
   asder117
 
04.08.21 - 11:23
Коллеги день добрый. имеем УПП 1.3. связь с базой WMS
При выгррузке из наименования должны подменяться или удаляться несколько симовлов. Может кто сталкивался как можно сделать проверку и если есть один или несколько подряд символов то удалить или заменить
&    НЕ ПЕРЕДАВАТЬ!
<    НЕ ПЕРЕДАВАТЬ!
>    НЕ ПЕРЕДАВАТЬ!
`    НЕ ПЕРЕДАВАТЬ!
“    НЕ ПЕРЕДАВАТЬ!
‘    НЕ ПЕРЕДАВАТЬ!
|    НЕ ПЕРЕДАВАТЬ!
%    НЕ ПЕРЕДАВАТЬ!
/    НЕ ПЕРЕДАВАТЬ!
\    НЕ ПЕРЕДАВАТЬ!
@    НЕ ПЕРЕДАВАТЬ!
( )    НЕ ПЕРЕДАВАТЬ!

эти символы лучше не передавать
Спасибо заранее
   ДенисЧ
 
1 - 04.08.21 - 11:24
СтрЗаменить()
   butterbean
 
2 - 04.08.21 - 11:25
гугли СтрЗаменить()
   Галахад
 
3 - 04.08.21 - 11:28
А зачем вообще такие символы в наименовании? Может перед записью убирать?
   asder117
 
4 - 04.08.21 - 11:30
(1) (3) один символ да этой командой можно но а если несколько разных будет делать проверку на каждый чеканешся
   ДенисЧ
 
5 - 04.08.21 - 11:32
(4) 4 строчки.
Если у тебя такая слабая психика - может, 1с не для тебя?
   butterbean
 
6 - 04.08.21 - 11:32
(4) можешь сделать отдельное поле для выгрузки названия и заполнять его при записи элемента. Это чтобы каждый раз при выгрузке не тратить ресурсы
   acht
 
7 - 04.08.21 - 11:34
(0) > Коллеги
(4) > будет делать проверку на каждый чеканешся

Не коллега ты нам
   acht
 
8 - 04.08.21 - 11:36
(5) Если удалять - то две строчки.
   acht
 
9 - 04.08.21 - 11:37
Или даже одна...
   asder117
 
10 - 04.08.21 - 11:37
(7) ну на вкус и цвет, (0) а вопрос решил через  
RegExp = Новый COMОбъект("VBScript.RegExp");
RegExp.Pattern = "abc";
ИсходнаяСтрока = "abc 123 abc";
Результат = RegExp.Replace(ИсходнаяСтрока, "def"); 
// def 123 abc


RegExp.Global = Истина;
Результат = RegExp.Replace(ИсходнаяСтрока, "def"); 
// def 123 def

Вопрос закрыт спасибо всем
   mikecool
 
11 - 04.08.21 - 11:38
регулярное выражение
   asder117
 
12 - 04.08.21 - 11:38
(5) с психикой все норм. (8) именно менять надо (11) ответил (10)
Спасибо
   Злопчинский
 
13 - 04.08.21 - 11:39
Бляха-муха, сделай функцию типа
глНормализаияСтрокиДляОбмена(ВыбСтрока,Алфавит,СимволНормализации)
   asder117
 
14 - 04.08.21 - 11:40
(13) типа того и делаю
   acht
 
15 - 04.08.21 - 11:41
(10) Трындеееец... Не, нахер мне такие "коллеги" не уперлись.

Результат = СтрСоединить(СтрРазделить(ИсходнаяСтрока, "&<>`“‘|%/\@()"), "");
   asder117
 
16 - 04.08.21 - 11:42
(5) с 4 строками не соглашусь..точнее соглашусь если менять один из символов который попался, а если их несколько или не дай бог все вместе))) Пишем бизнес-правила нименований где запретим эти символы
   asder117
 
17 - 04.08.21 - 11:43
(15) За идею решения спасибо
   mistеr
 
18 - 04.08.21 - 11:43
(0) WMS не умеет правильно парсить XML?
   acht
 
19 - 04.08.21 - 11:44
(18) Там с другой стороны такие же "коллеги"
   asder117
 
20 - 04.08.21 - 11:47
(18) неа. не реализовано. причем запись и передача туда идет напрямую запросом в скуль
   Злопчинский
 
21 - 04.08.21 - 11:54
(18) правильно выгруженный иксемель распарсить можно. неправильно выгруженный - проблематично...
   asder117
 
22 - 04.08.21 - 11:55
(15) Сделал для теста
 Отбор = Новый Структура("Артикул", СОКРЛП(Артикул));
    Выборка = Справочники.Номенклатура.Выбрать(,, Отбор);
    
    Если Выборка.Следующий() Тогда
        Сообщить(Выборка.Наименование);        
        Результат = СтрСоединить(СтрРазделить(Выборка.Наименование, "&<>`“‘|%/\@()"), "");
        Сообщить(Результат);
    КонецЕсли;
Результат..почувствуйте разницу))
Было -  Конденсатор ECAP 470мкФ х 25В d10мм шаг 5мм - 40...105C >5000часов
Стало - Конденсатор ECAP 470мкФ х 25В d10мм шаг 5мм - 40...105C >5000часов
   ДенисЧ
 
23 - 04.08.21 - 11:56
(22) А где разница? О_О
   mistеr
 
24 - 04.08.21 - 11:57
(21) Все символы из (0) XML передавать позволяет.
   asder117
 
25 - 04.08.21 - 11:58
(23) Вот и я о том же...хотья сделал как написано (15)
   acht
 
26 - 04.08.21 - 12:01
(22) Не звизди
ИсходнаяСтрока = "Конденсатор ECAP 470мкФ х 25В d10мм шаг 5мм - 40...105C >5000часов";

Сообщить(ИсходнаяСтрока );        
Результат = СтрСоединить(СтрРазделить(ИсходнаяСтрока, "&<>`“‘|%/\@()"), "");
Сообщить(Результат);

Вывод:
Конденсатор ECAP 470мкФ х 25В d10мм шаг 5мм - 40...105C >5000часов
Конденсатор ECAP 470мкФ х 25В d10мм шаг 5мм - 40...105C 5000часов
   asder117
 
27 - 04.08.21 - 12:04
(26) ничего тогда не понимаю... (22) у меня так выходит...
   acht
 
28 - 04.08.21 - 12:05
(27) Коды символов смотри. У тебя там наверняка какое-нибудь уникодное говно, которое выглядит похоже.
   Bigbro
 
29 - 04.08.21 - 12:06
с юникодами всегда весело)
   Злопчинский
 
30 - 04.08.21 - 12:11
(24) а я и не говорю, что не позволяет...
 
 
   assasu
 
31 - 04.08.21 - 12:18
(0) открой для себя регулярные выражения.
   acht
 
32 - 04.08.21 - 12:26
(31) И микросервисы на GO


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.