01.08.2024 Уже прочитали 2830 раз Помогло 1 читателям

Как узнать какие свойства инфоблока не заполнены у товаров и не используются на сайте

Часто возникает ситуация, когда со стороны 1С несколько раз выгрузилась вся номенклатура в текущий инфоблок с нового регламента обмена, это может привести к тому что в текущем инфоблоке задвоиться разделы, товары и свойства. Если первые два пункта автоматически деактивируются путем установки галочки в разделе Магазин - Настройки - Интеграция 1С:

Что делать с товарами, отсутствующими в файле импорта -> Деактивировать
Что делать с группами, отсутствующими в файле импорта -> Деактивировать

Но что делать с неиспользуемые свойствами, когда у вас каталог насчитывает более 2000 наименований по разным направлениям. Таких свойство в Инфоблоке будет очень много и они будут мешать нормальной работе контент менеджеров. Есть одно простое и в то же время, оптимальное решение это удалить неиспользуемые свойств Инфоблока.

В ручную на это может потребовать целый день, поэтому мы будем использовать вспомогательный PHP-код. Сразу будем учитывать, что у нас большой массив данных, который нужно обработать, поэтому будем создавать пошаговую обработку элементов инфоблока.

Что нужно сделать:

Нужно определить все свойства, которые не используются ни в одном элементе инфоблока, после полной обработки всех элементов. Для этого мы будем использовать два этапа:

  1. Первый этап: Сбор всех свойств инфоблока и всех используемых свойств в элементах.
  2. Второй этап: По завершению обработки всех элементов, сравнение всех свойств с используемыми и вывод неиспользуемых свойств.
  • Шаг 1: Создаем файл для обработки по шагам (process.php). В этом файле мы будем обрабатывать элементы инфоблока по шагам и сохранять информацию о свойствах, которые используются.
  • Шаг 2: Создаем файл для вывода результатов (result.php). В этом файле мы будем выводить все неиспользуемые свойства после завершения обработки всех шагов.
  • Шаг 3: Создаем файл для начала обработки и отображения состояния (index.php).

Как это работает:

  1. index.php: Пользователь заходит на страницу и нажимает "Начать обработку", чтобы перейти к process.php.

  2. process.php:

    • Сохраняет информацию о всех свойствах инфоблока.
    • Обрабатывает элементы инфоблока по шагам, помечая свойства, которые используются.
    • Сохраняет состояние обработки в сессии и предлагает перейти к следующему шагу.
  3. result.php:

    • Проверяет сохраненные данные из сессии.
    • Сравнивает все свойства инфоблока с используемыми и выводит неиспользуемые свойства.
    • Очищает сессию после завершения обработки.

Такой подход позволяет обрабатывать элементы инфоблока по частям и корректно определить неиспользуемые свойства во всем инфоблоке.

Ссылка на готовый PHP-скрипт для удаления неиспользуемых свойств инфоблока

Обратная связь

Материал был полезен?

Оценка помогает понимать, какие материалы стоит развивать и дополнять.

Обсудить задачу

Обратиться за помощью

Опишите задачу и оставьте контакты. Я посмотрю вводные и свяжусь с вами удобным способом.

Направление *