Администрирование · 12 мин
Как в 1С удалить историю изменения документа
Как удалить историю изменений документа в 1С: очистка версионирования объектов, отключение механизма, удаление записей через обработку и код. Риски и проверка результата.
История изменения документа в 1С — это записи механизма версионирования объектов, который фиксирует, кто, когда и какие данные изменил в документе. Со временем такие записи накапливаются в информационной базе, увеличивают её размер и могут замедлять работу. Удалить историю можно штатными средствами конфигурации, через встроенную обработку очистки или программным путём.
Прежде чем что-либо удалять, важно понять, какой именно механизм используется в вашей конфигурации. В типовых решениях на базе Библиотеки стандартных подсистем (БСП) — «Управление торговлей», «ERP», «Бухгалтерия предприятия», «Зарплата и управление персоналом» — применяется подсистема «Версионирование объектов», и история хранится в регистре сведений «Версии объектов». В самописных конфигурациях история может вестись собственными регистрами или журналами.
Второй важный момент — различие между историей версионирования и журналом регистрации. Журнал регистрации фиксирует факт записи документа, но не хранит сами значения реквизитов до и после изменения. Очистка журнала регистрации выполняется отдельно и по другим правилам. В этой статье речь идёт именно о версиях объектов — сохранённых снимках данных документа.
Где 1С хранит историю изменений документов
В конфигурациях на базе БСП версии объектов сохраняются в регистре сведений «Версии объектов». Каждая запись содержит ссылку на объект, номер версии, дату и автора изменения, а также сериализованные данные объекта — фактически полный снимок документа на момент записи. Именно из-за хранения снимков регистр быстро разрастается на активно используемых базах.
Посмотреть историю конкретного документа можно из формы самого документа: команда «Ещё» → «История изменений» (в некоторых конфигурациях — «Перейти» → «История изменений»). Если команда отсутствует, версионирование для этого вида объектов не включено или отсутствует в конфигурации вообще.
Общие настройки механизма находятся в разделе администрирования: «Настройки программы» → «Поддержка и обслуживание» → «Версионирование объектов» (точный путь зависит от конфигурации). Там же обычно доступна команда перехода к списку хранимых версий и настройка сроков хранения.
Подготовка: резервная копия и проверка прав
Удаление версий — необратимая операция: восстановить очищенные записи штатными средствами нельзя. Поэтому первый шаг всегда один — создание резервной копии. Для файловой базы достаточно скопировать файл 1Cv8.1CD при отсутствии активных сеансов или выполнить выгрузку в dt через конфигуратор («Администрирование» → «Выгрузить информационную базу»). Для клиент-серверной базы используйте средства СУБД или выгрузку dt.
Для очистки версий потребуются права администратора или роль с доступом к настройкам версионирования и к регистру «Версии объектов». Если вы работаете под учётной записью рядового пользователя, команды очистки могут быть недоступны — в этом случае операцию должен выполнять администратор базы.
Дополнительно проверьте, не используется ли история изменений в регламентированных процессах: внутреннем аудите, разборе расхождений, расследовании инцидентов. Если версии нужны для отчётности перед аудиторами или службой безопасности, согласуйте очистку заранее и зафиксируйте период, за который история сохраняется.
Способ 1. Штатная очистка устаревших версий
В типовых конфигурациях предусмотрен безопасный штатный механизм очистки. В разделе «Поддержка и обслуживание» рядом с настройкой версионирования доступна команда «Очистить устаревшие версии объектов» (название может незначительно отличаться). Она удаляет версии, срок хранения которых истёк согласно настройкам.
Сроки хранения задаются для каждого вида объектов отдельно: например, для документов «Реализация товаров и услуг» можно установить хранение версий за последние три месяца, а для справочников — без ограничения. Варианты обычно включают «хранить все версии», «хранить за период» и «не хранить». Установив срок хранения и запустив очистку, вы удалите только устаревшие записи, сохранив свежую историю.
Очистка может выполняться и автоматически регламентным заданием. Проверьте в разделе «Регламентные и фоновые задания» задание, отвечающее за очистку устаревших версий: если оно включено и настроено расписание, история будет удаляться регулярно без ручного вмешательства.
- 1Сделайте резервную копию базы (выгрузка dt или копия файла 1Cv8.1CD)
- 2Откройте «Настройки программы» → «Поддержка и обслуживание» → «Версионирование объектов»
- 3Установите сроки хранения версий для нужных видов объектов
- 4Запустите команду «Очистить устаревшие версии объектов» и дождитесь завершения
- 5Проверьте результат: откройте историю изменений документа и размер регистра
Способ 2. Отключение версионирования для вида документов
Если цель — не просто удалить накопленную историю, а прекратить её ведение, отключите версионирование для соответствующих видов объектов. В настройках версионирования для каждого вида документов можно выбрать вариант «Не версионировать». После этого новые записи в регистр создаваться не будут.
Отключение механизма не удаляет уже накопленные версии — их нужно очистить отдельно описанным выше способом. Комбинация «отключить версионирование + очистить устаревшие версии» полностью решает задачу: история удалена и больше не накапливается.
Учтите, что после отключения версионирования вы теряете возможность восстановления данных документа из версии и просмотра, кто изменил конкретный реквизит. Для документов, по которым важен аудит изменений (ценовые соглашения, кассовые документы, кадровые приказы), отключать версионирование следует осознанно.
Как выбрать действие
Способ 3. Программное удаление записей регистра «Версии объектов»
Когда нужно удалить историю выборочно — например, по конкретному документу или за произвольный период, не совпадающий с настройками сроков хранения, — используют программную очистку регистра. Это делается через консоль кода (внешнюю обработку «Консоль кода» или аналог) либо через самописную обработку в режиме предприятия.
Логика проста: создаётся набор записей регистра сведений «Версии объектов», на измерение «Объект» устанавливается отбор по ссылке на нужный документ, затем набор записывается с замещением — пустой набор удаляет отобранные записи. Для массовой очистки за период записи удаляются порциями с отбором по дате версии, чтобы не блокировать таблицу надолго.
НаборЗаписей = РегистрыСведений.ВерсииОбъектов.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Объект.Установить(СсылкаНаДокумент);
НаборЗаписей.Записать(Истина); // удаляет все версии этого документаПрограммную очистку больших объёмов выполняйте в монопольном режиме или в период минимальной нагрузки. Удаление миллионов записей одной транзакцией может привести к длительной блокировке таблицы регистра и тайм-аутам у пользователей. Разбивайте операцию на порции по несколько тысяч записей с фиксацией транзакции после каждой порции.
Очистка истории в самописных конфигурациях
Если конфигурация не использует БСП, история изменений может храниться в собственном регистре сведений, регистре накопления или даже в отдельном справочнике. Чтобы найти место хранения, откройте конфигуратор и выполните поиск по метаданным: ищите объекты со словами «История», «Версии», «Изменения» в имени или синониме. Также полезен поиск ссылки на документ во всех регистрах через «Поиск ссылок на объект».
Очистка такого регистра выполняется стандартными средствами платформы: программным созданием пустого набора записей с отбором или через универсальные обработки группового изменения и удаления данных. Для полной очистки регистра сведений без отбора подойдёт метод очистки через набор записей без установленных отборов.
Если история реализована через подписки на события записи документов, после очистки регистра отключите или перенастройте соответствующую подписку, иначе записи продолжат создаваться. Подписки находятся в ветке «Общие» → «Подписки на события» дерева конфигурации.
Проверка результата и типичные ошибки
После очистки убедитесь, что задача решена полностью. Откройте историю изменений тестового документа — список версий должен быть пустым или содержать только записи в пределах установленного срока хранения. Дополнительно оцените количество записей регистра «Версии объектов»: в файловой базе это можно сделать через «Стандартные» → «Получить информацию о базе данных» в конфигураторе или через отчёт по размеру таблиц.
Проведите контрольную запись документа: если версионирование отключено, новая версия в регистре появиться не должна. Если запись появилась — версионирование для этого вида объектов осталось включённым, либо его включает расширение конфигурации или дополнительная подписка на события.
Как проверить результат
Список версий пуст или содержит только записи в пределах срока хранения
Старые версии на месте — очистка не выполнялась или завершилась с ошибкой
Новая версия в регистре не создаётся
Версия создаётся — механизм всё ещё активен
Число записей заметно уменьшилось
Количество не изменилось — очищался не тот регистр или другая база
Часто задаваемые вопросы
Можно ли восстановить историю изменений после удаления?
Нет, штатными средствами восстановить удалённые версии нельзя. Единственный вариант — восстановить базу из резервной копии, сделанной до очистки, и перенести нужные данные. Поэтому резервное копирование перед очисткой обязательно.
Почему после удаления версий файл базы не уменьшился?
Платформа и СУБД не всегда возвращают освобождённое место операционной системе сразу — оно остаётся зарезервированным внутри файлов базы. Для физического уменьшения размера в файловом варианте используйте тестирование и исправление с реструктуризацией или выгрузку/загрузку через dt, в клиент-серверном — штатные средства сжатия СУБД.
Как удалить историю изменений только одного документа?
Откройте консоль кода, создайте набор записей регистра сведений «Версии объектов», установите отбор по измерению «Объект» со ссылкой на нужный документ и запишите пустой набор с замещением. Все версии этого документа будут удалены, остальные записи не пострадают.
Чем очистка версий отличается от сокращения журнала регистрации?
Версии объектов хранят сами данные документа на момент изменения и позволяют восстановить значения реквизитов. Журнал регистрации фиксирует только факт события (кто и когда записал документ) без содержимого. Сокращение журнала выполняется в конфигураторе через «Администрирование» → «Журнал регистрации» → «Сократить» и не влияет на версии объектов.
Удалится ли история изменений при свёртке базы?
Штатная свёртка базы удаляет документы прошлых периодов, а вместе с ними, как правило, становятся бессмысленными и их версии. Однако сама по себе свёртка не гарантирует полную очистку регистра версий — после свёртки рекомендуется дополнительно запустить очистку устаревших версий.
Что важно запомнить
История изменений документов в типовых 1С хранится в регистре сведений «Версии объектов». Удаляйте её штатной очисткой устаревших версий после настройки сроков хранения либо программным удалением записей с отбором. Всегда делайте резервную копию, при необходимости отключайте само версионирование и проверяйте результат по истории документа и размеру регистра.