Если один из админов настраивает форму для всех, то не затираются настройки этой формы для других админов, настроивших форму для себя ранее. Тут не спасает даже галочка «для всех» в настроке формы, т.к. она меняет форму для всех пользователей, кроме тех админов, кто ее настроил ранее под себя.
Для этого нужно выполнить запрос:
DELETE FROM b_user_option WHERE CATEGORY = 'form' AND NAME = 'form_element_#ID#' AND COMMON = 'N'
и бахнуть кеш настроек.
global $CACHE_MANAGER; $CACHE_MANAGER->cleanDir("user_option");
Проблема решается событием:
// очищаем настройки формы по-умолчанию для всех админов AddEventHandler('main', 'OnEndBufferContent', function (&$content) { if (count($_POST['p']) <= 0) { return; } global $APPLICATION, $DB, $CACHE_MANAGER; $pCfg = array_shift($_POST['p']); if ($APPLICATION->GetCurPage() != '/bitrix/admin/user_options.php' || $pCfg['c'] != 'form' || $pCfg['d'] != 'Y' || !preg_match('#^form_((section)|(element))_[0-9]+$#', $pCfg['n']) ) { return; } $DB->Query("DELETE FROM b_user_option WHERE CATEGORY = 'form' AND NAME = '" . $pCfg['n'] . "' AND COMMON = 'N'"); $CACHE_MANAGER->cleanDir("user_option"); });