Фильтровать ДВЕРИ по историческим данным

Есть ли способ фильтрации на основе исторических данных? Например: "Покажите мне все объекты, у которых "Атрибут_X" == True на 01.01.2013"


person Derek    schedule 10.03.2015    source источник
comment
Вы можете сделать это, но для этого потребуется расширенный сценарий DXL, который просматривает историю каждого объекта и откатывает все изменения до указанной даты. Кроме того, если дата предшествует базовому плану, сценарию потребуется открыть базовый план, чтобы найти правильное значение.   -  person Steve Valliere    schedule 10.03.2015


Ответы (1)


Как сказал Стив, для этого потребуется расширенный сценарий DXL.

Я не уверен в создании фильтра для этого, но идентифицируя те объекты, которые вы ищете, я мог бы помочь. Недавно решив подобную задачу, рекомендую начать с действительно отличного Smart History Viewer (этот код можно использовать в качестве учебника по DXL!), который содержит почти весь код, который вам нужен. Нужно просто найти и понять.

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

Для всех (выбранных) базовых показателей, явно включая текущую версию без базовой линии: соберите все изменения модуля и поместите их в двумерный список пропуска для каждого изменения модуля/объекта/сеанса. Сосредоточьтесь на изменении объекта.

В коде есть неиспользуемая функция printObjectHistory, которая помогает понять структуры данных. Посмотрите на внутренний цикл

for hist in skipHistory do

Внутри этого цикла учитывайте только изменения, произошедшие до «01.01.2013» (отметьте hist->HIST_DATE, чтобы получить эту информацию). Код просмотра истории уже классифицировал обнаруженные изменения, поэтому следует следить за изменениями, содержащими строку «Изменить атрибут: атрибут_X». Присвойте новое значение буферу. Вне этого цикла проверьте, содержит ли буфер значение «True». Если да, то это один из объектов, которые вы хотели найти.

person Twonky    schedule 31.07.2015