|   |   | 
| 
 | помогите плиз с ПОДОБНО и %% в запросе | ☑ | ||
|---|---|---|---|---|
| 0
    
        I_learn_1c 20.10.22✎ 17:59 | 
        всем доброго времени суток)
 есть небольшой тупик, прошу помощи) у меня есть временная таблица, в которой список заказов (ссылки на документы). и есть строка с описанием платежа типа "это платеж к заказу МТ-000001 за трубы". нужно из списка заказов выбрать заказ МТ-000001 и вернуть на него ссылку, остальные отсеять. по логике напрашивается что-то типа ВЫБРАТЬ ВТ_Заказы.ЗаказСсылка ИЗ ВТ_Заказы КАК ВТ_Заказы ГДЕ &ОписаниеПлатежа ПОДОБНО "%"+ВТ_Заказы.ЗаказСсылка.Номер+"%" Запрос.УстановитьПараметр("ОписаниеПлатежа", "это платеж к заказу МТ-000001 за трубы"); но это не работает. и на ИТС пишут что так делать нельзя (https://its.1c.ru/db/v8std/content/726/hdoc) мол допустимо использовать только константные строковые литералы или параметры запроса. Запрещается формировать строку шаблона при помощи вычислений, использовать конкатенацию строк средствами языка запросов. как обойти проблему? только выгружать и проверять таблицу в цикле? | |||
| 1
    
        Волшебник модератор 20.10.22✎ 18:09 | 
        ГДЕ ВТ_Заказы.ЗаказСсылка.Номер ПОДОБНО "%&ОписаниеПлатежа%"
 Запрос.Текст = СтрЗаменить(Запрос.Текст, "%&ОписаниеПлатежа%", "%" + "это платеж к заказу МТ-000001 за трубы" + "%" Но тормозить будет адски | |||
| 2
    
        mistеr 20.10.22✎ 18:09 | 
        (0) Я бы это кодом делал, не запросом. Ну или сначала выделить номер из описания, а потом
 ГДЕ Номер = &Номер | |||
| 3
    
        alarm2020 20.10.22✎ 18:22 | 
        (1)
 Не будет работать МТ-000001 не подобно "%это платеж к заказу МТ-000001 за трубы%" только наоборот "это платеж к заказу МТ-000001 за трубы" подобно %МТ-000001% | |||
| 4
    
        RomanYS 20.10.22✎ 18:28 | 
        (1) так с параметром нет проблем. Проблема якобы с правой частью где выражение  "%"+ВТ_Заказы.ЗаказСсылка.Номер+"%".
 На своем опыте могу сказать, что проблем с такими конструкциями не было. Но я например никогда не работал c PG или специфическими СУБД | |||
| 5
    
        I_learn_1c 20.10.22✎ 18:29 | 
        (1) по смыслу не то. надо проверить содержится ли в описании платежа номер, (3) верно заметил     | |||
| 6
    
        I_learn_1c 20.10.22✎ 18:33 | 
        (4) не работает это... ошибки нет, но возвращает все время ЛОЖЬ, поэтому все заказы не проходят отбор, в том числе и нужный МТ-000001.
 а смысл условия как раз в том, чтоб МТ-000001 оставить, а остальные отсеять. | |||
| 7
    
        Волшебник модератор 20.10.22✎ 18:35 | 
        (3) (5) Ну поменяйте местами     | |||
| 8
    
        I_learn_1c 20.10.22✎ 18:37 | 
        (7) в том и прикол что &ОписаниеПлатежа ПОДОБНО "%"+ВТ_Заказы.ЗаказСсылка.Номер+"%" не работает     | |||
| 9
    
        RomanYS 20.10.22✎ 19:04 | 
        (6) именно, что конструкции работали как ожидаешь, даже в соединениях (это не рекомендация).
 Проверь номер, возможно лишние символы, префиксы и т.п. | |||
| 10
    
        rudnitskij 21.10.22✎ 00:00 | 
        &ОписаниеПлатежа ПОДОБНО "%"+ВТ_Заказы.ЗаказСсылка.Номер+"%"
 Запрос.УстановитьПараметр("ОписаниеПлатежа", "это платеж к заказу МТ-000001 за трубы"); --------------------- еще эта фигня может не работать когда в одном месте МТ русские буквы, а в другом английские. А еще она может не работать когда номер заканчивается в документе пробелом или двумя (например, в свойствах длина номера заказа 11 знаков, а в МТ-000001 их 9) | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |