Очистка регистра Версии Объектов от одинаковых версий

27.12.12

База данных - Чистка данных

Очистка регистра Версии Объектов от одинаковых версий

Скачать файлы

Наименование Файл Версия Размер
УдалениеОдинаковыхВерсий.epf
.epf 21,92Kb
317
.epf 21,92Kb 317 Скачать

После включения режима версионирования документов(справочников) регистр Версии объектов начинает очень быстро расти и становится одним из самых больших регистров сведений в базе. Учитывая что в этом регистре хранятся версии объектов, физический объем базы данных начинает расти пропорционально количеству записей.

Поискав на Инфостарте, я нашел только обработки которые удаляют записи регистра, но вместе с этими записи теряется история изменений объекта.

Рост регистра Версии объектов происходит не только после изменений документов, но и после массового проведения документов администратором, а так же если пользователь открыл документ и нажал на кнопку "ОК" (перепровел документ). Исходя из этого, следует что регистр хранит не только полезную информацию, но и кучу бесполезной - версии объектов, которым ничем не отличаются от предыдущих версий.

Предлагаю вашему вниманию обработку, которая анализирует версии объектов в этом регистре и удаляет версии в которых нет отличия от более старшей версии.

Работа обработки основана на типовом механизме сравнения двух объектов (с маленькой модификацией). Первая версия считается эталоном. Эталон сравнивается со следующей версии. Если в следующей версии есть изменения, то эта версия считается эталоном и сравнивается со следующей версией. Если в более младшей версии нет изменений по отношению к предыдущей, то эта версия удаляется.

Версия 1.1:

Добавил кнопки "Найти" и "Найти и удалить"

По кнопке "Анализ" теперь происходит расширенный анализ записей регистра сведений.

Версия 1.2:

Расширен функционал по поиску версий.

Добавил более информативное описание выбранного метода поиска.

Исправлены ошибки (типового механизма) при которых, в случае изменения метаданных, сравнение объектов заканчивалась неудачей.

См. также

Удаление данных с отбором и построением дерева ссылок в базах 1С 8.1-8.3 УТ 10.3./11, БП 2/3, ЗУП 2.5/3, КА 1.1/2, УНФ 1.6/3.0

Чистка данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:Управление торговлей 10 1С:Управление торговлей 11 Платные (руб)

Данные обработки помогут Вам легко и, главное быстро, выполнить удаление любых данных в Ваших базах 1С на платформах 8.1-8.3. Обработки помогут легко просмотреть связи ссылок в виде дерева, выбрать что удалять, а что нет, используя любые отборы. Это позволит уменьшить объем лишней и не нужной информации в справочниках и документах, планах видов характеристик и др. объектах и облегчит работу с данными пользователям и Вам. Понятное расположение команд и настроек, в сочетании с описанием и справкой, еще упростят процесс. (Обновление от 04.10.2023, версия 4.2)

9600 руб.

22.02.2013    135909    248    144    

418

Универсальное выборочное удаление данных из базы 1С (любые конфигурации на упр.формах: БП 3.0, УТ 11, КА 2, ERP, УНФ, ЗУП 3, Розница и т.д.)

Чистка данных Платформа 1С v8.3 Управляемые формы 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Платные (руб)

Обработка позволяет удобно выборочно удалить данные из базы 1С. Это могут быть как неиспользуемые элементы справочников, так и неактуальные организации. При этом есть возможность провести анализ пересечений документов с другими организациями и таким образом уберечься от того, что при удалении обороты по другой организации изменятся.

3350 руб.

28.11.2019    24309    46    16    

58

SALE! 10%

Выборочное удаление организаций из баз (управляемые формы), с удалением всех ссылающихся на эти организации данных

Чистка данных Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Платные (руб)

Позволяет удалить организации из любых программ на управляемых формах (БП 3.0, УТ 11, КА 2, ERP 2, ЗУП 3.0, УНФ, Розница 2.0 и пр.). Главное требование - программа должна содержать справочник "Организации". Реализован самый быстрый алгоритм непосредственного удаления объектов. Работает даже на базах большого размера. Для ускорения работы алгоритма не запускается проверка контроля ссылочной целостности. Проверку учета можно запустить отдельно с помощью дополнительной обработки. Необходимо перед удалением самостоятельно проверить базу на наличие перекрестных ссылок разных организаций в одном документе. Эту дополнительную обработку проверки перекрестных ссылок по запросу предоставляем бесплатно нашим покупателям.

