|
v7: Сравнение строк | ☑ | ||
---|---|---|---|---|
0
rain65
25.08.15
✎
09:58
|
Добрый день. Нужно сравнить две строки, находящиеся в двух колонках ТЗ.
Одна колонка Сотрудник, вторая Агент. Если Сотрудник<>Агент, тогда условие. Как убрать два пробела в "Сидоров Иван Иванович" и сравнить с"Петров Сидор Сидорович"? Я применил Лев(Табл.Сотрудник,3)<> Лев(Табл.Агент,3) -работает- но это же не выход, у нас есть два сотрудника с фамилией Ким))). |
|||
1
НикДляЗапросов
25.08.15
✎
10:01
|
Лев(Табл.Сотрудник,3)<> Лев(Табл.Агент,3) А что это по вашему значит?
|
|||
2
NikVars
25.08.15
✎
10:02
|
(0) СтрЗаменить(Сотрудник, " ","") - убираем все пробелы.
Только используй Врег еще плюс к этому. |
|||
3
rain65
25.08.15
✎
10:03
|
Это сравнение первых трех букв в фамилии
|
|||
4
NikVars
25.08.15
✎
10:04
|
А как ты сравнишь "Сидоров" с "Сидоров И.П." с "Сидоров ПИ"?
|
|||
5
rain65
25.08.15
✎
10:05
|
(2) СтрЗаменить(Сотрудник, " ","") пробовал, но про Врег не допер. Спасибо. Попробую
|
|||
6
rain65
25.08.15
✎
10:05
|
(4) Так я же и говорю, что мой вариант корявый))
|
|||
7
NikVars
25.08.15
✎
10:05
|
Еще может быть "Сидоров" и "Сидоровчук", "Потопенко" и "Потапенкова".
|
|||
8
NikVars
25.08.15
✎
10:07
|
А вариант сравнения теста ФИО - это ты подчищаешь хвосты и расставляешь костыли. Нужно изначально решать задачу иначе.
Нужно не вбивать ФИО сотрудника, а выбирать его из списка. |
|||
9
aka AMIGO
25.08.15
✎
10:08
|
Можно сравнить 3 аргумента, Ф, И и О, если разложить каждый в СЗ, и сравнивать по-элементно.
Правда, при этом должна быть обязательность (порядок) в написании.. Сидоров Иван Иванович и Сидоров И.И. не сравнятся. |
|||
10
rain65
25.08.15
✎
10:09
|
(8) Согласен.
|
|||
11
rain65
25.08.15
✎
10:12
|
(8) Только опыта и знаний не хватает
|
|||
12
NikVars
25.08.15
✎
10:19
|
(11) Смотри как это сделано в регламентированных отчетах. Делай в конфигураторе Конфигурация - Поиск по всем текстам - кнопка Дополн. - комплект отчетности за любой квартал - "СтрПолучитьФИО" или "ФИО".
|
|||
13
НикДляЗапросов
25.08.15
✎
10:23
|
Разбить на вероятности: 100% дубли, может есть дубли и крыжить руками
|
|||
14
rain65
25.08.15
✎
10:23
|
(12) У меня немного другая ситуация.Я пишу поиск и сортировку данных, полученных из уже обработанного файла.В нем уже ФИО - строка.
|
|||
15
rain65
25.08.15
✎
10:41
|
(12) Если
( ВРег(СтрЗаменить(Табл.Сотрудник," ",""))<>ВРег(СтрЗаменить(Табл.Агент," ","") ) ) Тогда... не работает |
|||
16
NikVars
25.08.15
✎
10:45
|
(15) Не мешай все в кучу. Используй переменные.
Сотрудник0 = ВРег(СтрЗаменить(Табл.Сотрудник," ",""); Агент0 = ВРег(СтрЗаменить(Табл.Агент," ",""); Сообщить("Ном="+Ном+" выводи Сотрудник0 и Агент0... Если Сотрудник0 <> Агент0 ... |
|||
17
rain65
25.08.15
✎
10:54
|
(16) Спасибо. Сейчас попробую.
|
|||
18
rain65
25.08.15
✎
11:12
|
(16) Нет. Все равно не работает.Вот полная часть кода:
Там еще два условия, они работают, третье- нет НомСтр=Табл.НомерСтроки; Сотрудник0 = ВРег(СтрЗаменить(Табл.Сотрудник," ","")); Агент0 = ВРег(СтрЗаменить(Табл.Агент," ","")); Если (СокрЛП(Табл.Отдел) = СокрЛП("Сбыта")) и (СокрЛП(Табл.Должность)=СокрЛП("Менеджер"))и ( Сотрудник0 <> Агент0 )Тогда Табл.УстановитьЗначение(НомСтр,"Нарушение","Нарушение"); КонецЕсли; |
|||
19
rain65
25.08.15
✎
12:58
|
Понял почему не работает. В агенте сбыта нет отчества))
|
|||
20
NikVars
25.08.15
✎
12:58
|
Самая главная часть - Сообщить().
Ты работаешь "вслепую" и не знаешь где ошибка. А ошибка в том, что нужно точно знать значения переменных. Как вариант - отладчик или через Сообщить() |
|||
21
NikVars
25.08.15
✎
12:59
|
(19) Молоток! Дерзай дальше!
|
|||
22
rain65
25.08.15
✎
13:46
|
(20) Верное наблюдение и ценный совет. Учту. спасибо.
|
|||
23
ЧеловекДуши
25.08.15
✎
14:07
|
(0) Пишешь, "УбратьдвойныеПробелы(СтрокаУборки)". Убираешь в цикле, 1С так работает "СтрЗаменить(СтрокаУборки," "," ")", пока не сотрутся все двойные пробелы.
После пишешь "ВРег(Значение1) <> ВРег(Значение2)" |
|||
24
NikVars
25.08.15
✎
14:37
|
(23) "Убираешь в цикле" - что за цикл?
|
|||
25
Chameleon1980
25.08.15
✎
14:53
|
(24) я так понял:
Пока НАйти(стр," ") Цикл Стр=СтрЗаменить(Стр," "," "); Конеццикла |
|||
26
ЧеловекДуши
25.08.15
✎
15:03
|
(24) Вот такое
Пока Найти(ГдеИщем,ЧтоИщем)<>0 Цикл ГдеИщем = СтрЗаменить(ГдеИщем,ЧтоИщем,ЧемЗаменить); КонецЦикла; |
|||
27
NikVars
25.08.15
✎
15:03
|
(25) Тут цикл лишний, только взять нужно СтрЗаменить(Стр," ","<Тут нет пробелов-пустая строка>");
|
|||
28
NikVars
25.08.15
✎
15:04
|
(26) Зачем такое городить, когда
СтрЗаменить(<?>,,) Синтаксис: СтрЗаменить(<СтрИсточник>,<СтрПодстрока>,<СтрЗамены>) Назначение: Возвращает строку, полученную из строки поиска заменой всех вхождений шаблона поиска строкой замены. Параметры: <СтрИсточник> - строка в которой ищем (место поиска); <СтрПодстрока> - строка которую ищем (шаблон поиска); <СтрЗамены> - строка, которой заменяем найденную подстроку (строка замены). |
|||
29
ЧеловекДуши
25.08.15
✎
15:04
|
(27) Бу га га... Если там 3 пробела вподряд? Что оно вернет? :)
|
|||
30
NikVars
25.08.15
✎
15:08
|
(29) Проверь сам. Удалит 2 пробела, один оставит. Все так?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |