Имя: Пароль:
1C
1С v8
Свернуть таблицу значений ...
,
0 lamme
 
17.10.16
17:10
Есть запрос
"ВЫБРАТЬ
                    |    КатегорииОбъектов.Категория.Марка КАК Марка,
                    |    КатегорииОбъектов.Категория.Модель КАК Модель,
                    |    КатегорииОбъектов.Категория.Кузов КАК Кузов,
                    |    КатегорииОбъектов.Категория.Двигатель КАК Двигатель
                    |ИЗ
                    |    РегистрСведений.КатегорииОбъектов КАК КатегорииОбъектов
                    |ГДЕ
                    |    КатегорииОбъектов.Объект = &Объект
                    |
                    |СГРУППИРОВАТЬ ПО
                    |    КатегорииОбъектов.Категория.Марка,
                    |    КатегорииОбъектов.Категория.Модель,
                    |    КатегорииОбъектов.Категория.Кузов,
                    |    КатегорииОбъектов.Категория.Двигатель
                    |
                    |УПОРЯДОЧИТЬ ПО
                    |    Марка,
                    |    Модель,
                    |    Кузов,
                    |    Двигатель";

В итоге получаем такую вещь
http://clip2net.com/s/3DnfQaL


Как можно свернуть все это так
чтобы - на примере 2х первых строк

Строка1
тойота - королла - АЕ100, АЕ110 -  5AF

те чтобы группировка шла по колонкам (Кузов-Двигатель)
(шланг какой-ниб может подходить на разные марки-модели авто-поэтому такая группировка нужна)
1 lamme
 
17.10.16
17:12
чтобы в итоге примерно так было
http://clip2net.com/s/3DnhLjY
2 Nolan
 
17.10.16
17:16
программно после запроса. или нужно именно в запросе?
3 YAGolova
 
17.10.16
17:18
(0) В запросе не выйдет. Делай на СКД
4 lamme
 
17.10.16
17:19
(2)
не важно где
важен результат

Можно вщять эту ТЗ - и сделать с ней чего нибудь - чтобы получилось готовое.

(3)
как ?
5 lamme
 
17.10.16
17:21
(2)
вот я и пытаюсь после запроса сделать.
идей нет.

сделал
ИтМаркаТЗ = запрос.Выполнить().Выгрузить();
                    ИтМодельТЗ = запрос.Выполнить().Выгрузить();
                    ИтКузовТЗ = запрос.Выполнить().Выгрузить();
                    ИтДВСТЗ = запрос.Выполнить().Выгрузить();
                    
                    
                    ИтМаркаТЗ.Свернуть("Марка","");
                    ИтМодельТЗ.Свернуть("Марка,Модель","");
                ИтКузовТЗ.Свернуть("Марка,Модель,Кузов","");
                ИтДВСТЗ.Свернуть("Марка,Модель,Кузов,Двигатель","");
                    

    для каждого знМарка из  ИтМаркаТЗ цикл
                        ИтМарка=сокрлп(знМарка.Марка);
                        
                        
                        ОтборМодель = Новый Структура();
                        ОтборМодель.Вставить("Марка",сокрлп(знМарка.Марка));
                        СтрокиМодель = ИтМодельТЗ.НайтиСтроки(ОтборМодель);



туплю ...
чую - что вроде не туда ушел
6 wertyu
 
17.10.16
17:21
(4) можно просто выгрузить в таблицу, свернуть по первым двум, цикл по ней, поиск по структуре и заполнить новую таблицу, это самый лобовой способ
7 lamme
 
17.10.16
17:22
(6)
кстати да.
заполнить новую таблицу.

а я пытаюсь в старой все сделать.
тут и затуп..

лана - пошел ковырять в лоб ..
8 Serg_1960
 
17.10.16
17:24
Ты забыл про обход по группировкам. Ваш кэп :)
9 YAGolova
 
17.10.16
17:25
(4) Делаешь схему компоновки, засовываешь туда свой запрос, в настройках схемы группируешь как надо, а те поля которые надо склеить описываешь в ресурсах как вычислитьвыражениесгруппировкоймассив. Выполняешь схему, помещаешь ее в ТЗ, Профит!
10 lamme
 
17.10.16
17:26
(9)
сложно
11 lamme
 
17.10.16
17:26
(8)
помню.
в итоге тот же перебор строк запроса
и как там в итоге через зпт сделать все ..
12 wertyu
 
17.10.16
17:28
(10) зато дубли не надо искать как в (6) и в (8)
13 YAGolova
 
17.10.16
17:29
(10) по моему проще чем описывать кучу структур и циклами бегать с поиском.... Но на вкус и цвет канешно)
14 Serg_1960
 
17.10.16
17:33
(11) Новая ТЗ и обход по уровням выборки. На первом уровне - добавляешь строку в ТЗ; на остальных уровнях - добавляешь к значению в соответствующие поля.
15 arsik
 
гуру
17.10.16
17:33
(0) Сделай через итоги в запросе. Результатом будет дерево.
16 Serg_1960
 
17.10.16
17:37
Не принципиально. Тот-же обход результата с накоплением данных - автору нужно "через запятую" :)
17 lamme
 
17.10.16
17:40
(15)
не понял
18 Serg_1960
 
17.10.16
17:46
Кстати, фраза "через запятую" напомнила тему, где автор, из спортивного интереса, сделал попытку реализовать функцию СКД "СоединениеСтрок" в запросе:
http://catalog.mista.ru/public/200275/
19 lamme
 
17.10.16
17:48
(18)
круто. только зачем ...
20 craxx
 
17.10.16
17:52
(0) СКД рулит. программно это тягомотно весьма, и на больших данных тупить будет
21 Сияющий Асинхраль
 
17.10.16
18:25
Вполне катит вариант (8)
22 Туц
 
17.10.16
18:26
(0) Вроде можно. Сейчас поищу.
23 iceman2112
 
17.10.16
18:30
нарк**аны.
ИТОГИ, СКД
24 Сияющий Асинхраль
 
17.10.16
18:32
(23) Кстати интересно, про Итоги понятно, а вот как СКД здесь поможет, просто интересно? Расскажи поподробней...
25 iceman2112
 
17.10.16
18:46
ВычислитьВыражениеСГруппировкойМассив
26 Туц
 
17.10.16
18:46
(0) Вот как можно сделать в скульной студии.
  SELECT
  [марка]
  ,STUFF((
    SELECT ', ' + кузов
    FROM  машины
    WHERE (марка = Results.марка)
    FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
  ,1,2,'') AS кузовы
   ,STUFF((
    SELECT ', ' + двигатель
    FROM  машины
    WHERE (марка = Results.марка)
    FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
  ,1,2,'') AS двигатели
FROM машины Results
GROUP BY [марка]
27 Туц
 
17.10.16
18:55
(0) Ещё вариант. Если набор кузовов или двс невелик, скажем не больше 10 то можно пронумеровать и транспонировать.
28 Fram
 
17.10.16
19:13
СКД - функция Массив в ресурсах
29 Fram
 
17.10.16
19:18
(26) а что, уже стандартом стало давать имена на кириллице таблицам и колонкам в скуле?
30 Mauser
 
17.10.16
20:19
(26) Яркий пример 1сного интегратора.
По верхам знаний с разных областей и полученный кадавр еле шевелится.

COALESCE
31 Туц
 
17.10.16
20:51
(29,30) Я дал подсказку. Желаете вылизать - дерзайте.
32 lamme
 
17.10.16
22:24
прочитал
понял - что я нифига не понял
пощел делать тупо в лоб
33 lamme
 
17.10.16
22:44
сделал в лоб.
через отборы по тз
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший