Имя: Пароль:
1C
1С v8
Как продуктивнее сравнить колонки построчно между собой
0 nodrama
 
15.03.22
17:02
Доброго времени суток...
Есть ТЧ..в ней есть две колонки (ну их больше, но это не важно)

1-ая колонка 1-ая строка допустим
Антон;Андрей;Олег

2-ая колонка 1-ая строка допустим
Кирилл;Ольга;Антон

слова между в строке разделены для удобства знаком ;

нужно сравнить построчно, то есть 1-ую строку 1-ой колонки, с 1-ой строкой 2-ой колонки. Если в них содержится хотя бы одно одинаковое слово, не важно в каком месте строки, Антон может быть в первой колонки первый, во второй колонки 3-ий, то следовательно выделять эту строку, ну с выделением ясно.
Количество слов в этих строках может быть разное хоть одно, хоть 5-ь.
1 Вафель
 
15.03.22
17:05
СтрРазделить и СтрНайти
2 nodrama
 
15.03.22
17:05
Первое что приходит на ум, это тупо перебором, берем первую колонку за основу
разделяем строку по знаку ;. добавляем все значения в массив
Далее берем строку во второй колонки и ищем входит ли какое то слово в строку этой колонки. Но мне кажется если будет 10.000 строк, то это будет совсем не продуктивно.. может есть более адекватный способ?
3 Fragster
 
гуру
15.03.22
17:05
(1) во-1-вых не стрНайти, а просто Найти.
4 nodrama
 
15.03.22
17:06
(1) (3)  Так я во 2-ом сообщении уже это и сам написал ;)
Просто мне кажется если будет тысячи строк то это будет очень долго.... я тестирую на 5-и всего... реального количество нету под рукой
5 Fragster
 
гуру
15.03.22
17:07
(4) во-2-торых какая задача, такое и решение
7 nodrama
 
15.03.22
17:08
(5) Дело не в задачи... ситуация заставила ;) так то понятно что бред )
8 nodrama
 
15.03.22
17:08
(6) а если попилить обе строки, то разве поиск далее будет быстрее?
9 Fragster
 
гуру
15.03.22
17:09
в-3-ретьих можно 2-бе строки попилить
10 Fragster
 
гуру
15.03.22
17:09
(8) проверь
11 PuhUfa
 
15.03.22
17:10
А откуда такая ТЧ? А то может лучше это делать еще на стадии ее заполнения
12 Вафель
 
15.03.22
17:10
(3) А чем Найти лучше чем СтрНайти?
13 Kassern
 
15.03.22
17:10
(0) а если будет к примеру:
1) Алена, Виктория, Саша
2) Ален, Виктор, Александр
Что должно произойти?) Если будете тупо поиск использовать по части строки, то не факт, что выдаст то, что вам нужно.
14 nodrama
 
15.03.22
17:11
(13) В этом случаи ни чего не должно найти. Только полное совпадение надо
15 acht
 
15.03.22
17:11
(2)
Для Каждого Слово Из СтрРазделить(ПерваяСтрока, ";") Цикл
    Если Найти(Слово + ";", ВтораяСтрока + ";") Тогда
        // Есть
    КонецЕсли;
КонецЦикла;
16 nodrama
 
15.03.22
17:11
То есть если Алена а во второй Ален.. то ни чего
Только если Алена Алена
17 Kassern
 
15.03.22
17:12
(16) тогда тупо стрНайти одной из частей вам не подойдет
18 Fragster
 
гуру
15.03.22
17:13
(12) Найти бывает не только у строки, но и у массива
19 Вафель
 
15.03.22
17:13
(17) это почему же?
нужно искать ";" + слово1 + ";"
20 Kassern
 
15.03.22
17:13
(15) (19) ключевое слово "тупо" )
21 nodrama
 
15.03.22
17:15
Собственно, варианты вроде рабочие.. только на 5-и строках, все работает моментально)) интересно какой будет быстрее если строк 10.000.  но под рукой пока не ту их (
22 Fragster
 
гуру
15.03.22
17:15
(21) 10сяти 000-ач
23 nodrama
 
15.03.22
17:15
Благодарствую за подсказки
24 Kassern
 
15.03.22
17:15
(21) массивом задублируйте ваши 5 строк до нужного количества и протестируйте, делов то)
25 nodrama
 
15.03.22
17:17
(24) Так не выйдет же.. там количество слов то разное...)))
там может быть
Олег
Антон

А может быть
Антон Олег Кирил Марфа, Лапта, Туалет
Антон Анастасия

Я образно ))
26 nodrama
 
15.03.22
17:17
в одной строке 1 слово, в другой 5
либо в одной строке 6, в другой 6
Либо в одной 1 в другой 0
и так рандомно грубо говоря)) так что зациклить массивом не показатель)
27 Смотрящий
 
15.03.22
17:21
(11) Чукча не читатель )))