Имя: Пароль:
1C
1C 7.7
v7: как убрать слово в кавычках
0 curys
 
24.10.11
10:35
Доброе время суток.

Подскажите, пожалуйста, как убрать слово в строке в кавычках?
Например: Икра лососевая зернистая "Нерка" 1/25 чтобы получился результат: Икра лососевая зернистая 1/25
1 Mikeware
 
24.10.11
10:37
Заменить на ничего?
2 YF
 
24.10.11
10:37
СтрЗаменить(строка_, """Нерка""", "")
3 curys
 
24.10.11
10:39
(2) это понятно, но номенклатура разная просто и содержание кавычек тоже.
4 YF
 
24.10.11
10:39
(3) Парсить строку
5 Kreont
 
24.10.11
10:40
Икра "Крутая "непропарсистся"" 1/25
Труба новая "Елитная" D1"2

и т.д., что тогда делать будете

Выход: Заставить набирать в отдельное поле краткое наименование правильно и Полное уже со всеми примабасами
6 curys
 
24.10.11
10:42
в номенклатуре везде только одни кавычки
7 Kreont
 
24.10.11
10:42
(6) неверю (с)
8 vladko
 
24.10.11
10:44
по алгоритму в (0)
найти первую кавычку, найти 2ю кавычку, и вырезать между ними. Операторы:
Найти(), Лев(), Прав()
9 Mikeware
 
24.10.11
10:45
(6) ответь честно - 1986? :-)
10 curys
 
24.10.11
10:48
(9) серьезно говорю, что в БД в номенклатуре только одна пара кавычек!
11 YF
 
24.10.11
10:49
(10) Тогда тебе уже все рассказали, чего еще-то хочешь?
12 Kreont
 
24.10.11
10:50
Для всей БД:
Если СтрЧислоВхождений(Наименование,"""") > 1 Тогда
(5)
Иначе
(8)
КонецЕсли;
13 YF
 
24.10.11
10:51
(12) > 2
14 curys
 
24.10.11
10:55
спасибо все за ответы
15 Ткачев
 
24.10.11
11:04
Слово         = "Икра лососевая зернистая ""Нерка"" 1/25";
ПозицияНачало = Найти(Слово, """");
НачалоСтроки  = Лев(Слово, ПозицияНачало);
ПозицияКонец  = Найти(Сред(Слово, ПозицияНачало + 1), """");
УдаляемоеСлово= Сред(Слово, ПозицияНачало, ПозицияКонец + 1);
Слово         = СтрЗаменить(Слово, УдаляемоеСлово, "");
Слово         = СтрЗаменить(Слово, "  ", " ");
16 Песец
 
24.10.11
11:05
Процедура КнопкаВыполнитьНажатие(Кнопка)
   Строка = "Икра лососевая зернистая ""Нерка"" 1/25 ";
   Сообщить(БезКавычек(Строка));
КонецПроцедуры

Функция БезКавычек(Строка)
   Если СтрЧислоВхождений(Строка, """") <> 2 тогда
       Предупреждение("Количество кавычек неправильное");
       Возврат "";
   КонецЕсли;    
   Текст = СтрЗаменить(Строка, """",Символы.ПС);
   Возврат СтрПолучитьСтроку(Текст, 1) + СтрПолучитьСтроку(Текст, 3);
   //два пробела заменить на один?
КонецФункции
17 Песец
 
24.10.11
11:11
(16+)
Если СтрЧислоВхождений(Строка, Символы.Пс) > 0 тогда
 Предупреждение("Слишком много строк, функция не функциклирует :(");
 Возврат "";
КонецЕсли;    
...
Возврат СтрПолучитьСтроку(Текст, 1) + СокрЛ(СтрПолучитьСтроку(Текст, 3));//один пробел
18 Злопчинский
 
24.10.11
17:39
странно что регекспы никто не пристегнул..
все одной строкой делается
19 Ткачев
 
25.10.11
07:24
(18)Можно примерчик ?
20 ЧеловекДуши
 
25.10.11
07:45
Баловство это все. а Автор и правду наивен.
Там где одна кавычка, будет и 2 и 3 и т.д.
Человеческий фактор еще никто не отменял.
21 Рэйв
 
25.10.11
07:54
(0)Ручками будет быстрее, чем изобретать непонятно что
22 Ткачев
 
25.10.11
07:55
Ну примерчик то надо на будущее как это делать одной строкой.
23 Kreont
 
25.10.11
10:46
(22) "(.*)"
И замену на <пусто> :)
24 Ткачев
 
25.10.11
10:54
Куды вставлять это "(.*)" ?
Примером можно ? Наподобие: СтрЗаменить(Слово, """(.*)""", "");
25 Kreont
 
25.10.11
11:03
(24) в одну строчку не уложусь (, надо код писать, я шаблон для замены дал.
Дальше тут:
Книга знаний: Использование регулярных выражений (RegExp) в 1С
26 Ткачев
 
25.10.11
11:08
(25)Теперь понятно как, я раньше тоже делал все через СтрЗаменить(Строка, """", Символы.ПС), но потом почему то отказался от этого и вспомнить не могу почему, но причина была веская.