[QUOTE]
Кроме того, возможна привязка условий к свойствам товара.
[/QUOTE]Сам способ привязки не описан. Разберем его.
Для получения массива необходимых условий используем событие [I]OnBeforeDiscountUpdate[/I]:
[CODE]AddEventHandler("catalog", "OnBeforeDiscountUpdate", Array("CustomEventsClass", "OnBeforeDiscountUpdateHandler" ) );
class CustomEventsClass
{
function OnBeforeDiscountUpdateHandler($ID, $arFields){
$str = json_encode($arFields);
AddMessage2Log($str);
}
}[/CODE]Или, в случае проблем с кодировкой:
[CODE]class CustomEventsClass
{
function OnBeforeDiscountUpdateHandler($ID, $arFields){
array_walk_recursive($arFields, function(&$item, $key){
$item = utf8_encode($item);
});
$str = json_encode($arFields);
AddMessage2Log($str);
}
}[/CODE]В лог-файле при изменении скидки теперь будет записан весь массив [I]arFields[/I] для[I] CCatalogDiscount::Update. [/I]Например если мы поставим условие "Свойство X" содержит "123", то получим следующий JSON:
[CODE]{
"SITE_ID": "s1",
"ACTIVE": "Y",
"XML_ID": "",
"ACTIVE_FROM": "",
"ACTIVE_TO": "",
"RENEWAL": "N",
"NAME": "\u00c8\u00c1001818",
"SORT": "100",
"MAX_DISCOUNT": "0",
"VALUE_TYPE": "P",
"VALUE": "16",
"CURRENCY": "RUB",
"NOTES": "",
"PRIORITY": "1",
"LAST_DISCOUNT": "Y",
"GROUP_IDS": [
"2011"
],
"CATALOG_GROUP_IDS": [
"168"
],
"CONDITIONS": {
"CLASS_ID": "CondGroup",
"DATA": {
"All": "AND",
"True": "True"
},
"CHILDREN": [
{
"CLASS_ID": "CondIBSection",
"DATA": {
"logic": "Equal",
"value": "10634"
}
},
{
"CLASS_ID": "CondIBProp:11:75",
"DATA": {
"logic": "Contain",
"value": "123"
}
}
]
}
}
[/CODE]где наше условие записано как [I]CondIBProp:11:75 [/I](11 - ID инфоблока, 75 - ID свойства)