Запрещеные символы в запросе, экранирование символов. #553278


#0 by Mr_Best
Есть маленькая но очень неприятная проблемка: Итак, есть такой запрос: И есть такая ситуация, когда переменная "Представление" содержит такую строку: Кетанов 10мг Таб. п/о [ал.фольга/ПВХ/полиамид] Х100 (R) В справочнике номенклатура есть куча одинаковых элементов с этим наименованием: Кетанов 10мг Таб. п/о [ал.фольга/ПВХ/полиамид] Х100 (R) Но запрос НЕ находит ни одного элемента. Причем не находит только для элемента с этим наименованием: Кетанов 10мг Таб. п/о [ал.фольга/ПВХ/полиамид] Х100 (R) Я предположил что нужно экранировать некоторые символы в запросе, но соответствующей функции экранирования в 1С 8.1 не нашёл! Поэтому пришлось сделать так: Вопрос: то что такие символы "[]" требуют экранирования это уже понятно. Подскажите какие еще символы требуют экранирования???
#1 by kosts
#2 by Kom-off
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки: % (процент): последовательность, содержащая любое количество произвольных символов _ (подчеркивание): один произвольный символ […] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона. [^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки. Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ. Например, шаблон “%АБВ[0-9][абвг]_абв%” СПЕЦСИМВОЛ “” означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов.
#3 by Mr_Best
Спасибо что разжували.
#4 by Mr_Best
Вот почему нет функции экранирования как в php? Сейчас взял бы и заэкранировал одной функцией, и не парился бы!!!!
#5 by hhhh
ты вообще что ли считаешь разработчиков придурками? Ну зачем в бухгалтерской программе еще и экранирование?
#6 by tridog
Это походу ты их таковыми считаешь... Платформа "1С:Предприятие" согласно наполеоновским планам фирмы 1С это уже сооооовсем не бухгалтерская программа.
#7 by Mr_Best
Я не считаю разработчиков придурками, а на счет того зачем в программе экранирование, так вот затем: Если в запросе есть специальные символы, литеральные конструкции и подобие регулярных выражений(по терменологии php) то для простой выборки потребуется полное экранирование значений для условий в запросе. Поковыряйся в интернете и ты поймешь что 80% задач использующие "ПОДОБНО" в запросе требуют простого сравнения, а не сложных регулярных выражений(шаблонов). Так почемубы и не сделать функцию экранирования? Покрайней мере такие есть во всех базах данных из тех с которыми я работал: MySQL. MSSQL. Postgressql и языках программирования("расширяемые компоненты") VBasic, VC++, php, perl! Это мое ИМХО ... Судите сами.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С