Имя: Пароль:
1C
 
Проблема с функцией ПОДОБНО в запросе?
,
0 Bobroff
 
24.07.06
16:44
Есть вот такая функция:

Запрос = Новый Запрос("ВЫБРАТЬ
   |    Врачи.Ссылка КАК Ссылка,
   |    Врачи.Код КАК Номер,
   |    Врачи.Наименование КАК ФИО,
   |    Врачи.ТекущееМестоРаботы.Наименование КАК МестоРаботы,
   |    Врачи.ТекущееОтделение.Наименование КАК Отделение,
   |    Врачи.ТекущаяДолжность.Наименование КАК Должность
   |ИЗ
   |    Справочник.Врачи КАК Врачи
   |ГДЕ
   |   ФИО ПОДОБНО ""%"" + "&ПарамФИО + ""%""
   |   И МестоРаботы ПОДОБНО ""%"" + &ПарамМестоРаботы + ""%""
   |   И Отделение ПОДОБНО ""%"" + &ПарамОтделение + ""%""
   |   И Должность ПОДОБНО ""%"" + &ПарамДолжность + ""%""
   |УПОРЯДОЧИТЬ ПО
   |    ФИО");
   
Запрос.УстановитьПараметр("ПарамФИО",xxx);
Запрос.УстановитьПараметр("ПарамМестоРаботы",xxx);
Запрос.УстановитьПараметр("ПарамОтделение",xxx);
Запрос.УстановитьПараметр("ПарамДолжность",xxx);
Выборка = Запрос.Выполнить().Выбрать();

При начале отладке выдаёт такую ошибку: {Обработка.ПодборНоменклатурыИВрача.Форма.ОсновнаяФорма(25,2)}: Ожидается ключевое слово 'КонецПроцедуры' ('EndProcedure')
   <<?>>|   И МестоРаботы ПОДОБНО ""%"" + &ПарамМестоРаботы + ""%""

В чём проблема?
1 Дяпти
 
24.07.06
16:45
кажись так надо:
МестоРаботы ПОДОБНО &Парам

Запрос.УстановитьПараметр("МестоРаботы","%" + ххх + "%");
2 КонецЦикла
 
24.07.06
16:46
(0) нафигачил неправильно кавычки
3 Bobroff
 
24.07.06
16:47
(2) кавычки уже убрал, но проблема всёё равно осталась
4 КонецЦикла
 
24.07.06
16:50
(3) С собой нету, смотир типовые
5 wPa
 
24.07.06
16:50
ФИО ПОДОБНО ""%""" + &ПарамФИО + """%""
хотел сказать
6 wPa
 
24.07.06
16:57
не! ))
ПОДОБНО  ""%" + &ПарамФИО + "%""
7 John Connor
 
24.07.06
16:59
И МестоРаботы ПОДОБНО &ПарамМестоРаботы

Запрос.УстановитьПараметр("МестоРаботы","%" + ххх + "%");
8 John Connor
 
24.07.06
17:00
(7) Запрос.УстановитьПараметр("ПарамМестоРаботы","%" + ххх + "%");
Так правильно.
9 wPa
 
24.07.06
17:01
(8) Там кавкавычки должны быть в тексте запроса у оператора ПОДОБНО ....
10 Salvador Limones
 
24.07.06
17:02
(9) Какая нафиг разница?
11 wPa
 
24.07.06
17:04
(10) ну спробуй еппсель - узнаешь какая )
" выбрать трам тамрам ПОДОБНО "%Ежиков%"  всякие группировки"
должен быть текст запроса
12 John Connor
 
24.07.06
17:05
(0) Запусти обработку Консоль запросов и посмотри.
13 Bobroff
 
24.07.06
17:08
Так как правильно?
14 Salvador Limones
 
24.07.06
17:08
(11) Мдя... Болеешь?
15 Salvador Limones
 
24.07.06
17:08
(13) 100% рабочий пример - http://itland.ru/forum/index.php?showtopic=4699!
16 John Connor
 
24.07.06
17:09
(11) Если через параметр передаем, то кавычки не нужны. Ибо в параметр передаем строку!
(13) См. (7)(8)(12)
17 Salvador Limones
 
24.07.06
17:09
(16) Про (1) забыл. :-)
18 dimoff
 
24.07.06
17:10
В (1) правильный ответ, чего флуд разводить
19 wPa
 
24.07.06
17:11
(16)  ибо! аминь!
20 John Connor
 
24.07.06
17:11
(18) с метафизической точки зрения в (1) правильно. :)
(зы. только имя параметра неверно указано)
21 Bobroff
 
24.07.06
17:14
Вообщем исправли на это:

