//создаём событие До оновления IBlock Section
AddEventHandler("iblock", "OnBeforeIBlockSectionUpdate", Array("CmlHelper", "onBeforeIBlockSectionUpdateHandler"));
public static function onBeforeIBlockSectionUpdateHandler(&$arFields)
{
//если блок неактивный, то выполняем то, что в скобках
if ($arFields['ACTIVE'] == 'N')
{
//выбираем все разделы из IBlock = 26, ID = id-разделов.
Вот эта запись для меня непонятна: '!UF_DO_NOT_DEACTIVATE' => false.
UF_DO_NOT_DEACTIVATE - пользовательское свойство у раздела, чекбокс - Да/ Нет.
Получается запись означает как НЕ выбирать разделы со свойством UF_DO_NOT_DEACTIVATE, у которых галочка убрана. То есть выбирать только те, у которых стоит галочка, что равноценно 'UF_DO_NOT_DEACTIVATE' => true. Но я много на форумах битрикса находил ответов на подобные темы, где также ставят знак восклицания. Помогите логически допереть этот момент.
$res = \CIBlockSection::getList([], [
'IBLOCK_ID' => 26,
'ID' => $arFields['ID'],
'!UF_DO_NOT_DEACTIVATE' => false
]);
//если записей больше нуля, то выполняем то, что в скобках.
if ($res->selectedRowsCount() > 0)
{
//деактивируем раздел.
unset($arFields['ACTIVE']);
}
}
}