Меню
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();'; // Перезапуск агента
}
Читают тему
Форма ответов
 
Текст сообщения*
Перетащите файлы
Ничего не найдено
Файл
Загрузить файлы
 

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

ORM в инфоблоках, получение информации об элементах инфоблока на D7

Задача: собрать полные данные об элементах инфоблока, применяя ORM/D7, который пришел на смену устаревшему CIBlockEleme...

Установка Битрикс24 "Интернет-Магазин + CRM" на один домен и настройка работы почты.

Задача: установить лицензию "Интернет-Магазин + CRM" на один домен. Что бы crm была доступна по адресу crm...

Заполнение множественного пользовательского свойства типа "строка" через API

Задача: когда пользователь заходит в мобильное приложение, нужно сохранить FCM токен устройства в пользовательское поле ...

Регистрация пользователя в определенную группу сайта на Битрикс

Достаточно часто требуется регистрировать пользователя в определенную группу, в зависимости от того какую форму регистра...

Как подобрать редакцию Битрикс под задачи

Последнее время, все чаще, при общении с заказчиками, сталкиваюсь с вопросом "— Какая редакция 1С-Битрикс нужна дл...

Cordova, ввод в input под диктовку. Голосовой поиск в мобильном приложении.

Итак, задачка: реализовать голосовой поиск в мобильном приложении на Cordova. По сути, нам нужно захватить речь с микроф...

Картинка торгового предложения вместо иконки цвета, в выборе SKU

Задача: вместо не информативных иконок цветов нужно вывести детальную картинку торгового предложения. Если картинки у пр...

Правильное подключение стилей и скриптов в Битрикс

Есть несколько способов подключения файлов стилей и скриптов, при верстке шаблонов в системе управления 1С-Битрикс. Если...

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

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