Если я добавляю элемент инфоблока 2.0 (свойства в отдельной таблице) через запрос:
$DB ->Query('
INS ERT IN TO b_iblock_element
(ID, IBLOCK_ID, NAME)
VALUES (' . $elementId . ',' . $iblockId . ', "-")
'); |
То одиночные свойства элемента теперь никак не удасться сохранить, ни через
сохранение элемента в админке, ни через CIBlockElement::SetPropertyValuesEx().
оказывается, чтобы работало нужно добавлять также и заглушку-строку для будущих значений свойств:
if (CIBlockElement::GetIBVersion($iblockId) == 2) {
$DB->Query("INS ERT IN TO b_iblock_element_prop_s".$iblockId."(IBLOCK_ELEMENT_ID)VALUES(".$elementId.")");
} |
Собственно идея, сделать чтобы при сохранении элемента строка значений в таблице b_iblock_element_prop_s#iblockId# восстанавливалась автоматически.
База проверяется в самом конце, можно прервать проверку без риска нарушить работу сайта. Сессия блокируется на 10 секунд.