Работа с механизмом ИсторияДанных часто вызывает вопросы у разработчиков, особенно когда требуется найти информацию об уже удаленных записях. Давайте разберемся, как устроен этот процесс, чем он отличается от привычного версионирования и как эффективно извлекать данные.
Прежде всего, важно разделять два механизма, которые часто путают:
Стандартная обработка История изменений в большинстве типовых конфигураций (например, БП 3.0) ориентирована именно на версионирование БСП. Если вы не видите там данных по своему объекту, скорее всего, у вас включена только платформенная История данных, но не настроено прикладное версионирование.
Для того чтобы записи стали доступны для анализа, необходимо выполнить их перенос из очереди версий в физические таблицы истории. Платформа делает это автоматически с определенной задержкой, но для оперативного доступа мы можем инициировать процесс вручную.
Способ через стандартную обработку:
Функции технического специалиста — Стандартные).Ещё — Управление историей данных.Обновить историю.После этой операции данные будут перенесены, и вы сможете увидеть их в отчетах или при программном обращении.
Если вам нужно получить данные об удаленных записях программно, не создавая «копий» объектов, используйте объект ИсторияДанных. Рассмотрим пример того, как это реализовать.
Для начала нам нужно отобрать версии с видом изменения Удаление. Воспользуемся методом ИсторияДанных.ВыбратьВерсии():
// Определяем отбор
Отбор = Новый Структура;
Отбор.Вставить("Метаданные", Метаданные.РегистрыСведений.ВашРегистр);
Отбор.Вставить("ВидИзмененияДанных", ВидИзмененияДанных.Удаление);
// Выбираем версии
ТабВерсий = ИсторияДанных.ВыбратьВерсии(Отбор, "НомерВерсии, Дата, Пользователь, ВидИзмененияДанных", , 1);
Для каждого Версия Из ТабВерсий Цикл
// Получаем данные конкретной версии
ДанныеОбъекта = Версия.ПолучитьДанные();
// Теперь можно анализировать значения полей, которые были удалены
КонецЦикла;
Важные замечания:
ПолучитьДанные() возвращает структуру или объект, содержащий значения полей на момент сохранения версии. Это позволяет увидеть, какие именно данные были удалены.DataHistory.История данных.Если вы заходите в История изменений и не видите ничего, даже после выбора типа документа или регистра, проверьте следующее:
Управление историей данных, как описано выше.Используя сочетание инструментов платформы и программного обращения к ИсторияДанных, вы сможете эффективно отслеживать любые изменения, включая удаление записей, без необходимости выполнения лишних манипуляций в базе данных.