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