Физическое расположение объекта фильтров
Добрый день, коллеги! Массив фильтров по все каталогам можно получить так lists.view_conditions_schemes Кто знает, где физически расположен объект с фильтрами?
При старте сервера lists грузится из базы (из той, какая есть- SQL, XML) в глобальную переменную lists. Оттуда и используется.
List xml храниться в таблице spxml_blobs. Там бинарно закодирован xml
Вообще там объект, объект в таблицу не преобразовать
Фильтры в виде таблицы не хранятся. В виде XML. alert(lists.view_conditions_schemes,Xml)
А если этот глобальный объект править и пересохранить это внесет изменения в бд?
вот так, да. Я когда-то делал, не помню уже что. Но под рукой кода нет
В SQLDB лежити в блобсаз в виде одной из записей. Открывается OpenDoc() по url
"Свечку не держал"(с) но недолго ж и проверить?
А, я не так понял. Я через SQL делал. Если просто править в lists. что-то не должно править
Улзыто я его фильтровала функцией ArraySelect, а вот даже переименовать фильтры не вышло. На один раз выходит, а потом прежний объект возвращается
Сохранять очень сложно. Надо перед сохранением создать структуру xml это будет шаблон для сохранения далее очистить структуру через
list.view_conditions_schemes.Clear(); Далее загрузить правильный шаблон изменённой структуры.
list.view_conditions_schemes.LoadData(template_xml);
list.view_conditions_schemes.Doc.Save();
Но это лучше на тестовой среде сделать. А то может сломаться структура, если не верно собрать шаблон для заливки.
Я честно попытался найти. Сходу не получилось.
Но в конечном итоге, когда вы правите в админке фильтр, он же создается, удаляется и редактируется. Это делается каким-то кодом. Нужно поискать в исходном коде это место.
Да в эту сторону можно тоже покапать. Я таким образом большоее количество настраиваемых полей переношу (они тоже в блобах). Через: xml = "..." custom_templates.collaborator.Clear(); custom_templates.collaborator.LoadData(EncodeCharset(xml, 'windows-1251')); custom_templates.Doc.Save();
мне вот другое интересно, что-то такая мысль пришла а если БД сейчас в MSSQL, например, можно ли запустить её конвертацию в БД XML? чтобы и файлы из ресурсов, и все настройки в реальные файлы на диске выгрузились? или такое не сработает?
Вот у меня сейчас одна и баз больше террабайта Я даже не представляю сколько будет конвертироваться и сколько места займет И самое главное - зачем ? 🙂
Причем обычно наоборот - с ростом проектов и людей уходят к БД из XML
это скорее "спортивный" интерес, ну и насчёт хранения файлов в ресурсах базы тоже в голове держу - если изначально выбрано хранить файлы в БД, а я захочу изменить на хранение в файловой системе, то возможности такой нет...
да я понимаю:)
ну это вопрос к архитектору/разработчику/админу
Ты хочешбь провернуть фарш назад и мясо из котлет восстановить:)
Поняла как конвертировать data в xml, и уже этот xml можно обработать sql и закинуть обратно в поле data. Но, конечно, боязно, испортить список фильтров select CAST(data as xml) from [(spxml_blobs)] where url = 'x-local://wt_data/lists/wtv_lists.xml'
Может всё же лучше изменять сам xmElem lists с помощью методов XmlElem? А не через выгрузку/загрузку текста?
База в терабайт, это не так много. А вот xml внутри базы это вот жесть