Решил проблему таким способом:
- Создал отдельный HL блок с одним множественным полем типа список в котором создал 3 значения.
- Создал HL блок с со свойством типа привязка к элементам HL блока.
- Создал класс для работы с элементами HI блока.
- Создал метод добавления новой записи.
Код |
---|
public function createRow($arFealds = array()){
$result = array();
if (CModule::IncludeModule('highloadblock')) {
$hlblock = HLBT::getById($this->HBID)->fetch();
$entity = HLBT::compileEntity($hlblock);
$entityClass = $entity->getDataClass();
$result = $entityClass::add($arFealds);
}
return $result;
}
|
- Создаю элемент класса и добавляю новую запись.
Код |
---|
$no = new My_Notice();
$no->createRow(array('UF_LIST'=>array(37,38,39)));
|
Я подумал хоть не по XML_ID но ID теперь всегда одинаковый и это свойство теперь можно использовать во многих местах.
- Что интересно в админке не отображается что там сохранено хоть что то. Но если вывести запись
Код |
---|
public function getData(){
$id = array();
if (CModule::IncludeModule('highloadblock')) {
$hlblock = HLBT::getById($this->HBID)->fetch();
$entity = HLBT::compileEntity($hlblock);
$entityClass = $entity->getDataClass();
$result = $entityClass::getList(array(
"select" => array("*"),
));
while ($arData = $result->Fetch()) {
$id[] = $arData;
}
}
return $id;
} |
Код |
---|
Array
(
[UF_LIST] => Array
(
[0] => 37
[1] => 38
[2] => 39
)
) |
- что интересно сохранить туда можно что угодно например текст
Код |
---|
Array
(
[UF_LIST] => Array
(
[0] => SMS
[1] => EMAIL
[2] => PUSH
[3] => ЯЗЬ
)
) |
Код |
---|
$no = new Bi_Notice();
$no->createRow(array('UF_LIST'=>array("SMS","EMAIL","PUSH", $no))); |
Код |
---|
Array
(
[UF_LIST] => Array
(
[0] => SMS
[1] => EMAIL
[2] => PUSH
[3] => Bi_Notice Object
(
[HBID] => 12
)
)
) |
Довольно интересное применение можно найти этой штуке, решил поделится.