Всем привет. Помогите советом.
Решаю задачу по поиску измененных строк табличной части с момента открытия формы до записи. Для этого нужны неизменные идентификаторы строк, чтобы связать строки до и после (удаленные и новые не очень интересны).
Первое, что приходит в голову, добавить реквизит табличной части объекта, заполняемый при открытии формы. Но конфигурация типовая, да и хранить в базе данные, которые нужны только на время существования формы как-то не очень хочется.
Пробовал использовать встроенный реквизит "ИсходныйНомерСтроки". Он прекрасно справляется со своей задачей, но только до первого сохранения объекта. После этого он почему-то всегда равен значению "НомерСтроки". А у меня таких сохранений до закрытия формы может быть сколько угодно, поэтому такой вариант отпадает.
Второй вариант, добавить "колонку реквизита" для табличной части формы. В базе не хранится, на время жизни формы данные сохраняет. Вроде то что нужно. Но не тут то было.. При любом обновлении объекта через ЗначениеВРеквизитФормы(Документ, "Объект") все реквизиты табличной части, которых нет в объекте очищаются. А это происходит практически при любом вызове метода модуля объекта. Т.е. получается, надо при каждом таком вызове сохранять табличную часть в таблицу значений и заливать ее обратно после. А если при этом в модуле объекта ТЧ как-то обрабатывается, так еще и логику этой обработки надо учитывать. В общем как-то не очень камильфо получается.
Может кто знает, как это можно решить более простым способом?
---
тогда только добавление реквизита ТЧ, в котором хранить уникальность строки. Можно УникальныйИдентификатор присваивать при добавлении строки.
---
Но конфигурация типовая, да и хранить в базе данные, которые нужны только на время существования формы как-то не очень хочется.
Можно добавить в расширение и сделать реквизитом формы
---
да с изменением конфигурации проблем нет, могу прямо в типовую добавить, просто не хочется хранить в базе лишние данные
---
ПолучитьИдентификатор() для каждой строки. Идентификаторы всегда уникальны для каждой строки ТЧ.
---
кажись работает, спасибо, буду пробовать!
---
нет, не вышел каменный цветок, идентификатор этот актуален только на момент получения и до первого обновления объекта. Соответственно, их надо обновлять перед каждым таким обновлением, а это ничем не лучше моего текущего варианта
---
идентификатор этот актуален только на момент получения и до первого обновления объекта.
В смысле? Идентификатор никогда не меняется. Даже если строки перемешать, идентификатор для каждой строки останется не изменен.
---
меняется после выполнения этого: ЗначениеВРеквизитФормы(Документ, "Объект")
---
это равнозначно: Очистить ТЧ и добавить новые строки.
---
не понял, при чем тут очистить ТЧ?
---
да при том, что по сути это замена всех данных ДанныеФормыКоллекции. Соответственно ТЧ очищается и заполняется новыми строками.
---
вот, сейчас проверил.
Такой код:

```1c
    ДокОбъект = РеквизитФормыВЗначение("Объект");
    ЗначениеВРеквизитФормы(ДокОбъект,"Объект");
```

Было: идентификаторы строк от 0 до 9.
Стали от 10 до 19.
Т.е. произошло удаление всех строк (очистка) и добавление новых строк (по содержимому аналогично удаленным).
---
все так, в этом и проблема
---
тогда только добавление реквизита ТЧ, в котором хранить уникальность строки. Можно УникальныйИдентификатор присваивать при добавлении строки.