// Где-то в init.php // Услуги находятся в инфоблоке 3 // Свойство SHOW_ON_DOMAIN имеет ID==25 AddEventHandler("iblock", "OnAfterIBlockElementAdd", "UpdateServiceAvailability"); /** * Функция вызывается при создании нового элемента * Нужна для того, чтобы при добавлении нового поддоемна * услуги на нем автоматически были активными */ function UpdateServiceAvailability(&$arFields) { if ($arFields['IBLOCK_ID'] != 15) return; // Получаем данные для свойства SHOW_ON_DOMAIN $name = $arFields['NAME']; $XML_ID = $arFields['CODE'] . '.reteco.ru'; CModule::IncludeModule('iblock'); // Добавляем новое значение в список поддоменов CIBlockPropertyEnum::Add( array( 'PROPERTY_ID' => 25, 'VALUE' => $name, 'XML_ID' => $XML_ID, 'DEF' => 'Y' ) ); // Получаем ID нового свойства в списке // Методом перебора всез пунктов и сравнивания имени $subdomains = CIBlockPropertyEnum::GetList( array(), array("IBLOCK_ID" => 3, "CODE" => "SHOW_ON_DOMAIN") ); $newPropertyId; while($subdomain = $subdomains->GetNext()) { if ($subdomain['VALUE'] == $name) { $newPropertyId = $subdomain['ID']; } } // Получаем список всех услуг, ака элементов инфоблока 'Услуги' $elements = CIBlockElement::GetList( $arOrder = array(), $arFilter = array('IBLOCK_ID' => '3'), $arGroupBy = false, $arNavStartParams = false, $arSelectFields = array('IBLOCK_ID', 'ID') ); while ($el = $elements->GetNextElement()) { $el= $el->fields; // Получаем свойства перебираемой услуги $resProp = CIBlockElement::GetProperty( $el["IBLOCK_ID"], $el["ID"], false, false, array("CODE"=>"SHOW_ON_DOMAIN") ); // Массив со всеми выбранными свойствами // в который добавлено новое свойство $props = array($newPropertyId); while($prop = $resProp->Fetch()) { $props[] = $prop['VALUE']; } CIBlockElement::SetPropertyValuesEx( $el['ID'], $el['IBLOCK_ID'], array('SHOW_ON_DOMAIN' => $props) ); } }