Сохранить кеш строки до её изменения пользователем. Сравнить после окончания редактирования, если надо выполнить нужные действия.
//1. На форме необходимо создать реквизит: КешТекущейСтроки - ПроизвольныйТип.
//2. В нужной табличной части создаём процедуру ПередНачаломИзменения, например такую:
&НаКлиенте
Процедура ПрикреплённыеФайлыНаСервереПередНачаломИзменения(Элемент, Отказ)
КешТекущейСтроки = ПреобразоватьСтрокуТаблицыВСтруктуру(Элемент.ТекущиеДанные, Элементы.ГруппаСтраницы.ПодчиненныеЭлементы.ГруппаПрисоединенныеФайлы.ПодчиненныеЭлементы.ПрикреплённыеФайлыНаСервере.ПодчиненныеЭлементы, "ПрикреплённыеФайлыНаСервере");
КонецПроцедуры
// 3. Добавить Процедуру ПреобразоватьСтрокуТаблицыВСтруктуру. В этой процедуре необходимо пропускать обработку колонок, которые взяты по ссылке из какого-то ссылочного реквизита (Ссылка.Реквизит), они не главные и их не обязательно помещать в структуру
// Возвращает структуру с ключами, соответствующими колонкам таблицы значений.
// Значения в структуре заполняются значениями полей из переданной строки таблицы.
//
// Параметры:
// ТекущаяСтрока - СтрокаТаблицыЗначений
// ПодчиненныеЭлементы - полный путь к подчиненным элементам табличной части (колонкам) на управляемых формах
// ИмяТаблица - имя таблицы на управляемой форме
// Возвращаемое значение:
// Структура
// лучше вынести функцию в общий модуль НаКлиенте
&НаКлиенте
Функция ПреобразоватьСтрокуТаблицыВСтруктуру(ТекущаяСтрока,ПодчиненныеЭлементы, ИмяТаблицы) Экспорт
РезультатСтруктура = Новый Структура;
Для Каждого Колонка Из ПодчиненныеЭлементы Цикл
Если Колонка.Имя = ИмяТаблицы+"Артикул" ИЛИ Колонка.Имя = ИмяТаблицы+"НомерСтроки" Тогда // вложенные в ссылку реквизиты исключаем, их пользователь не меняет
Продолжить;
КонецЕсли;
ИмяКолонки = СтрЗаменить(Колонка.Имя,ИмяТаблицы,"");
РезультатСтруктура.Вставить(ИмяКолонки, ТекущаяСтрока[ИмяКолонки]);
КонецЦикла;
Возврат РезультатСтруктура;
КонецФункции
// 4. Создаём процедуру ПриОкончанииРедактирования и в ней уже смотрим что изменилось в строке, после её редактирования, сопоставляем с кешированными данными в строке, например так:
&НаКлиенте
Процедура ПрикреплённыеФайлыНаСервереПередОкончаниемРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования, Отказ)
Если НоваяСтрока = Ложь И КешТекущейСтроки <> Неопределено Тогда
// проверяем сравниваем с кешированной строкой перед изменениями
Если КешТекущейСтроки.Имя <> "" И КешТекущейСтроки.Имя <> Элемент.ТекущиеДанные.Имя Тогда
// пишете код что надо сделать
КонецЕсли;
КонецЕсли;
КонецПроцедуры
{7} Переменной КешТекущейСтроки присвоено значение, но оно нигде не используется
ЗначенияДоступаПриОкончанииРедактирования (БСП)
ВидыДоступаПриОкончанииРедактирования (БСП)
ВосстановитьПорядокСтрокКоллекцииПослеРедактирования (БСП)
ТекущаяНастройкаРезервногоКопирования (БСП)
Выделение текущей строки в отчете
Проверка совпадения таблиц путем сравнения полного и внутреннего соединения