Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Свернуть таблицу значений ...

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

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


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

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

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

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

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

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

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



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

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

лана - пошел ковырять в лоб ..
   Serg_1960
 
8 - 17.10.16 - 17:24
Ты забыл про обход по группировкам. Ваш кэп :)
   YAGolova
 
9 - 17.10.16 - 17:25
(4) Делаешь схему компоновки, засовываешь туда свой запрос, в настройках схемы группируешь как надо, а те поля которые надо склеить описываешь в ресурсах как вычислитьвыражениесгруппировкоймассив. Выполняешь схему, помещаешь ее в ТЗ, Профит!
   lamme
 
10 - 17.10.16 - 17:26
(9)
сложно
 
 Рекламное место пустует
   lamme
 
11 - 17.10.16 - 17:26
(8)
помню.
в итоге тот же перебор строк запроса
и как там в итоге через зпт сделать все ..
   wertyu
 
12 - 17.10.16 - 17:28
(10) зато дубли не надо искать как в (6) и в (8)
   YAGolova
 
13 - 17.10.16 - 17:29
(10) по моему проще чем описывать кучу структур и циклами бегать с поиском.... Но на вкус и цвет канешно)
   Serg_1960
 
14 - 17.10.16 - 17:33
(11) Новая ТЗ и обход по уровням выборки. На первом уровне - добавляешь строку в ТЗ; на остальных уровнях - добавляешь к значению в соответствующие поля.
   arsik
 
15 - 17.10.16 - 17:33
(0) Сделай через итоги в запросе. Результатом будет дерево.
   Serg_1960
 
16 - 17.10.16 - 17:37
Не принципиально. Тот-же обход результата с накоплением данных - автору нужно "через запятую" :)
   lamme
 
17 - 17.10.16 - 17:40
(15)
не понял
   Serg_1960
 
18 - 17.10.16 - 17:46
Кстати, фраза "через запятую" напомнила тему, где автор, из спортивного интереса, сделал попытку реализовать функцию СКД "СоединениеСтрок" в запросе:
http://catalog.mista.ru/public/200275/
   lamme
 
19 - 17.10.16 - 17:48
(18)
круто. только зачем ...
   craxx
 
20 - 17.10.16 - 17:52
(0) СКД рулит. программно это тягомотно весьма, и на больших данных тупить будет
   Сияющий Асинхраль
 
21 - 17.10.16 - 18:25
Вполне катит вариант (8)
   Туц
 
22 - 17.10.16 - 18:26
(0) Вроде можно. Сейчас поищу.
   iceman2112
 
23 - 17.10.16 - 18:30
нарк**аны.
ИТОГИ, СКД
   Сияющий Асинхраль
 
24 - 17.10.16 - 18:32
(23) Кстати интересно, про Итоги понятно, а вот как СКД здесь поможет, просто интересно? Расскажи поподробней...
   iceman2112
 
25 - 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 то можно пронумеровать и транспонировать.
   Fram
 
28 - 17.10.16 - 19:13
СКД - функция Массив в ресурсах
   Fram
 
29 - 17.10.16 - 19:18
(26) а что, уже стандартом стало давать имена на кириллице таблицам и колонкам в скуле?
   Mauser
 
30 - 17.10.16 - 20:19
(26) Яркий пример 1сного интегратора.
По верхам знаний с разных областей и полученный кадавр еле шевелится.

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует