Имя: Пароль:
1C
1С v8
Обход табличной части документа с выбранной строки
0 buketovav
 
20.10.20
09:24
Добрый день, Уважаемые Форумчане!
Есть документ, есть ТЧ, у каждой из строк ТЧ есть поле типа Булево "Выбрать", как обойти ТЧ со строки (включая ее), у которой установлен флаг в этом поле, а предыдущие не трогать?

Я попробовал сделать обход с обратной стороны, работает, но как-то выглядит не очень красиво, может кто-нибудь подскажет более верный способ решения:

    Если ЗначениеЗаполнено(Объект.НоваяСтоимость) Тогда                    
            КоличествоСтрок = Объект.ГрафикПлатежей.Количество();
            Для СчетчикЦикла = 1 по КоличествоСтрок Цикл
                Объект.ГрафикПлатежей[КоличествоСтрок-СчетчикЦикла].Сумма = Объект.НоваяСтоимость;
                Если Объект.ГрафикПлатежей[КоличествоСтрок-СчетчикЦикла].Выбор = Истина Тогда
                    Объект.ГрафикПлатежей[КоличествоСтрок-СчетчикЦикла].Сумма = Объект.НоваяСтоимость;
                    Прервать;
                КонецЕсли;    
            КонецЦикла;        
        КонецЕсли;

Заранее всем огромное спасибо за помощь и подсказки! Хорошего дня!
1 Жан Пердежон
 
20.10.20
11:38
а если несколько строк отметить?
2 SleepyHead
 
гуру
20.10.20
11:39
(0) Обрабатываешь на сервере или клиенте?

На сервер можешь получить все строки с нужным отбором в массив строк, а потом обойти только эти строки
3 alkorolev
 
20.10.20
12:07
ИдентификаторТекущейСтроки = Элементы.ТвояТЧ.ТекущаяСтрока;
ИндексСтроки = ТвояТЧ.Индекс(ТвояТЧ.НайтиПоИдентификатору(ИдентификаторТекущейСтроки));
Пока ИндексСтроки < ТвояТЧ.Количество() Цикл
    ТекСтрока = ТвояТЧ.Получить(ИндексСтроки);
    ТекСтрока.Выбрать = Истина; // или что там должно быть?
    ИндексСтроки = ИндексСтроки + 1;
КонецЦикла;
4 alkorolev
 
20.10.20
12:09
если гарантируешь, что строки не могут менять порядок и состав, то 2ая строка необязательна: идентификатор будет соответствовать индексу
5 alkorolev
 
20.10.20
12:11
(2) массив строк и на клиенте получить можно. Причём здесь сервер?
6 buketovav
 
20.10.20
13:23
(1) система разрешает отметить только одну строку