Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Как из строк Справочника, сделать Таблицу значений, т.е. строки сделать столбцами (http://forums.kuban.ru/f1040/kak_iz_strok_spravochnika_sdelat-_tablicu_znachenij_t_e_stroki_sdelat-_stolbcami-6325838.html)

amv79 02.12.2014 12:31

Как из строк Справочника, сделать Таблицу значений, т.е. строки сделать столбцами
 
Здравствуйте!
Подскажите, как из строк сделать столбцы таблицы значений

qweqwe123123 02.12.2014 12:38

ТЗ = СоздатьОбъект("ТаблицаЗначений");
Сч = 0;
Пока Спр.ПолучитьЭлемент() = 1 Цикл
сч = сч + 1;
ТЗ.НоваяКолонка("Колонка" + сч + "_" + СтрЗаменить(Спр.Наименование," ",""),,,,Спр.Наименование);
КонецЦикла;

VZ 02.12.2014 12:46

Универсально: запросом. Выбираем строки по какому-то фильтру, указываем интересующие поля, результат выборки скидываем в ТЗ.

qweqwe123123 02.12.2014 12:52

тз1 - донор
тз2 - перевёртыш

Для сч1 = 1 по тз1.КоличествоСтрок() Цикл
тз2.НоваяКолонка("Колонка_"+сч1);
Для сч2 = 1 по тз1.КоличествоКолонок() Цикл
Значение = тз1.ПолучитьЗначение(сч1,сч2);
Если сч1 = 1 Тогда
тз2.НоваяСтрока();
КонецЕсли;
тз2.УстановитьЗначение(сч2,сч1,Значение);
КонецЦикла;
КонецЦикла;

amv79 02.12.2014 12:54

первый вариант не работает

qweqwe123123 02.12.2014 13:08

4-amv > только если наименования эелементов содержат недопустимые символы. удалить это
+ "_" + СтрЗаменить(Спр.Наименование," ","")

Uho 02.12.2014 13:26

1-Зелёный тролль > а с чего ты взял, что у него семерка?

qweqwe123123 02.12.2014 13:57

во, вспомнил молодость

//*******************************************
Процедура Сформировать()
Спр = СоздатьОбъект("Справочник.Валюты");
Спр.ВыбратьЭлементы();
Сч = 0;
ТЗ.НоваяКолонка("Колонка0",,,,"Реквизит");
Пока Спр.ПолучитьЭлемент() = 1 Цикл
сч = сч + 1;
ТЗ.НоваяКолонка("Колонка" + сч,,,,Спр.Наименование);
Если сч = 1 Тогда
тз.НоваяСтрока();
тз.УстановитьЗначение(1,сч,"Код");
тз.НоваяСтрока();
тз.УстановитьЗначение(2,сч,"Наименование");
Для сч2 = 1 по Метаданные.Справочник("Валюты").Реквизит() Цикл
тз.НоваяСтрока();
тз.УстановитьЗначение(сч2+2,сч,Метаданные.Справочник("Валюты").Реквизит(сч2));
КонецЦикла;
КонецЕсли;
тз.УстановитьЗначение(1,сч+1,Спр.Код);
тз.УстановитьЗначение(2,сч+1,Спр.Наименование);
Для сч2 = 1 по Метаданные.Справочник("Валюты").Реквизит() Цикл
Если Метаданные.Справочник("Валюты").Реквизит(сч2).Периодический = 0 Тогда
тз.УстановитьЗначение(сч2+2,сч+1,Спр.ПолучитьАтрибут(Метаданные.Справочник("Валюты").Реквизит(сч2)));
Иначе
НаДату = РабочаяДата();
Периодический = СоздатьОбъект("Периодический");
Если Периодический.ИспользоватьОбъект(Метаданные.Справочник("Валюты").Реквизит(сч2),Спр.ТекущийЭлемент()) = 1 Тогда
тз.УстановитьЗначение(сч2+2,сч+1,Периодический.ЗначениеНаДату(НаДату));
КонецЕсли;
КонецЕсли;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

6-Uho > а почему нет? к 8ке сам пусть адаптирует

Morons 02.12.2014 14:16

надеюсь, справочник не Контрагенты

qweqwe123123 02.12.2014 14:18

8-Дебилы > Договоры наверно :-))


Текущее время: 00:25. Часовой пояс GMT +3.