Имя: Пароль:
 
1C
1С v8
Как начать перебор элементов табличной части в цикле со второго?
0 a_x_o_n
 
03.09.21
13:43
Добрый день, мне нужно перебрать все колонки табличной части со второй и удалить их. Я разобрался как перебрать все элементы, но никак не могу найти решение как перебрать с определенной колонки.

Пробовал такой вариант

Для ЭлементФормы = Элементы.СписокУчеников.ПодчиненныеЭлементы.Индекс(2) По Элементы.СписокУчеников.ПодчиненныеЭлементы.Количество() Цикл
   Сообщить(ЭлементФормы);
КонецЦикла;
1 ДенисЧ
 
03.09.21
13:44
фл = Ложь;
Для каждого кол из Элементы.СписокУчеников.ПодчиненныеЭлементы.Количество() Цикл
  Если НЕ фл Тогда
    фл = Истина;
    Продолжить;
  КонецЕсли;
....
КонецЦикла
2 acht
 
03.09.21
13:48
(1) "кол из Количество()", говоришь...
Ты таки пошел проверять - Колумбия там была или Афганистан?
3 acht
 
03.09.21
13:49
(0) Возможно тебе нужно удалить все колонки кроме первой, а не "перебрать, начиная со второй"?
4 a_x_o_n
 
03.09.21
13:50
(3) Кроме первых двух*
5 patapum
 
03.09.21
13:50
(0) Удаляй с конца, пока не останется одна, первая
6 ДенисЧ
 
03.09.21
13:50
(2) Копипаст. Что аффтырь написал, то я ему и ответил. Сам пусть разбирается...
7 a_x_o_n
 
03.09.21
13:50
Сейчас пытаюсь сделать по методу Дениса
8 Обработка
 
03.09.21
13:51
+1! (5)
9 lodger
 
03.09.21
13:51
(4) наркоманишь.
запомни ссылки на колонки которые нужны.
обходи циклом все, и если текущая колонка = запомненная тогда пропустить.
10 acht
 
03.09.21
13:55
(9) Усугубим:

НаборЭлементов = Элементы.СписокУчеников.ПодчиненныеЭлементы;
СколькоОставить = 1;
Пока НаборЭлементов.Количество() > СколькоОставить Цикл
    Элементы.Удалить(НаборЭлементов.Получить(СколькоОставить));
КонецЦикла;
11 a_x_o_n
 
03.09.21
13:57
Пытался сделать по методу Дениса, ругается на несоответствие параметра "ЭлементФормы = Элементы.СписокУчеников.ПодчиненныеЭлементы.Индекс(0)"

Для Каждого ЭлементФормы Из Элементы.СписокУчеников.ПодчиненныеЭлементы Цикл
        НужнаяКолонка = Ложь;
        Если ЭлементФормы = Элементы.СписокУчеников.ПодчиненныеЭлементы.Индекс(0) ИЛИ ЭлементФормы = Элементы.СписокУчеников.ПодчиненныеЭлементы.Индекс(1) Тогда
            НужнаяКолонка = Истина;
        КонецЕсли;
        Если НЕ НужнаяКолонка Тогда
            ЭлементФормы.Удалить();
        КонецЕсли;    
    КонецЦикла;
12 a_x_o_n
 
03.09.21
13:59
(10) Спасибо большое, работает
13 lodger
 
03.09.21
14:15
(10) не люблю опираться на индексы. хз какие они будут, если после отрисовки формы начали добавлять группы, колонки в хаотичные места.
14 lodger
 
03.09.21
14:16
(13) а потом удалили и снова нарисовали.
индексы превысят количество, как обычно.
15 acht
 
03.09.21
14:16
(13) Тогда ответь на вопрос, что такое "первая колонка" =)
16 lodger
 
03.09.21
14:22
(15) для меня, это как минимум "колонка с именем N". потому что ТС заблуждается в формулировке.
17 b_ru
 
03.09.21
14:26
1С в школах что ли начали изучать, что с 1 сентября странные вопросы сыплются.
Вообще по постановке задачи надо так:

Для й = 1 По Элементы.СписокУчеников.ПодчиненныеЭлементы.Количество() - 1 Цикл
   Сообщить(Элементы.СписокУчеников.ПодчиненныеЭлементы[й]);
КонецЦикла;

Но (10) больше похоже на то, что имеет практический смысл
18 spectre1978
 
03.09.21
18:04
(1) а для каждого гарантирует порядок перебора с первого? У меня есть сомнения на этот счет
19 polosov
 
03.09.21
18:36
(18) Точно не гарантирует.
20 Вафель
 
03.09.21
20:26
(19) для колекций с доступом по индексу а ля массив, конечно гарантирует