Случаются также ситуации, когда нужно изменить данные текущей строки на форме. Табличная часть на форме имеет тип ДанныеФормыКоллекция, соответственно вся задача сводится, к тому, что бы получить по уникальному идентификатору, ЭлементДанныеФормыКоллеция и изменить непосредственно его значение на клиенте. Для того чтоб найти нужную строку нужно к искомой таблице применить метод НайтиСтроки(). Далее у найденной строки получаем Идентификатор. И при помощи идентификатора непосредственно получаем ТекущуюСтроку. Код довольно таки простой. Оставлю его здесь, для понимания. Я использовал изменение количества товара на +1, если такой товар уже есть в табличной части документа.
&Вместо("ВнешнееСобытие")
&НаКлиенте
Процедура Расш1_ВнешнееСобытие(Источник, Событие, Данные)
Если ВводДоступен() Тогда
Если Событие = "Штрихкод" И ЗначениеЗаполнено(Данные) Тогда
СтруктураШК = ОбработатьДанныеПоШК(Данные);
Если СтруктураШК.Свойство("ШтрихкодНеНайден") Тогда
Сообщить("Штрихкод не присвоен ни одному товару");
КонецЕсли;
Если СтруктураШК.Свойство("НетНаОстатке") Тогда
Сообщить("Товара нет на остатке либо ему не назначена цена");
КонецЕсли;
Если СтруктураШК.Свойство("ТаблицаТоваров") Тогда
ОткрытьФорму("Документ.ПеремещениеТоваров.Форма.Расш1_ФормаВыбораПартии", СтруктураШК, ЭтаФорма);
КонецЕсли;
Если СтруктураШК.Свойство("ТолькоОдинТовар") Тогда
ВыбранноеЗначение = СтруктураШК.ТолькоОдинТовар[0];
//Сначала пробуем найти строку в таблице товаров
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Номенклатура", ВыбранноеЗначение[0]);
ПараметрыОтбора.Вставить("Характеристика", ВыбранноеЗначение[1]);
НайденнаяСтрока = Объект.Товары.НайтиСтроки(ПараметрыОтбора);
Если ЗначениеЗаполнено(НайденнаяСтрока) Тогда
Идент = НайденнаяСтрока[0].ПолучитьИдентификатор();
СтрокаТЧ = Объект.Товары.НайтиПоИдентификатору(Идент);
СтрокаТЧ.Количество = СтрокаТЧ.Количество + 1;
СтрокаТЧ.КоличествоУпаковок = СтрокаТЧ.КоличествоУпаковок + 1;
//Устанавливаем фокус на текущей строке
Элементы.Товары.ТекущаяСтрока = Идент;
ТекущийЭлемент = Элементы.ТоварыКоличествоУпаковок;
Иначе
стр = Объект.Товары.Добавить();
стр.Номенклатура = ВыбранноеЗначение[0];
стр.Характеристика = ВыбранноеЗначение[1];
стр.Упаковка = ПредопределенноеЗначение("Справочник.УпаковкиНоменклатуры.ПустаяСсылка");
стр.Цена = ВыбранноеЗначение[3];
Если ВыбранноеЗначение[3] > 0 Тогда
стр.ЦенаРозничная = РассчитатьРозничнуюЦену(ВыбранноеЗначение[3]);
КонецЕсли;
стр.Количество = 1;
стр.КоличествоУпаковок = 1;
стр.Сумма = Стр.Цена;
Идент = стр.ПолучитьИдентификатор();
ЗаполнитьРозничныеЦеныДокумента();
//Устанавливаем фокус на текущей строке
Элементы.Товары.ТекущаяСтрока = Идент;
ТекущийЭлемент = Элементы.ТоварыКоличествоУпаковок;
КонецЕсли;
КонецЕсли;
Иначе
Сообщить("Неверные данные по штрихкоду");
КонецЕсли;
//ПодключаемоеОборудованиеРТКлиент.ВнешнееСобытиеОборудования(ЭтотОбъект, Источник, Событие, Данные);
КонецЕсли;
КонецПроцедуры