Имя: Пароль:
1C
 
Подскажите как Собрать в строку в Массив
0 Олеся999
 
19.05.15
10:57
Подскажите пожалуйста как Собрать в строку в Массив? :)
Есть таблица такого вида :
RefDes          Type    Value
C124           C0402    100n
C125          C0402    100n
C126          C0402    22p
C127          C0402    22p
C128          C0402    22p
C129          C0402    22p

Должно выглядеть так:
RefDes                  Type     Value
C124,C125               C0402    100n
C126,C127,C128,C129     C0402    22p

Подскажите пожалуйста как привести к такому виду ?
1 patria0muerte
 
19.05.15
10:59
СКД?
2 Господин ПЖ
 
19.05.15
11:02
сношаться в скд или выводить отчет "руками"
3 patria0muerte
 
19.05.15
11:03
Да в СКД то особо сношаться не придется...
Type и Value как группировка, RefDes в ресурсы как Массив(RefDes)
4 Олеся999
 
19.05.15
11:10
(1) (2)
это не в скд, а в ТабличнойЧасти ("тч_smd")
Смысл такой : мы загружаем  из экселя в эту "тч_smd"
и получается что то вроде
RefDes          Type    Value
C124           C0402    100n
C125          C0402    100n
C126          C0402    22p
C127          C0402    22p
C128          C0402    22p
C129          C0402    22p

после чего нажимаем кнопку Сгрупировка
и должно произойти:
тч_smd.Очистить();
и загрузка  уже сгруппированных значений
такого вида:  
RefDes                  Type     Value
C124,C125               C0402    100n
C126,C127,C128,C129     C0402    22p
5 Олеся999
 
20.05.15
10:42
Нужно чтобы после нажатия кнопки "Скомпоновать" строки с идентичными MyData собирались в 1 строку.
http://lvkr.ru/f/fP4YuE/1024.jpg
6 FIXXXL
 
20.05.15
10:47
Цикл по ТЧ
7 Бубка Гоп
 
20.05.15
10:53
(4) Запрос к этой таблице с ИТОГИ ПО спасут отца русской демократии
8 Бубка Гоп
 
20.05.15
10:54
(7) ну или в цикле перебираем, ищем, добавляем
9 Бубка Гоп
 
20.05.15
10:59
(8) т.е. берем и копируем это в другую таблицу,
к ней применяем свернуть("Type, Value"), чтобы получить набор неповторяющихся сочетаний Type и Value, затем ее обходим в цикле, ищем все RefDes в исходной таблице для каждого набора Type и Value и собираем их в строку во второй
10 Олеся999
 
20.05.15
11:00
Ну вот такую писала что бы разобрать строку

&НаСервере
Функция РазложитьСтрокуВМассив(Знач Стр , Разделитель = ",") Экспорт
    
    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
    
КонецФункции    
  
Щас на оборот нужно собрать :)
11 D_E_S_131
 
20.05.15
11:05
1. Из ТЧ в ТЗ.
2. ТЗ в запрос.
3. Запросом построить итоги по Type, Value.
4. ТЗ очистить.
5. Обходом выборок по группировкам заполнить ТЗ.
6. Из ТЗ в ТЧ.
12 Олеся999
 
20.05.15
11:15
(11) типо во временную тз да?
13 Таня-ученица
 
20.05.15
11:16
Я бы выгрузила тч_smd в ТЗ тч_smd (отсторировала по первому столбцу), добавила столбец для меток,обошла ТЗ тч_smd в цикле на предмет равенства значений по двум соседним столбцам с простановкой меток и конкатенировала бы значения из первого столбца в переменную с разделяющей запятой. Значение переменной я бы записывала в новую ТЗ с идентичной структурой.

Всё просто, не так ли, мальчики? ;)
14 Олеся999
 
20.05.15
11:19
меня интересует сам факт перебора строк  и сгруппировки
15 sergeev-ag-1977
 
20.05.15
11:29
Упорядочить 1 таблицу по Value и перенести в новую таблицу и не греть голову обычным циклом! За 20 минут уже давно можно было сделать.
16 D_E_S_131
 
20.05.15
11:31
(12) типо да
(13) Запрос это все умеет делать сам, но если хочется, то можно и "конкатенировать".
17 Олеся999
 
20.05.15
12:01
(16) (15) может хоть примерчики есть какие-нибудь ?
18 Любопытная
 
20.05.15
12:02
(14) А что не получается?
19 D_E_S_131
 
20.05.15
12:14

ТЗ = смд.Выгрузить();

Запрос = Новый Запрос;

Запрос.Текст =
"ВЫБРАТЬ
|    ВнешнийИсточник.Рефдес,
|    ВнешнийИсточник.Типе,
|    ВнешнийИсточник.Валуе
|ПОМЕСТИТЬ ВТ_Данные
|ИЗ
|    &ИсточникДанных КАК ВнешнийИсточник
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
|    ВТ_Данные.Рефдес,
|    ВТ_Данные.Типе КАК Типе,
|    ВТ_Данные.Валуе КАК Валуе
|ИЗ
|    ВТ_Данные КАК ВТ_Данные
|ИТОГИ ПО
|    Типе,
|    Валуе"
;

Запрос.УстановитьПараметр("ИсточникДанных", ТЗ);

ТЗ.Очистить();

ВыборкаТипе = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаТипе.Следующий() Цикл

    ВыборкаВалуе = ВыборкаТипе.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаВалуе.Следующий() Цикл
    
        СтрТЗ = ТЗ.Добавить();
        
        СтрТЗ.Типе  = ВыборкаТипе.Типе;
        СтрТЗ.Валуе = ВыборкаВалуе.Валуе;
        
        ВыборкаДетальная = ВыборкаВалуе.Выбрать();
        
        Пока ВыборкаДетальная.Следующий() Цикл
        
            СтрТЗ.Рефдес = СтрТЗ.Рефдес + ?(ПустаяСтрока(СтрТЗ.Рефдес), "", ", ") + СтрТЗ.Рефдес;
        
        КонецЦикла;
    
    КонецЦикла;

КонецЦикла;

смд.Загрузить(ТЗ);
20 Таня-ученица
 
20.05.15
12:58
// Запрос это все умеет делать сам, но если хочется, то можно и "конкатенировать".

Запрос вам только итоги посчитал, а конкатенируете вы сами в своём примере:

//СтрТЗ.Рефдес = СтрТЗ.Рефдес + ?(ПустаяСтрока(СтрТЗ.Рефдес), "", ", ") + СтрТЗ.Рефдес;
21 DirecTwiX
 
20.05.15
13:01
Можно и без запроса. Скопировать тз с двумя последними колонками, свернуть, добавить колонку для массива. Обойти оригинальную ТЧ, находя строки из новой тз и добавляя туда элемент первой колонки ТЧ.
22 D_E_S_131
 
20.05.15
13:43
(20) Ну да, стоит признаться что "конкатенирую". (*покраснев*)
2 + 2 = 3.9999999999999999999999999999999...