Имя: Пароль:
1C
1С v8
Выборка телефонов контрагентов в запросе
0 loken2
 
14.11.14
10:12
Подскажите как составить завпрос чтобы в выборке были все телефоны контрагента "Контрагент" - "все его телефоны" потом следующий контрагент
1 YFedor
 
14.11.14
10:13
(0) Пятница же, телепаты бухают
2 butterbean
 
14.11.14
10:15
через запятую штоле??
3 Wobland
 
14.11.14
10:16
выбрать Контрагенты.Наименование, Контрагенты.ВсеЕгоТелефоны из Справочник.Контрагенты как Контрагенты - подойдёт?
4 Timon1405
 
14.11.14
10:16
ВЫБРАТЬ ВСЕ
Телефоны
ИЗ
Таблица.ТелефоныКонтрагентов
УПОРЯДОЧИТЬ ПО
Контрагент.Следующий()
5 18_plus
 
14.11.14
10:16
если количество строк с телефонами заранее не известно, то никак.

СКД или извращения http://infostart.ru/public/200275/
6 Wobland
 
14.11.14
10:16
>УПОРЯДОЧИТЬ ПО Контрагент.Следующий()
ну точно бухают
7 User_Agronom
 
14.11.14
10:17
(4) ВЫБРАТЬ ВСЕ (СОВСЕМ ВСЕ)

Так будет точнее))
8 SeraFim
 
14.11.14
10:17
"1С: управление публичным домом"?
9 User_Agronom
 
14.11.14
10:19
(5) Сказочник.
10 18_plus
 
14.11.14
10:22
(9) ну обоснуй, что-ли.
11 an-korot
 
14.11.14
10:26
(9) +
12 an-korot
 
14.11.14
10:26
(4) автар жжет пищи исче ))))
13 an-korot
 
14.11.14
10:28
loken2, тебе самому лень открыть конфигуратор и посмотреть где телефоны хранятся? или за тебя код писать должны? или ты просто юзер и поэтому не разбираешься.
14 User_Agronom
 
14.11.14
10:31
(10) Если типовая
ВЫБРАТЬ
    КонтактнаяИнформация.Объект КАК Объект,
    КонтактнаяИнформация.Представление
ИЗ
    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
ГДЕ
    КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(перечисление.ТипыКонтактнойИнформации.Телефон)
ИТОГИ ПО
    Объект

И выгрузи деревом.
15 Timon1405
 
14.11.14
10:35
(14) >>РегистрСведений.КонтактнаяИнформация
расскажите это конфам на БСП
16 18_plus
 
14.11.14
10:36
вангую, что задача состоит в том, чтобы из

контр1 333-4444
контр1 333-4445
контр2 222-3333
контр2 222-3334

получить
контр1 333-4444,333-4445
контр2 222-3333,222-3334
17 pessok
 
14.11.14
10:40
в СКД есть мистический метод Массив()
18 User_Agronom
 
14.11.14
10:40
(15) Читай фразу: (5)>> если количество строк с телефонами заранее не известно, то никак...

Я не знаю какая конфа у ТС. Может вообще нетленка.
Я не утверждаю, что мой запрос у ТС заработает.

Я показал способ, которым можно выбрать телефоны по объектам, независимо от количества телефонов у каждого объекта.

А если уж хочешь придраться, напиши, что запрос вернёт все телефоны всех объектов (и физических лиц), а не только контрагентов. Только править я всё равно не буду. Эта задача ТС - пусть её решает.
19 18_plus
 
14.11.14
10:43
(18) "Я показал способ, которым можно выбрать телефоны по объектам, независимо от количества телефонов у каждого объекта."

ай, молодец! у тебя наверное и сертификат эксперта есть. а я-то думал, что для выборки нужно точно знать сколько записей в таблице!
20 loken2
 
14.11.14
10:45
чтобы выборка возвращала сразу :

"Контрагент1" "все телефоны через запятую"
"Контрагент2" "все телефоны через запятую"
21 18_plus
 
14.11.14
10:45
(20) ответ в (5)
22 МишельЛагранж
 
14.11.14
10:46
(19)>>что для выборки нужно точно знать сколько записей в таблице!
- зачем?
23 18_plus
 
14.11.14
10:50
(22) ирония

