Вывод отформатированных таблиц
В большинстве случаев для вывода отформатированных таблиц достаточно стандартных средств битрикс, но если Вам нужно самостоятельно сформировать html-код таблицы, то это можно сделать с помощью подключения компонента grain:table.view, который входит в состав модуля. Входными параметрами для компонента являются массив настроек свойства и массив результата, которые можно получить через api главного модуля или модуля инфоблоков.Копирование шаблонов компонентов
Стандартные шаблоны компонентов grain.table.edit и grain:table.view, предназначенных для редактирования и отображения таблиц соответственно, находятся в папках:/bitrix/components/grain/table.edit/templates/
/bitrix/components/grain/table.view/templates/
Следуя правилам битрикс, шаблоны компонентов .default из этих папок нужно скопировать в папки:
/bitrix/templates/template_name/components/grain/table.edit/
/bitrix/templates/template_name/components/grain/table.view/
где
template_name - это папка шаблона сайта.
Папка шаблона .default или admin при этом переименовывается, и ее название указывается в настройках свойства как название оригинального шаблона.
Если шаблоны компонентов будут использоваться с несколькими шаблонами сайтов, либо в административной части, то шаблоны нужно копировать в папку шаблона сайта по умолчанию (template_name принимает значение .default):
/bitrix/templates/.default/components/grain/table.edit/
/bitrix/templates/.default/components/grain/table.view/
.default и admin - это стандартные зарезервированные имена шаблонов для публичной и административной части соответственно. Таким образом, если скопировать в шаблон сайта по умолчанию (.default) шаблоны с этими именами, то они будут работать по умолчанию без указания их имен в настройках свойств, подменяя собой стандартные шаблоны из папки /bitrix/components/grain/.../templates/.
Подключение компонентов
Подключение компонента grain:table.view:
$GLOBALS["APPLICATION"]->IncludeComponent(
"grain:table.view",
"",
Array(
"SETTINGS" => $arSettings,
"MULTIPLE" => $multiple,
"VALUE" => $arValue,
),
null,
array('HIDE_ICONS' => 'Y')
);
Подключение компонента grain:table.edit:
$GLOBALS["APPLICATION"]->IncludeComponent(
"grain:table.edit",
"",
Array(
"SETTINGS" => $arSettings,
"MULTIPLE" => $multiple,
"VALUE" => $arValue,
),
null,
array('HIDE_ICONS' => 'Y')
);
где
$arSettings - массив настроек свойства (в модуле инфоблоков имеет ключ USER_TYPE_SETTINGS)
$multiple - множественное свойство или нет (Y/N)
$arValue - массив данных таблицы
Данные компоненты являются системными и недоступны через визуальный редактор.
Получение массива данных таблицы
Данные каждой строки таблицы доступны через api битрикс в виде массива с ключами, соответствующими идентификаторам столбцов, указанных в настройках свойств.Пример для таблицы с 2 столбцами строкового типа и типа дата/время:
Array(
[id1] => some text
[id2] => 12.02.2012
)
где
id1, id2 - идентификаторы столбцов таблицы
Сохранение данных через api битрикса
При сохранении данных структура массива, описывающего каждую строку таблицы должна быть такой:
Array(
Идентификатор столбца => Значение
)
Пример сохранения данных для множественной таблицы для элемента инфоблока:
$arValue = Array
(
"n0" => Array
(
"id1" => "some text 1",
"id2" => "5.01.2012",
),
"3265" => Array
(
"id1" => "some text 2",
"id2" => "10.01.2012",
),
);
CIBlockElement::SetPropertyValueCode($element_id,"prop_name",$arValue);
где
n0, 3265 - обозначение нового значения и id существующего значения множественного свойства битрикс, в данном случае каждое значение - это строка таблицы
id1, id2 - идентификаторы столбцов таблицы
$element_id - id элемента инфоблока
prop_name - мнемонический код свойства