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

Тема в разделе "1C и всё что с ней связано", создана пользователем OlegKO, 18 июн 2008.

  1. OlegKO

    OlegKO Гость

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

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    OlegKO, так ты ведь сам передаешь параметр
    Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );пройдись отладчиком и погляди какие он там значения принимает
     
  3. OlegKO

    OlegKO Гость

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

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

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

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    ты умеешь отладчиком пользоваться?
    Если да погляди чему равно Перечисления.ТипыКонтактнойИнформации.Телефон и Справочники.ВидыКонтактнойИнформации.НайтиПоНаименованию("Контактный телефон кандидата") Вот это и есть параметры которые ты указываешь для отбора
     
  5. OlegKO

    OlegKO Гость

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

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

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

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

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


    впоследствии
     
  6. KiR

    KiR НЕ шибка опытный програмер)
    1C Team

    Регистрация:
    11 сен 2007
    Сообщения:
    1.581
    Симпатии:
    0
    Смотри. твое условие where not Emty в вышеописанном запросе выглядит так:
    ГДЕ
    | КонтактнаяИнформация.Тип = &Телефон
    | И КонтактнаяИнформация.Вид = &Кандидат";

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

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

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Для пустого поля:
    КонтактнаяИнформация.Тип = Неопределено;
     
  8. OlegKO

    OlegKO Гость

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

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

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


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

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

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    это и есть принимаемое значение
    Потому, что
    Код (Text):
    |ГДЕ
    | КонтактнаяИнформация.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон
    а Перечисления.ТипыКонтактнойИнформации.Телефон <> Неопределено

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


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

    OlegKO Гость

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

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

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

    идентичной

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

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

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Код (Text):
    Запрос.УстановитьПараметр("Телефон",Перечисления.ТипыКонтактнойИнформации.Телефон );
    параметр &Телефон принимает значение Перечисления.ТипыКонтактнойИнформации.Телефон зачем тут отладчик?
    нет, не является, так писать нельзя, следовательно...
     
  12. OlegKO

    OlegKO Гость

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

    Zab Well-Known Member
    1C Team

    Регистрация:
    7 авг 2006
    Сообщения:
    583
    Симпатии:
    0
    Правильно говорили, представление этого значения так и будет выглядеть в отладчике.
    У тебя есть регистр "КонтактнаяИнформация". В нем есть реквизит "Тип" (этот реквизит имеет тип Перечисления.ТипыКонтактнойИнформации), и "Вид" (типа ссылка на элемент Справочники.ВидыКонтактнойИнформации). Твой запрос выбирает все, записи, где в поле "Тип" записано значение "Телефон" перечисления "ТипыКонтактнойИнформации" и в поле "Вид" - ссылка на элемент справочника "ВидыКонтактнойИнформации" с наименованием "Контактный телефон кандидата".
    И все. Он не выбирает "те где внесено что-то в поле телефон".
    Для того, чтобы выбрать "те где внесено что-то в поле телефон" ты должен проверить именно это условие.
     
Загрузка...

Поделиться этой страницей