Меню
RSS
Создание агента в 1С-Битрикс, на реальном примере
 
Создание агента в 1С-Битрикс, на реальном примере

Задача: Каждый час нужно обновлять свойство элементов/товаров с типом строка "В наличии", вписывать в него либо "Да" либо "Нет" - согласно наличию товара на двух складах. Далее это свойство используется в умном фильтре при выводе каталога.
 
Тоже самое на D7, при тестах работает чуть медленее. Примерно на 10-15 секунд дольше
Код
use Bitrix\Main\Loader;
use Bitrix\Iblock\ElementTable;
use Bitrix\Catalog\StoreProductTable;

function UpdateAvPropAgent()
{
    // Подключение необходимых модулей
    if (!Loader::includeModule('iblock') || !Loader::includeModule('catalog')) {
        return 'UpdateAvPropAgent();'; // Перезапуск агента в случае ошибки подключения модулей
    }

    // Получение списка активных элементов из инфоблока
    $elements = ElementTable::getList([
        'filter' => [
               'IBLOCK_ID' => 4, 
               'ACTIVE' => 'Y'
         ],
        'select' => ['ID']
    ]);

    while ($element = $elements->fetch()) {
        $hasOnStore = 0;

        // Проверка наличия остатков на определенных складах
        $storeProducts = StoreProductTable::getList([
            'filter' => [
                   'PRODUCT_ID' => $element['ID'], 
                   'STORE_ID' => [6, 13]
             ],
            'select' => ['AMOUNT']
        ]);

        while ($storeProduct = $storeProducts->fetch()) {
            $hasOnStore += $storeProduct['AMOUNT'];
        }

        // Установка значения свойства в зависимости от наличия остатков
        $propertyValue = $hasOnStore > 0 ? 'Да' : 'Нет';
        \CIBlockElement::SetPropertyValuesEx(
            $element['ID'], 
            4, 
            ['ATT_NAL_FIL' => $propertyValue]);
    }

    return 'UpdateAvPropAgent();'; // Перезапуск агента
}
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 
Поблагодарить и поддержать:
Или подписаться на boosty канал: Видео на Bst

Блог-note: заметки разработчика

Добавление своих полей в почтовые шаблоны Битрикс

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

Ссылка на товары бренда в каталоге с автоматическим применением умного фильтра

Задача: вывести товары на странице бренда, выведенного компонентом "Новости", с ссылками на разделы в каталоге...

Менеджер событий (EventManager) в 1C-Битрикс

Менеджер событий (EventManager) — это централизованный механизм регистрации, обработки и управления событиями. О...

Denwer c PHP 7.1.8 и MYSQL 5.7 оптимизированный для Битрикс

В последнее время, все чаще приходиться работать на Windows, хотя и не люблю эту ОС- с точки зрения разработчика сайтов...

Ускорение работы сайта на 1С-Битрикс

Данная статья написана специально под видеоролик (приложен в конце статьи), опубликованный на моем ВКVideo канал...

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

Задача: в мобильном приложении, которое открывает сайт на 1С-Битрикс внутри себя, нужно определить местоположение пользо...

События вызываемые при сохранении заказа, в 1С-Битрикс

Иногда необходимо выполнить определенные действия с заказом при его изменении. Для этого можно использовать события OnS...

Кастомизация компонента восстановления пароля bitrix:system.auth.forgotpasswd

Достаточно часто спрашивают как кастомизировать компонент восстановления пароля пользователя. Типовая задача, это измени...

Удалить всех пользователей которые не делали заказов в магазине 1С-Битрикс

Задача: сайт проработал 7 лет и все время на нем была открытая регистрация, создано много мертвых учетных записей (б...