Возникла аналогичная необходимость, чтобы не копировать компонент и не зависеть от админа, который может быть полноценным пользователем и настраивать формы под себя, поискал другие способы.
"
В компоненты main.interface.grid и main.interface.form добавлена возможность установить настройки по умолчанию" - судя по этим компонентам - в параметрах к ним можно передать только данные по фильтру.
В общем ничего путного не нашел и полез в ядро. В конструкторе для
CGridOptions есть код, где применяется дефолтный шаблон, если еще не задан
default у пользователя.
Код |
---|
$defaultOptions = CUserOptions::GetOption("main.interface.grid.common", $this->grid_id, array());
if(is_array($defaultOptions["view"]) && !isset($aOptions["views"]["default"]))
{
$aOptions["views"]["default"] = $defaultOptions["view"];
} |
В итоге достаточно написать служебный скрипт, чтобы задать main.interface.grid.common для текущего грида и выполнить 1 раз.
Код |
---|
CUserOptions::SetOption(
"main.interface.grid.common",
"CRM_HELPDESK_LIST",
array(
"view" => array(
"name" => "<Представление по умолчанию>",
"columns" => "ID,PROBLEM,USER,OBJECT,CREATED_BY,DATE_CREATE,MODIFIED_BY,TIMESTAMP_X,COMMENT",
)
),
true
); |
В итоге заносится строка в таблицу
b_user_option и этот вид применяется по умолчанию, если пользователь зашел первый раз.
Недостатки в том, что как только пользователь сменил состав полей в "представлении по умолчанию" для себя, то вернуть дефолтные значения он уже не сможет одной кнопкой, только выставит все как было руками. Ну или можно сбросить настройки программно админу.
Было бы удобно, чтобы можно было задавать это
Дефолтное представление для грида Не через скрипт или базу, а через интерфейс.
Если есть варианты другие, буду рад услышать.