Имя: Пароль:
1C
 
Очистить индекс выделенных строк в табличной части обработки
↓ (Волшебник 21.08.2024 09:27)
0 newtech
 
naïve
20.08.24
21:00
Проблема такая...
1. Есть обработка с табличной частью
2. По команде (Загрузить) загружаю в ТЧ некоторые данные (3 строки).Перед этим выполняю Объект.ТЧСписок.Очистить()
3. Выбираю нужные мне данные (к примеру 2 первые строки) и обрабатываю, используя МассивВыделенныхСтрок = ЭтаФорма.Элементы.ТЧСписок.ВыделенныеСтроки
получаем массив из 2 элементов, со значениями 0,1
4. Если не закрывая табличную часть, снова (с Объект.ТЧСписок.Очистить() ) загрузить данные начиная с П.2
то получаем массив из 2 элементов, со значениями 3,4. Из за чего получаю ошибку (Индекс находится за границами массива)

Как очистить индексы выделяемых строк, перед повторным заполнением ТЧ?
1 Волшебник
 
20.08.24
21:33
чушь
2 PR
 
20.08.24
21:41
(0) — Давай купим картошку
— Я вчера мешок купил, она что, вся испортилась?
— Нет она вся свекла

Я к тому, что не нужно заниматься всякой чушью типа "очистить индексы выделяемых строк"
Лучше потратить время на изучение предметной области, в частности такой вещи, как ИсходныйНомерСтроки
3 newtech
 
naïve
20.08.24
22:01
(1) Возможно не точно описал проблему. Дополню..

после заполнения ТЧ, выбираю только те строки которые меня интересуют, для дальнейшей обработки.

где получаю в МассивВыделенныхСтрок - список значений(Номера выделенных строк, выделяя через ctrl, в той последовательности, которая необходима).
далее...  массив передаю через     ПоказатьВопрос(Новый ОписаниеОповещения("ОтправитьПоАдресам", ЭтотОбъект, Новый Структура("МассивВыделенныхСтрок", МассивВыделенныхСтрок)), ТекстВопроса,РежимДиалогаВопрос.ДаНет);
далее...
М = ДополнительныеПараметры.МассивВыделенныхСтрок;
далее Для Каждого ТекСтрока Из  М Цикл
где получаю Объект.ТЧСписок[ТекСтрока].НужныеДанные

теперь если не закрывая ТЧ, снова загрузить и обработать вылетает ошибка.

возможно нужно поменять алгоритм обработки выделенных строк., натолкните на мысль..))
4 timurhv
 
20.08.24
22:22
5 newtech
 
naïve
20.08.24
23:08
(4) Да, уж ларчик просто открывается., СПАСИБО.
PS. прежде чем обратится сюда, убил сутки ))
Заменил НужныеДанные = Объект.ТЧСписок[ТекСтрока].НужныеДанные

на НужныеДанные = Объект.ТЧСписок.НайтиПоИдентификатору(ТекСтрока).НужныеДанные

и все зашелестело ))
6 Ненавижу 1С
 
21.08.24
08:34
Идентификатор строки это не ее индекс в источнике
7 PR
 
21.08.24
12:08
(5) А мог бы просто прочитать (2)
Но, видимо, чукча не читатель
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший