Проверка соответствия флага _IsActual последней версии метаданных
Возникающие ситуации:
При использовании Истории данных
периодически встречается ситуация, когда
- добавленный в метаданные реквизит объекта не виден в отчетах версий объекта, при сравнении версий
- при переходе на версию не восстанавливается
- в стандартной обработке в списке полей для фильрации новые реквизиты не видны
Описание причины:
При добавлении новой версии метаданных у предыдущей остается флаг _IsActual = 0х01 (должен установиться 0х00)
Из-за этого все версии объекта "прикрепляются" к первой попавшейся (самой старой) версии метаданных, в которой нет добавляемых реквизитов
При реструктуризациях новая версия метаданных в _DataHistoryMetadata
может не создаваться (объект при множестве изменений содержит всего одну версию). Решение ниже >>
CheckMetadata_IsActual.sql
- проверка существования проблемных объектов
RestoreMetadata_IsActual.sql
- исправление (исправляет IsActual и обновляет версию метаданных у объекта)
Известные варианты обхода подобного зависания:
- включить в конфигураторе у объекта ИсторияДанных: Использовать, обновиться, потом можно выключить. При этом в
_DataHistoryMetadata
создадутся явно кривые, пугающие записи. Не рекомендую использовать. - через Инструменты обработчика 1C обработкой история данных выключить-включить историю любого реквизита проблемного объекта. Добавится 4 новые версии метаданных. Первая (последняя до добавления) предположительно останется с флагом
_IsActual = 0x01
. Если это так, то скриптRestoreMetadata_IsActual.sql
автоматически исправит и дублирование флагов, и версии метаданных у записей истории. Если дублирования флага не произошло, то требуется самостоятельно в таблице_DataHistoryVersions
установить те версии метаданных версий объектов (_MetadataVersionNumber
), которые владелец БД считает логически верными.