Всем привет.
Недавно, за написанием модуля заметил, что лично мне неудобно каждый раз строить файл с настройками ( /bitrix/modules/<id_модуля>/options.php ). Нет чего-то такого, что есть например в параметрах компонента - чтобы просто задал массивы с табами/группами/настройками и они автоматом построились. Вобщем хочу поделиться классом который у меня получился в попытке решения этой проблемы ( скажу сразу он далек от идеала, хоть и выполняет базовые функции, просто времени на него потрачено пока не очень много - около 3х - 4ч часов ).
Вообщем вот как выглядит сам файл options.php ( сам класс подключался в файле /bitrix/modules/<id_модуля>/include.php ):
B вот что в итоге получилось в админке:

В целом сам процесс построения получился довольно простым. Теперь же хочу остановиться на построении массивов $arGroups, $arOptions ( $arTabs строится без изменений для класса CAdminTabControl ).
$arGroups - это массив групп параметров. Он имеет следующую структуру, которая впринципе не нуждается в объяснении ( все поля обязательны ):
И структура массива $arOptions:
Теперь поподробнее о возможных настройках видов параметров этого массива ( звездочкой обозначены обязательные поля в настройках ).
Общие параметры:
GROUP - ID группы параметров из массива $arGroups*
TITLE - Название параметра
TYPE - Тип параметра*
SORT - Сортировка ( по возрастанию )
REFRESH - Возможность сабмита формы после изменения параметра ( Y / N )
DEFAULT - Значение поля по умолчанию
NOTES - Примечания к параметру
Типы параметров:
STRING - Строка
INT - Число
TEXT - Поле для ввода текста ( textarea )
CHECKBOX - Флажок ( Y / N )
SELECT - Список
MSELECT - Список с множественным выбором
FILE - Файл
COLORPICKER - Выбор цвета
CUSTOM - Настраиваемый тип
Параметры, зависимые от типа:
STRING / INT:
SIZE - Ширина текстового поля
MAXLENGTH - Максимальная длина строки
TEXT:
COLS - Ширина текстового поля
ROWS - Высота текстового поля
SELECT / MSELECT:
VALUES - Массив значений для списка ( такой же как и в функциях SelectBoxFromArray и SelectBoxMFromArray )*
FILE:
FIELD_SIZE - Ширина поля для отображения пути файла
FIELD_READONLY - Не позволять вводить значения в поле для отображения пути файла ( Y / N )
BUTTON_TEXT - Текст на кнопке для открытия файлового менеджера
COLORPICKER:
FIELD_SIZE - Ширина поля для отображения кода цвета
FIELD_READONLY - Не позволять вводить значения в поле для отображения кода цвета ( Y / N )
CUSTOM:
VALUE - HTML код поля*
Ну вот и все на данный момент. Конечно до идеала ему далеко, но кому надо, тот возьмет и допишет то, что требуется.
					Недавно, за написанием модуля заметил, что лично мне неудобно каждый раз строить файл с настройками ( /bitrix/modules/<id_модуля>/options.php ). Нет чего-то такого, что есть например в параметрах компонента - чтобы просто задал массивы с табами/группами/настройками и они автоматом построились. Вобщем хочу поделиться классом который у меня получился в попытке решения этой проблемы ( скажу сразу он далек от идеала, хоть и выполняет базовые функции, просто времени на него потрачено пока не очень много - около 3х - 4ч часов ).
