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

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

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

Результат = СтрСоединить(СтрРазделить(ИсходнаяСтрока, "&<>`“‘|%/\@()"), "");
16 asder117
 
04.08.21
11:42
(5) с 4 строками не соглашусь..точнее соглашусь если менять один из символов который попался, а если их несколько или не дай бог все вместе))) Пишем бизнес-правила нименований где запретим эти символы
17 asder117
 
04.08.21
11:43
(15) За идею решения спасибо
18 mistеr
 
04.08.21
11:43
(0) WMS не умеет правильно парсить XML?
19 acht
 
04.08.21
11:44
(18) Там с другой стороны такие же "коллеги"
20 asder117
 
04.08.21
11:47
(18) неа. не реализовано. причем запись и передача туда идет напрямую запросом в скуль
21 Злопчинский
 
04.08.21
11:54
(18) правильно выгруженный иксемель распарсить можно. неправильно выгруженный - проблематично...
22 asder117
 
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) А где разница? О_О
24 mistеr
 
04.08.21
11:57
(21) Все символы из (0) XML передавать позволяет.
25 asder117
 
04.08.21
11:58
(23) Вот и я о том же...хотья сделал как написано (15)
26 acht
 
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часов
27 asder117
 
04.08.21
12:04
(26) ничего тогда не понимаю... (22) у меня так выходит...
28 acht
 
04.08.21
12:05
(27) Коды символов смотри. У тебя там наверняка какое-нибудь уникодное говно, которое выглядит похоже.
29 Bigbro
 
04.08.21
12:06
с юникодами всегда весело)
30 Злопчинский
 
04.08.21
12:11
(24) а я и не говорю, что не позволяет...
31 assasu
 
04.08.21
12:18
(0) открой для себя регулярные выражения.
32 acht
 
04.08.21
12:26
(31) И микросервисы на GO
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.