Как проверить, что было изменено значение определенной колонке в ТЧ документе

1. Metabos 29 12.09.23 15:35 Сейчас в теме
Добрый день!
Есть самописная конфа. Надо записывать в регистр если поменяли значение в определенной колонке. Как это сделать?
По теме из базы знаний
Найденные решения
5. aka Любитель XML 12.09.23 16:16 Сейчас в теме
(3) методов куча для сравнения, вот например: https://infostart.ru/1c/tools/326983/
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. aka Любитель XML 12.09.23 15:48 Сейчас в теме
(1) есть событие ПриИзменении у ТЧ и у колонки ТЧ. Второй вариант: перед записью сравнивай данные ТЧ ЭтотОбъект.ТвояТЧ (измененные данные) и ЭтотОбъект.Ссылка.ТвояТЧ (первоначальные данные).
3. Metabos 29 12.09.23 16:11 Сейчас в теме
(2)Я думаю лучше проверять перед записью. Но вот как сравнивать ТЧ? Могли же какую-то удалить или новую добавить и переместить. Построчно не получится.
4. пользователь 12.09.23 16:15
Сообщение было скрыто модератором.
...
12. Metabos 29 12.09.23 18:33 Сейчас в теме
13. пользователь 12.09.23 18:35
Сообщение было скрыто модератором.
...
5. aka Любитель XML 12.09.23 16:16 Сейчас в теме
(3) методов куча для сравнения, вот например: https://infostart.ru/1c/tools/326983/
14. Metabos 29 18.09.23 13:35 Сейчас в теме
Попробовала по этой ссылке, выбрала 3.3. Соединение по индексу.
Но у меня не работает. В ТЧ 3 строки, если я меняю в последней, то все ок. А если в предпоследней, то не работает. Может быть дело в том, что я не правильно Измерения обозначила. В данном случае Измерения это что?
Функция РазницаТаблицЗначений(Таблица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.Индексы.Удалить(НовыйИндекс);
        
    Возврат Разница
    
КонецФункции
Показать
15. пользователь 18.09.23 14:08
Сообщение было скрыто модератором.
...
16. Metabos 29 18.09.23 17:16 Сейчас в теме
(15)Не знаю зачем. Просто скопипастила код из той статьи.
17. пользователь 18.09.23 17:17
Сообщение было скрыто модератором.
...
6. aka Любитель XML 12.09.23 16:17 Сейчас в теме
Мне когда нужно было сравнить - меняли что-то или нет - я использовал что-то типа ОбщегоНазначения.КоллекцииИдентичны (за точное название не отвечаю, по памяти пишу)
7. Metabos 29 12.09.23 16:19 Сейчас в теме
(6)Это в типовых такое есть. А тут какая то древняя самописка без бсп.
8. aka Любитель XML 12.09.23 16:21 Сейчас в теме
(7) см (5) - там полно вариантов решения твоей задачи
9. soft_wind 12.09.23 16:40 Сейчас в теме
ни кто не заморачивается такими проверками!!!,
просто переписываютданные регистра текущими данными (как обработка проведения)

а если актуально анализировать кто и что именно менял в документе, то включают историю изменения
10. aka Любитель XML 12.09.23 16:46 Сейчас в теме
(9) то, что у вас еще не было еще такой задачи - не обозначает, что никто не заморачивается. Я уже в 3 проектах подобные проверки делал, и не вариант там писать весь регистр
11. soft_wind 12.09.23 16:54 Сейчас в теме
так я г..код не пишу, это же не говорит о том что его нет!
просто без вашего анализа, перезаписать данные регистра
это 2-3 команды, а с анализом изменений 123 команды,
вот радости потом этот г...код дорабатывать....
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот