Каким кодом(методом, функцией) автоматически активировать свойство товара в битриксе? Код размещать в result_modifier?
Каким образом в битриксе можно автоматически активировать свойство товара? У товара есть свойство "акция". Необходимо чтобы у всех товаров на сайте, подпадающих под условие, активировалось это свойство.
Пробовал автоматически активировать это свойство посредством методов CIBlockProperty::Update и CIBlockElement::SetPropertyValues. Значения свойства изменялись, но флажок "Акция" не отображался на товаре, как и чекбокс не был активным. Каким способом можно решить данную задачу?
Володя Ганн:Я правильно понял у вас у товаров есть свойство АКЦИЯ? можно по событию OnAfterIBlockElementUpdate (https://dev.1c-bitrix.ru/api_help/iblock/events/on..., которое срабатывает после изменения элемента инфоблока, проверять свойство элемента. Если Свойство МЕТАЛЛ == ЗОЛОТО, то выставлять активность для свойства АКЦИЯ. Это для новых элементов. А для уже созданных, вы можете на отдельной страничке написать код, который проходит по всем элемента инфоблока и делает то же самое: "проверять свойство элемента. Если Свойство МЕТАЛЛ == ЗОЛОТО, то выставлять активность для свойства АКЦИЯ". После того, как напишите скрипт, запустите его один раз. В итоге у всех золотых товаров будет стоять галочка акция.
Большое спасибо! Если я верно понял, то используя метод CIBlockElement::SetPropertyValues написать скрипт, который пробежится по элементам и проставит активность свойства "АКЦИЯ". Скажите только, а почему нельзя писать в result_modifier.php - чтобы скрипт не срабатывал каждый раз при заходе в каталог?
В result_modifier.php можно было бы сделать так: проверить свойство товара МЕТАЛЛ == ЗОЛОТО , если условие выполняется, то в $arResult для элемента добавить пометку, что товар по акции(без модификации свойства АКЦИЯ). Но не надо в result_modifier.php выполнять методы на изменение CIBlockElement::SetPropertyValues. Зачем вам лишние запросы к БД при каждой загрузке страницы, а если на страницу зайдет одновременно 1000 человек что будет с базой? =)