Имя: Пароль:
1C
1С v8
Обработать выделенные строки в ТЧ - слетает нумерация при перезаполнении ТЧ
,
0 Double_Medved
 
15.01.17
13:32
Добрый день!
Подскажите пожалуйста, хотел все сделать быстро и красиво, а тут попался камушек и я споткнулся(((

Ковыряю неведомую программу Управляющий 8, редакция 1.4 (там все не как у людей, возможно дело в этом, но наверно дело в коде)

Задачка простая - сделать обработочку для группового изменения документов.
Заполняю табличную часть, в ТЧ ссылки на документы. Потом юзер в списке выделит какие нужны, и нажмет обработать (это такая фишечка - обрабатывать выделенные, предлагал сделать галочки вместо этого, но не катит)

Нахожу выделенные строки грубо говоря вот так:
СписокЗначенийВыделенныеЗаявкиДляОбработки = Новый СписокЗначений;
      
    СписокЗначенийВыделенныеЗаявкиДляОбработки.ЗагрузитьЗначения(ЭтаФорма.Элементы.ЗаявкиДляОбработки.ВыделенныеСтроки);
//ЗаявкиДляОбработки - табличная часть      
    СписокЗначенийВыделенныеЗаявкиДляОбработки.СортироватьПоЗначению();
      
    МассивВыделенныеЗаявкиДляОбработки = СписокЗначенийВыделенныеЗаявкиДляОбработки.ВыгрузитьЗначения();

    Если МассивВыделенныеЗаявкиДляОбработки.Количество()>0 Тогда
        Для Индекс = 0 По МассивВыделенныеЗаявкиДляОбработки.Количество() - 1 Цикл
            Сообщить(МассивВыделенныеЗаявкиДляОбработки[Индекс]);
        КонецЦикла;
    КонецЕсли;

Например в ТЧ 10 строк, индекс пишет 0-9, все норм.
Но вот косяк: когда я перезаполняю табличную часть, очищая ее при этом
Объект.ЗаявкиДляОбработки.Очистить();
, то индекс слетает и считается не с нуля а со следующего номера после конца предыдущей ТЧ.
Например в новой ТЧ 5 строк, и тут выделенные строки дают индекс 10-14!! и т.д. То есть при перезаполнении ТЧ выделенные строки считаются не с нуля, как надо, а с последнего номера в старой таблице! И вообще там получается индекс строки, а не ее содержимое (неделю назад делал так в списке документов, все работало, а тут никак) Подскажите, может как-то еще надо очищать ТЧ? Или я вообще делаю не так...
1 Неверный Параметр И
 
15.01.17
13:42
Еще одна жертва подхода "а ща мы тут сабелькой помашем".

Выделенная строка и текущая строка - это не индексы а идентификаторы. Про это даже в СП пишут. Там же написано про методы получения строк по идентификатору.
2 Double_Medved
 
15.01.17
13:50
(1) То есть там GUID? то там  не уникальный идентификатор длинный, там просто число
3 Double_Medved
 
15.01.17
13:51
(1) Я массив с выделенными строками правильно получаю?
4 Неверный Параметр И
 
15.01.17
13:51
(2) Ты не можешь себе представить числовой идентификатор?
5 Неверный Параметр И
 
15.01.17
13:52
(3) Ты получаешь массив идентификаторов выделенных строк.
6 Double_Medved
 
15.01.17
13:55
(2) Я постоянно гружу туда-сюда справочники и документы, привык что он длинный(
7 Double_Medved
 
15.01.17
13:56
(3)Глупый вопрос, но как получить строку по идентификатору? гугл отсылает на длинные идентификаторы
8 Неверный Параметр И
 
15.01.17
13:59
ДанныеФормыКоллекция (FormDataCollection)
НайтиПоИдентификатору (FindByID)
Синтаксис:

НайтиПоИдентификатору(<Идентификатор>)
Параметры:

<Идентификатор> (обязательный)

Тип: Число.
Идентификатор строки таблицы.
Возвращаемое значение:

Тип: ДанныеФормыЭлементКоллекции; Неопределено.
Неопределено - элемент не найден.
Описание:

Получает элемент коллекции по идентификатору.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
См. также:

ТаблицаФормы, свойство ВыделенныеСтроки
ТаблицаФормы, свойство ТекущийРодитель
ТаблицаФормы, свойство ТекущаяСтрока
9 Неверный Параметр И
 
15.01.17
13:59
Рановато тебе про "неведомую программу" и "там все не как у людей" выступать
10 Double_Medved
 
15.01.17
14:35
(8)Спасибо
11 Double_Medved
 
15.01.17
14:36
(9)Ладно, сегодня похлестаю себя плеткой сидя на коленях в темном углу
12 Неверный Параметр И
 
15.01.17
15:22
(11) И на горох! Это важно!
Оптимист верит, что мы живем в лучшем из миров. Пессимист боится, что так оно и есть.