3980 3582 руб.

16.03.2015    113697    181    75    

217

Замена Номенклатуры+Характеристики

Чистка данных Логистика, склад и ТМЦ Платформа 1С v8.3 План видов характеристик 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Настраиваемая обработка, позволяющая заменить пару: Номенклатура+Характеристика в документах, их движениях и независимых регистрах сведений. Без перепроведения. Поможет, если вы по каким-то причинам решили отказаться от характеристик

3600 руб.

04.08.2015    41109    88    70    

49

Удаление битых ссылок 1С в базе без монопольного режима

Чистка данных Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Если в вашей информационной базе крутится очень много данных, или база должна быть доступна 24/7 (как в моем случае), или же вы боитесь запускать тестирование и исправление, НО существует потребность удалить битые ссылки, тогда эта обработка сможет Вам помочь. Обработка выявляет битые ссылки как в самих объектах метаданных, так и в их табличных частях(!), а так же может их удалить.

2400 руб.

23.08.2021    9258    15    3    

20

Очистка дублей в синхронизированных базах (УТ, БП, РТ, УНФ)

Чистка данных Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Решение по удалению дублей позволяет определить связанные элементы в двух синхронизированных базах в качестве оригиналов и избежать необходимости ручного сравнения объектов в базах перед синхронизацией.

3960 руб.

27.06.2018    18804    10    3    

15

Очистка регистров сведений от записей по помеченным на удаление элементам

Чистка данных Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

в современных конфигурациях стало очень много регистров сведений, хранящих вспомогательную и периодическую информацию и администраторы информационных систем стали сталкиваться с проблемой удаления помеченных на удаление объектов, так как ссылки на них хранятся в многочисленных регистрах сведений. Помочь почистить базу от ненужных записей предназначенная данная внешняя обработка на управляемой форме, которая ищет записи во всех регистрах сведений по помеченным на удаление объектах и очищает по ним записи их после использования данной обработки дальше можно смело пользоваться типовой обработкой удаление помеченных на удаление и проблем с удалением не возникнет! Удачи всем!

1200 руб.

21.01.2022    7122    5    6    

9

Очистка кэша 1С. Исполнитель

Чистка данных Инструментарий разработчика Платформа 1С v8.3 Абонемент ($m)

Очередная вариативная очистка кэша 1С с помощью Исполнителя 3.0.2.2.

1 стартмани

25.10.2023    4530    4    SerVer1C    25    

22
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Новенький_2209 03.09.12 16:58 Сейчас в теме
Не пойму за что поставили минус публикации. Уж если ставишь минус - надо объяснять. Просто так - выглядит нелепо :)

По теме: всегда отключаем на внедрениях этот объект, т.к. на нормальных объема это все валится в полную ху-ла-лу. И если действительно есть потребность в каком-то логировании, то лучше смотреть в сторону сторонних решений, умеющих работать с скульными базами напрямую. Собственно и туда все логировать, коли нужно.
2. akomar 454 03.09.12 18:38 Сейчас в теме
Версии зло. При каждом новом обновлении базы приходится полностью удалять. Думаю грамотная настройка прав пользователей решает проблему необходимости использования версий. А за обработку + :)
3. worker1c 115 04.09.12 06:10 Сейчас в теме
(2) akomar, Не понимаю, почему при каждом обновлении приходится удалять версии? Сколько обновлялись, ещё ни разу не очищали регистр.
Версионирование помогает разруливать ситуации, в котором к одному документу имеют доступ несколько человек: Оператор набивает, комплектовщик проверяет и корректирует, а кладовщик проводит и отгружает. В этой ситуации сложно понять на каком этапе кто накосячил, если все клянутся что никто - ничего не менял! :)
Ещё пару раз версионирование спасало в таких ситуациях: После кучи модификаций в документе после изменения какого-то реквизита, стали очищаться или меняться другие реквизиты. После просмотра изменений легко найти закономерность.
4. akomar 454 04.09.12 21:36 Сейчас в теме
Из базы на 15 Гб - 5 Гб занимают версии объектов. После их удаления база начала шустрей работать.
5. Aleksey-29 05.09.12 10:42 Сейчас в теме
Предлагаю вместо флага "Удалять версии" добавить 2 кнопки на панель: "Найти" - поиск одинаковых версий объекта и "Найти и удалить" - название говорит само за себя. А так, обработка отличная!
6. Aleksey-29 05.09.12 13:57 Сейчас в теме
Интересненько:
Сообщить("Время выполнения: "+ (КоличествоОбъектов*2) +" сек");

