Вывод отформатированных таблиц

В большинстве случаев для вывода отформатированных таблиц достаточно стандартных средств битрикс, но если Вам нужно самостоятельно сформировать 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 - мнемонический код свойства