Нашел корень проблемы.
| Код |
|---|
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); |
и у вас будет кнопка настройки у кастомных форм