Запрос получается но принцип хотелось бы прояснить

  • Автор темы OlegKO
  • Дата начала
O

OlegKO

#1
Доброго дня!
Итак, следуя совету Уважаемого Zap я решил спросить уже сделав пример...
вот он
Запрос.Текст= "ВЫБРАТЬ
| ФизическиеЛица.Ссылка,
| КонтактнаяИнформация.Представление
|ИЗ
| РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
| ПО КонтактнаяИнформация.Объект = ФизическиеЛица.Ссылка
|ГДЕ
| КонтактнаяИнформация.Тип = &Телефон
| И КонтактнаяИнформация.Вид = &Кандидат";
Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );
Запрос.УстановитьПараметр("Кандидат",Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Контактный телефон кандидата"));

получилось то что нужно выбирает те где внесено что-то в поле телефон, как это проиходит??, -- я не указывал ни условия что типа not Empty (телефон) ни другое....:rolleyes:
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#2
OlegKO, так ты ведь сам передаешь параметр
Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );пройдись отладчиком и погляди какие он там значения принимает
 
O

OlegKO

#3
он принимает пусто или не пусто .. в случае введённого значения любого в телефон ( +, -, ааа) вывод происходит..

принцип фильтровки хочу понять...

твой ответ я не понял...сорь
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#4
ты умеешь отладчиком пользоваться?
Если да погляди чему равно Перечисления.ТипыКонтактнойИнформации.Телефон и Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Контактный телефон кандидата") Вот это и есть параметры которые ты указываешь для отбора
 
O

OlegKO

#5
Перечисления.ТипыКонтактнойИнформации.Телефон Телефон ПеречислениеСсылка.ТипыКонтактнойИнформации

это три колонки табла... что ты имел ввиду я так и не понял,

просто ты бы прояснил , - неужель я уже не смотрел табл

я хочу увидеть значения Телефона для КонтактныйтелефонКандидата кот реально имеют место в БД именно по не пустым делает отбор как делает... именно реальные значения увидеть не могу точнее принцип...

в реальном селекте пишем where not Emty(Перечисления.ТипыКонтактнойИнформации.Телефон ) тут ясно...
здесь точно также как видим, но не явно задаётся "not Empty" или ещё что-либо, которым и нужно управлять...


впоследствии
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#6
Смотри. твое условие where not Emty в вышеописанном запросе выглядит так:
ГДЕ
| КонтактнаяИнформация.Тип = &Телефон
| И КонтактнаяИнформация.Вид = &Кандидат";

А какое значение принимают эти переменные - ты передаешь в параметрах тут
Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );
Запрос.УстановитьПараметр("Кандидат",Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Контактный телефон кандидата"));

А отследить какие же они значения принимают в действительности можно пройдять по ним отладчиком.
 

Zab

Well-known member
07.08.2006
583
0
#7
Для пустого поля:
КонтактнаяИнформация.Тип = Неопределено;
 
O

OlegKO

#8
Извини я не понял...
В КонтактнаяИнформация.Тип = &Телефон
подставляется
УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );

в обычном запросе это пишется
where поле1 = "1"

не знаю почему 1С старается уйти от традиций или стандратов, - может так лучше..
как осуществляется перебор значений не ясно
так и в табло значение вышеуказанного перечисления = телефон ( без кавычек - именно как я привёл выше - через пробел )
как смотреть менющееся значение, текущее значение..... вообщем не ясна работа запроса (


я не видел твой ответ Zap...

как тогда всё-же просмотреть принимаемые значения "Перечисления.ТипыКонтактнойИнформации.Телефон"
почему на выводит в том числе и те которые "неопределено"?
 

Zab

Well-known member
07.08.2006
583
0
#9
как тогда всё-же просмотреть принимаемые значения "Перечисления.ТипыКонтактнойИнформации.Телефон"
это и есть принимаемое значение
почему на выводит в том числе и те которые "неопределено"?
Потому, что
Код:
|ГДЕ
| КонтактнаяИнформация.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон
а Перечисления.ТипыКонтактнойИнформации.Телефон <> Неопределено

PS: Просьба, в следующий раз, перечитай свой пост, перед тем, как отправлять.
PPS:
я не видел твой ответ Zap...
мой ник Zab
почему на выводит в том числе и те которые "неопределено"?
я отвечал, предположив, что ты спросил "почему НЕ выводит "


PPPS: буду также благодарен, если ты не поленишься использовать знаки препинания.
 
O

OlegKO

#10
Спасибо, Zab... , - я тебе тоже благодарен...

как просмотреть значения принимаемые параметром в отладчике?

Итак, является ли конструкция вида:
ГДЕ
| КонтактнаяИнформация.Тип = &Телефон;
Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );

идентичной

Перечисления.ТипыКонтактнойИнформации.Телефон <> Неопределено?

...можно тогда просто так писать, следовательно...
 

Zab

Well-known member
07.08.2006
583
0
#11
как просмотреть значения принимаемые параметром в отладчике?
Код:
Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );
параметр &Телефон принимает значение Перечисления.ТипыКонтактнойИнформации.Телефон зачем тут отладчик?
Итак, является ли конструкция вида:
ГДЕ
| КонтактнаяИнформация.Тип = &Телефон;
Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );

идентичной

Перечисления.ТипыКонтактнойИнформации.Телефон <> Неопределено?
нет, не является, так писать нельзя, следовательно...
 
O

OlegKO

#12
:lol:
Просто, мне советовали тут ранее, что я могу просмотреть все значения принимаемые данным перечислением, а именно:
Перечисления.ТипыКонтактнойИнформации.Телефон в отладчике... ( в отладчике значение = телефон )
для некоторых физических лиц это поле имеет значение, - строку, отличную от неопределено...
я понимаю, что спрашиваю простой, где-то совсем элементарный вопрос, но я не понял принцип, - каким образом подразумевается тогда <Неопределено>...
для меня логичным было бы так: Перечисления.ТипыКонтактнойИнформации.Телефон <> Неопределено.
Спасибо, Zap, что не игнорируешь мои, пока непрофессиональные, вопросы... Удачи!
 

Zab

Well-known member
07.08.2006
583
0
#13
Перечисления.ТипыКонтактнойИнформации.Телефон в отладчике... ( в отладчике значение = телефон )
Правильно говорили, представление этого значения так и будет выглядеть в отладчике.
У тебя есть регистр "КонтактнаяИнформация". В нем есть реквизит "Тип" (этот реквизит имеет тип Перечисления.ТипыКонтактнойИнформации), и "Вид" (типа ссылка на элемент Справочники.ВидыКонтактнойИнформации). Твой запрос выбирает все, записи, где в поле "Тип" записано значение "Телефон" перечисления "ТипыКонтактнойИнформации" и в поле "Вид" - ссылка на элемент справочника "ВидыКонтактнойИнформации" с наименованием "Контактный телефон кандидата".
И все. Он не выбирает "те где внесено что-то в поле телефон".
Для того, чтобы выбрать "те где внесено что-то в поле телефон" ты должен проверить именно это условие.