Имя: Пароль:
1C
1С v8
Результат запроса
0 manti
 
15.02.13
14:27
Запрос в таком виде дает 2 строки, как сделать одну результирующую? По идее если идет объединение, то должна быть 1 строка, соединяющая в себе итог от 2-х запросов?

ВЫБРАТЬ
   Вызов.Ссылка,
   Вызов.Номер1,
   Вызов.Номер2,
   Вызов.CallerID2,
   "%" + Вызов.CallerID1 + "%" КАК CallerID1
ПОМЕСТИТЬ ДокументВызов
ИЗ
   Документ.Вызов КАК Вызов
ГДЕ
   Вызов.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   "%" + (ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(15))) + "%" КАК Контакт,
   КонтактнаяИнформация.Объект
ПОМЕСТИТЬ РегистрКонтакты
ИЗ
   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
   КонтактнаяИнформация.Тип = &Тип
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДокументВызов.Номер2,
   ДокументВызов.CallerID1,
   ДокументВызов.CallerID2,
   РегистрКонтакты.Объект,
   РегистрКонтакты.Контакт,
   0 КАК Номер1,
   0 КАК Пользователь,
   0 КАК ВнутреннийНомер,
   0 КАК Ссылка
ИЗ
   ДокументВызов КАК ДокументВызов
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрКонтакты КАК РегистрКонтакты
       ПО (ДокументВызов.CallerID1 ПОДОБНО РегистрКонтакты.Контакт
               ИЛИ РегистрКонтакты.Контакт ПОДОБНО ДокументВызов.CallerID1)

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   Вызов.Номер2,
   0,
   0,
   0,
   0,
   Вызов.Номер1,
   Линии.Пользователь,
   Линии.ВнутреннийНомер,
   Вызов.Ссылка
ИЗ
   Справочник.Линии КАК Линии
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Вызов КАК Вызов
       ПО Линии.ВнутреннийНомер = Вызов.Номер1
ГДЕ
   Вызов.Ссылка = &Ссылка
1 Maxus43
 
15.02.13
14:28
оборачивай во вложеный запрос и группируй
2 Rie
 
15.02.13
14:28
(0) Неправильно понимаешь, что такое объединение.
3 Мыш
 
15.02.13
14:31
(0) Объединение как раз таки складывает строки. То что ты хочешь называется группировка.
4 manti
 
15.02.13
15:30
(3) понятно, переделал так:
ВЫБРАТЬ
   Вызов.Ссылка,
   Вызов.Номер1,
   Вызов.Номер2,
   Вызов.CallerID2,
   "%" + Вызов.CallerID1 + "%" КАК CallerID1
ПОМЕСТИТЬ ДокументВызов
ИЗ
   Документ.Вызов КАК Вызов
ГДЕ
   Вызов.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   "%" + (ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(15))) + "%" КАК Контакт,
   КонтактнаяИнформация.Объект
ПОМЕСТИТЬ РегистрКонтакты
ИЗ
   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
   КонтактнаяИнформация.Тип = &Тип
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Линии.Пользователь,
   Линии.ВнутреннийНомер,
   Вызов.Номер1,
   Вызов.Ссылка
ПОМЕСТИТЬ Ном
ИЗ
   Справочник.Линии КАК Линии
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.Вызов КАК Вызов
       ПО Линии.ВнутреннийНомер = Вызов.Номер1
ГДЕ
   Вызов.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ДокументВызов.Номер2,
   ДокументВызов.CallerID1,
   ДокументВызов.CallerID2,
   РегистрКонтакты.Объект,
   РегистрКонтакты.Контакт,
   Ном.Пользователь,
   Ном.Номер1
ИЗ
   ДокументВызов КАК ДокументВызов
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрКонтакты КАК РегистрКонтакты
       ПО (ДокументВызов.CallerID1 ПОДОБНО РегистрКонтакты.Контакт
               ИЛИ РегистрКонтакты.Контакт ПОДОБНО ДокументВызов.CallerID1),
   Ном КАК Ном

Через просмотр временных таблиц смотрю результаты во всех 3-х ВТ. В первых двух есть результаты, в 3 - нет.
В итоге запрос ничего не возвращает.
Поучается что если хотя бы в одной ВТ не будет результата, то запрос ничего не возвратит?
Нужно, чтобы именно запрос работал при любых результатах в ВТ)
5 Rie
 
15.02.13
15:36
(4) ЛЕВОЕ СОЕДИНЕНИЕ используй вместо внутреннего и декартова.
6 manti
 
15.02.13
15:45
(5) ВЫБРАТЬ
   Линии.Пользователь,
   Линии.ВнутреннийНомер,
   Вызов.Номер1,
   Вызов.Ссылка
ПОМЕСТИТЬ Ном
ИЗ
   Справочник.Линии КАК Линии
       правое СОЕДИНЕНИЕ Документ.Вызов КАК Вызов
       ПО Линии.ВнутреннийНомер = Вызов.Номер1
ГДЕ
   Вызов.Ссылка = &Ссылка
;
вот так помогло) спасибо
Программист всегда исправляет последнюю ошибку.