Есть ли способ фильтрации на основе исторических данных? Например: "Покажите мне все объекты, у которых "Атрибут_X" == True на 01.01.2013"
Фильтровать ДВЕРИ по историческим данным
Ответы (1)
Как сказал Стив, для этого потребуется расширенный сценарий DXL.
Я не уверен в создании фильтра для этого, но идентифицируя те объекты, которые вы ищете, я мог бы помочь. Недавно решив подобную задачу, рекомендую начать с действительно отличного Smart History Viewer (этот код можно использовать в качестве учебника по DXL!), который содержит почти весь код, который вам нужен. Нужно просто найти и понять.
Позвольте мне уточнить. Помимо других отличных вещей, средство просмотра истории в основном делает:
Для всех (выбранных) базовых показателей, явно включая текущую версию без базовой линии: соберите все изменения модуля и поместите их в двумерный список пропуска для каждого изменения модуля/объекта/сеанса. Сосредоточьтесь на изменении объекта.
В коде есть неиспользуемая функция printObjectHistory
, которая помогает понять структуры данных. Посмотрите на внутренний цикл
for hist in skipHistory do
Внутри этого цикла учитывайте только изменения, произошедшие до «01.01.2013» (отметьте hist->HIST_DATE
, чтобы получить эту информацию). Код просмотра истории уже классифицировал обнаруженные изменения, поэтому следует следить за изменениями, содержащими строку «Изменить атрибут: атрибут_X». Присвойте новое значение буферу. Вне этого цикла проверьте, содержит ли буфер значение «True». Если да, то это один из объектов, которые вы хотели найти.