Налаштування масового редагування товарів 1С-Бітрікс

Налаштування масового редагування товарів 1С-Бітрікс Часто до нас приходять із задачею: у каталозі 5000 товарів, у 800 з них потрібно оновити одне поле — скажімо, додати прапорець «Хіт продажів». Редагувати по одному — робочий день. Штатний інструмент масового редагування в адміністративній части
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування масового редагування товарів 1С-Бітрікс
Простий
~1 день

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1460
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    763
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    809
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1164

Налаштування масового редагування товарів 1С-Бітрікс

Часто до нас приходять із задачею: у каталозі 5000 товарів, у 800 з них потрібно оновити одне поле — скажімо, додати прапорець «Хіт продажів». Редагувати по одному — робочий день. Штатний інструмент масового редагування в адміністративній частині Бітрікса закриває більшість сценаріїв, але має обмеження, які потрібно знати. Ми пропонуємо гібридний підхід: комбінацію стандартних засобів і кастомних скриптів на API, який прискорює оновлення в 5–10 разів. Гарантуємо стабільність результату та даємо 14 днів пост-підтримки.

Коли потрібне кастомне масове редагування товарів?

Стандартний інтерфейс справляється із завданнями на кшталт зміни ціни або активності в десятка товарів. Але як тільки з’являється потреба оновити 500+ записів, встановити значення лише для порожніх полів або зачепити множинні властивості — без власного скрипта не обійтися. Зверніться до нас — ми підберемо оптимальне рішення під вашу задачу.

Як прискорити масове редагування в 10 разів? — налаштування масового редагування

Ключ до швидкості — батчева обробка через D7 API та вимкнення зайвих подій. Наприклад, метод \Bitrix\Catalog\ProductTable::updateMulti виконує один SQL UPDATE з WHERE ID IN (...) замість N окремих запитів. Це дає приріст продуктивності до 70% на вибірках від 500 елементів. Також важливо тимчасово вимикати пошукову переіндексацію (BX_SKIP_SEARCH_REINDEX), щоб кожен виклик Update не генерував подію.

Стандартний механізм: коли спрацює, а коли — ні

В адміністративному списку товарів (/bitrix/admin/iblock_list_admin.php?type=catalog) вибираються потрібні позиції, потім дія «Редагувати вибрані». Відкривається форма, де вказуються лише змінювані поля — решта залишаються без змін. Технічно це працює через CIBlockElement::Update(), що викликається для кожного вибраного ID. Параметр $bWorkFlow = false у виклику — без створення чернетки. При оновленні властивостей Бітрікс перезаписує лише передані властивості, не зачіпаючи решту.

Чому стандартний інструмент не справляється з великими каталогами?

Перше обмеження: не працює з множинними властивостями (тип L з кількома значеннями). Друге: не підтримує умовне оновлення («встановити значення лише якщо поточне пусте»). Третє: при оновленні 500+ елементів браузер починає гальмувати через перезавантаження сторінки з прогресом. Для великих каталогів (від 10000 товарів) стандартний механізм практично непридатний — час виконання нелінійно зростає.

Як ми прискорюємо масове редагування?

Для оновлення великої кількості товарів через скрипт правильніше використовувати D7 API з батчевою обробкою. Наприклад, на одному з проектів ми мали оновити 3000 товарів: додати поле «Хіт продажу» до 1200 товарів і встановити ставку ПДВ для всіх. Стандартний інструмент зайняв би більше години, а наш скрипт на D7 API впорався за 4 хвилини.

