v7: Сравнение строк #751558


#0 by rain65
Добрый день. Нужно сравнить две строки, находящиеся в двух колонках ТЗ. Одна колонка Сотрудник, вторая Агент. Если Сотрудник<>Агент, тогда условие. Как убрать два пробела в "Сидоров Иван Иванович" и сравнить с"Петров Сидор Сидорович"? Я применил Лев(Табл.Сотрудник,3)<>  Лев(Табл.Агент,3) -работает- но это же не выход, у нас есть два сотрудника с фамилией Ким))).
#1 by НикДляЗапросов
Лев(Табл.Сотрудник,3)<>  Лев(Табл.Агент,3) А что это по вашему значит?
#2 by NikVars
СтрЗаменить(Сотрудник, " ","") - убираем все пробелы. Только используй Врег еще плюс к этому.
#3 by rain65
Это сравнение первых трех букв в фамилии
#4 by NikVars
А как ты сравнишь "Сидоров" с "Сидоров И.П." с "Сидоров ПИ"?
#5 by rain65
СтрЗаменить(Сотрудник, " ","")  пробовал, но про Врег не допер. Спасибо. Попробую
#6 by rain65
Так я же и говорю, что мой вариант корявый))
#7 by NikVars
Еще может быть "Сидоров" и "Сидоровчук", "Потопенко" и "Потапенкова".
#8 by NikVars
А вариант сравнения теста ФИО - это ты подчищаешь хвосты и расставляешь костыли. Нужно изначально решать задачу иначе. Нужно не вбивать ФИО сотрудника, а выбирать его из списка.
#9 by aka AMIGO
Можно сравнить 3 аргумента, Ф, И и О, если разложить каждый в СЗ, и сравнивать по-элементно. Правда, при этом должна быть обязательность (порядок) в написании.. Сидоров Иван Иванович и Сидоров И.И. не сравнятся.
#10 by rain65
Согласен.
#11 by rain65
Только опыта и знаний не хватает
#12 by NikVars
Смотри как это сделано в регламентированных отчетах. Делай в конфигураторе Конфигурация - Поиск по всем текстам - кнопка Дополн. - комплект отчетности за любой квартал - "СтрПолучитьФИО" или "ФИО".
#13 by НикДляЗапросов
Разбить на вероятности: 100% дубли, может есть дубли и крыжить руками
#14 by rain65
У меня немного другая ситуация.Я пишу поиск и сортировку данных, полученных из уже обработанного файла.В нем  уже ФИО - строка.
#15 by rain65
#16 by NikVars
Не мешай все в кучу. Используй переменные. Сообщить("Ном="+Ном+"   выводи Сотрудник0 и Агент0... Если Сотрудник0 <> Агент0 ...
#17 by rain65
Спасибо. Сейчас попробую.
#18 by rain65
Нет. Все равно не работает.Вот полная часть кода: Там еще два условия, они работают, третье- нет НомСтр=Табл.НомерСтроки;
#19 by rain65
Понял почему не работает. В агенте сбыта нет отчества))
#20 by NikVars
Самая главная часть - Сообщить. Ты работаешь "вслепую" и не знаешь где ошибка. А ошибка в том, что нужно точно знать значения переменных. Как вариант - отладчик или через Сообщить
#21 by NikVars
Молоток! Дерзай дальше!
#22 by rain65
Верное наблюдение и ценный совет. Учту. спасибо.
#23 by ЧеловекДуши
Пишешь, "УбратьдвойныеПробелы(СтрокаУборки)". Убираешь в цикле, 1С так работает "СтрЗаменить(СтрокаУборки,"  "," ")", пока не сотрутся все двойные пробелы.
#24 by NikVars
"Убираешь в цикле" - что за цикл?
#25 by Chameleon1980
я так понял:
#26 by ЧеловекДуши
Вот такое
#27 by NikVars
Тут цикл лишний, только взять нужно СтрЗаменить(Стр,"  ","<Тут нет пробелов-пустая строка>");
#28 by NikVars
Зачем такое городить, когда СтрЗаменить(<?>,,) Синтаксис: СтрЗаменить(<СтрИсточник>,<СтрПодстрока>,<СтрЗамены>) Назначение: Возвращает строку, полученную из строки поиска заменой всех вхождений шаблона поиска строкой замены. Параметры: <СтрИсточник> - строка в которой ищем (место поиска); <СтрПодстрока> - строка которую ищем (шаблон поиска); <СтрЗамены> - строка, которой заменяем найденную подстроку (строка замены).
#29 by ЧеловекДуши
Бу га га... Если там 3 пробела вподряд? Что оно вернет? :)
#30 by NikVars
Проверь сам. Удалит 2 пробела, один оставит. Все так?
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С