Имя: Пароль:
1C
 
СПЕЦСИМВОЛ в построителе запроса
0 TormozIT
 
04.07.24
08:27
Есть такая штука СПЕЦСИМВОЛ ( https://its.1c.ru/db/v8std/content/726/hdoc ) в языке запросов для вида сравнения ПОДОБНО. Как ее задействовать при задании отбора в построителе запроса/отчета?
1 Ненавижу 1С
 
04.07.24
09:03
Для экранирования спецсимволов в конфигурациях с Библиотекой стандартных подсистем (БСП) рекомендуется вызывать процедуру ОбщегоНазначения.СформироватьСтрокуДляПоискаВЗапросе.
2 TormozIT
 
04.07.24
09:10
(1) Это не работает в построителе, т.к. он не добавляет ключевое слово СПЕЦСИМВОЛ. Вот тест

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Стр", Новый ОписаниеТипов("Строка"));
ТЗ.Добавить().Стр = "Чапи";
ТЗ.Добавить().Стр = "_";
ПС = Новый ПостроительЗапроса;
ПС.ИсточникДанных = Новый ОписаниеИсточникаДанных(ТЗ);
ЭлементОтбора = ПС.Отбор.Добавить("Стр");
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ВидСравнения = ВидСравнения.Содержит;
ЭлементОтбора.Значение = "~_"; // Внимание	 
ПодходящиеСлова = ПС.Результат.Выгрузить();
Сообщить(ПодходящиеСлова.Количество());
3 Ненавижу 1С
 
04.07.24
09:32
(2) для конкретных символов можно сделать так:

ЭлементОтбора.Значение = "[_]";
4 Гипервизор
 
04.07.24
09:34
(3) Интересно. Почему это работает?
5 Ненавижу 1С
 
04.07.24
09:37
(4) ну я понимаю что оно делает примерно так (псведокод):

ПОДОБНО "%"+ЭлементОтбора.Значение+"%"
6 TormozIT
 
04.07.24
09:44
(3) Спасибо. Для моего случая подойдет. Но если придется искать "[", то опять получаем ту же проблему.
7 Ненавижу 1С
 
04.07.24
09:50
(6)
открываемая ЭлементОтбора.Значение = "[[]";
закрываемая ЭлементОтбора.Значение = "]";