Имя: Пароль:
1C
1C 7.7
v7: Индексированная таблица. Свернуть столбец со строкой
0 AntiBuh
 
02.07.14
13:07
Помогите с задачей

есть таблица вида:
Ключ     к1(Строка)  к2(строка)  к3(число)
------------------------------------------
Знач1      Стр1
Знач1                   стр2
знач1                                числ1

нужно получить из этого 1 строку таблицы

можно ли быстро свернуть или придется перебором заполнять к1 и к2 для свертки?
1 mikecool
 
02.07.14
13:27
выгрузить в тз и свернуть?
нет у ИТ метода?
2 MadJhey
 
02.07.14
13:28
строковые значение не сворачиваются. сделай перебором
3 aqua80
 
03.07.14
01:36
Например так:
[code]//заполнение
    тз = СоздатьОбъект("ТаблицаЗначений");
    тз.НоваяКолонка("Ключ", "Строка");
    тз.НоваяКолонка("К1", "Строка");
    тз.НоваяКолонка("К2", "Строка");
    тз.НоваяКолонка("К3", "Число");
    
    тз.НоваяСтрока();
    тз.Ключ = "Знач1";
    тз.К1 = "Стр1";  
    
    тз.НоваяСтрока();
    тз.Ключ = "Знач1";
    тз.К2 = "Стр2";
    
    тз.НоваяСтрока();
    тз.Ключ = "Знач1";
    тз.К3 = 10;
              
    //контроль до
    тз.ВыбратьСтроку();
                
    //обработка
    тз.ПолучитьСтрокуПоНомеру(1);
    
    Пока тз.КоличествоСтрок() > 1 Цикл
        
        тз.К1 = Макс(тз.К1, тз.ПолучитьЗначение(2, "К1"));    
        тз.К2 = Макс(тз.К2, тз.ПолучитьЗначение(2, "К2"));
        тз.К3 = Макс(тз.К3, тз.ПолучитьЗначение(2, "К3"));
        
        тз.УдалитьСтроку(2);
    КонецЦикла;    
              
    //контроль после
    тз.ВыбратьСтроку();[/code]
4 КонецЦикла
 
03.07.14
01:40
Встречный вопрос, что делать с такими данными?

Ключ     к1(Строка)  к2(строка)  к3(число)
------------------------------------------
Знач1      Стр1
Знач1                   стр2
знач1                   стр3          числ1
5 VladZ
 
03.07.14
07:22
(0) Варианты решений:
1. Не создавать себе такую проблему. Т.е. на этапе получения данной таблицы заполнять ее так, как нужно, а не так, как получилось.

2. см. Индексированная таблица. Там есть ЛевоеСоединение, ПравоеСоединение.
6 AntiBuh
 
03.07.14
07:55
(4) такого не может получиться
(5) 1. знаю что лучше изначально, но заполняется из запроса
2. вроде нету такого у индексированной
7 Salimbek
 
03.07.14
12:02
(6) 1. Если заполняется из запроса, то может проще обернуть этот запрос, типа:
SELECT Ключ, Max(к1), Max(к2) FROM (...тут твой запрос...) GROUP BY Ключ

и не надо будет мучить бедную 1С-ку.

2. Есть такое у Индексированной
8 Ёпрст
 
гуру
03.07.14
12:04
(0) сделать запрос к этой тз через 1sqlite и там group_concat
9 AntiBuh
 
03.07.14
14:35
короч взял каркас идеи из (3)
свертка в запросе чет не получилась
ну да ладно
все равно вроде быстро
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший