From 31f43421b4aace733625051fe89f4a8404ad4e3e Mon Sep 17 00:00:00 2001 From: fishca Date: Thu, 12 Feb 2026 17:27:12 +0300 Subject: [PATCH] Fix constants display in metadata tree --- .gitignore | 1 + src/MainUnit.cpp | 21 +++++++++++-- src/MetaDataManager.cpp | 7 +++++ src/MetaDataManager.h | 3 ++ src/TConstants.cpp | 68 +++++++++++++++++++++++++++++++++++++++++ src/TConstants.h | 49 +++++++++++++++++++++++++++++ 6 files changed, 147 insertions(+), 2 deletions(-) create mode 100644 src/TConstants.cpp create mode 100644 src/TConstants.h diff --git a/.gitignore b/.gitignore index 39feb11..8cbcc37 100644 --- a/.gitignore +++ b/.gitignore @@ -69,6 +69,7 @@ __history/ # RAD Studio user settings *.dproj.local *.cbproj.local +Compile # Deployment files *.deployproj diff --git a/src/MainUnit.cpp b/src/MainUnit.cpp index 2b2a205..12fb069 100644 --- a/src/MainUnit.cpp +++ b/src/MainUnit.cpp @@ -37,6 +37,7 @@ #include "EventSubscriptions.h" #include "Roles.h" #include "CommonCommands.h" +#include "TConstants.h" #include "CommonPictures.h" #include "CommandGroups.h" #include "CommonForms.h" @@ -1556,6 +1557,19 @@ void __fastcall TMainForm::FillVirtualTree() { { FillTreeMD(parentNode, MainForm->mdCalculationRegisters, md_CalculationRegisters, category.imgIndex); } + else if (category.name == md_Constants) + { + // Константы + for (int i = 0; i < MainForm->mdConstants->Count; i++) + { + PVirtualNode childNodeConst = VirtualStringTreeValue1C->AddChild(parentNode); + VirtualTreeData *childDataConst = (VirtualTreeData*)VirtualStringTreeValue1C->GetNodeData(childNodeConst); + TConstants* CurConstant = static_cast(MainForm->mdConstants->Items[i]); + childDataConst->Name = CurConstant->name; + childDataConst->Age = 30; + childDataConst->ImgIndex = category.imgIndex; + } + } else if (category.name == md_InformationRegisters) { FillTreeMD(parentNode, MainForm->mdInformationRegisters, md_InformationRegisters, category.imgIndex); @@ -2996,7 +3010,10 @@ void fill_md(tree* tr, String guid_md, std::vector &md_list) else if (guid_md == GUID_WSReferences) {} else if (guid_md == GUID_Constants) - {} + { + TConstants* CurConstant = new TConstants(cf, curNode->get_value(), val); + MainForm->mdConstants->Add(CurConstant); + } else if (guid_md == GUID_Documents) { TDocuments* CurDocuments = new TDocuments(cf, curNode->get_value(), val); @@ -3183,7 +3200,7 @@ void get_cf_name(tree* tr, Messager* mess) // константы fill_md(tr, GUID_Constants, MainForm->Constants); - mess->AddMessage(L"Константы обработаны", MessageState::msInfo); + mess->AddMessage(L"Константы обработаны: " + IntToStr((int)MainForm->Constants.size()), MessageState::msInfo); // обработки fill_md(tr, GUID_DataProcessors, MainForm->DataProcessors); diff --git a/src/MetaDataManager.cpp b/src/MetaDataManager.cpp index 5139e50..0d80f01 100644 --- a/src/MetaDataManager.cpp +++ b/src/MetaDataManager.cpp @@ -12,6 +12,7 @@ #include "Bots.h" #include "CommonAttributes.h" #include "CommonCommands.h" +#include "TConstants.h" #include "CommandGroups.h" #include "CommonTemplates.h" #include "ExchangePlans.h" @@ -723,3 +724,9 @@ vector>& MetaDataManager::getInterfaces() { return Interfaces; } + +// Метод для получения списка констант +vector>& MetaDataManager::getConstants() +{ + return Constants; +} diff --git a/src/MetaDataManager.h b/src/MetaDataManager.h index 9a5c113..f212113 100644 --- a/src/MetaDataManager.h +++ b/src/MetaDataManager.h @@ -24,6 +24,7 @@ #include "Bots.h" #include "CommonAttributes.h" #include "CommonCommands.h" +#include "TConstants.h" #include "CommonTemplates.h" #include "CommandGroups.h" #include "ExchangePlans.h" @@ -47,6 +48,7 @@ class MetaDataManager { vector> Bots; vector> CommonAttributes; vector> CommonCommands; + vector> Constants; vector> CommonTemplates; vector> CommandGroups; vector> ExchangePlans; @@ -68,6 +70,7 @@ class MetaDataManager { vector>& getBots(); vector>& getCommonAttributes(); vector>& getCommonCommands(); + vector>& getConstants(); vector>& getCommonTemplates(); vector>& getCommandGroups(); vector>& getExchangePlans(); diff --git a/src/TConstants.cpp b/src/TConstants.cpp new file mode 100644 index 0000000..905a419 --- /dev/null +++ b/src/TConstants.cpp @@ -0,0 +1,68 @@ +//--------------------------------------------------------------------------- + +#pragma hdrstop + +#include "TConstants.h" +//--------------------------------------------------------------------------- +#pragma package(smart_init) + + +__fastcall TConstants::TConstants() : BaseMetadataObject() +{ + name = ""; +} + +__fastcall TConstants::TConstants(v8catalog* _parent, const String& _guid) : BaseMetadataObject(_parent, _guid) +{ + name = ""; +} + +__fastcall TConstants::TConstants(v8catalog* _parent, const String& _guid, const String& _name) : BaseMetadataObject(_parent, _guid, _name) +{ + name = _name; +} + +__fastcall TConstants::~TConstants() +{ +} + +String __fastcall TConstants::GetConstantsName() +{ + return name; +} + +void __fastcall TConstants::SetConstantsName(String _name) +{ + name = _name; +} + +std::vector>& TConstants::getAttributes() +{ + return attributes; +} + +std::vector>& TConstants::getCommands() +{ + return commands; +} + +std::vector>& TConstants::getLayouts() +{ + return layouts; +} + +std::vector>& TConstants::getTabularSections() +{ + return tabularSections; +} + +std::vector>& TConstants::getForms() +{ + return forms; +} + +void __fastcall TConstants::initializeFromTree() +{ + // Инициализация константы из дерева метаданных + // Имя константы уже установлено в конструкторе +} \ No newline at end of file diff --git a/src/TConstants.h b/src/TConstants.h new file mode 100644 index 0000000..1b2471c --- /dev/null +++ b/src/TConstants.h @@ -0,0 +1,49 @@ +//--------------------------------------------------------------------------- + +#ifndef TConstantsH +#define TConstantsH + +#include "BaseMetadataObject.h" +//--------------------------------------------------------------------------- + +/** + * @class TConstants + * @brief Класс для хранения констант (md_Constants) + * + * Константы - это объекты метаданных, которые содержат + * постоянные значения, используемые в различных частях конфигурации. + */ +class TConstants : public BaseMetadataObject +{ +private: + // constantsName хранится в унаследованном поле name из BaseMetadataObject + +public: + __fastcall TConstants(); + __fastcall TConstants(v8catalog* _parent, const String& _guid); + __fastcall TConstants(v8catalog* _parent, const String& _guid, const String& _name); + virtual __fastcall ~TConstants(); + + // Методы для получения имени константы + String __fastcall GetConstantsName(); + void __fastcall SetConstantsName(String _name); + + // Реализация виртуальных методов BaseMetadataObject + std::vector>& getAttributes() override; + std::vector>& getCommands() override; + std::vector>& getLayouts() override; + std::vector>& getTabularSections() override; + std::vector>& getForms() override; + + void __fastcall initializeFromTree() override; + +private: + // Внутренние хранилища для совместимости с интерфейсом + std::vector> attributes; + std::vector> commands; + std::vector> layouts; + std::vector> tabularSections; + std::vector> forms; +}; + +#endif \ No newline at end of file