Хранилище настроек (постановка)

Материал из GedeminWiki
Перейти к: навигация, поиск

Необходимо так организовать хранение данных и метаданных настроек, чтобы было невозможно затирание новых изменений функции, например, функцией более старой версии из другой настройки. В статье Сохранение настройки в нескольких файлах (постановка) предлагается хранить тексты функций, форм и других значимых объектов вне файла настройки.

На все хранилище имеется одна папка с подчиненными настройке файлами

В этом случае при сохранении мы всегда указываем корневую папку хранилища. Главный файл настройки сохраняется в корне папки setting (или в папку соответствующую тегу, типу настройки), подчиненные файлы помещаются в папку хранения кода -- data. Папка хранения кода будет содержать файлы vbs, dfm, fr, fr4, sql содержащие логику работы приложения, настройки гридов в XML.

Получается следующая иерархия папок:

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
Драг_металы.fr
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
grid\
gdc_frmAttrUserDefinedUSR_AU_PRODUCER(Tgdc_frmAttrUserDefined)_ibgrMain(TgsIBGrid).grid
gdc_frmAttrUserDefinedUSR_AU_PRODUCER(Tgdc_frmAttrUserDefined)_ibgrDetail(TgsIBGrid).grid
Мат_склад_макросы.xml
Общие_данные.xml

При сохранении настройки не в хранилище настроек, или при сохранении настройки-патча, включающего в себя объекты из разных настроек, формируется точно такая же структура:

VMK_SETTING\
data\
function\
Acc_CalcNormExpenses.vbs
form\
usrf_acc_taxposition.dfm
20100928_Исправления.xml

В главной настройке ссылки на подчиненные файлы будут иметь вид:

<SCRIPT file="data\function\Acc_CalcNormExpenses.vbs"></SCRIPT>
<DFM file="data\form\usrf_acc_taxposition.dfm"></DFM>


Такая структура хранилища настроек полностью опирается на систему контроля версий. Так как в разных настройках могут быть разные версии одной и той же функции, то в процессе сохранения настроек в хранилище файл этой функции будет несколько раз перезаписан. Для избежания этого после сохранения настройки необходимо сделать commit в систему контроля версий. При изменении функции другой настройкой необходимо провести операцию merge для получения функции, которая будет работать и в первой, и во второй настройке.

Также такой подход позволит выявить все проблемы связанные с установкой разных пакетов настроек на одну БД. Все функции, формы, метаданные и гриды будут приведены к общему виду.

Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Инструменты