|
Дерево значений в таблицу значений
|
Я
|
|
SKY_LLS 28.10.16 - 13:08 | Добрый день.
Если дерево значений:
-Строка1
--подстрока1_1
--подстрока1_2
--...
--подстрока1_n
-Строка2
--подстрока2_1
--подстрока2_2
--...
--подстрока2_n
...
-Строкаm
--подстрокаm_1
--подстрокаm_2
--...
--подстрокаm_n
Необходимо получить ТЗ
строка 1 - подстрока1_1,подстрока2_1,подстрока2_2,...подстрокаm_n
строка 1 - подстрока2_1,подстрока2_1,подстрока2_2,...подстрокаm_n
и так далее... То есть склеить все подстроки со всеми подстроками
Ума не приложу как это сделать. Может кто-то подскажет. Заранее благодарен |
СамыйУмный 1 - 28.10.16 - 13:09 | Клей не предлагать?
|
SKY_LLS 2 - 28.10.16 - 13:10 | Если поможет, готов нюхать:)
|
Живой Ископаемый 3 - 28.10.16 - 13:13 | один уровень иерархии?
|
Лефмихалыч 4 - 28.10.16 - 13:14 | Я из "Необходимо получить ТЗ" ни ч0рта не понял
|
СамыйУмный 5 - 28.10.16 - 13:16 | Обходишь циклом своё дерево и пихаешь это всё в ТЗ.
Что тут сложного?)
|
SKY_LLS 6 - 28.10.16 - 13:26 | в итоге я просто выгружу строки
мне нужно из ДЗ с тремя строками, в которых по 3 подстроки получитьТЗ
п11,п21,п31
п11,п21,п32
п11,п21,п33
п11,п22,п31
п11,п22,п32
п11,п22,п33
п11,п23,п31
п11,п23,п32
п11,п23,п33
п12,п21,п31
п12,п21,п32
п12,п21,п33
п12,п22,п31
п12,п22,п32
п12,п22,п33
п12,п23,п31
п12,п23,п32
п12,п23,п33
п13,п21,п31
п13,п21,п32
п13,п21,п33
п13,п22,п31
п13,п22,п32
п13,п22,п33
п13,п23,п31
п13,п23,п32
п13,п23,п33 |
Лефмихалыч 7 - 28.10.16 - 13:28 | Строки = ДЗ.Строки.НайтиСтроки(УсловеКотороеВсегдаИстина, Истина);
для каждого строка из строки
ЗаполнитьЗначенияСвойств(ТЗ.Добавить(), Строка);
КонецЦикла |
Михаил Козлов 8 - 28.10.16 - 13:32 | ( 7) Ему нужно еще колонки получить: как в отчете при группировке в колонках. Похоже, строки ТЗ - 1-ый уровень, колонки - объединение подстрок. |
Лефмихалыч 9 - 28.10.16 - 13:35 | ( 8) да я вообще не понимаю - суда по примерам, там какое-то декартово произведение чего-то на что-то. |
Михаил Козлов 10 - 28.10.16 - 13:37 | ( 9) Например, нужно вывести объемы продаж: в строках - номенклатура, в столбцах - месяцы. Дерево: результат запроса с итогами по номенклатуре. |
Fedor-1971 11 - 28.10.16 - 13:39 | ( 7) по ходу, у ТС проблема как определить сколько колонок в ТЗ завести.
Пробуй примерно так:
[1С]
тз=Новый ТаблицаЗначений;
ур1=ДеревоЗначений.ПолучитьЭлементы();
Для каждого позУр1 из ур1 цикл
ур2=позУр1.ПолучитьЭлементы();
Если НЕ ур2.Количество()=0 тогда
Вот тут проверь сколько колонок у твоей ТЗ и если надо добавь недостающее количество
КонецЕсли;
КонецЦикла;
[\1С]
Дальше перебором опять же заполняй свою таблицу, т.е. по дереву нужно пройти дважды: 1-й раз определяем количество колонок в ТЗ, 2-й раз заполняем |
Лефмихалыч 12 - 28.10.16 - 13:39 | ( 10) ну и вывести компоновкой сразу в ТЗ, зачем вот эти заморочки? |
Михаил Козлов 13 - 28.10.16 - 13:50 | ( 11) Можно и одним циклом, добавляя колонки, если их не хватает. |
SKY_LLS 14 - 28.10.16 - 14:10 | Спасибо, попробую
|
SKY_LLS 15 - 08.11.16 - 12:37 | Если кому-то интересно. Вот что требовалось :)
Процедура КнопкаВыполнитьНажатие(Кнопка)
ДЗ = Новый ДеревоЗначений;
ДЗ.Колонки.Добавить("Значение", Новый ОписаниеТипов("Строка"));
Для Ид = 1 По 3 Цикл
СтрокаДЗ = ДЗ.Строки.Добавить();
СтрокаДЗ.Значение = "Значение_"+Ид;
Для Ид1 = 1 По 3 Цикл
СтрокаДЗ1 = СтрокаДЗ.Строки.Добавить();
СтрокаДЗ1.Значение = "Значение_"+Ид+"_"+Ид1;
КонецЦикла;
КонецЦикла;
МассивДанных = Новый Массив;
Для Каждого СтрокаДЗ Из ДЗ.Строки Цикл
СформироватьМассив(МассивДанных, СтрокаДЗ.Строки);
КонецЦикла;
Сообщить(МассивДанных.Количество());
КонецПроцедуры
Процедура СформироватьМассив(МассивДанных, СтрокиДЗ)
НовыйМассив = Новый Массив;
Если МассивДанных.Количество() = 0 Тогда
Для Каждого СтрокаДЗ Из СтрокиДЗ Цикл
МассивДанных.Добавить(СтрокаДЗ.Значение);
КонецЦикла;
Возврат;
КонецЕсли;
Для Каждого СтрокаМассива Из МассивДанных Цикл
Для Каждого СтрокаДЗ Из СтрокиДЗ Цикл
НовыйМассив.Добавить(СтрокаМассива + ", " + СтрокаДЗ.Значение);
КонецЦикла;
КонецЦикла;
МассивДанных = НовыйМассив;
КонецПроцедуры |