Версия для печати темы (https://pro1c.org.ua/index.php?s=fe4977286e3b8120ac0cfa805f3d6770&showtopic=53286)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 8.3 _ Почему "подобно" работает непредвиденно?

Автор: twilight_dream 29.07.19, 12:08

Платформа - любая
Конфа - любая

Пробую в запросе отобрать номенклатуру, не начинающуюся со знака подчеркивания "_"
Запрос имеет условие

Где НЕ Номенклатура.Наименование ПОДОБНО "\_%"

Ну, как по моему всё логично.
В результате проходят наименования вида "_Филе куриное..." и ему подобные.
Приходится через подстроку проверять, что не есть путь перфекциониста.

Автор: Vofka 29.07.19, 12:29

А а если

Где Номенклатура.Наименование ПОДОБНО "[^\_]%"

?

Автор: fly 29.07.19, 14:10

twilight_dream @ Сегодня, 13:08 * ,
специальные символы:
% (процент) — допускает любую последовательность произвольных символов;
_ (нижнее подчеркивание) — любой один символ;


"В результате проходят наименования вида "_Филе куриное..." и ему подобные." (с)
они и будут приходить, так как нижний пробел работает как спец символ



ГДЕ
    НЕ ПОДСТРОКА(Номенклатура.Наименование, 1, 1) = "_"

Автор: Vofka 29.07.19, 14:23

fly, у ТСа шаблон указан "\_%". Слеш там, видимо, как раз таки для того, что бы _ был именно, как _.

Автор: fly 29.07.19, 14:34

Vofka @ Сегодня, 15:23 * ,
Тогда нужно добавить оператор
СПЕЦСИМВОЛ "\"

ВЫБРАТЬ
    Номенклатура.Наименование КАК Наименование
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Наименование ПОДОБНО "\_%" СПЕЦСИМВОЛ "\"




fly @ Сегодня, 15:33 * ,
Точнее, по условию

ГДЕ
НЕ   Номенклатура.Наименование ПОДОБНО "\_%" СПЕЦСИМВОЛ "\"

Автор: sava1 29.07.19, 14:39

И Подстрока(аа,1,1) = "_"

Автор: fly 29.07.19, 14:44

у меня срабатывает нормально на всех 3х

+ Vofka

Где Номенклатура.Наименование ПОДОБНО "[^\_]%"




и
ГДЕ
НЕ   Номенклатура.Наименование ПОДОБНО "\_%" СПЕЦСИМВОЛ "\"


и
ГДЕ
    НЕ ПОДСТРОКА(Номенклатура.Наименование, 1, 1) = "_"

Автор: twilight_dream 29.07.19, 14:48

А я думал, что "Спецсимвол" "\" - есмь по умолчанию, и оператор "СПЕЦСИМВОЛ" в таком случае писать не надо. Оказалось что надо. Всем спасибо!

Автор: Vofka 29.07.19, 16:23

twilight_dream, для спасибо у нас есть специальная кнопочка.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua