Проблема решена. Использовался обработчик: OnAdminTabControlBegin отображавший лишь те свойства, которые указаны в списке пользовательского свойства категории: свойства элемента.
столкнулся с такой проблемой на bitrix добавляю свойство типа строка в инфоблок. Свойство добавилось. В _настройках_ формы редактирования элемента свойство есть. Но при добавлении его на любую из закладок оно не отображается. 45 свойств. тип свойства не имеет значения. версия битрикс 12.5
1 Открываю: Админка - магазин - правила работы с корзиной. Пытаюсь создать правило работы с корзиной - ставлю условие в зависимости от выбранной платёжной системы. Раскрываю список платёжных систем и тут сюрприз. В список попали не активные платёжные системы, а вот активные недавно добавленные туда не попали. 2 Поиск проблемы. Зашёл в платёжные системы - искать отличия. Отличий нет. Как окажется далее в админке даже не предполагается вывод некоторых важных свойств платёжных систем, а именно валюты и привязки к сайту. Хотя казалось бы Привязка к сайту должна задаваться выбором лица которому доступна эта платёжная система: например, Физ лицо (s1) 3 Причину охраняет кракен фразой: "не рекомендуется лезть в БД битрикса". В самой БД различия нашлись. Для вновь созданных платёжных систем не были установлены: привязка к сайту и валюта. Для этих записей значения полей были установлены в null.
Задача: При импорте из 1С у товаров обновить все поля кроме привязки к категории.
Пробовал писать свои классы и делать через обработку события добавления элемента. Но никак не получается без того, чтобы не залезть в /bitrix/modules/iblock/classes/mysql/iblockelement.php метод update, и не изменить строку if(is_set($arFields, "IBLOCK_SECTION" ] ) ; CIBlockElement::SetElementSection($ID, $arFields["IBLOCK_SECTION" ] ) ;
В надежде на - "Событие вызывается в методе CIBlockElement::Add до вставки информационного блока, и может быть использовано для отмены вставки или переопределения некоторых полей.": создаю обработчик события AddEventHandler('IBlock', 'OnBeforeIBlockElementUpdate', 'customElementUpdate');
function customElementUpdate(&$arFields) { if ($_SERVER['SCRIPT_NAME'] == '/bitrix/admin/iblock_element_edit.php') return true; $arFields['IBLOCK_SECTION_ID'] = [некоторое значение]; $arFields['IBLOCK_SECTION'] = [некоторое значение]; }
но эти значения затем всё равно перебиваются. Так как компонент отправляет к CIBlockCMLImport а тот в совю очередь обращается к CIBlockElement передавая ему то, что я передавать бы не хотел - ид_секции. Как решить данную задачу?