Имя: Пароль:
1C
1С v8
Два запроса в один
0 Mr_Enot
 
30.03.17
21:44
Здравствуйте, есть два одинаковых запроса

ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Вид,
    КонтактнаяИнформация.Представление КАК ТелефонК
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Объект = &Объект
    И КонтактнаяИнформация.Вид = &Вид



а как их в один объеденить, что бы телефоны разные брались из регистра?
1 jsmith82
 
30.03.17
21:49
Тип
2 trooba
 
30.03.17
21:50
(0)    КонтактнаяИнформация.Вид = &Вид или    КонтактнаяИнформация.Вид = &Вид1
3 Zhuravlik
 
30.03.17
21:55
(0) Надо выбрать объект, и к нему левым соединением добавлять необходимую КИ. Для каждого значения КИ добавляем таблицу среза по регистру сведений, с отборами в параметрах виртуальной таблицы.
4 Zhuravlik
 
30.03.17
22:04
Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Контрагенты.Ссылка
        |ПОМЕСТИТЬ Контрагенты
        |ИЗ
        |    Справочник.Контрагенты КАК Контрагенты
        |ГДЕ
        |    Контрагенты.Ссылка В(&МассивКонтрагентов)
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    Контрагенты.Ссылка КАК Контрагент,
        |    ЕСТЬNULL(КИ_РабочийТелефонКонтрагента.Представление, """") КАК РабочийТелефонКонтрагента,
        |    ЕСТЬNULL(КИ_МобильныйТелефонКонтрагента.Представление, """") КАК МобильныйТелефонКонтрагента
        |ИЗ
        |    Контрагенты КАК Контрагенты
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КИ_РабочийТелефонКонтрагента
        |        ПО Контрагенты.Ссылка = КИ_РабочийТелефонКонтрагента.Объект
        |            И (КИ_РабочийТелефонКонтрагента.Тип = &ТипКИТелефонКонтрагента)
        |            И (КИ_РабочийТелефонКонтрагента.Вид = &ВидКИРабочийТелефонКонтрагента)
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КИ_МобильныйТелефонКонтрагента
        |        ПО Контрагенты.Ссылка = КИ_МобильныйТелефонКонтрагента.Объект
        |            И (КИ_МобильныйТелефонКонтрагента.Тип = &ТипКИТелефонКонтрагента)
        |            И (КИ_МобильныйТелефонКонтрагента.Вид = &ВидКИМобильныйТелефонКонтрагента)";
    
    Запрос.УстановитьПараметр("ВидКИМобильныйТелефонКонтрагента", ВидКИМобильныйТелефонКонтрагента);
    Запрос.УстановитьПараметр("ВидКИРабочийТелефонКонтрагента", ВидКИРабочийТелефонКонтрагента);
    Запрос.УстановитьПараметр("МассивКонтрагентов", МассивКонтрагентов);
    Запрос.УстановитьПараметр("ТипКИТелефонКонтрагента", ТипКИТелефонКонтрагента);


как-то так...
5 Mr_Enot
 
30.03.17
22:11
(4) Спасибо
6 Mr_Enot
 
30.03.17
22:16
(4)А если надо достать телефон из справочника физлица и справочника контрагенты,двух разных людей тогда ОБЪЕДЕНИТЬ ВСЕ?
7 Zhuravlik
 
30.03.17
22:29
(6) Помести их в первую временную таблицу, только обзови ее как-нить иначе, например "ОбъектыКИ". Это ведь уже не будут просто контрагенты, раз мы туда еще что-то добавляем. Логично дать название по контексту. Вот там - да, с помощью объединения надо получить таблицу ссылок. А остальное - все то-же.
8 Карст
 
30.03.17
22:52
(7) а если объектов нет ? ))))))