Нашел корень проблемы.
Код |
---|
246: $tabControl = new CAdminForm($bCustomForm? "tabControl": "form_element_".$IBLOCK_ID, $aTabs);
|
(см. bitrix\modules\iblock\admin\iblock_element_edit.php)
Код |
---|
5019: $customTabs = CUserOptions::GetOption("form", $this->name); |
(см. bitrix\modules\main\interface\admin_lib.php)
Суть проблемы:В файле "
bitrix\modules\iblock\admin\iblock_element_edit.php" создается экземпляр класса CAdminForm, при этом если у ИБ своя форма редактирования, то имя задается просто "tabControl", затем когда вызывается метод "
Show" у класса "
CAdminForm" (в файле "
bitrix\modules\main\interface\admin_lib.php" ) идет проверка на опцию
Код |
---|
$customTabs = CUserOptions::GetOption("form", $this->name);
|
где
$this->name = "
tabControl" для всех ИБ с кастумной формой!
от сюда и проблема перезаписи настроек формы для кастумных форм ;)
Вариант решения:Код |
---|
246: $tabControl = new CAdminForm($bCustomForm? "tabControl": "form_element_".$IBLOCK_ID, $aTabs); |
заменить на
Код |
---|
246: $tabControl = new CAdminForm("form_element_".$IBLOCK_ID, $aTabs); |
(см. bitrix\modules\iblock\admin\iblock_element_edit.php)
Недостаток решения в том, что при обновлении Битрикса может произойти обновление файла и изменения сотрутся.
PS: тогда можно сразу удалить следующие строчки
Код |
---|
if($bCustomForm)
$tabControl->SetShowSettings(false); |
и у вас будет кнопка настройки у кастомных форм