Имя: Пароль:
1C
 
Что обозначает СПЕЦСИМВОЛ ""~"", и где ошибка в запросе?
0 RAMYL
 
17.03.11
01:50
Доброй ночи!
Кто-нибудь знает что означает "~"?
И почему запрос не работает? Подскажите господа эксперты как мне правильно написать.
Поле "Код" - символьное(9 символов), но записанное значение из 7 символов. Сравнивается со значением из 7 символов.
----------------------------------
ЗапросПоискаКонтрагента = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
                         |    Контрагенты.Ссылка,
                         |    Контрагенты.Код,
                         |    Контрагенты.ИНН,
                         |    Контрагенты.Наименование
                         |ИЗ
                         |    Справочник.Контрагенты КАК Контрагенты
                     |ГДЕ
                 |    Контрагенты.Код ПОДОБНО &КонтрагентКод СПЕЦСИМВОЛ ""~""");
   
ЗапросПоискаКонтрагента.УстановитьПараметр("КонтрагентКод", СтрокаКонтрагентП.КодКлиентаРасп);
----------------------------
1 RAMYL
 
17.03.11
02:20
Мне кажется, что я здесь ошибку допустил:

|    Контрагенты.Код ПОДОБНО &КонтрагентКод СПЕЦСИМВОЛ ""~""");

типы: строковые.
2 kiruha
 
17.03.11
02:26
Оператор ПОДОБНО позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.

Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:

% (процент): последовательность, содержащая любое количество произвольных символов
_ (подчеркивание): один произвольный символ
[…] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
[^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.

Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.

Например, шаблон “%АБВ[0-9][абвг]\_абв%” СПЕЦСИМВОЛ “\” означает подстроку, состоящую из последовательности символов:
буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в.

Причем перед этой последовательностью может располагаться произвольный набор символов
3 kiruha
 
17.03.11
02:27
из справки
4 RAMYL
 
17.03.11
02:39
Спасибо,но я это уже раз пять прочитал.
во-первых что значит символ "~"?

И если можешь то подскажи как правильно составить?

т.е. мне нужно в параметр передавать:

ЗапросПоискаКонтрагента.УстановитьПараметр("КонтрагентКод", СтрокаКонтрагентП.КодКлиентаРасп+"%");

?
5 kiruha
 
17.03.11
02:47
Там же написано, после СПЕЦСИМВОЛ вводишь любой удобный символ нужный чтобы выделить %, _ b и т.д.
На практике выбирают редко встречающийся

Например если в КонтрагентКод встречается _
заменяем _ на ~_  и будет искаться
Видимо там вначале кода  замена происходит
6 RAMYL
 
17.03.11
03:15
Кирюх, спасибо!
7 John83
 
17.03.11
11:32
а кто подскажет, зачем нужна тильда ("~") вне запроса?
8 butterbean
 
17.03.11
11:36
(7) метки обозначать
9 Ненавижу 1С
 
гуру
17.03.11
11:42
(7) ты еще про деструкторы в С++ расскажи тут
10 John83
 
17.03.11
11:50
(9) да просто совсем недавно в коде наткнулся на такую фигню, а в СП найти не смог...