Вообщем вот как выглядит сам файл options.php ( сам класс подключался в файле /bitrix/modules/<id_модуля>/include.php ):
<?
$module_id = 'my_company_code.my_module_id';
require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/'.$module_id.'/include.php');
IncludeModuleLangFile($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/'.$module_id.'/options.php');
$showRightsTab = true;
$arSel = array('REFERENCE_ID' => array(1, 3, 5, 7), 'REFERENCE' => array('Значение 1', 'Значение 2', 'Значение 3', 'Значение 4'));
$arTabs = array(
   array(
      'DIV' => 'edit1',
      'TAB' => 'Настройки',
      'ICON' => '',
      'TITLE' => 'Настройки'
   )
);
$arGroups = array(
   'MAIN' => array('TITLE' => 'Имя группы', 'TAB' => 0)
);
$arOptions = array(
   'TEST_0' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Строка',
      'TYPE' => 'STRING',
      'DEFAULT' => 'Значение по-умолчанию',
      'SORT' => '0',
      'NOTES' => 'Это подсказка к полю "Строка".'
   ),
   'TEST_1' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Число',
      'TYPE' => 'INT',
      'DEFAULT' => '0',
      'SORT' => '1',
      'REFRESH' => 'Y',
      'NOTES' => 'Это подсказка к полю "Число". У данного поля установлен параметр REFRESH = "Y"'
   ),
   'TEST_2' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Текст',
      'TYPE' => 'TEXT',
      'DEFAULT' => '',
      'SORT' => '2',
      'COLS' => 40,
      'ROWS' => 15,
      'NOTES' => 'Это подсказка к полю "Текст". У данного поля установлен параметр COLS = "40", ROWS = "15"'
   ),
   'TEST_2' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Текст',
      'TYPE' => 'TEXT',
      'DEFAULT' => '',
      'SORT' => '2',
      'COLS' => 40,
      'ROWS' => 15,
      'NOTES' => 'Это подсказка к полю "Текст". У данного поля установлен параметр COLS = "40", ROWS = "15"'
   ),
   'TEST_3' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Флажок',
      'TYPE' => 'CHECKBOX',
      'REFRESH' => 'Y',
      'SORT' => '3'
   ),
   'TEST_4' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Список',
      'TYPE' => 'SELECT',
      'VALUES' => $arSel,
      'SORT' => '4'
   ),
   'TEST_5' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Список с множественным выбором',
      'TYPE' => 'MSELECT',
      'VALUES' => $arSel,
      'SORT' => '5'
   ),
   'TEST_6' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Файл',
      'TYPE' => 'FILE',
      'BUTTON_TEXT' => 'Выбери-ка файл',
      'SORT' => '6',
      'NOTES' => 'Это поле "Файл".'
   ),
   'TEST_7' => array(
      'GROUP' => 'MAIN',
      'TITLE' => 'Выбор цвета',
      'TYPE' => 'COLORPICKER',
      'SORT' => '7'
   ),
   'TEST_8' => array(
      'GROUP' => 'MAIN',
      'TITLE' => '',
      'TYPE' => 'CUSTOM',
      'VALUE' => '<span>Это текст в параметре <b>VALUE</b></span>',
      'SORT' => '8',
      'NOTES' => 'Настраиваемое поле без параметра TITLE'
   )
);
/*
Конструктор класса CModuleOptions
$module_id - ID модуля
$arTabs - массив вкладок с параметрами
$arGroups - массив групп параметров
$arOptions - собственно сам массив, содержащий параметры
$showRightsTab - определяет надо ли показывать вкладку с настройками прав доступа к модулю ( true / false )
*/
$opt = new CModuleOptions($module_id, $arTabs, $arGroups, $arOptions, $showRightsTab);
$opt->ShowHTML();
?>
 | 

В целом сам процесс построения получился довольно простым. Теперь же хочу остановиться на построении массивов $arGroups, $arOptions ( $arTabs строится без изменений для класса CAdminTabControl ).
$arGroups - это массив групп параметров. Он имеет следующую структуру, которая впринципе не нуждается в объяснении ( все поля обязательны ):
$arGroups = array(
   'ID_ГРУППЫ_1' => array('TITLE' => 'Заголовок группы 1', 'TAB' => 'Ключ вкладки из массива $arTabs'),
   'ID_ГРУППЫ_2' => array('TITLE' => 'Заголовок группы 2', 'TAB' => 'Ключ вкладки из массива $arTabs'),
   ...
); | 
$arOptions = array( 'ID_ПАРАМЕТРА_1' => array( 'GROUP' => 'ID группы в которой находится параметр', 'TITLE' => 'Название параметра', ... ), 'ID_ПАРАМЕТРА_2' => array( 'GROUP' => 'ID группы в которой находится параметр', 'TITLE' => 'Название параметра', ... ), ... );  | 
Общие параметры:
GROUP - ID группы параметров из массива $arGroups*
TITLE - Название параметра
TYPE - Тип параметра*
SORT - Сортировка ( по возрастанию )
REFRESH - Возможность сабмита формы после изменения параметра ( Y / N )
DEFAULT - Значение поля по умолчанию
NOTES - Примечания к параметру
Типы параметров:
STRING - Строка
INT - Число
TEXT - Поле для ввода текста ( textarea )
CHECKBOX - Флажок ( Y / N )
SELECT - Список
MSELECT - Список с множественным выбором
FILE - Файл
COLORPICKER - Выбор цвета
CUSTOM - Настраиваемый тип
Параметры, зависимые от типа:
STRING / INT:
SIZE - Ширина текстового поля
MAXLENGTH - Максимальная длина строки
TEXT:
COLS - Ширина текстового поля
ROWS - Высота текстового поля
SELECT / MSELECT:
VALUES - Массив значений для списка ( такой же как и в функциях SelectBoxFromArray и SelectBoxMFromArray )*
FILE:
FIELD_SIZE - Ширина поля для отображения пути файла
FIELD_READONLY - Не позволять вводить значения в поле для отображения пути файла ( Y / N )
BUTTON_TEXT - Текст на кнопке для открытия файлового менеджера
COLORPICKER:
FIELD_SIZE - Ширина поля для отображения кода цвета
FIELD_READONLY - Не позволять вводить значения в поле для отображения кода цвета ( Y / N )
CUSTOM:
VALUE - HTML код поля*
Ну вот и все на данный момент. Конечно до идеала ему далеко, но кому надо, тот возьмет и допишет то, что требуется.