Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как начать перебор элементов табличной части в цикле со второго?

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

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

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

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

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

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.