|
Замена в справочнике | ☑ | ||
---|---|---|---|---|
0
Масянька
22.08.12
✎
13:15
|
День добрый!
Прошу помощи: Спр = СоздатьОбъект("Справочник.Номенклатура"); Спр.ВыбратьЭлементы(); Пока Спр.ПолучитьЭлемент() = 1 Цикл Если УчетГруппы = 1 Тогда Если Спр.ПринадлежитГруппе(мГруппа) = 1 Тогда СтрокаПоиска = Найти(Нрег(Строка(Спр.ПолучитьАтрибут(РабочийРеквизит))), Нрег(Строка(СокрЛП(ЧтоИщем)))); Иначе СтрокаПоиска = 0; КонецЕсли; Иначе СтрокаПоиска = Найти(Нрег(Строка(Спр.ПолучитьАтрибут(РабочийРеквизит))), Нрег(Строка(СокрЛП(ЧтоИщем)))); КонецЕсли; Если СтрокаПоиска > 0 Тогда // подстроку поиска надобно преобразовать СтрокаПоиска = Нрег(СокрЛП(ЧтоИщем)); // подстроку замены надобно преобразовать СтрокаЗамены = СокрЛП(НаЧтоМеняем); мПоле = Спр.ПолучитьАтрибут(РабочийРеквизит); мНовоеПоле = СтрЗаменить(мПоле, СтрокаПоиска, СтрокаЗамены); Спр.УстановитьАтрибут(РабочийРеквизит, мНовоеПоле); Спр.Записать(); КонецЕсли; КонецЦикла; Должно искать "Что ищем" (ищет) и менять "НаЧтоМеняем" (НЕ МЕНЯЕТ). Где косяк? Спасибо. |
|||
1
Капитан О
22.08.12
✎
13:16
|
СтрЗаменить(НРег(мПоле)), не?
|
|||
2
PuhUfa
22.08.12
✎
13:24
|
Реквизит "РабочийРеквизит" тип строка?
|
|||
3
Масянька
22.08.12
✎
13:26
|
(2) Да.
|
|||
4
PuhUfa
22.08.12
✎
13:30
|
А зачем тогда конструкция: Строка(Спр.ПолучитьАтрибут(РабочийРеквизит) ?
|
|||
5
Масянька
22.08.12
✎
13:32
|
(4) А что, не нужна?
|
|||
6
PuhUfa
22.08.12
✎
13:34
|
(5) ну преобразование строки в строку ненужное телодвижение которое и навело на мысль, что реквизит справочника в котором происходит замена ни раз не тип Строка.
|
|||
7
Ёпрст
22.08.12
✎
13:37
|
мНовоеПоле = СтрЗаменить(нрег(мПоле), СтрокаПоиска, СтрокаЗамены);
|
|||
8
Масянька
22.08.12
✎
13:39
|
(7) Ты - ГЕНИЙ! Только объясни, почему НРЕГ?
|
|||
9
PuhUfa
22.08.12
✎
13:40
|
(8) потому что у тебя
СтрокаПоиска = Нрег(СокрЛП(ЧтоИщем)); |
|||
10
Ёпрст
22.08.12
✎
13:42
|
(8) ответ был еще в (1)..
а так, ты же сама ишешь строку в строке вот здесь Найти(Нрег(Строка(Спр.ПолучитьАтрибут(РабочийРеквизит))), Нрег(Строка(СокрЛП(ЧтоИщем)))); приводя всё к Нрег.. а потом пытаешься без приведения к нижнему регистру сделать СтрЗаменить.. |
|||
11
Ёпрст
22.08.12
✎
13:43
|
естественно, ничего не меняет, ибо такую подстроку (не приведенную) не находит
|
|||
12
Масянька
22.08.12
✎
13:44
|
Не, не пойдет. Сохраняет всю строку в нижнем регистре.
Нужно в строке найти нужный кусок (например, Laser Jet или laser jet) и заменить (например, LaserJet). То есть при поиске - регистр не учитывать, а при замене - учитывать. |
|||
13
Масянька
22.08.12
✎
13:45
|
То бишь поиск - только по полному соответствию?
Laser Jet и laser jet - надо искать по разному? |
|||
14
Ёпрст
22.08.12
✎
13:48
|
(12) :)
самое простое, через сред, склеить из 3-х кусков |
|||
15
Zmich
22.08.12
✎
13:48
|
Как вариант, запомнить номер позиции, где найдена нужная строка и заменить, используя Лев, Прав и Сред.
|
|||
16
Масянька
22.08.12
✎
13:49
|
(14) Говорю же, ГЕНИЙ!
Всем спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |