Добрый день!
Есть самописная конфа. Надо записывать в регистр если поменяли значение в определенной колонке. Как это сделать?
---
методов куча для сравнения, вот например: https://infostart.ru/1c/tools/326983/
---
есть событие ПриИзменении у ТЧ и у колонки ТЧ. Второй вариант: перед записью сравнивай данные ТЧ ЭтотОбъект.ТвояТЧ (измененные данные) и ЭтотОбъект.Ссылка.ТвояТЧ (первоначальные данные).
---
Я думаю лучше проверять перед записью. Но вот как сравнивать ТЧ? Могли же какую-то удалить или новую добавить и переместить. Построчно не получится.
---
Сообщение было скрыто модератором.
---
Нет
---
Сообщение было скрыто модератором.
---
методов куча для сравнения, вот например: https://infostart.ru/1c/tools/326983/
---
Попробовала по этой ссылке, выбрала 3.3. Соединение по индексу.
Но у меня не работает. В ТЧ 3 строки, если я меняю в последней, то все ок. А если в предпоследней, то не работает. Может быть дело в том, что я не правильно Измерения обозначила. В данном случае Измерения это что?

```1c
    Функция РазницаТаблицЗначений(Таблица0, Таблица1, Измерения) Экспорт

    Отбор = Новый Структура(Измерения);

    Ресурсы = Новый Массив;
    Для ИндексКолонки = 0 По Таблица0.Колонки.Количество() - 1 Цикл
    Если НЕ Отбор.Свойство(Таблица0.Колонки[ИндексКолонки].Имя) Тогда
    Ресурсы.Добавить(ИндексКолонки)
    КонецЕсли
    КонецЦикла;

    Таблица1.Колонки.Добавить("Знак", Новый ОписаниеТипов("Число"));
    Таблица1.ЗаполнитьЗначения(1, "Знак");
    НовыйИндекс = Таблица1.Индексы.Добавить(Измерения);

    Разница = Таблица1.СкопироватьКолонки();

    Для Каждого Строка0 Из Таблица0 Цикл
    ЗаполнитьЗначенияСвойств(Отбор, Строка0);
    Строки1 = Таблица1.НайтиСтроки(Отбор);
    Если Строки1.Количество() = 0 Тогда
    ЗаполнитьЗначенияСвойств(Разница.Добавить(), Строка0)
    Иначе
    Строка1 = Строки1[0];
    Для Каждого Ресурс Из Ресурсы Цикл
    Если Строка0[Ресурс] <> Строка1[Ресурс] Тогда
    ЗаполнитьЗначенияСвойств(Разница.Добавить(), Строка0);
    ЗаполнитьЗначенияСвойств(Разница.Добавить(), Строка1);
    Прервать
    КонецЕсли
    КонецЦикла;
    Строка1.Знак = 0
    КонецЕсли
    КонецЦикла;

    Для Каждого Строка1 Из Таблица1.НайтиСтроки(Новый Структура("Знак", 1)) Цикл
    ЗаполнитьЗначенияСвойств(Разница.Добавить(), Строка1);
    КонецЦикла;

    Таблица1.Колонки.Удалить("Знак");
    Таблица1.Индексы.Удалить(НовыйИндекс);

    Возврат Разница

    КонецФункции
```
---
Сообщение было скрыто модератором.
---
Не знаю зачем. Просто скопипастила код из той статьи.
---
Сообщение было скрыто модератором.
---
Мне когда нужно было сравнить - меняли что-то или нет - я использовал что-то типа ОбщегоНазначения.КоллекцииИдентичны (за точное название не отвечаю, по памяти пишу)
---
Это в типовых такое есть. А тут какая то древняя самописка без бсп.
---
см (5) - там полно вариантов решения твоей задачи
---
ни кто не заморачивается такими проверками!!!,
просто переписываютданные регистра текущими данными (как обработка проведения)

а если актуально анализировать кто и что именно менял в документе, то включают историю изменения
---
то, что у вас еще не было еще такой задачи - не обозначает, что никто не заморачивается. Я уже в 3 проектах подобные проверки делал, и не вариант там писать весь регистр
---
так я г..код не пишу, это же не говорит о том что его нет!
просто без вашего анализа, перезаписать данные регистра
это 2-3 команды, а с анализом изменений 123 команды,
вот радости потом этот г...код дорабатывать....