Имя: Пароль:
1C
1C 7.7
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 пробела, один оставит. Все так?