Добрый день, форумчане и разработчики!
По долгу службы наша компания занимается разработкой интеграцией для битрикса не только с 1С но и с другими системами.
Данное сообщение, решено было поместить именно сюда, т.к. ближе всего по тематике.
Суть вопроса в следующем: компоненты интеграции выполняют большое количество операций с инфоблоком (создание/удаление/обновление) всех элементов. Проблема заключается в том, что каждую операцию приходится выполнять "разово".
И мы задумались: а почему разработчики битрикса не сделают пакетную обработку?
Например очень бы пригодились такие функции:
Думаю данные функции:
а) при правильном подходе значительно увеличат производительность многих проектов
б) дадут нам (разработчикам) немного больше времени на питье кофе
Возможно я не прав насчет всех функций, но думаю что первые 4 100% повысят производительность на больших объемах данных и многим сделают жизнь проще.
По долгу службы наша компания занимается разработкой интеграцией для битрикса не только с 1С но и с другими системами.
Данное сообщение, решено было поместить именно сюда, т.к. ближе всего по тематике.
Суть вопроса в следующем: компоненты интеграции выполняют большое количество операций с инфоблоком (создание/удаление/обновление) всех элементов. Проблема заключается в том, что каждую операцию приходится выполнять "разово".
И мы задумались: а почему разработчики битрикса не сделают пакетную обработку?
Например очень бы пригодились такие функции:
| Код |
|---|
// очищает весь инфоблок
CIBlock::Clean()
// удаляет все секции по массиву айдишиков
CIBlockSection::DeleteBatch(array $arSectionIDs)
// удаляет все элементы по массиву айдишников
CIBlockElement::DeleteBatch(array $arElementIDs)
// возвращает массив значений поля из запроса
// print_r($DB->Query("SELECT ID FROM b_iblock_element")->GetFieldArray("ID"))
// array("1","2","3",...);
CDBResult::GetFieldArray($fieldName)
// добавляет новые секции по массиву полей
CIBlockSection::AddBatch(array &$arSectionsFields)
// добавляет новые элементы по массиву полей
CIBlockElement::AddBatch(array &$arElementsFields)
// обновляет секции по ассоциативному массиву полей (ID=>arFields).
CIBlockSection::UpdateBatch(array &$arSections)
// обновляет элементы по ассоциативному массиву полей (ID=>arFields).
CIBlockElement::UpdateBatch(array &$arElements)
|
Думаю данные функции:
а) при правильном подходе значительно увеличат производительность многих проектов
б) дадут нам (разработчикам) немного больше времени на питье кофе

Возможно я не прав насчет всех функций, но думаю что первые 4 100% повысят производительность на больших объемах данных и многим сделают жизнь проще.