26.09.2022, 08:08 | #1 |
Участник
|
DAX09 как перенести польз. фильтры в форме в другую БД
Привет.
Когда пользователь сохраняет фильтр в какой-то либо форме (например SalesTable), обычно эти настройки (я считал) сохраняются только в таблице - Использование данных (SysLastValue). Т.е. если удалить в данной таблице найденную 1 запись по условию: SysLastValue.UserId = <код пользователя> SysLastValue.RecordType = 'Form' SysLastValue.designName = '' SysLastValue.ElementName = 'SalesTable' SysLastValue.company = <компания пользователя> Данная форма сбросится соответственно и все сохраненные запросы в ней пропадут. Но вот если попробовать перенести данные из одной БД в другую БД то в другой AX данный фильтр у пользователя не появляется. Я думал что все запросы хранятся в поле SysLastValue.Value раз оно бинарное. Но вот экспериментируя - так и не смог перенести данные запросы. Обновляю: SysLastValuep_To.value = SysLastValue_From.value Но эффекта не дает. Я даже удалял все данные пользователя и вставлял из другой базы - эффекта тоже не дало. Подскажите, перенос возможен из одной базы в другую? Пользовательских фильтров? Если да то что нужно еще учесть? Данные в какой таблице еще? |
|
26.09.2022, 08:41 | #2 |
Administrator
|
Один из ключевых моментов, которые нужно учесть - это ID-шники.
В простейшем случае фильтра по датасорсу SalesTable у Вас будет запрос (объект Query) такого плана: SELECT * FROM SALESTABLE В этом Query есть датасорс (QueryBuildDataSource) SalesTable, который в свою очередь ссылается на таблицу SalesTable. Поскольку Вы накладываете какой-то фильтр, то скорее всего у Вас добавляется какой-то Range (который имеет свой ID) по какому-то полю (которое имеет свой ID в таблице). Сохранение Query (метод Query.pack()) сохраняет структуру запроса, ориентируясь на ID-шники датасорсов, Range-й, а также на ID-шники таблиц и полей. Таким образом поле Value содержит в себе в бинарном виде сохраненное представление Query, где основополагающим являются ID-шники. Если у Вас на другой базе поля, которые участвуют в Range имеют иные IDшники (понятно, что SalesTable - стандартная таблица и у неё одинаковые IDшники во всех инсталляциях AX) - то это повод системе не смочь распаковать запакованный Query в другой БД. С ID-шниками самого Query может быть и всё нормально, но нет гарантии, что они смогут корректно распаковаться на другой базе (равно как и нет явных препятствий - почему это не сможет сработать). Плюс к этому можно попробовать поанализировать само бинарное поле - потому что если там будет содержаться информация, специфичная для инсталляции - то понятное дело - Вы не перенесете запрос. Т.е. по большому счету нужно сделать одинаковый фильтр на двух базах, сохранить его в SysLastValue и сравнить эти бинарные поля - чем же они отличаются Вот еще есть такая тема: Как получить из элемента enum-а код типа (enum-а)?. Не знаю, правда - поможет ли Вам она
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 26.09.2022 в 08:46. |
|
|
За это сообщение автора поблагодарили: oleggy (2). |
|
|