Имя: Пароль:
1C
1С v8
Функция Подобно в запросе
,
0 pavelul73
 
07.03.12
12:29
Добрый день, есть справочник города, в котором занесены Города в виде "Москва","Орел", и т.д. Справочник обычный, наименование и код.
Есть обработка, в которой есть поле строка, в которую пользователь вводит любой адрес вида "125445, Москва, ул. Беломорская, 40" или что-то наподобие. Так вот нужно чтобы когда пользователь ввел адрес и нажал кнопку выполнить, обработка нашла город в справочнике из этой строки. Как сделать без запроса, я разобрался, но нужно сделать в запросе, помогите, пожалуйста. Пишу следующий запрос:
Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |    Города.Ссылка,
       |    Города.Наименование
       |ИЗ
       |    Справочник.Города КАК Города
       |ГДЕ
       | Города.Наименование  ПОДОБНО &Наименование"  ;
   Запрос.УстановитьПараметр("Наименование","%"+Строчка+"%");
   Выборка = Запрос.Выполнить().Выбрать();
               Пока Выборка.Следующий()Цикл
           Сообщить(Выборка.Наименование);
       КонецЦикла;
Где строчка, это та строка, которую вводит пользователь.
Этот запрос почему-то не работает
1 Rie
 
07.03.12
12:31
(0) А в начале/конце Строчка пробелы, случайно, не затесались?
2 pavelul73
 
07.03.12
12:33
Нет, строчка без пробелов.
Но вот если сделать наоборот, т.е справочник будет содержать адреса вида "125445, Москва, ул. Беломорская, 40", а пользователь вводит в строке например "Москва", то обработка находит адрес в справочнике.
3 Живой Ископаемый
 
07.03.12
12:35
2(1) при чем тут это?

"Москва" не подобна "%125445, Москва, ул. Беломорская, 40%" хоть укакайся
4 Rie
 
07.03.12
12:36
(3) Да, я не сообразил, что он не в ту сторону проверяет.
5 Wobland
 
07.03.12
12:36
делить строку на слова и отдавать список запросу?
6 Живой Ископаемый
 
07.03.12
12:37
Если мне не изменяет память, и если в качестве сервера СУБД не используется ДБ2, возможно сделать наоборот:
&Наименование  ПОДОБНО '%'+Города.Наименование

но может я что-то путаю.. нужно пробовать
7 pavelul73
 
07.03.12
12:39
Строку делил на слова и выводил без запроса  - так работает.Это просто.
Но как это можно сделать именно в одном запросе? Может кто-то сталкивался с такими задачками?
8 hhhh
 
07.03.12
12:41
(7) ну а типовым КЛадр не пытались пользоваться? Нафига вам еще отдельный справочник, Города?
9 Живой Ископаемый
 
07.03.12
12:41
2(7) Попробуй (6), но лучше на это не закладываться, так как Подобно вообще работает по разному в зависимости от сервера БД
10 Wobland
 
07.03.12
12:42
(7) едва ль. представь, что у тебя есть города "45, Мос" и "оморская, 4", и подумай, что ты будешь делать на месте запроса
11 Rovan
 
гуру
07.03.12
12:45
(0) обычно наборот делают - за ввод адреса отвечает спецю форма с полями:
индекс, обл, район, город и т.п.
котороаяв зависимости от выбранных значение предлагает в других полях список из КЛАДРА
12 pavelul73
 
07.03.12
12:47
Про Кладр я знаю, но попросили сделать так. Если делать условие наоборот, то обработка выводить город из справочника.
Всем огромное спасибо!!!
13 Живой Ископаемый
 
07.03.12
12:54
2(12) то есть работает как в (6)? а база в каком формате?