Почему время исполнения - это количество объектов помноженное на 2?
7. worker1c 115 05.09.12 14:53 Сейчас в теме
(6) Aleksey-29, 2 = 2 сек. Я проверял на трех серверах работу обработки, каждый объект обрабатывается за время в интервале от 1 сек - 3 сек. Для оценки примерного времени выполнения я взял среднее. Согласен, что алгоритм оценки неидеальный и только примерный, и что надо было подробнее написать об этом в описании. Алгоритм более точной оценки времени я не придумал, а пользовался этой кнопкой следующим образом:
Запускаю обработку с количеством копий больше 1, программа мне выдает время 24 часа - я понимаю, что ждать столько не хочу, и ставлю количество копий больше 2 и т.д. пока не получу оптимальное для меня время. В следующей версии я или позволю пользователю самому выставлять среднее время обработки или сделаю другой функционал для кнопки Анализ.

(5) Aleksey-29, Согласен. Я обязательно учту пожелания в следующей версии.
8. anig99 2843 06.09.12 16:58 Сейчас в теме
У самого лежит недописанная конфа и обработки к ней - выгрузка регистра версий во внешнюю базу (и загрузка из неё по необходимости) и уже в этой базе - удаление дублей. Надо собраться и выложить
9. akomar 454 06.09.12 17:01 Сейчас в теме
Конечно выкладывай, от меня (+) гарантирован).
10. ander_ 08.09.12 12:12 Сейчас в теме
Несомненно полезная вещь, если нужда заставляет пользоваться версионированием. А не подскажет ли уважаемый ALL, как бы так писать только изменения. Н.р. изменился один реквизит, только его и пишем. Я ведь правильно понимаю, что стандартный механизм сериализует весь объект целиком?
11. Boog 50 17.09.12 11:36 Сейчас в теме
Маленькое уточнение:
Пусть в регистре есть 4 версии документа: (01.07); (05.07); (04.08); (06.08).
Первые 3 из них - одинаковые.
Т.е. после работы обработки в регистре останется 2 записи (04.08) и (06.08), и получится, что документ создан 04.08 и изменен 06.08. Так? Если так, то это не правильно - информация о моменте создания потеряна!
12. worker1c 115 17.09.12 14:59 Сейчас в теме
(11) Boog, Конечно же нет. В описании написано что первая версия - всегда эталон, а эталон меняется только при наличии изменений. После работы обработки останутся версии 01.07 и 06.08. Так как сначала будут сравниваться версии 01.07 и 05.07, при этом будет выяснено что версии идентичны и 05.07 будет удалена, а версия 01.07 будет сравниваться с версией 04.08 и т.д.
13. glek 119 19.09.12 12:11 Сейчас в теме
Хорошая идея. Давно витала в воздухе. Теперь надо будет еще подправить типовый механизм, чтобы записывал только изменения.
15. glek 119 19.09.12 16:51 Сейчас в теме
(14) Спасибо. Почему то прошло мимо
16. gull22 95 26.09.12 09:53 Сейчас в теме
Запустил в Комплексной автоматизации 1.1.24.2. Выдало ошибку
{Форма.Форма.Форма(1450)}: Поле объекта не обнаружено (КоличествоДней)
ЗначениеИзТЧ2 = СтрокаТЧ2[ИмяКолонки];
Будете править обработку?
17. worker1c 115 26.09.12 12:54 Сейчас в теме
(16) gull22, Очень странно, потому что этот модуль полностью типовой, без доработок. Скажите, для каких объектов у вас включено версионирование и работает ли сравнение этих объектов с помощью типового отчета?
27. m_gin 46 27.09.12 16:51 Сейчас в теме
Ошибка (16) появляется при работе функции

