Удаление дубликатов версий объектов (чистка регистра сведений "Версии объектов")

0. 3 17.10.20 08:00 Сейчас в теме
Из-за частого перепроведения документов и включенного версионирования очень разрослась база. Написал обработку, которая удаляет одинаковые версии.

Перейти к публикации

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Cyberhawk 124 24.10.20 13:00 Сейчас в теме
А каким образом определяется, одинаковая ли версия или нет?
4. A_Sa 3 26.10.20 17:19 Сейчас в теме
(1) Тупо сравниваются все реквизиты шапки и табличных частей :)
Если в одной из версий есть реквизит, а в другом его нет (добавили или удалили сам реквизит в конфигураторе), то проверяется заполненность значения данного реквизита в версии, где он присутствует.
Не очень элегантно и быстро, но мне главное был результат :)
Cyberhawk; +1 Ответить
2. Rokky78 26 26.10.20 12:11 Сейчас в теме
Тоже приходилось писать подобный инструмент для отраслевой конфигурации со старой БСП. Там механизм версионирования был, но в зачаточном состоянии. Но кроме этого инструмента (чтобы не чистить регистр все время), добавил в алгоритм при записи объекта запись только измененной версии. Т.е. сравнение версии происходит при записи объекта. Если новая версия такая же как предыдущая - запись версии не происходит. Больше ту обработку не вспоминаю :)

P.S. в моем случае сравнивались хэши данных Fast Infoset.
3. FatPanzer 9 26.10.20 12:20 Сейчас в теме
(2) Думаю, что тратить время на сравнение версий при при записи - не самый оптимальный вариант при высоконагруженных системах. Но, конечно, все зависит от прикладной логики.
5. A_Sa 3 26.10.20 17:22 Сейчас в теме
(2) Тоже думал над вариантом сравнения версий при записи объектов, но, как уже написал FatPanzer посчитал неоптимальным в плане нагрузки. Мне проще раз в месяц запускать эту обработку на выходных, когда пользователей в базе по минимуму.
6. user1464234 26.10.20 17:27 Сейчас в теме
А сравнивать сериализованное значение с записанным в историю не проще?
7. A_Sa 3 26.10.20 17:40 Сейчас в теме
(6) Имеете в виду: при записи объекта сравнивать? Просто в базе уже было накоплено куча версий и их нужно было почистить, поэтому обработка по удалению все-равно нужна. А дальше уже можно что-то сделать, чтоб эти версии не появлялись. И опять же, как писал раньше: мне сейчас проще раз в месяц на выходных запускать эту обработку :)
user1464234; +1 Ответить
Оставьте свое сообщение
Вопросы с вознаграждением