Перейти к содержимому
Участник сообщества #13
Участник сообщества #13
20 февр. 2025 г., 14:03(изменён)
Решено
0
0

Физическое расположение объекта фильтров

Из чата сообщества

Добрый день, коллеги! Массив фильтров по все каталогам можно получить так lists.view_conditions_schemes Кто знает, где физически расположен объект с фильтрами?

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:36(изменён)
Решение

При старте сервера lists грузится из базы (из той, какая есть- SQL, XML) в глобальную переменную lists. Оттуда и используется.

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:12(изменён)

List xml храниться в таблице spxml_blobs. Там бинарно закодирован xml

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:32(изменён)

Вообще там объект, объект в таблицу не преобразовать

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:34(изменён)

Фильтры в виде таблицы не хранятся. В виде XML. alert(lists.view_conditions_schemes,Xml)

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:37(изменён)

А если этот глобальный объект править и пересохранить это внесет изменения в бд?

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:38(изменён)

вот так, да. Я когда-то делал, не помню уже что. Но под рукой кода нет

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:38(изменён)

В SQLDB лежити в блобсаз в виде одной из записей. Открывается OpenDoc() по url

"Свечку не держал"(с) но недолго ж и проверить?

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:40(изменён)

А, я не так понял. Я через SQL делал. Если просто править в lists. что-то не должно править

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:41(изменён)

Улзыто я его фильтровала функцией ArraySelect, а вот даже переименовать фильтры не вышло. На один раз выходит, а потом прежний объект возвращается

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:52(изменён)

Сохранять очень сложно. Надо перед сохранением создать структуру xml это будет шаблон для сохранения далее очистить структуру через
list.view_conditions_schemes.Clear(); Далее загрузить правильный шаблон изменённой структуры. list.view_conditions_schemes.LoadData(template_xml); list.view_conditions_schemes.Doc.Save(); Но это лучше на тестовой среде сделать. А то может сломаться структура, если не верно собрать шаблон для заливки.

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:52(изменён)

Я честно попытался найти. Сходу не получилось.

Но в конечном итоге, когда вы правите в админке фильтр, он же создается, удаляется и редактируется. Это делается каким-то кодом. Нужно поискать в исходном коде это место.

Участник сообщества
Участник сообщества20 февр. 2025 г., 14:55(изменён)

Да в эту сторону можно тоже покапать. Я таким образом большоее количество настраиваемых полей переношу (они тоже в блобах). Через: xml = "..." custom_templates.collaborator.Clear(); custom_templates.collaborator.LoadData(EncodeCharset(xml, 'windows-1251')); custom_templates.Doc.Save();

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:01(изменён)

мне вот другое интересно, что-то такая мысль пришла а если БД сейчас в MSSQL, например, можно ли запустить её конвертацию в БД XML? чтобы и файлы из ресурсов, и все настройки в реальные файлы на диске выгрузились? или такое не сработает?

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:02(изменён)

Вот у меня сейчас одна и баз больше террабайта Я даже не представляю сколько будет конвертироваться и сколько места займет И самое главное - зачем ? 🙂

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:03(изменён)

Причем обычно наоборот - с ростом проектов и людей уходят к БД из XML

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:04(изменён)

это скорее "спортивный" интерес, ну и насчёт хранения файлов в ресурсах базы тоже в голове держу - если изначально выбрано хранить файлы в БД, а я захочу изменить на хранение в файловой системе, то возможности такой нет...

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:04(изменён)

да я понимаю:)

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:07(изменён)

ну это вопрос к архитектору/разработчику/админу

Ты хочешбь провернуть фарш назад и мясо из котлет восстановить:)

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:07(изменён)

Поняла как конвертировать data в xml, и уже этот xml можно обработать sql и закинуть обратно в поле data. Но, конечно, боязно, испортить список фильтров select CAST(data as xml) from [(spxml_blobs)] where url = 'x-local://wt_data/lists/wtv_lists.xml'

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:11(изменён)

Может всё же лучше изменять сам xmElem lists с помощью методов XmlElem? А не через выгрузку/загрузку текста?

Участник сообщества
Участник сообщества20 февр. 2025 г., 15:35(изменён)

База в терабайт, это не так много. А вот xml внутри базы это вот жесть

Чтобы ответить, необходимо войти в систему