ВыделенныеСтроки в табличной части

1. Gendelf 29.05.19 14:30 Сейчас в теме
Добрый день, подскажите пожалуйста в чем ошибка.

В обработке есть табчасть Контрагенты (4 строки). Необходимо получить выделенного контрагента из таблицы и создать документ. С помощью Элементы.Контрагенты.ВыделенныеСтроки получаю индекс выделенной строки и в цикле
СписокКонтрагентов.Добавить(Объект.Контрагенты[стр].Контрагент) получаю желаемый список.

Проблема в том, что при повторном обращении к выделенным строкам Элементы.Контрагенты.ВыделенныеСтроки[0] может равняться 5,6,7 и т.п. хотя строки всего 4. (!!!) Как заново получить актуальную выделенную строку?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. alex-l19041 8 29.05.19 14:42 Сейчас в теме
результат
Элементы.Контрагенты.ВыделенныеСтроки
сохраните и обращайтесь к нему
4. Gendelf 29.05.19 14:45 Сейчас в теме
(3) количество строк в табчасти может измениться и при активации строки снова отработает Элементы.Контрагенты.ВыделенныеСтроки и я получу какую то левую цифру. Выделил 1ую, а получу цифру 5.
т.е. мне нужно периодически получать актуальную выделенную строку
5. alex-l19041 8 29.05.19 14:46 Сейчас в теме
(4)
мне нужно периодически получать актуальную выделенную строку
- да
7. Gendelf 29.05.19 14:49 Сейчас в теме
(5) я вас не понял...

Вот код, мб понятнее будет
СписокКонтрагентов = новый СписокЗначений;
		Если Объект.Контрагенты.Количество() = 1 Тогда
			СписокКонтрагентов.Добавить(Объект.Контрагенты[0].Контрагент);	
		Иначе
			Для каждого стр из Элементы.Контрагенты.ВыделенныеСтроки Цикл
				СписокКонтрагентов.Добавить(Объект.Контрагенты[стр].Контрагент)	 //этот "стр" уходит в значение 5,6,7 и т.п.
			КонецЦикла;	
		КонецЕсли;
8. alex-l19041 8 29.05.19 14:53 Сейчас в теме
(7) перед циклом
Для каждого стр из Элементы.Контрагенты.ВыделенныеСтроки Цикл


МассивВыделенныхСтрок = Элементы.Контрагенты.ВыделенныеСтрок

и затем

Для каждого стр из МассивВыделенныхСтрок
9. Gendelf 29.05.19 14:56 Сейчас в теме
(8) тоже самое. Вот пробую. Даже вынес получение выделенных строк на клиент....
PS случайно выделил "решение" кнопки рядом...

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

КонецПроцедуры

Показать
10. пользователь 29.05.19 14:59
Сообщение было скрыто модератором.
...
2. SlavaKron 29.05.19 14:32 Сейчас в теме
Смотрите ТекущиеДанные Получить по идентификатору - должен быть подобный метод.
6. Gendelf 29.05.19 14:46 Сейчас в теме
(2) а этот метод поможет с выделенной строкой?
11. Gendelf 29.05.19 15:03 Сейчас в теме
вопрос актуальный, есть ещё предложения?
13. antz 29.05.19 15:12 Сейчас в теме
(11) ВыделенныеСтроки - это массив идентификаторов строк тч. Чтобы получить по идентификатору строку, нужно вызвать метод ТЧ НайтиПоИдентификатору.

СписокКонтрагентов.Добавить(Объект.Контрагенты.НайтиПоИдентификатору(стр).Контрагент)
14. Gendelf 29.05.19 15:13 Сейчас в теме
(13) блин, я уже новую тему создал, щас проверю.
15. Gendelf 29.05.19 15:21 Сейчас в теме
12. Gendelf 29.05.19 15:09 Сейчас в теме
или создать новую тему? с пометкой о решении, сюда никто не зайдет....
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот