Имя: Пароль:
1C
1С v8
Контакты организации запросом
,
0 NordMad
 
18.12.15
14:16
и сново вопросы по запросам. Нужно вытащить некоторые контакты организации, ничего лучше не придумал как такой запрос:
ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Тип = &Тип
    И КонтактнаяИнформация.Вид = &Вид
    И КонтактнаяИнформация.Объект = &Объект
       ОБЪЕДИНИТЬ ВСЕ

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

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

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

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

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

и всё бы хорошо, только вот когда попадается организация в которой какие то данные не заполнены, соответсвнно он их не выводит и очередность данных сбивается. как сделать так чтобы не зависимо от заполнения информации у меня выводилось фиксировано все 4 записи. а пустые заменять на какой нить "-". прововал что то типа ЕстьNULL(КонтактнаяИнформация.Представление,"") - не помогает
1 Лефмихалыч
 
18.12.15
14:18
собрать временную таблицу с этими &ТИп b &Вид и содеинить с ней регистр левым соединением
2 NordMad
 
18.12.15
14:21
как это будет выглядеть?! со временными не очень опыт есть
3 NordMad
 
18.12.15
14:22
(1) то есть просто вариант с заменой пустых значений какой то строкой - не вариант в таком запросе?!
4 zak555
 
18.12.15
14:23
(0) используй функции общих модулей
5 NordMad
 
18.12.15
14:25
(4) вообще вместо запроса? а что запросом никак? уже же тянет что надо. осталось только структурировать...
6 Лефмихалыч
 
18.12.15
14:25
(2)

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



легче стало?
7 zak555
 
18.12.15
14:26
(5) там ужже есть функции с нужными запросами
я к тому, что не нужно изобретать велосипед -- всё уже есть в конфе
8 Лефмихалыч
 
18.12.15
14:26
ВТ., - это ВТ.{звёздочка}
9 Лефмихалыч
 
18.12.15
14:27
ВЫБРАТЬ  
ПОМЕСТИТЬ КИ

это выбрать все поля

херов маркап...
10 NordMad
 
18.12.15
14:32
(9) а ИЗ там что не надо писать? чет ошибки пишет
11 NordMad
 
18.12.15
14:38
(9) спасибо всё заработало. осталось только логику понять запроса:)
12 Лефмихалыч
 
18.12.15
14:44
(11) это три запроса.
первый - строит временную таблицу с нужными тебе типами и видами.
второй - строит временную таблицу со всей имеющейся контактной информацией у организации.
третий запрос соединяет первую таблицу со второй левым соединением.
13 NordMad
 
18.12.15
14:57
(12) благодарю!
14 zak555
 
18.12.15
14:57
В общем модуле УправлениеКонтактнойИнформацией есть

Функция ПолучитьАдресИзКонтактнойИнформации(Объект, ТипАдреса = "") Экспорт
Функция ПолучитьТелефонИзКонтактнойИнформации(Объект) Экспорт
15 NordMad
 
18.12.15
15:04
(14) тоже гляну. но запрос как то универсальнее. спасибо
16 kumena
 
18.12.15
15:13
>> В общем модуле УправлениеКонтактнойИнформацией есть

ща тебе лефмихалыч гвоздь в голову забъет, за запросы в цикле
17 zak555
 
18.12.15
15:15
(16) в 0 написано
контакты организации -- в единственном числе
18 Мэс33
 
18.12.15
15:16
(15) всегда надо юзать то, что есть в конфе. Зачем писать велосипед?
19 NordMad
 
18.12.15
15:29
(18) просто в 8ках привычнее получать инфу запросами уже. как универсальный способ вытягивания данных с базы
20 zak555
 
18.12.15
15:31
(19) так функции из 14 как раз и используют запросы
21 User_Agronom
 
18.12.15
15:43
ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Представление,
Тип,
Вид
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Тип В (&Тип)
    И КонтактнаяИнформация.Вид В (&Вид)
    И КонтактнаяИнформация.Объект В (&Объект)
22 NordMad
 
18.12.15
15:46
(21) только видов контактов несколько
23 NordMad
 
18.12.15
15:48
(21) такой вариант вообще не подходит. ничего не дает. вот запрос выше четко делает что нужно, выдает нужное количество записей вне зависимости от заполнения полей
24 salvator
 
18.12.15
15:53
(7) +100
25 User_Agronom
 
18.12.15
16:06
(23) ВЫБРАТЬ
    КонтактнаяИнформация.Объект,
    КонтактнаяИнформация.Представление,
Тип,
Вид
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Тип В (&Тип)
    И КонтактнаяИнформация.Вид В (&Вид)
    И КонтактнаяИнформация.Объект  = &Объект

И будет тот же запрос, что в (0)
Ну и что, что видов несколько? Передай их массивом в параметр.
26 Лефмихалыч
 
18.12.15
16:07
(25) да, только ему нужен не такой результат, как в (0)