Модуль «SIMAI: Спасение данных»

В решении бесплатно предоставляется модуль SIMAI: Спасение данных.

Модуль предназначен для резервирования данных при изменении элементов инфоблоков. Модуль позволяется восстановить предыдущие состояния элементов информационных блоков, их свойств, в том числе и файлов. Также с помощью данного модуля можно восстановить удаленные элементы инфоблоков, свойства, прикрепленные файлы.

Возможности модуля:
  • Выбор инфоблоков для резервирования данных.
  • Массовое резервирование данных для всех элементов выбранного инфоблока.
  • Создание резервной копии элемента при его добавлении и изменении.
  • Настройка количества резервных копий.
  • Возможность отката на любое состояние.
  • Резервирование свойств и файлов.

Для работы с модулем нужно перейти в Администрирование и в разделе "Контент" найти пункт "Резервирование данных" (/bitrix/admin/simai_bu_index.php?lang=ru), выбрать в каких инфоблоках элементы будут бекапиться и сколько последних состояний элемента будет сохраняться. По умолчанию инфоблоки не выбраны, последних состояний три.



Состояния элементов бекапятся при добавлении и изменении элемента. Если после установки модуля элемент не изменялся, то его копий не будет.

Модуль бекапит поля элемента, его принадлежность к разделам и значения свойств. При этом дополнительно бекапится текущее состояние свойств инфоблока. Кроме того, один раз бекапится сам инфоблок и его тип со всеми языковыми привязками, эта информация в дальнейшем не меняется.

Дополнительно бекапятся файлы из таблицы для картинки анонса, дет. картинки и для файловых свойств. Это важно, поскольку если при обновлении пользователь затирает файл, то этот файл удаляется как из таблицы, так и физически с диска. При удалении элемента связанные с ним файлы также удаляются. Поэтому модуль бекапит информацию о файле в копию файловой таблицы и копирует сами файлы в папку /upload/simai_backup/, откуда они потом берутся для восстановления. Надо учитывать, что это требует значительного дополнительного места на диске.

Чтобы перейти к восстановлению, нужно зайти в "Резервирование данных" и там выбрать подпункт "Восстановление элементов".


Будет предложено выбрать нужный инфоблок. 

Например, переходим в новости.


Выбрав инфоблок, попадаем на страницу восстановления элементов. Здесь расположен фильтр, позволяющий подобрать нужный элемент и ниже список самих копий. Фильтр, кроме прочего, позволяет отделить копии удаленных элементов от копий существующих.

Для каждого элемента может быть по несколько копий, их число зависит от настроек модуля и от того, сколько раз элемент обновлялся после установки модуля.

 Выбрав нужную копию, запускаем ее восстановление.

Если инфоблок выбранного элемента был к этому моменту целиком удален, то он восстанавливается. Если был удален его тип, то восстанавливается и тип. Но надо учитывать, что информация об инфоблоке и типе записывается в модуле лишь один раз, поэтому к моменту восстановления могут быть не совсем актуальными. Свойства удаленного инфоблока восстанавливаются такими, какими они были на момент записи копии. Что касается разделов, то они не восстанавливаются (бекапирование разделов потребовало бы сохранения всех вложенных разделов и сильно усложнило бы модуль). Стоит учесть: инфоблок восстанавливается с сохранением значений свойств в общей таблице, даже если до того сохранял их в отдельных.

Если же тип и инфоблок существуют, то информация о них не меняется, сами свойства не обновляется. Модуль в этом случае восстанавливает элемент с привязками к разделам и значения свойств. Если тип свойства с момента сохранения копии изменился, это может вызвать определенные проблемы. Если свойство было удалено, оно не будет восстановлено. Картинка анонса, детальная картинка и файлы свойств восстанавливаются в файловой таблице и физически в папке upload со своими подпапками.

Есть возможность бекапа всех элементов инфоблока за один сеанс. Для этого на странице "Резервирование данных" надо щелкнуть по ссылке "Массовый бекап" для нужного инфоблока. Во всплывающем окошке будет кнопка для запуска массового бекапа при условии, что в инфоблоке имеется хоть один элемент. Массовый бекап работает через ajax.

Стоит помнить, что при увеличении числа сохраняемых состояний модуля его таблицы будут пропорционально разрастаться. Поэтому не стоит задавать число состояний более 5-7.