Как посмотреть историю изменений удаленной записи регистра сведений с опцией «История данных»?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Понимание различий: История данных vs Версионирование

Прежде всего, важно разделять два механизма, которые часто путают:

  1. История данных (платформенная): Это встроенный механизм 1С:Предприятия, который фиксирует изменения на уровне СУБД. Он работает быстро, потребляет меньше ресурсов и предназначен для аудита изменений в базе данных.
  2. Версионирование (БСП): Это прикладной механизм, сохраняющий полные копии объектов в формате XML. Он более информативен для пользователя, но требует значительно больше места в базе данных.

Стандартная обработка История изменений в большинстве типовых конфигураций (например, БП 3.0) ориентирована именно на версионирование БСП. Если вы не видите там данных по своему объекту, скорее всего, у вас включена только платформенная История данных, но не настроено прикладное версионирование.

Как обеспечить доступность данных для анализа

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

Способ через стандартную обработку:

  1. Откройте стандартную обработку платформы (обычно доступна через Функции технического специалиста — Стандартные).
  2. Перейдите в меню Ещё — Управление историей данных.
  3. Выберите пункт Обновить историю.

После этой операции данные будут перенесены, и вы сможете увидеть их в отчетах или при программном обращении.

Программное получение истории удаленных записей

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

Для начала нам нужно отобрать версии с видом изменения Удаление. Воспользуемся методом ИсторияДанных.ВыбратьВерсии():


// Определяем отбор
Отбор = Новый Структура;
Отбор.Вставить("Метаданные", Метаданные.РегистрыСведений.ВашРегистр);
Отбор.Вставить("ВидИзмененияДанных", ВидИзмененияДанных.Удаление);

// Выбираем версии
ТабВерсий = ИсторияДанных.ВыбратьВерсии(Отбор, "НомерВерсии, Дата, Пользователь, ВидИзмененияДанных", , 1);

Для каждого Версия Из ТабВерсий Цикл
    // Получаем данные конкретной версии
    ДанныеОбъекта = Версия.ПолучитьДанные();
    // Теперь можно анализировать значения полей, которые были удалены
КонецЦикла;

Важные замечания:

Почему отборы могут не работать?

Если вы заходите в История изменений и не видите ничего, даже после выбора типа документа или регистра, проверьте следующее:

  1. Включение истории: Убедитесь, что механизм включен именно для вашего объекта метаданных.
  2. Обновление истории: Выполните принудительное обновление через Управление историей данных, как описано выше.
  3. Права пользователя: Проверьте, есть ли у пользователя права на чтение объекта.

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

← На главную