![]() |
![]() |
![]() |
|
Помогите транспонировать ТЗ? | ☑ | ||
---|---|---|---|---|
0
BaHgaJI
18.06.10
✎
16:45
|
Не могу выбрать строку и записать ее как колонку...
|
|||
1
Чайник Рассела
18.06.10
✎
16:46
|
подробней
|
|||
2
BaHgaJI
18.06.10
✎
16:47
|
есть к примеру таблица значений 3*3 надо записать строки как столбцы
|
|||
3
alex-pro
18.06.10
✎
16:50
|
||||
4
BaHgaJI
18.06.10
✎
16:53
|
Ну это для семерки,для восьмерки у меня так не получилось
|
|||
5
alex-pro
18.06.10
✎
16:59
|
Вроде, задача совсем не сложная, реализуется двумя вложенными циклами....
|
|||
6
BaHgaJI
18.06.10
✎
17:04
|
Напиши если не трудно, а то я уже заколебался не получается че то
|
|||
7
Ненавижу 1С
гуру
18.06.10
✎
17:04
|
а как ты назовешь столбцы, которые были строками?
|
|||
8
supremum
18.06.10
✎
17:06
|
(0) Зачем?
|
|||
9
BaHgaJI
18.06.10
✎
17:10
|
Предположим столбцы также называются. задание мне дали такое.
|
|||
10
supremum
18.06.10
✎
17:13
|
(9) Если честно, то практическая потребность в этом сомнительная. Практически нулевая.
Делаешь новую ТЗ, добавляешь туда необходимое количество колонок и двойным циклом перебираешь исходную ТЗ и данные вгоняешь в новую ТЗ. |
|||
11
Mikeware
18.06.10
✎
17:15
|
(10) Это студент
|
|||
12
BaHgaJI
18.06.10
✎
17:17
|
Алгоритм я то понимаю, я язык плохо знаю, никогда раньше с ТЗ не работал.
Как взять строку и записать ее как колонку? |
|||
13
Ненавижу 1С
гуру
18.06.10
✎
17:19
|
(12) никак, надо обращаться к ячейкам (полям строк)
|
|||
14
BaHgaJI
18.06.10
✎
17:26
|
Типо надо циклом перебирать а имя колонок как массив записать?
|
|||
15
Torquader
18.06.10
✎
17:40
|
Собственно, как транспонируется матрица ?
Мы должны пройти по центральной диагонали и всё, что в строке справа от неё, переставить налево. Есть функция получения содержимого ячейки с координатами x,y и есть функция записи ячейки с теми же координатами - что ещё надо ? (Мозги и синтаксис помощник) |
|||
16
Живой Ископаемый
18.06.10
✎
17:50
|
2(12) ну вот смотри дядька, у тебя есть ТЗ.. ты хочешь ее транспонировать... В СП не находишь у ТЗ метода Транспонировать(), потом тебя посещает догадка, что надо бы работать со строками и столбцами... Но в СП тоже нет феункции ЗагрузитьКолонкуВСтроку(), что бы ты посоветовал абстрактному... ну не знаю, древнему греку, если бы он столкнулся с такой задачей?
(обязательное условие: доступа к форумум у него нет, интернета - тоже) |
|||
17
Птица
18.06.10
✎
18:04
|
(16)архимед бы и без советов догадался
|
|||
18
OneUser
18.06.10
✎
18:13
|
////////////////////////////////////////
//ИсходнаяТЗ = ...; ИтоговаяТЗ = Новый ТаблицаЗначений(); //////////////////////////////////////// Индекс = 1; ВсегоКолонок = ИсходнаяТЗ.Колонки.Количество(); ВсегоСтрок = ИсходнаяТЗ.Количество(); //////////////////////////////////////// Пока (Индекс <= ВсегоСтрок) Цикл ИтоговаяТЗ.Колонки.Добавить("Колонка" + Строка(Индекс)); Индекс = Индекс + 1; КонецЦикла; //////////////////////////////////////// Индекс = 1; Пока (Индекс <= ВсегоКолонок) Цикл Строка = ИтоговаяТЗ.Добавить(); Индекс = Индекс + 1; КонецЦикла; //////////////////////////////////////// Индекс1 = 0; //////////////////////////////////////// Пока (Индекс1 < ВсегоСтрок) Цикл //////////////////////////////////// Индекс2 = 0; //////////////////////////////////// Пока (Индекс2 < ВсегоКолонок) Цикл //////////////////////////////// ИтоговаяТЗ[Индекс2][Индекс1] = ИсходнаяТЗ[Индекс1][Индекс2]; //////////////////////////////// Индекс2 = Индекс2 + 1; //////////////////////////////// КонецЦикла; //////////////////////////////////// Индекс1 = Индекс1 + 1; //////////////////////////////////// КонецЦикла; //////////////////////////////////////// |
|||
19
Megas
18.06.10
✎
18:18
|
Мда.. что то сразу технарь вспомнился и матрицы.
1)Сделай массив двумерный.. Зафигач туды ТЗ, поверни , перепиши Тз... или 2) Сделай массив Зафигач туды ТЗ сразу поварачивая. Задача детская. |
|||
20
BaHgaJI
18.06.10
✎
18:20
|
Да это понятно что детская, я же говорю язык 1с хреново знаю
(18)Спасибо)Буду пробовать. Я в принципе так и делал просто не знал что можно вот так ИтоговаяТЗ[Индекс2][Индекс1]... |
|||
21
Megas
18.06.10
✎
18:32
|
(20) +Я тоже не знал =)
ИтоговаяТЗ[Индекс2][Индекс1]... в (18) наверное всё же правильнее Для Индекс = 0 По ИсходнаяТЗ.Колонки.Количество() Цикл КонецЦикла; и тд... |
|||
22
Kashemir
18.06.10
✎
19:16
|
Функция Транспонирование(ТбИсходная)
ТбТранс = Новый ТаблицаЗначений; Н = 0; Для каждого Строка из ТбИсходная Цикл ТбТранс.Колонки.добавить("Строка" + Н); Н = Н + 1; КонецЦикла; Для ИндексКолонки = 0 По ТбИсходная.Колонки.Количество()-1 Цикл НоваяСтрока = ТбТранс.Добавить(); Н = 0; Для каждого Строка из ТбИсходная Цикл НоваяСтрока[Н] = Строка[ИндексКолонки]; Н = Н + 1; КонецЦикла; КонецЦикла; Возврат ТбТранс; КонецФункции |
|||
23
zak555
18.06.10
✎
19:51
|
(22) а поменьше ?? пример, вот так :
Процедура Транспонировать(ТЗ) буфер=СоздатьОбъект("ТаблицаЗначений"); СЗ=СоздатьОбъект("СписокЗначений"); Для счКолонок=1 По ТЗ.КоличествоСтрок() Цикл ТЗ.Выгрузить(СЗ,счКолонок,счКолонок); СЗ.Выгрузить(буфер); ТЗ.Заполнить(СЗ,счКолонок,счКолонок); КонецЦикла; ТЗ.Загрузить(буфер); КонецПроцедуры |
|||
24
Kashemir
21.06.10
✎
10:33
|
(23) Речь о восьмерке
|
|||
25
BaHgaJI
23.06.10
✎
19:11
|
Сделал как в (24) спасибо все четко))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |