Хранилище настроек (постановка)
Необходимо так организовать хранение данных и метаданных настроек, чтобы было невозможно затирание новых изменений функции, например, функцией более старой версии из другой настройки. В статье Сохранение настройки в нескольких файлах (постановка) предлагается хранить тексты функций, форм и других значимых объектов вне файла настройки.
Возможно несколько способов организации:
На все хранилище имеется одна папка с подчиненными настройке файлами
В этом случае при сохранении мы всегда указываем корневую папку хранилища. Главный файл настройки сохраняется в корне папки setting (или в папку соответствующую тегу, типу настройки), подчиненные файлы помещаются в папку хранения кода - data. Папка хранения кода будет содержать файлы vbs, dfm, fr, fr4, sql, содержащие логику работы приложения.
Получается следующая иерархия папок:
- setting\
- data\
- function\
- Acc_CalcNormExpenses.vbs
- Tgdc_dlgGoodBeforePost.vbs
- TgdcInvDocument147006557_63934951_DoOnNewRecord.vbs
- form\
- usrf_acc_taxposition.dfm
- gdc_dlgAttrUserDefinedTreeUSR_ACC_TAXPOSITION.dfm
- gdc_frmInvDocument147013038_109092844.dfm
- report\
- Приход_в_ценах_поставщика..fr
- Драг_металы.fr4
- stored_procedure\
- USR$AC_GETADDSUM.sql
- USR$FA_P_YEAR_BETWEEN.sql
- trigger\
- USR$INV_INVENTLINE.USR$BI_USR$INV_INVENTLINE.sql
- USR$INV_CAR.USR$USR$INV_BI_CAR_NAME.sql
- function\
- Мат_склад_макросы.xml
- Общие_данные.xml
- data\
При сохранении настройки не в хранилище настроек, или при сохранении настройки-патча, включающего в себя объекты из разных настроек, формируется точно такая же структура:
- VMK_SETTING\
- data\
- function\
- Acc_CalcNormExpenses.vbs
- form\
- usrf_acc_taxposition.dfm
- function\
- 20100928_Исправления.xml
- data\
Папка с подчиненными файлами есть у каждой настройки
В этом случае необходимо каждому объекту (функции, процедуре) указать родную настройку, ту в папку которой он будет сохранятся.
Получается следующая иерархия папок:
- setting\
- Мат_склад_макросы\
- Tgdc_dlgGoodBeforePost.vbs
- usrf_acc_taxposition.dfm
- gdc_frmInvDocument147013038_109092844.dfm
- USR$AC_GETADDSUM.sql
- USR$INV_INVENTLINE.USR$BI_USR$INV_INVENTLINE.sql
- USR$INV_CAR.USR$USR$INV_BI_CAR_NAME.sql
- Приход_в_ценах_поставщика..fr
- Драг_металы.fr4
- Общие_данные\
- TgdcInvDocument147006557_63934951_DoOnNewRecord.vbs
- Acc_CalcNormExpenses.vbs
- gdc_dlgAttrUserDefinedTreeUSR_ACC_TAXPOSITION.dfm
- USR$FA_P_YEAR_BETWEEN.sql
- Мат_склад_макросы.xml
- Общие_данные.xml
- Мат_склад_макросы\
При сохранении настройки не в хранилище настроек, или при сохранении настройки-патча, включающего в себя объекты из разных настроек, каждый объект сохраняется в папку соответствующую его родительской настройке:
- VMK_SETTING\
- Мат_склад_макросы\
- Acc_CalcNormExpenses.vbs
- Общие_данные\
- usrf_acc_taxposition.dfm
- 20100928_Исправления.xml
- Мат_склад_макросы\