Имя: Пароль:
1C
 
Помогите транспонировать ТЗ?
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) спасибо все четко))