// Функция сравнивает значения двух строк (по значению) и возвращает 
// Истина, в случае если строки равны, иначе возвращает Ложь
// Предполагается что структура метаданных табличных частей  эквивалентна.
//
Функция СтрокиТЧРавны(СтрокаТЧ1, СтрокаТЧ2, Колонки)
	
Для Каждого Колонка Из Колонки Цикл
ИмяКолонки = Колонка.Имя;
ЗначениеИзТЧ1 = СтрокаТЧ1[ИмяКолонки];
ЗначениеИзТЧ2 = СтрокаТЧ2[ИмяКолонки];		
Если ЗначениеИзТЧ1 <> ЗначениеИзТЧ2 Тогда
Возврат Ложь;
КонецЕсли;
КонецЦикла;
Возврат Истина;
	
КонецФункции
Показать

А при всех ли вызовах этой функции есть уверенность, что
структура метаданных табличных частей эквивалентна
?
Может быть так подстраховаться:
Попытка
ЗначениеИзТЧ2 = СтрокаТЧ2[ИмяКолонки];
Исключение
Возврат Ложь;
КонецПопытки;
18. gull22 95 26.09.12 13:37 Сейчас в теме
Справочники все = Не версионировать . У части справочников поле Вариант версионирования = пусто. Это у новых элементов появившихся в процессе совершенствования программы с 2010 года.
Документы часть = Версионировать, часть = Версионировать при проведении.
У части документов поле Вариант версионирования = пусто. Честно не знаю как это воспринимается программой.
В основном прибегаю к проверке версий по докуменатм поступления ТМЦ и их списания. Штатный механизм работает по ним.
19. worker1c 115 26.09.12 14:20 Сейчас в теме
(18) gull22, Попробуйте выполнить следующий запрос, так мы поймем какие объекты у вас версионируются. Внимание! Запрос может выполняться долго

ВЫБРАТЬ РАЗЛИЧНЫЕ
ТИПЗНАЧЕНИЯ(ВерсииОбъектов.Объект) КАК ТипОбъекта
ИЗ
РегистрСведений.ВерсииОбъектов КАК ВерсииОбъектов

