сделать чтобы при сохранении элемента строка значений в таблице b_iblock_element_prop_s#iblockId# восстанавливалась автоматически.

Рейтинг: 0.2428  
Отложено
Предложил Пользователь 17890 14.03.2014 22:41:17

сделать чтобы при сохранении элемента строка значений в таблице b_iblock_element_prop_s#iblockId# восстанавливалась автоматически.

Если я добавляю элемент инфоблока 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# восстанавливалась автоматически.
Рейтинг: 0.3742  
Ответил Жуков Евгений 17.03.2014 11:46:06
Прямые запросы к "родным" таблицам БД продукта не рекомендуются и не поддерживаются.

Рейтинг: -0.0753  
Пользователь 8420 16.03.2014 16:20:10
Так вы через API добавляйте элементы :)
Рейтинг: 0  
Пользователь 17890 16.03.2014 19:11:41
1/ Как мне через API добавить элемент с заранее известным ID?
2/ Сути дела это не меняет: строка заглушки значений свойств должна перед установкой свойств проверяться и восстанавливаться.
Рейтинг: 0  
Пользователь 17890 17.03.2014 17:10:19
Евгений, как мне тогда через API добавить элемент с заранее известным ID?
Тогда встречная идея - позволять через $el->Add() добавлять элементы с заранее известным ID.
Рейтинг: 0  
Пользователь 2106 17.03.2014 18:18:43
Никак. Мы не даем такой возможности.