(0) если количество телефонов на контрагента ограничить, скажем 5, то можно, например, пронумеровать записи каждого контрагента, транспонировать и сгруппировать таблицу.
24 loken2
 
14.11.14
11:32
(12) сперва воспрос пойми потом коменты пиши
25 Looser-1c
 
14.11.14
11:34
(20) б-гомерзкая СКД в данном случае рулит....
26 18_plus
 
14.11.14
11:52
вобщем не удержался я :)
наваял тут запросик


ВЫБРАТЬ
    ыыы.контрагент,    ыыы.номер
ПОМЕСТИТЬ ВТ
ИЗ
    (
ВЫБРАТЬ "Контра1" КАК контрагент, "111111111" как номер ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Контра1", "111111112" ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Контра1", "111111113" ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Контра2", "111111111" ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Контра2", "211111111" ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Контра3", "244444444" ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Контра2", "311111111" ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Контра2", "411111111" ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ "Контра2", "511111111"

) КАК ыыы
;

////////////////////////////////////////////////////////////////////////////////
// нумеруем все строки
ВЫБРАТЬ
    ВТ.контрагент,
    ВТ.номер,
    КОЛИЧЕСТВО(ВТ.номер) КАК ПНомер
ПОМЕСТИТЬ ВТ2
ИЗ
    ВТ КАК ВТ
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ2
        ПО (ВТ.контрагент + ВТ.номер <= ВТ2.контрагент + ВТ2.номер)

СГРУППИРОВАТЬ ПО
    ВТ.контрагент,
    ВТ.номер
;

////////////////////////////////////////////////////////////////////////////////
// Нумерем поконтрагентно
ВЫБРАТЬ
    ВТ2.контрагент,
    ВТ2.номер,
    ВТ2.ПНомер - ВВ.БНомер + 1 КАК ПНомер2
ПОМЕСТИТЬ ВТ3
ИЗ
    ВТ2 КАК ВТ2
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МИНИМУМ(ВТ2.ПНомер) КАК БНомер,
            ВТ2.контрагент КАК контрагент
        ИЗ
            ВТ2 КАК ВТ2
        
        СГРУППИРОВАТЬ ПО
            ВТ2.контрагент) КАК ВВ
        ПО ВТ2.контрагент = ВВ.контрагент
        
;
// разврачиваем и расставляем запятые
ВЫБРАТЬ Контрагент,
Тел1 + ВЫБОР КОГДА Тел2 = "" ТОГДА "" ИНАЧЕ ", " КОНЕЦ +
Тел2 + ВЫБОР КОГДА Тел3 = "" ТОГДА "" ИНАЧЕ ", " КОНЕЦ +
Тел3 + ВЫБОР КОГДА Тел4 = "" ТОГДА "" ИНАЧЕ ", " КОНЕЦ +
Тел4 + ВЫБОР КОГДА Тел5 = "" ТОГДА "" ИНАЧЕ ", " КОНЕЦ +
Тел5 КАК Номера
ИЗ
(
ВЫБРАТЬ
Контрагент,
МАКСИМУМ(ВЫБОР КОГДА ПНомер2 = 1 ТОГДА Номер ИНАЧЕ "" КОНЕЦ) Тел1,
МАКСИМУМ(ВЫБОР КОГДА ПНомер2 = 2 ТОГДА Номер ИНАЧЕ "" КОНЕЦ) Тел2,
МАКСИМУМ(ВЫБОР КОГДА ПНомер2 = 3 ТОГДА Номер ИНАЧЕ "" КОНЕЦ) Тел3,
МАКСИМУМ(ВЫБОР КОГДА ПНомер2 = 4 ТОГДА Номер ИНАЧЕ "" КОНЕЦ) Тел4,
МАКСИМУМ(ВЫБОР КОГДА ПНомер2 = 5 ТОГДА Номер ИНАЧЕ "" КОНЕЦ) Тел5
ИЗ ВТ3
Сгруппировать По Контрагент) ффф

27 18_plus
 
14.11.14
11:52
если номеров окажется больше 5 штук - один потеряется :)
28 Looser-1c
 
14.11.14
11:53
(26) Сделайте мне развидеть это...
29 18_plus
 
14.11.14
11:57
(28) не критики для, а из академического интереса :)
Ошибка? Это не ошибка, это системная функция.