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

Поиск конкретной строки

Поиск конкретной строки
Я
   Flempy
 
13.01.22 - 12:27
Например, имеется следующий массив строк "нипель hs28" и "нипель hs28-01"
как можно указать условие, чтобы при поиске строки "нипель hs28" не выдавало строку "нипель hs28-01"?
   ДенисЧ
 
1 - 13.01.22 - 12:29
При каком поиске? Если указать в запросе = то ищет строго.
А где ты ищешь - мы не можем угадать
   SuperMario
 
2 - 13.01.22 - 12:29
Свой поиск организуй через запрос.
   SuperMario
 
3 - 13.01.22 - 12:29
(1) предполагаю, что на форме списка )
   Flempy
 
4 - 13.01.22 - 12:34
(1) Для каждого строка из МассивСтрок Цикл
        Если СтрНайти(строка.Наименование, ИскомаяСтрока) Тогда
        строка.Наименование = СтрЗаменить(строка.Наименование, ИскомаяСтрока, "");
        КонецЕсли;        
    КонецЦикла
   1Сергей
 
5 - 13.01.22 - 12:37
(4) Если строка.Наименование=ИскомаяСтрока Тогда
   Flempy
 
6 - 13.01.22 - 12:38
(5) "Строка.наименование" не будет содержать только искомую строку
   Kassern
 
7 - 13.01.22 - 12:42
(6) типа "нипель hs28" и "нипель hs28 черный" можно, а "нипель hs28-01" исключить так?
   Flempy
 
8 - 13.01.22 - 12:43
Была мысль, проверять, чтобы слева и справа  искомой строки были пробелы и только тогда продолжать 
 Если СтрНайти(строка.Наименование, " " + ИскомаяСтрока + " ") Тогда
Однако справа не всегда будет стоять пробел и тогда условие не работает
   Иванович Михаил
 
9 - 13.01.22 - 12:44
(8) Ты сформулируй задачу нормально.
   Flempy
 
10 - 13.01.22 - 12:44
(7) да, все верно
   Kassern
 
11 - 13.01.22 - 12:48
(8) ну так проанализируйте все варианты комбинаций возможных у вас в списках и придумайте алгоритм. В крайнем случае можно посмотреть в сторону регулярных выражений
   Kassern
 
12 - 13.01.22 - 12:50
я так понимаю с получением артикулов и гуидов совсем бяда, что приходится по наименованию сопоставлять?
   1Сергей
 
13 - 13.01.22 - 12:52
Основная задача какая? Что-то грузите извне?
   Flempy
 
14 - 13.01.22 - 12:53
(12) Типа того. Но все равно, в данном случае я работаю только со строкой, а не с конкретной номенклатурой
   Kassern
 
15 - 13.01.22 - 12:56
(14) строки разные бывают, те же xml/json тоже строка, но там можно без проблем уникальное поле для сопоставления указать
   Flempy
 
16 - 13.01.22 - 12:58
(13) https://ibb.co/t2XW4LZ
Из поля "Тип резьбы" табличной части нужно перенести "HLST40" в поле "Типоразмер"
   acht
 
17 - 13.01.22 - 12:59
(8)
ВсеДопустимыеРазделители = " ";
НаборСлов = СтрРазделить(ВРег(строка.Наименование), ВсеДопустимыеРазделители, Ложь);
Нашли = НаборСлов.Найти(ВРег(ИскомаяСтрока)) > 0;
   Галахад
 
18 - 13.01.22 - 13:00
(8)
Если СтрНайти(строка.Наименование, " " + ИскомаяСтрока + " ") 
   ИЛИ СтрНайти(строка.Наименование, " " + ИскомаяСтрока)  
   ИЛИ СтрНайти(строка.Наименование, ИскомаяСтрока)  Тогда
   acht
 
19 - 13.01.22 - 13:00
<> Неопределено конечно же
   acht
 
20 - 13.01.22 - 13:00
(18) А это еще проще
Если СтрНайти(" " + строка.Наименование + " ", " " + ИскомаяСтрока + " ") Тогда
   Галахад
 
21 - 13.01.22 - 13:02
(20) Не пойдет
строка.Наименование = АА_А_А
ИскомаяСтрока = АА
   Ryzeman
 
22 - 13.01.22 - 13:03
(16) как эта задача связана с (0)?

(8)  Что делать с "нипель hs28_зелёный"?

(18) По третьему условию найдётся и "нипель hs28-01". Первые два вообще зачем?
   Ryzeman
 
23 - 13.01.22 - 13:05
(0) ответ в (11). Если у тебя все "неправильные" значения с добавлением -XX, то надо и придумывать алгоритм который их отфильтрует. Универсальных каких-то решений тут нет, потому что ХЗ что там в твоей базе как заполнено и задвоено.
   Flempy
 
24 - 13.01.22 - 13:10
(22)
1. Напрямую
2. Не выводить, нужно найти лишь конкретную искомую строку
3. Да, согласен
   Flempy
 
25 - 13.01.22 - 13:11
(23) Да, я понимаю, просто думал может есть какое-то универсальное решение
   Ryzeman
 
26 - 13.01.22 - 13:14
(24) Проверка на равенство? Если строка.Наименование = ИскомаяСтрока Тогда
Но в (10) ты сам пишешь что надо что б находило несколько значений по одной строке поиска, нет?
В остальных случая какие могут быть универсальные решения, если "нипель hs28-01" это неправильная строка, а "нипель hs28-красный" это правильная, например?
   Flempy
 
27 - 13.01.22 - 13:42
(26) https://ibb.co/t2XW4LZ
Искаться будет не вся строка, а в данном случае только HLST40 и соответственно, проверка на равенство не подходит.
"нипель hs28-красный" как раз таки не будет искомой строкой, просто в (7) не совсем удачный пример.
Нужно лишь два условия для выполнения моей задачи:
Искомая строка "hs28"
1. Если в строке которой я ищу, искомая строка будет обрамлена пробелами (например,под это условие подходит строка "нипель hs28 черный")
2. Либо если слева от искомой строки есть пробел, а справа строка закончена (в данном случае подходит "нипель hs28")
"нипель hs28-01" под эти условия не подходит, так и должно быть, однако я не знаю, как реализовать второе условие
   pechkin
 
28 - 13.01.22 - 13:44
Подобно "%hs28 _пробел_%" или подобно "%hs28"
   Flempy
 
29 - 13.01.22 - 13:47
наткнулся на "СтрЗаканчиваетсяНа()", как раз то что нужно.
Всем большое спасибо за помощь!
   Ryzeman
 
30 - 13.01.22 - 14:03
(27) Вот если б ты сразу задачу так сформулировал, то скорее всего тебе бы помогли и быстрее)
 
 


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