Запрос = Новый Запрос("ВЫБРАТЬ
   |    Врачи.Ссылка КАК Ссылка,
   |    Врачи.Код КАК Номер,
   |    Врачи.Наименование КАК ФИО,
   |    Врачи.ТекущееМестоРаботы.Наименование КАК МестоРаботы,
   |    Врачи.ТекущееОтделение.Наименование КАК Отделение,
   |    Врачи.ТекущаяДолжность.Наименование КАК Должность
   |ИЗ
   |    Справочник.Врачи КАК Врачи
   |ГДЕ
   |   ФИО ПОДОБНО &ПарамФИО
   |   И МестоРаботы ПОДОБНО &ПарамМестоРаботы
   |   И Отделение ПОДОБНО &ПарамОтделение
   |   И Должность ПОДОБНО &ПарамДолжность
   |УПОРЯДОЧИТЬ ПО
   |    ФИО");
   
Запрос.УстановитьПараметр("ПарамФИО","%");
Запрос.УстановитьПараметр("ПарамМестоРаботы","%");
Запрос.УстановитьПараметр("ПарамОтделение","%");
Запрос.УстановитьПараметр("ПарамДолжность","%");
Выборка = Запрос.Выполнить().Выбрать();

При работе выдаёт ошибку: {Обработка.ПодборНоменклатурыИВрача.Форма.ОсновнаяФорма(35)}: Ошибка при вызове метода контекста (Выполнить): {(11, 4)}: Поле не найдено "ФИО"
<<?>>ФИО ПОДОБНО &ПарамФИО
Выборка = Запрос.Выполнить().Выбрать();
по причине:
{(11, 4)}: Поле не найдено "ФИО"
<<?>>ФИО ПОДОБНО &ПарамФИО
22 Neco
 
24.07.06
17:15

|Врачи.ФИО ПОДОБНО &ПарамФИО
23 Bobroff
 
24.07.06
17:17
(22) может Врачи.Наименование ПОДОБНО &ПарамФИО   ?
24 wPa
 
24.07.06
17:19
(23) точно!
25 Bobroff
 
24.07.06
17:22
В итоге всё выглядит вот так и отлично рабтает:

Запрос = Новый Запрос("ВЫБРАТЬ
   |    Врачи.Ссылка КАК Ссылка,
   |    Врачи.Код КАК Номер,
   |    Врачи.Наименование КАК ФИО,
   |    Врачи.ТекущееМестоРаботы.Наименование КАК МестоРаботы,
   |    Врачи.ТекущееОтделение.Наименование КАК Отделение,
   |    Врачи.ТекущаяДолжность.Наименование КАК Должность
   |ИЗ
   |    Справочник.Врачи КАК Врачи
   |ГДЕ
   |   Врачи.Наименование ПОДОБНО &ПарамФИО
   |   И Врачи.ТекущееМестоРаботы.Наименование ПОДОБНО &ПарамМестоРаботы
   |   И Врачи.ТекущееОтделение.Наименование ПОДОБНО &ПарамОтделение
   |   И Врачи.ТекущаяДолжность.Наименование ПОДОБНО &ПарамДолжность
   |УПОРЯДОЧИТЬ ПО
   |    ФИО");
   
Запрос.УстановитьПараметр("ПарамФИО","%");
Запрос.УстановитьПараметр("ПарамМестоРаботы","%");
Запрос.УстановитьПараметр("ПарамОтделение","%");
Запрос.УстановитьПараметр("ПарамДолжность","%");
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
   Сообщить(Выборка.ФИО);
КонецЦикла;

Всем БОЛЬШОЕ спасибо...
26 Salvador Limones
 
24.07.06
17:24
Запрос.УстановитьПараметр("ПарамФИО","%"); - это работает? Не верю.
27 Bobroff
 
24.07.06
17:25
(26) работает!!! По идеи, как строка передаёться
28 Bobroff
 
24.07.06
17:26
(26) кстати вот так: Запрос.УстановитьПараметр("ПарамФИО",%); не работает
29 Salvador Limones
 
24.07.06
17:29
(27) То, что ошибки не выдает, не значит, что работает.
С какой строкой ты сравниваешь?
30 Bobroff
 
24.07.06
17:31
(29) работает отлично, проверил уже сам... подставлял значения... Сравниваю со строкой типа: Иванов Иван Иванович, Петров Пётр Петрович, Сидоров Василий Петрович и т.п.
31 Salvador Limones
 
24.07.06
17:32
(30) Тогда покажи, где ты эти строки передаешь в запрос.
32 Bobroff
 
24.07.06
17:33
(30) например: Запрос.УстановитьПараметр("ПарамФИО","%" + "иванов" + "%"); находит из этого списка только:Иванов Иван Иванович
33 Salvador Limones
 
24.07.06
17:36
(32) Хмм.. Вот только в (25) я этого не заметил.
34 Bobroff
 
24.07.06
17:38
(33) Вот так он тоже работает:
Запрос.УстановитьПараметр("ПарамФИО","%");
Запрос.УстановитьПараметр("ПарамМестоРаботы","%");
Запрос.УстановитьПараметр("ПарамОтделение","%");
Запрос.УстановитьПараметр("ПарамДолжность","%");

Просто выводит всех подряд....