Ну, а потом один раз для каждого из типа объекта запустите сравнение с помощью типового отчета. Если ничего не вылетит, будем думать дальше. Но что-то мне подсказывает что на каком-то из объектов и типовой механизм даст сбой.
20. gull22 95 26.09.12 15:29 Сейчас в теме
Список сформировал, начал проверку. Первое на чем пока споткнулся - это документ "Документ расчетов с контрагентом (ручной учет)". При выборе этого типа документа в штатной обработке открывается сам документ от 30.09.2012, а не таблица с перечнем документов (как обычно).
21. gull22 95 26.09.12 16:09 Сейчас в теме
То же самое при выборе Документа "Регламентированный отчет", но разницу показывает
22. gull22 95 26.09.12 16:29 Сейчас в теме
Еще один не стандартное представлеие: документ "элекьронное письмо". Версия видна в штатной обработке.
23. gull22 95 26.09.12 16:45 Сейчас в теме
Список объектов получил на 128 прозиций, прогнал все через штатную обработку, работает по всем документам. Вот только отличается представление Журналов отдельных документов, о чем писал ранее.
Попробовал в штатной демо-версии версионировать документ "Документ расчетов с контрагентом (ручной учет)". Версии создаются, Ваша обработка их видит и обрабатывает.
24. worker1c 115 26.09.12 16:55 Сейчас в теме
(23) gull22, Спасибо за ваш труд. Переделаю обработку и вышлю вам. Будет показывать объекты которые обрабатывает. Может так хотя бы найдем объект на котором стопорится процесс. Выложу её позже.
25. worker1c 115 27.09.12 10:50 Сейчас в теме
(23) gull22, Изменил обработку. Работает в разы дольше. Осторожнее.
Прикрепленные файлы:
УдалениеОдинаковыхВерсийОтображение.epf
26. gull22 95 27.09.12 13:18 Сейчас в теме
Спасибо за отзывчивость. Запустил. При выборе количества версий 1, все равно выдала ошибку.
{Форма.Форма.Форма(1453)}: Поле объекта не обнаружено (КоличествоДней)
ЗначениеИзТЧ2 = СтрокаТЧ2[ИмяКолонки];
на документе "Отпуска организаций" (указала документ у которого 3 версии).Дата создания 01.03.2010 (перенесено из 1с7, при переходе на 1с8)
Увеличил количество версий до 2. Опять ошибка, опять на "Отпуска организаций", но уже более поздний - 08.10.2010 (количество версий у этого документа - тоже 3)(перенесено из 1с7, при переходе на 1с8)
Увеличил количество до 3. Опять ошибка, новый документ. Дата - 27.04.2011. Версий - 4.
Единственной что их объяединяет, это то что последний пользователь = Администратор. Как я понимаю возник он в результате обновлений релизов, когда поменялись объекты программы. Дата 31.10.2011. Предпоследние пользователя меняли документ от силы на 2 дня позже чем он был создан
28. unoDosTres 07.12.12 16:30 Сейчас в теме
механизм не является универсальным, как уже отмечалось выше, если объект в процессе использования конфы был изменен, добавлен новый реквизит допустим в ТЧ, тогда просто мы не сможем воспользоваться этой обработкой, а исключение не решает проблемы, если это изменение было введено допустим относительно недавно, а версионирование в базе ведется давно, и захотелось воспользоваться обработкой, то ничего хорошего отобработки ожидать не следуют, ибо основная часть кода взята из типового отчета ИсторияИзмененияОбъектов поэтому пичаль :(, ее можно допилить ограничив радиус проверки по дате изменений конфы, тогда она будет актуальна, но даты изменения надо знать - а их может быть много, или ограничить проверку определенными объектами, структура которых в процессе не менялись) короче бида ) но плюсик конечно лови
29. worker1c 115 27.12.12 10:26 Сейчас в теме
(28) unoDosTres, (26) gull22, Перезалил обработку с исправлением типового механизма. Попробуйте с помощью новой обработки произвести поиск и удаление одинаковых версий.
30. K_Tanusik 21.03.13 09:13 Сейчас в теме
Огромное спасибо за обработку. Она позволила уменьшить базу более чем ан 10 гигов. Это почти на 40%
31. echo77 1868 18.06.13 13:20 Сейчас в теме
Вот эта штука выполняет "Срез версий", т.е. удаляет все записи, кроме последней http://infostart.ru/public/191128/
32. Sean1s 8 17.07.13 06:45 Сейчас в теме
{Форма.Форма.Форма(583)}: Ошибка при вызове метода контекста (Добавить)
ТаблицаЗначений.Колонки.Добавить("Вер" + МассивНомеровВерсий[Индекс-1]);
по причине:
Неверное имя колонки
И тем не менее, за обработку однозначный "+".

Добавлено
Ага, всё понятно. Проблема в преобразовании числа больше 3х разрядов в текст: вставляется разделитель разрядов.
Т.е. обработка будет корректно работать при количестве версий до 999 или при нестандартных региональных настройках.
Решение
В строках 133 и 138 обработки нужно заменить "Выборка.НомерВерсии" на "Формат(Выборка.НомерВерсии,"ЧГ=0")".

ЗЫ. Возможно у (16) именно в этом было дело.
ЗЗЫ. У меня тоже комплексная. Платформа 8.3.3.641. Серверная.
link_l; strop; +2 Ответить
33. strop 11.11.14 13:45 Сейчас в теме
(32) Sean1s, ниже ещё есть строчка "Выборка.НомерВерсии", которую нужно поменять
34. VovkaPutin 31 06.08.15 08:27 Сейчас в теме
надо идти дальше - вырубить в конфе создание одинаковых версий
wowik; geron4; +2 Ответить
35. geron4 193 16.03.18 12:10 Сейчас в теме
(34) Сейчас они создаются (дубли), но по факту пустые, т.е. ХранилищеЗначений имеет тип Неопределено.
36. VovkaPutin 31 19.03.18 16:19 Сейчас в теме
(35)в моей публикации предложен способ отключения создания одинаковых версий
Оставьте свое сообщение