Имя: Пароль:
1C
1C 7.7
v7: Как перебрать столбцы табличной части документа
0 ogion83
 
17.11.14
14:37
Народ, подскажите как перебрать столбцы табличной части документа или Таблицы значений.
1 vicof
 
17.11.14
14:38
Циклом
2 ogion83
 
17.11.14
14:38
(1) Само собой. А подробней?
3 Euguln
 
17.11.14
14:39
(0) Где?
4 ogion83
 
17.11.14
14:39
в 1С 7.7
5 Euguln
 
17.11.14
14:43
(4) А зачем?
6 varelchik
 
17.11.14
14:43
ТЗ Для н=1 по ТЗ.КОличествоКолонок().
а вот для документа сложнее.
Те надо визульные колонки или на форме?
7 Heckfy
 
17.11.14
14:43
(5) Транспонировать собрался :)
8 varelchik
 
17.11.14
14:43
(5) за шкафом.
Ну надо челу.
9 Euguln
 
17.11.14
14:45
(8) А может ему на самом деле это не надо.
10 ogion83
 
17.11.14
14:45
(6)А наименование колонки получить можно?
11 Euguln
 
17.11.14
14:46
(10) Выгружаешь табличную часть в ТЗ и
ПолучитьПараметрыКолонки(<?>,,,,,,,);
Синтаксис:
ПолучитьПараметрыКолонки(<Колонка>,<Тип>,<Длина>,<Точность>,<Заголовок>,<Ширина>,<Формат>,<Положение>)
Назначение:
Получить значения параметров колонки. Возвращает номер или код колонки. Если в параметре <Колонка> задан номер колонки, то возвращается код колонки, и наоборот.
12 varelchik
 
17.11.14
15:10
(11) зачем?
Для н =1 по МЕтаданные.Документ(Док.Вид()).РеквизитТабличнойЧасти() Цикл
а вот с формой сложней.
тут уже формекс нужен.
13 ogion83
 
17.11.14
15:31
(12) А тут как сам столбец получить?
14 ogion83
 
17.11.14
15:35
(11)Не выдает наименование
15 varelchik
 
17.11.14
15:36
ИмяКолонки=МЕтаданные.Документ(Док.Вид()).РеквизитТабличнойЧасти(н).Идентификатор
16 varelchik
 
17.11.14
15:41
(11) не очень оригинальное решение.
Это если строк 100
а если их 10000 да и колонок немерено?
Этож скоко будет ВыгрузитьТабличнуюЧасть()?
17 ogion83
 
17.11.14
15:59
(15) Идентификаторы у меня ст1,ст2 и т.д. А нужно заголовки столбцов ещё получить
18 ogion83
 
17.11.14
16:01
Надо как то к форме получается обратиться?
19 varelchik
 
17.11.14
16:14
(18) тут дело сложней.
к Атрибуту формы
20 varelchik
 
17.11.14
16:15
но это тож ниче недаст.
надо извращаться.
21 varelchik
 
17.11.14
16:15
может ActiveMD поможет.
надо пробовать.
22 varelchik
 
17.11.14
16:20
+(21) ниче пока дельного в голову не лезет.
Вот подожди Епрст придет мож он че подскажеть.
23 ogion83
 
17.11.14
16:41
(22)Ок)
24 Ёпрст
 
17.11.14
16:59
(0)
Если без учета текстовых колонок, то так, например:
    Для к = 1 По Метаданные.Документ("Реализация").РеквизитТабличнойЧасти()  Цикл
        Ид = Метаданные.Документ("Реализация").РеквизитТабличнойЧасти(к).Идентификатор;
        Попытка
            Атр = Форма.ПолучитьАтрибут(Ид);
            Сообщить("идентификатор:"+Ид+", заголовок:"+Атр.Заголовок());
        Исключение
            Сообщить("идентификатора:"+Ид+" нет на форме");
        КонецПопытки;    
    КонецЦикла;



Если нужны и текстовые колонки, то либо формексом получить всё, либо эммулировать нажатие Tab с помощью сендкей, если религия не позволяет формекс пользовать
25 ogion83
 
17.11.14
17:00
Попробуем
26 Ёпрст
 
17.11.14
17:02
Ну и .. этот код будет работать, только в открытой форме документа, если че..
27 Иоканаан
 
17.11.14
17:20
(16) Если строк будет 10 000 - тогда при любой обработке табличной части документа работать будет медленно и печально. А форма документа будет открываться значительно дольше, чем совершится выгрузка табличной части в ТЗ.

(17) Есть такой метод элемента диалога "Заголовок". Использовать примерно так:
Форма.Ст1.Заголовок();
Если в скобках ничего не указано - возвращает текущий заголовок столбца с идентификатором Ст1. Если в скобках ввести строковое выражение - оно будет установлено в качестве заголовка столбца.
28 ogion83
 
18.11.14
11:03
(24) и (27)
Благодарствую народ.
Форма.ПолучитьАтрибут("Ст1").Заголовок()
Вот так работает
29 varelchik
 
18.11.14
13:31
(24) зы.
А вот про попытку я как-то забыл.