From b0948b87d2baf2facac54852891b5185374adb92 Mon Sep 17 00:00:00 2001 From: knorr Date: Sat, 27 Sep 2008 19:33:43 +0900 Subject: [PATCH] - added GetUserFields(objectName, tableName) or GetUserFields(aObject*, tableName) --- src/extensions/meta/aext_meta.cpp | 69 ++++++++++++++++++++++++++++++++++++- src/extensions/meta/aext_meta.h | 6 +++- 2 files changed, 73 insertions(+), 2 deletions(-) diff --git a/src/extensions/meta/aext_meta.cpp b/src/extensions/meta/aext_meta.cpp index b62ba9d..09cc1b7 100644 --- a/src/extensions/meta/aext_meta.cpp +++ b/src/extensions/meta/aext_meta.cpp @@ -31,6 +31,7 @@ #include #include +#include "aobject.h" #include "aext_meta.h" #include "adatabase.h" #include "alog.h" @@ -294,7 +295,7 @@ AExtMeta::GetId( QString& name ) * \brief Возвращает идентификатор объекта . * * \param obj - объект, идентификатор которого надо получить - * \return Уникальный идентификатор объекта метаданных + * \return Уникальный идентификатор объекта метаданных * * Пример использования * \code @@ -309,6 +310,72 @@ int AExtMeta::GetId( aObject * obj ) return db->cfg.id(obj->obj); } +/** + * \en + * \_en + * \ru + * \brief Возвращает список пользовательских полей об + * екта + * + * \param name - Полное имя объекта, см описание GetId() + * \return Список польховательских полей или пустой список. + * + * Пример использования + * \code + * meta = new Meta(); + * list = meta.GetUserFields("Catalogue.Товары"); + * \endcode + * \_ru + */ +QStringList AExtMeta::GetUserFields( QString name, QString table ) +{ + int n; + aCfgItem obj, cobj; + QStringList res; + if( !GetId(name) ) return res; + obj = db->cfg.find( GetId(name) ); + if(!table.isEmpty()) + { + obj = db->cfg.objTable( obj, db->cfg.id(db->cfg.findName(obj, md_table, table)) ); + } + else + { + obj = db->cfg.objTable( GetId(name), 0 ); + } + n = db->cfg.count ( obj, md_field ); + for (int i = 0; i < n; i++ ) + { + cobj = db->cfg.find( obj, md_field, i ); + if ( !cobj.isNull() ) + { + res << db->cfg.attr(cobj, mda_name); + } + } + return res; +} + +/** + * \en + * \_en + * \ru + * \brief Возвращает список пользовательских полей об + * екта + * + * \param obj - объект, идентификатор которого надо получить + * \return Список польховательских полей или пустой список. + * + * Пример использования + * \code + * cat = new Catalogue("Номенклатура"); + * meta = new Meta(); + * list = meta.GetUserFields(cat); + * \endcode + * \_ru + */ +QStringList AExtMeta::GetUserFields( aObject * aobj, QString table ) +{ + return GetUserFields( db->cfg.attr(aobj->obj, mda_name), table ); +} typedef AExtensionPlugin AExtMetaPlugin; A_EXPORT_PLUGIN( AExtMetaPlugin ) diff --git a/src/extensions/meta/aext_meta.h b/src/extensions/meta/aext_meta.h index 68bba0d..67cd990 100644 --- a/src/extensions/meta/aext_meta.h +++ b/src/extensions/meta/aext_meta.h @@ -35,6 +35,8 @@ #include "aextension.h" #include "acfg.h" +class aObject; + /** * \en * Class for work with meta data API from Ananas Script. @@ -73,7 +75,9 @@ public slots: QStringList DataTypes(const QString &className = NULL); QString StringOfDataTypes(const QString &className = NULL, const QString &separator = ":"); int GetId( QString& name ); - int GetId( aObject * obj ); + int GetId( aObject * obj ); + QStringList GetUserFields( QString name, QString table = QString::null ); + QStringList GetUserFields( aObject * obj, QString table = QString::null ); }; -- 1.7.1