Как получить родительский объект?

Автор Lavanda, 30.05.13, 11:25:33

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Lavanda

Здравствуйте!
Подскажите, пожалуйста!
Для ЛОЦМАН:PLM v11 делаю отчет. Нужно для выделенного объекта в дереве получить разузлованный набор всех входящих объектов (использую метод GetLinkedObjectsEx с разузловкой) с атрибутами (использую метод GetInfoAboutVersion режим 2). А объектов может быть много, т.е. в объект входят детали, стандартные изделия, сборочные единицы и комплекты, а в комплект входят еще сборочные единицы, в которые тоже входят сборочные единицы, детали и т.д. Дополнительно для каждого объекта нужены тип, имя (_PARENT_PRODUCT) и версия родительского объекта. Метод GetLinkedObjectsEx при boFullLink = True (т.е. с разузловкой) не возвращает поле _ID_LINK, по которому можно узнать родителя методом GetInfoAboutLink режмим2. Как мне получить для каждого объекта его родительский объект?  Может быть, можно как-то проще это сделать?

Lito 2

Добрый день.
Проще написать SQL запрос, и в нем получить разузлованный состав по всем уровням
В отчете получить данные с помощью

TableVS := [TABLE.FillBySQL_Ex(VS, [Объект.ID])];
TABLE.Reflect(TableVS,'TableReflect_1');

Когда создадите форму FR, то только ее и запускать.
+ Благодарностей: 1

Chaa

Можно просто использовать GetLinkedObjectsEx при boFullLink = False или GetLinkedFast или GetTree, и вызывать их рекурсивно, обходя дерево состава.
Если скорость работы принципиальна, то нужно писать хранимую процедуру и вызывать ее с помощью GetReport (см. "Отчеты по SQL-запросам" в Reports.chm).
+ Благодарностей: 1

Lavanda

Добрый день! Спасибо за советы  :)! Сделала через хранимую процедуру, так намного быстрее.