8.х Запрос Контрагенты и контактная информация

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Sf_by_YaphetS, 7 апр 2014.

  1. TopicStarter Overlay
    Sf_by_YaphetS
    Offline

    Sf_by_YaphetS Опытный в 1С

    Регистрация:
    8 авг 2012
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    Подскажите пожалуста как составить правильно запрос, чтобы если при выборе контрагентов за 1 период и контактной информации нет, то в результат запроса хотя бы попадал контрагент с пустым полем телефона, а так как там нет телефон он просто не выводит его в результат запроса

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


    Может какой подзапрос нужен, или условия
  2. Draco
    Online

    Draco Модераторы Команда форума Модератор

    Регистрация:
    28 окт 2009
    Сообщения:
    13.632
    Симпатии:
    946
    Баллы:
    204
    Не совсем понял задачу. Понял так что за один период по определенным условиям выводить контрагента с пустым телефоном, а т.к телефон пустой, то не выводить
  3. Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Попробуйте левое соединение заменить на полное соединение
  4. shurikvz
    Online

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    не надо полное.

    на ПРАВОЕ, если оставить текст запроса так как он сейчас.
    либо оставить ЛЕВОЕ и поменять таблицы местами.
    без разницы.
  5. TopicStarter Overlay
    Sf_by_YaphetS
    Offline

    Sf_by_YaphetS Опытный в 1С

    Регистрация:
    8 авг 2012
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26
    Существует Все контрагенты с датой регистрации, нужно выполнить запрос чтобы все контрагенты в за данный период выпали в выборку, но запрос отрезает тех у кого нет контактной информации о телефоне, вообще можно выполнить запрос в регистр сведений контактной информации по каждой строке в цикле, но это тупо

    как сделать так чтобы в выборке было

    контрагент | телефон
    контрагент | пусто (если его нет) в данно запросе он не выводится ибо нет о контагенте контактной инфы
    --- Объединение сообщений, 7 апр 2014 ---
    я пробовал Полное Левое Правое и Внешнее соединение, но результата как такого не дало, может использовать какой-нибудь вложенный запрос? какой нибудь выбор? объединение? ибо через цикл очень неправильно и занимает много времени для формирования, я не очень хороший программист((
  6. Svb
    Offline

    Svb Опытный в 1С Команда форума

    Регистрация:
    12 янв 2011
    Сообщения:
    980
    Симпатии:
    19
    Баллы:
    29
    Ваше условие
    Код:
    И Рег.Тип = &Тип
    кроме отбора по типу отсеивает и контрагентов, у которых нет соответствующей контактной информации. Условие можно написать так
    Код:
    Рег.Тип = &Тип    ИЛИ КонтактнаяИнформация.Тип ЕСТЬ NULL
    Ну и, как написали вам выше, должно быть Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ Регистр сведений.
    Вот пример для УПП без условия по периоду регистрации:
    Код:
    ВЫБРАТЬ
        Контрагенты.Ссылка,
        КонтактнаяИнформация.Представление
    ИЗ
        Справочник.Контрагенты КАК Контрагенты
            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
            ПО (КонтактнаяИнформация.Объект = Контрагенты.Ссылка)
    ГДЕ
        (КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон)
                ИЛИ КонтактнаяИнформация.Тип ЕСТЬ NULL )
  7. TopicStarter Overlay
    Sf_by_YaphetS
    Offline

    Sf_by_YaphetS Опытный в 1С

    Регистрация:
    8 авг 2012
    Сообщения:
    64
    Симпатии:
    0
    Баллы:
    26

    Спасибо большое, УРА, помогло, а то уже хотел изобретать велосипед

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