Имя: Пароль:
1C
1С v8
Как обновить таблицу на форме
0 slafor
 
31.07.21
13:37
Наверное, на ерунде споткнулся, но никак не могу разобраться...

В документе есть табличная часть "Товары". Она заполняется при нажатии на кнопку "Заполнить". При этом, если таблица уже была заполнена, пользователю выдается вопрос "Перед заполнение табличная часть будет очищена. Продолжить?", и, если пользователь нажимает "Да", таблица "Товары" очищается и заполняется новыми данными.

В табличной части на форме используется процедура "Выбор" - то есть при двойном клике на строке ТЧ открывается выбранный элемент справочника "Номенклатура". Код выглядит примерно так:

&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    Если Поле.Имя = "Таблица1Номенклатура"
        Попытка
            ОткрытьЗначение(Объект.Товары[ВыбраннаяСтрока].Номенклатура);
        Исключение
        КонецПопытки;
    КонецЕсли;
КонецПроцедуры

Так вот, при первичном заполнении табличной части все в порядке. А при повторном и последующих Объект.Товары очищается, а ВыбранныхСтрок становится больше, т.е. они суммируются с теми строками, что были там до этого. И понятно, что при выборе, скажем, первой строки в таблице в поле "ВыбраннаяСтрока" у нас уже не "1", а 1 + количество строк до обновления.

Понимаю, что решить скорее всего просто, но не пойму как. Подскажите, пожалуйста.
1 acht
 
31.07.21
13:57
(0) ВыбраннаяСтрока - это не индекс. ВыбраннаяСтрока - это идентификатор. Для поиска соответствующих данных необходимо искользовать метод коллекции данных формы НайтиПоИдентификатору
2 slafor
 
31.07.21
14:27
(1) Заменил код на:

&НаКлиенте
Процедура ТоварыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    Если Поле.Имя = "Таблица1Номенклатура"
        Попытка
            ВыбСтрока = Объект.Товары.НайтиПоИдентификатору(ВыбраннаяСтрока);
            ОткрытьЗначение(ВыбСтрока.Номенклатура);
        Исключение
        КонецПопытки;
    КонецЕсли;
КонецПроцедуры

Помогло! Все работает, спасибо.
3 runoff_runoff
 
31.07.21
14:32
еще необходимо заменить давно устаревшее ОткрытьЗначение на ПоказатьЗначение..
4 acht
 
31.07.21
14:50
(2) Самое что интересное, в этом конкретном кейсе тебе будет достаточно обращения к Элемент.ТекущиеДанные