8.х Помогите запрос

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем alp, 11 сен 2010.

  1. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Добрый день, нужно у контрагента получить Юр. адрес и почтовый.
    Код:
    "ВЫБРАТЬ
    |	Контрагенты.Ссылка,
    |	КонтактнаяИнформация.Представление КАК ПердставлениеЮрАдреса,
    |	КонтактнаяИнформация.Представление КАК ПредставлениеПочтАдреса
    |ИЗ
    |	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    |		ПО КонтактнаяИнформация.Объект = Контрагенты.Ссылка
    |ГДЕ
    |	КонтактнаяИнформация.Вид = &Вид";
    Запрос.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
    
    
    
    Как правильно построить запрос что бы он выдавал и юр адрес и почтовый адрес ?
  2. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Здраствуйте!
    Вид адреса может быть любой
    Код:
    Функция ПолучитьРезультатЗапроса_alp()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	Контрагенты.Ссылка КАК Ссылка,
    |	КонтактнаяИнформация.Представление КАК ПердставлениеЮрАдреса,
    |	КонтактнаяИнформация.Вид
    |ИЗ
    |	РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты
    |		ПО КонтактнаяИнформация.Объект = Контрагенты.Ссылка
    |ГДЕ
    |	КонтактнаяИнформация.Вид В(&Вид)
    |
    |УПОРЯДОЧИТЬ ПО
    |	Ссылка";
    //Параметры запроса
    //Параметр список 'Вид'
    ПараметрСписок_Вид = Новый СписокЗначений;
    ПараметрСписок_Вид.Добавить(Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);
    ПараметрСписок_Вид.Добавить(Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);
    Запрос.УстановитьПараметр("Вид",ПараметрСписок_Вид);// Список значений
    Результат = Запрос.Выполнить();
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_alp
    
  3. shurikvz
    Offline

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

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Или можно вот так, без левого соединения (изменю чуть запрос, который привел mialord):
    Код:
    "ВЫБРАТЬ
    КонтактнаяИнформация.Объект КАК Объект,
    КонтактнаяИнформация.Представление КАК ПердставлениеЮрАдреса,
    КонтактнаяИнформация.Вид
    ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    ГДЕ
    КонтактнаяИнформация.Вид В(&Вид)
    И КонтактнаяИнформация.Объект ССЫЛКА Справочник.Контрагенты
    </span>
    УПОРЯДОЧИТЬ ПО
    Объект
    АВТОУПОРЯДОЧИВАНИЕ"
    
    </FONT></FONT></pre>
  4. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Спасибо за помощь! , но я имел ввиду немного друго,
    нужно что бы запрос выдавал не все виды "Контактной информации" в ОДНОЙ переменной запроса, а
    в переменный , например ФактАдрес и ЮрАдрес соответствующие значение. можно ли так реализовать запросом ?
  5. mialord
    Offline

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

    Регистрация:
    31 июл 2009
    Сообщения:
    5.398
    Симпатии:
    40
    Баллы:
    54
    Можно всё
    Код:
    Функция ПолучитьРезультатЗапроса_alp()
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |	Контрагенты.Ссылка КАК Контрагент,
    |	ВложенныйЗапросФактАдрес.ФактическийАдрес,
    |	ВложенныйЗапросЮрАдрес.ЮридическийАдрес
    |ИЗ
    |	Справочник.Контрагенты КАК Контрагенты
    |		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |			КонтактнаяИнформация.Объект КАК Объект,
    |			КонтактнаяИнформация.Представление КАК ФактическийАдрес
    |		ИЗ
    |			РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |		ГДЕ
    |			КонтактнаяИнформация.Вид = &ВидФакт) КАК ВложенныйЗапросФактАдрес
    |		ПО Контрагенты.Ссылка = ВложенныйЗапросФактАдрес.Объект
    |		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    |			КонтактнаяИнформация.Объект КАК Объект,
    |			КонтактнаяИнформация.Представление КАК ЮридическийАдрес
    |		ИЗ
    |			РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
    |		ГДЕ
    |			КонтактнаяИнформация.Вид = &ВидЮр) КАК ВложенныйЗапросЮрАдрес
    |		ПО Контрагенты.Ссылка = ВложенныйЗапросЮрАдрес.Объект
    |ГДЕ
    |	Контрагенты.ЭтоГруппа = ЛОЖЬ
    |
    |УПОРЯДОЧИТЬ ПО
    |	Контрагент
    |АВТОУПОРЯДОЧИВАНИЕ";
    //Параметры запроса
    Запрос.УстановитьПараметр("ВидФакт",Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента);// Справочник ссылка: Виды контактной информации
    Запрос.УстановитьПараметр("ВидЮр",Справочники.ВидыКонтактнойИнформации.ЮрАдресКонтрагента);// Справочник ссылка: Виды контактной информации
    Результат = Запрос.Выполнить();
    
    Возврат Результат;
    
    КонецФункции //ПолучитьРезультатЗапроса_alp
    
  6. TopicStarter Overlay
    alp
    Offline

    alp Опытный в 1С

    Регистрация:
    8 янв 2009
    Сообщения:
    432
    Симпатии:
    0
    Баллы:
    26
    Спасибо!
  7. SvetaS_Love
    Offline

    SvetaS_Love

    Регистрация:
    26 фев 2016
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    Всем Добрый День! mialord, красивый у Вас запрос.
    Вопрос:
    Подскажите, а вот это обращение к запросу Установка параметров "
    Справочники.ВидыКонтактнойИнформации.ФактАдресКонтрагента", может идти не через установку параметров а в самом запросе?
    Пояснение:
    есть запрос

    Код:
     ВЫБРАТЬ
        Контрагенты.Ссылка КАК Контрагент,
        КонтактныеЛицаКонтрагентов.Ссылка КАК КонтактноеЛицо,
        ВЫРАЗИТЬ(КИ_АдресЭлектроннойПочты.Представление КАК СТРОКА(200)) КАК АдресЭлектроннойПочты,
        ВЫРАЗИТЬ(КИ_Телефон.Представление КАК СТРОКА(200)) КАК Телефон
    ИЗ
        Справочник.Контрагенты КАК Контрагенты
            ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаКонтрагентов КАК КонтактныеЛицаКонтрагентов
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КИ_АдресЭлектроннойПочты
                ПО КонтактныеЛицаКонтрагентов.Ссылка = КИ_АдресЭлектроннойПочты.Объект
                    И (КИ_АдресЭлектроннойПочты.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты))
                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КИ_Телефон
                ПО КонтактныеЛицаКонтрагентов.Ссылка = КИ_Телефон.Объект
                    И (КИ_Телефон.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.Телефон))
            ПО Контрагенты.Ссылка = КонтактныеЛицаКонтрагентов.Владелец
    
    Данный запрос вставляется в СКД, как 2-ой источник данных. Он работает. Но дублирует строки. Дублирует строки, так как у контактных лиц контрагентов может быть много разных телефонов с одним типом перечисления телефон.
    Можно ли выражение в моём запросе
    Код:
    Перечисление.ТипыКонтактнойИнформации.Телефон
    ЗАМЕНИТЬ НА
    Код:
    Справочники.ВидыКонтактнойИнформации.ТелефонМобильный
    и так по всем видам телефонов для справочника Контактные Лица Контрагентов, и адресов. Но не используя параметр через &.
  8. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.568
    Симпатии:
    717
    Баллы:
    204
    Можно. В таком случае соединение будет немного другим:

    Код:
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КИ_Телефон
    ПО КонтактныеЛицаКонтрагентов.Ссылка = КИ_Телефон.Объект
    И (КИ_Телефон.Вид = ЗНАЧЕНИЕ(Справочники.ВидыКонтактнойИнформации.ТелефонМобильный))
  9. SvetaS_Love
    Offline

    SvetaS_Love

    Регистрация:
    26 фев 2016
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    nomad_irk, не получается, "неверные параметры"
  10. SvetaS_Love
    Offline

    SvetaS_Love

    Регистрация:
    26 фев 2016
    Сообщения:
    12
    Симпатии:
    0
    Баллы:
    1
    всё разобралось....

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