Имя: Пароль:
1C
1С v8
История изменения реквизитов
0 kydassov
 
16.10.15
15:58
Доброго дня, форумчане!
Появилась необходимость отслеживать историю изменения реквизитов документа. С шапкой документа проблем не возникло, а вот т табличными частями есть.

В качестве исходных данных сравниваю ТЧ Объекта и ТЧ Ссылки (новые и не сохраненные объекты контролировать ненужно). При сравнении построчно через метаданные определяю расхождение в строке и пишу в регистр сведений. Пример:

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

Где: табСсылка – ТЧ из ссылки на объект
     табОбъект – ТЧ из объекта


Но как проконтролировать ситуации, когда добавлялись или удалялись строки ума не приложу.

ГЛАВНОЕ: В документы нельзя добавлять новые реквизиты!
1 Господин ПЖ
 
16.10.15
15:59
в типовых уже все изобрели
2 zak555
 
16.10.15
15:59
версионирование
3 pessok
 
16.10.15
16:28
как же от типовго версионирования распухает база... Зачем она хранит ЦЕЛИКОМ каждую версию? Почему не разностно?
4 pessok
 
16.10.15
16:28
+ (3) это я не примере УПП ругаюсь
5 ДенисЧ
 
16.10.15
16:35
(3) Чтобы запись не тормозил
6 Mirnin
 
16.10.15
16:35
(3) Вероятно, чтобы можно было целиком восстановить прошлую версию, а не собирать её по кускам из всех изменений. Да и быстрее оно так. Настроить только нужно, чтобы не версировалось все-все. В идеале, проработать механизм очистки от лишних/ненужных версий.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан