7.7 Функция Найти()

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 7.7"", создана пользователем 2man, 1 мар 2011.

  1. TopicStarter Overlay
    2man
    Offline

    2man Опытный в 1С

    Регистрация:
    26 ноя 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Столкнулся с такой проблемой. В справочнике Номенклатура наименование товара может содержать в начале символы *$ или указание страны изготовителя. При поиске в таблице значений соответственно не находит эти товары. Вот код поиска:
    Код:
    Если Найти(Врег(СокрЛП(ТабОстатков.ТМЦ)),Врег(СтрПоиска))=1 Тогда
    
    Т.е. если ввести слово "чайник", то вернет все товары, которые начинаются со слова "чайник", а товары, наименования которых "Эл.чайник" или "*чайник" пропускает.
    Какие варианты решения, кроме как обработка справочника?
  2. Diego
    Offline

    Diego Любитель 1С Команда форума

    Регистрация:
    3 апр 2009
    Сообщения:
    966
    Симпатии:
    2
    Баллы:
    29

    Вы же сами задаете условие, чтобы слово чайник было в начале названия.
    Замените на >0 и будет счастие.
  3. Requin
    Offline

    Requin Опытный в 1С

    Регистрация:
    10 май 2010
    Сообщения:
    1.911
    Симпатии:
    2
    Баллы:
    29
    Не "= 1", а "> 0".
    [off]Diego
    Опередил :angry: [/off]
  4. TopicStarter Overlay
    2man
    Offline

    2man Опытный в 1С

    Регистрация:
    26 ноя 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Тьфу, ты, блин. Благодарю.

    Я вот всегда на таких мелочах спотыкаюсь
  5. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Есть еще понятие "нечеткого" сравнения строк. Когда строки раскладываем в массив и по % совпадения символов с определенной долей вероятности можно считать строки равными
  6. TopicStarter Overlay
    2man
    Offline

    2man Опытный в 1С

    Регистрация:
    26 ноя 2010
    Сообщения:
    81
    Симпатии:
    0
    Баллы:
    26
    Можно пример
  7. Бухгалтерский угодник
    Offline

    Бухгалтерский угодник Администраторы Команда форума Администратор

    Регистрация:
    29 дек 2008
    Сообщения:
    21.520
    Симпатии:
    407
    Баллы:
    104
    Алгоритм прост
    1) Раздлжите в 2 строки в СписокЗначений посимпольно приводя к общему регистру
    2) Уже встречающиеся символы - отбрасываем (т.е. если бука "Я" уже попала в СЗ второй раз не берем)
    3) После разложения берем СЗ содержащий наименьшее количество символо (если равны - первую)
    4) В цикле проверяем принадлежность символов из 1 СВ во втором СЗ.
    Если принадлежит - увеличиваем счетчик.
    Выводим процент вхождения ориентируясь на наименьшую строку.

    Есть и другие алгоритмы (учет всех символов строки, их повторяемость и т.д.) - более точные. Но если этот выдаст более 80% совпадений - наименования можно считать идентичными.

Поделиться этой страницей