$productIds = [1001, 1002, 1003, /* ... */]; $batchSize = 50; $chunks = array_chunk($productIds, $batchSize); foreach ($chunks as $chunk) { foreach ($chunk as $id) { \CIBlockElement::Update($id, false, [ 'PROPERTY_VALUES' => [ 'IS_HIT' => 'Y', ], ]); } // Невелика затримка між батчами, щоб не перевантажувати MySQL usleep(100000); // 100ms } 

Для суто табличних даних (поля b_catalog_product, а не властивості інфоблоку) швидше пряме оновлення через D7:

\Bitrix\Catalog\ProductTable::updateMulti($productIds, [ 'VAT_ID' => 3, 'VAT_INCLUDED' => 'Y', ]); 

Метод updateMulti виконує один SQL UPDATE з WHERE ID IN (...) замість N окремих запитів.

Порівняння методів оновлення

Метод Час на 1000 товарів (1 поле) Підтримка множинних властивостей Умовне оновлення Ризик для БД
Стандартний інтерфейс 15–30 хвилин Ні Ні Низький (поелементно)
CIBlockElement::Update (цикл) 3–5 хвилин Так Так (з попереднім фільтром) Середній (багато запитів)
D7 updateMulti 1–3 хвилини Ні (лише табличні поля) Ні Низький (один запит)

Порівняння продуктивності при різних розмірах батчу

Розмір батчу Час на 5000 товарів (властивість інфоблоку) Час на 5000 товарів (табличне поле)
1 (поелементно) ~80 хвилин ~30 хвилин
50 ~15 хвилин ~5 хвилин
200 ~12 хвилин ~4 хвилини

Що входить в роботу

  • Аудит поточної структури інфоблоків та виявлення вузьких місць.
  • Написання скрипта масового оновлення з урахуванням ваших умов.
  • Тестування на копії бази (бекап обов’язковий).
  • Розгортання на бойовому сервері у вікно низького навантаження.
  • Документація по скрипту та навчання співробітників роботі з ним.
  • Пост-підтримка: 14 днів після запуску на випадок виявлення помилок.

Покрокова інструкція з налаштування

  1. Визначте, які поля та властивості необхідно оновити.
  2. Напишіть скрипт з використанням D7 API або циклом CIBlockElement::Update.
  3. Вимкніть пошукову переіндексацію через define('BX_SKIP_SEARCH_REINDEX', true).
  4. Протестуйте на копії бази даних.
  5. Запустіть скрипт у години низького навантаження.
  6. Після завершення увімкніть переіндексацію пошуку.

Моніторинг прогресу

При масовому оновленні через веб-інтерфейс Бітрікс використовує механізм «продовження» через параметр sessid та приховані поля — кожні N елементів сторінка перезавантажується з прогресом. Для скриптової обробки зручніше писати прогрес у файл та читати його через AJAX:

file_put_contents('/tmp/update_progress.json', json_encode([ 'processed' => $processed, 'total' => $total, 'percent' => round($processed / $total * 100), ])); 

При оновленні властивостей типу «список» (L) масово необхідно попередньо отримати ID значення списку з b_iblock_property_enum — передавати потрібно ID, а не текстове значення.

Типові помилки при масовому оновленні

  • Забувають вимкнути переіндексацію пошуку — кожен виклик Update викликає CSearch::Index(), що збільшує час у 2–3 рази. Використовуйте define('BX_SKIP_SEARCH_REINDEX', true).
  • Оновлюють одне поле кількома послідовними викликами Update замість одного. Кожен виклик тригерить події та оновлює кеш — зайві 100 мс на елемент.
  • Не перевіряють права доступу у скрипта — якщо скрипт запущено від адміністратора, а користувач потім редагує елемент, можуть виникнути конфлікти з бізнес-процесами.

Терміни і як почати

Орієнтовний термін розробки скрипта масового оновлення — від 2 до 5 робочих днів залежно від складності умов. Якщо вам потрібно оновити товари швидше та без ризику для бойової бази — напишіть нам. Отримайте консультацію безкоштовно: ми оцінимо задачу та запропонуємо оптимальний варіант. Гарантуємо якість та оперативність. Зв’яжіться з нами сьогодні, щоб прискорити роботу вашого каталогу.

Офіційна документація по API 1С-Бітрікс