Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены) в ЗАПРОСЕ

СтрЗаменить(Строка, ПодстрокаПоиска, ПодстрокаЗамены) в ЗАПРОСЕ
Я
   somn74
 
14.05.19 - 17:15
Есть параметры типа "123456789", "987645609", "6437903940". В справочниках они могут быть записаны "1234 567 89", "98-76 456-09", "64 37 903-940".
Нужно найти сслыки на справочники, соответственно нужно привести значения справочников к виду параметров. Как это сделать?
ПОДСТРОКА тут не подходит.
 
 
   ДенисЧ
 
1 - 14.05.19 - 17:19
приводи данные в справочниках в конкретный стандартный вид.
   la luna llena
 
2 - 14.05.19 - 17:26
интересная задача, я не смогла придумать, как его решить в запросе, только получать значение, преобразовывать в удобоваримый вид и сравнивать с параметром
   palsergeich
 
3 - 14.05.19 - 17:28
Приводите данные в справочниках к одному виду передЗаписью.
   OldCondom
 
4 - 14.05.19 - 17:30
добавляй реквизит в справочник, пиши туда православный номер, обработкой пройдись по всем существующим.
   somn74
 
5 - 14.05.19 - 17:32
Заменить значения в справочнике сликшом просто и такой вариант не подходит :)
Полагаю, что аналогия СтрЗаменить в Запросе невозможна.
   spiller26
 
6 - 14.05.19 - 17:33
(0) Разбирай на символы и собирай заново без пробелов и лишних символов в запросе, но это жесть если не фиксированные строки.
   OldCondom
 
7 - 14.05.19 - 17:34
(5) не заменяй, а добавляй в новый реквизит, на форму не выводи. Можно еще регистр сведений запилить, если хочется без изменения конфы.
   hhhh
 
8 - 14.05.19 - 17:35
(5) через ПОДОБНО Пробуй типа

ПОДОБНО [0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]%[0-9]
   ам794123
 
9 - 14.05.19 - 17:45
В MySQL есть оператор RLIKE, который производит поиск в соответствии с регулярными выражениями. А вот пример из Oracle - Если Вы хотите искать только .com адреса электронной почты, то можно использовать следующий SQL-код

SELECT text FROM my_text WHERE REGEXP_LIKE (text, '[A-Z0-9._%-]+@[A-Z0-9._%-]+\.com')

Ждем, когда что-нибудь такое будет возможно в 1с.
   Скиурус
 
10 - 14.05.19 - 20:26
Параметр "12345" замени на "1%2%3%4%5%" и ищи по LIKE.
Работать будет медленно.
 
 Рекламное место пустует
   Garykom
 
11 - 14.05.19 - 20:31
(0) Примерно так http://catalog.mista.ru/public/336783/

Свою хеш-функцию описываешь так чтобы "987645609" и "98-76 456-09" выдавали одинаковый результат.
   palsergeich
 
12 - 14.05.19 - 21:03
Какие только костыли народ не изобретает, лишь бы НСИ в порядок не приводить.
А потом база лагает, потому что в этом говне индексы не работают
   palsergeich
 
13 - 14.05.19 - 21:05
А все решается маленькой подпиской и новым реквизитом / РС / доп реквизитом
   palsergeich
 
14 - 14.05.19 - 21:05
Ну и разовым прогоном обработки по и имеющемуся массиву НСИ
   OldCondom
 
15 - 14.05.19 - 22:11
(12) действие ради действия. Мало кто работает на результат
   Sammo
 
16 - 15.05.19 - 06:04
(10) Вопрос - по LIKE "1%2%3%4%5%" найдется, ну например 1122334455? А это по идее разные значения.
Можно работать с LIKE но вместо % надо будет указать все возможные виды разделителей
   OpKc
 
17 - 15.05.19 - 06:26
А можно поинтересоваться, почему так принципиально не хочешь воспользоваться решением, которое предлагают palsergeich и OldCondom?
   Simod
 
18 - 15.05.19 - 06:29
В "лоб":
ВЫБРАТЬ
    "1234 567 89" КАК Знач
ПОМЕСТИТЬ ВТ_Исходные

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "98-76 456-09"

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    "64 37 903-940"
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    А.Знач КАК Знач,
    ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 1, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 1, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 2, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 2, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 3, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 4, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 5, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 5, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 6, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 6, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 7, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 7, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 8, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 8, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 9, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 9, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 10, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 10, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 11, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 11, 1)
        ИНАЧЕ ""
    КОНЕЦ + ВЫБОР
        КОГДА ПОДСТРОКА(А.Знач, 12, 1) ПОДОБНО "[0-9]"
            ТОГДА ПОДСТРОКА(А.Знач, 12, 1)
        ИНАЧЕ ""
    КОНЕЦ КАК Формат
ИЗ
    ВТ_Исходные КАК А

   DrZombi
 
19 - 15.05.19 - 06:35
(0) Зачем?
Часто встречаю у 1С такой вид регистров, которые как раз и создаются, что бы получать уже готовую информацию в нужном виде, для определенных запросов.

... Добавь недостающую информацию в структуру метаданных, да заполняй ёё при записи элементов :)
И будет вам счастье :)
   DrZombi
 
20 - 15.05.19 - 06:36
(1) +100 :)
   craxx
 
21 - 15.05.19 - 08:50
(0) я прикидываю как запрос тормозить будет
   spiller26
 
22 - 15.05.19 - 09:12
(21) Если данных много то да, тормозить будет, проверено уже, у меня так в работает где-то, я сразу их предупреждал, что работать будет медленно, но будет.
   spiller26
 
23 - 15.05.19 - 09:15


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует