|
помогите плиз с ПОДОБНО и %% в запросе | ☑ | ||
---|---|---|---|---|
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) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |