Имя: Пароль:
1C
1С v8
Получить запросом сумму строк
0 kotletka
 
14.07.11
11:34
День добрый, в общем что-то затупил спросонья,
есть запрос
КонтактнаяИнформация.Объект КАК Объект,
   ВЫБОР
       КОГДА КонтактнаяИнформация.Тип = &Телефон
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(20))
   КОНЕЦ КАК Телефон
ИЗ
   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация

резултат выводится: Контрагент
                             телефон1
                             телефон2
как можно сделать чтобы выводился: Контрагент    Телефон1, телефон2

обработку результата запроса не предлагать, мне в общем нужно как-то просуммировать строки с телефонами, хотя бы пните куда копать?
1 kotletka
 
14.07.11
11:35
+ ну да забыл, просуммировать надо в запросе
2 butterbean
 
14.07.11
11:36
там Вид что-ли разный?? тогда делай левым соединением и собирай строку
3 butterbean
 
14.07.11
11:37
(2)+ а в СКД это вообще настройками делается
4 hhhh
 
14.07.11
11:38
(1) ты не поверишь

Контрагент.Наименование + Телефон1 + Телефон2
5 kotletka
 
14.07.11
11:39
да телефонных номеров несколько, основной, доп, мобильный...,(3)воооот как это можно сделать в СКД?
(4) ты не поверишь нифига,(+ мне надо в колонке получить тел1+ тел2 )
6 kotletka
 
14.07.11
11:40
(3)Если через ресурс , то там строковые не складывает
7 kotletka
 
14.07.11
11:47
"Все выше и выше, и выше"
8 butterbean
 
14.07.11
11:48
(6) не, там в оформлении можно указать чтобы ресурсы в одной колонке выводились
9 hhhh
 
14.07.11
11:48
(5) а я тебе разве не про колонку?
10 butterbean
 
14.07.11
11:50
(8) хотя нет, гоню
11 kotletka
 
14.07.11
11:51
(8)не вариант их разное количество, каждый ресурс вытаскивать
12 kotletka
 
14.07.11
11:52
(9)Да я примерно понимаю, что как- то сложить можно, вопрос в том как?
13 butterbean
 
14.07.11
11:52
(11) делай как в (2)
14 hhhh
 
14.07.11
11:54
(12) ну как-то так

КонтактнаяИнформация.Объект.Наименование +
   (ВЫБОР
       КОГДА КонтактнаяИнформация.Тип = &Телефон1
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(20))
   КОНЕЦ)
+
ВЫБОР
       КОГДА КонтактнаяИнформация.Тип = &Телефон2
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(20))
   КОНЕЦ)
КАК Колонка

ну естественно ЕСТЬNULL везде вставить, где надо.
15 butterbean
 
14.07.11
11:56
(14) так не получится, нужны левые соединения по разным видам КИ
16 kotletka
 
14.07.11
11:58
ок, попробую
17 hhhh
 
14.07.11
12:00
(15) а он что хочет без соединений? Тогда я не въехал.
18 afk
 
14.07.11
12:06
Если я правильно понял нужно таблицу
Объект | Телефон1
Объект | Телефон2
Объект | Телефон3

перевести в
Объект | Телефон1 | Телефон2 | Телефон3
19 kotletka
 
14.07.11
12:09
(18)ага, менять или в запросе или в результате скд
20 kotletka
 
14.07.11
12:11
+ лучше Объект | телефон1, телефон2 ....
21 kotletka
 
14.07.11
12:21
(15)Видов 5 штук, 5 левых делать? долго выводит
22 kotletka
 
14.07.11
14:36
Зделал так

ВЫБРАТЬ
   КонтактнаяИнформация.Объект КАК Объект,
   "" + ВЫБОР
       КОГДА КонтактнаяИнформация.Вид = &Телефон1
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(20))
   КОНЕЦ + ВЫБОР
       КОГДА КонтактнаяИнформация1.Вид = &Телефон2
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация1.Представление КАК СТРОКА(20))
   КОНЕЦ КАК Телефон
ИЗ
   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация1
       ПО КонтактнаяИнформация.Объект = КонтактнаяИнформация1.Объект
ГДЕ
   КонтактнаяИнформация.Объект.Родитель = &Родитель

СГРУППИРОВАТЬ ПО
   КонтактнаяИнформация.Объект,
   "" + ВЫБОР
       КОГДА КонтактнаяИнформация.Вид = &Телефон1
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(20))
   КОНЕЦ + ВЫБОР
       КОГДА КонтактнаяИнформация1.Вид = &Телефон2
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация1.Представление КАК СТРОКА(20))
   КОНЕЦ

сумму строк дает, но выводит

Контрагент |      
Контрагент | тел 1 тел2

т.е опять задваивает первая строчка лишняя
23 kotletka
 
14.07.11
14:37
+ если вставить естьNULL  то задваивает ещё больше
24 байт
 
14.07.11
14:43
(22)а без группировки какой результат?
25 kotletka
 
14.07.11
14:44
задвоение строк так в 10
26 73
 
14.07.11
14:46
ВЫБРАТЬ
   КонтактнаяИнформация.Объект КАК Объект,
   МАКСИМУМ("" + ВЫБОР
       КОГДА КонтактнаяИнформация.Вид = &Телефон1
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация.Представление КАК СТРОКА(20))
   КОНЕЦ + ВЫБОР
       КОГДА КонтактнаяИнформация1.Вид = &Телефон2
           ТОГДА ВЫРАЗИТЬ(КонтактнаяИнформация1.Представление КАК СТРОКА(20))
   КОНЕЦ) КАК Телефон
ИЗ
   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация1
       ПО КонтактнаяИнформация.Объект = КонтактнаяИнформация1.Объект
ГДЕ
   КонтактнаяИнформация.Объект.Родитель = &Родитель

СГРУППИРОВАТЬ ПО
   КонтактнаяИнформация.Объект

?
27 kotletka
 
14.07.11
14:52
(26)Оно
28 байт
 
14.07.11
14:52
(25) результат скопируй
29 kotletka
 
14.07.11
14:53
там около 1000 строк
30 acsent
 
14.07.11
14:54
Зачем группировать? Где отбор по виду?
31 байт
 
14.07.11
14:58
для чего это соединение

 РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация1
       ПО КонтактнаяИнформация.Объект = КонтактнаяИнформация1.Объект
32 байт
 
14.07.11
14:58
(31) а все понял
33 байт
 
14.07.11
15:01
а если ВНУТРЕННЕЕ попробовать
34 байт
 
14.07.11
15:07
как в (30) тоже сделай.
35 kotletka
 
14.07.11
15:08
Всем Спасибо (26)работает
36 kotletka
 
14.07.11
15:08
ночь не спал, а тут ещё с СКД заморочки, вот и затупил