Проблема DOORS DXL с зацикливанием отфильтрованного набора данных

У меня есть скрипт, в котором я фильтрую данные в модуле по определенному значению атрибута. Когда я затем перебираю эти объекты, на данный момент я показываю абсолютное количество объектов в информационном поле. Однако скрипт отображает абсолютное количество объектов, которых нет в наборе данных. После дальнейшего исследования я обнаружил, что дополнительные абсолютные числа были для каждой таблицы во всем модуле. Я не могу понять, почему скрипт включает эти таблицы, если их нет в отфильтрованных данных модуля. Я даже пытался вручную отфильтровать модуль по этому значению атрибута, а затем использовать «Инструменты -> Редактировать DXL», чтобы прокрутить полученные элементы, и он по-прежнему отображает числа для таблиц, которые не включены. Зачем это делать? Вот мой код:

bm2 = moduleVar
Filter fltr = contains(attribute "RCR_numbers", sRCRNum, false);
filtering on;
set(bm2, fltr);
for oObj in document(bm2) do {
    absNum = oObj."Absolute Number";
    infoBox("Object #" absNum ".");
}

Я также попытался удалить приведение документа, чтобы вместо этого было написано «для oObj в bm2 do», но это не меняет вывод. Почему код дает мне объекты, которых нет в фильтре? Любая помощь будет принята с благодарностью, так как это вопрос высокого приоритета для моего проекта, и у меня самого нет идей.

Крис


person Chris    schedule 19.04.2017    source источник
comment
Если вы просто запустите первые четыре строки кода (т. е. просто установите фильтр, но не будете считать), увидите ли вы ожидаемый набор объектов?   -  person Kirk Kittell    schedule 19.04.2017
comment
Да, я вижу объекты, которые должны быть там (т.е. нет таблиц).   -  person Chris    schedule 20.04.2017
comment
не уверен, правильно ли я понял ваш вопрос, но вам, возможно, придется изменить настройки отображения ваших модулей, используя разрешения «void showTables (bool)» и «void tableContents (bool)»   -  person Mike    schedule 21.04.2017


Ответы (1)


В DOORS 9.6 .1 Справочное руководство по DXL вы можете увидеть, что:

для объекта в документе

Присваивает переменной o каждый последующий объект в модуле. Он эквивалентен циклу for object in module, за исключением того, что он включает объекты заголовков таблицы, но не объекты заголовков строк и ячейки.

Таким образом, вы должны либо использовать для объекта в модуле, либо в существующем цикле проверить скрытый атрибут TableType — для него будет установлено значение TableNone. для всего, что не является частью таблицы, включая заголовки таблиц.

person Richard Hesketh    schedule 25.04.2017