Шрифт
SIMAI: Составное свойство для информационных блоков
Play

SIMAI: Составное свойство для информационных блоков

Если вы сталкивались с ситуациями когда вам одного свойства в строку мало и хотелось бы хранить сразу несколько свойств в одной строке, то этот модуль для вас!

Модуль позволяет создать необходимые свойства и затем просто объединить их все в одно составное свойство. Вы можете объединять несколько обычных свойств в одну строку или несколько множественных свойств в одно составное множественное свойство - таблицу.

Основные инструкции по использованию и настройке Составных свойств можно найти на вкладке Установка.

ВНИМАНИЕ: составное свойство в текущей версии не поддерживает экспорт/импорт (csv, xml), а также копирование элементов! А если вам требуется сохранить данные инфоблоков от изменения или удаления, то рекомендуем вам модуль «SIMAI: Спасение данных», который может восстановить удаленные элементы инфоблоков или отдельные измененные свойства, в том числе файлы без необходимости восстановления всего бекапа.

Сергей Валитов, добрый день. Примеры массивов VALUE и DISPLAY_VALUE на вкладке "Установка" расписаны исходя из предположения, что применяется метод CIBlockElement::GetList. Для получения DISPLAY_VALUE к этому методу добавляется CIBlockFormatProperties::GetDisplayValue. Так это работает, например, в компоненте bitrix:news.list.

Если вы примените метод Bitrix\Iblock\Elements\Element. Table::getList, то получите только сериализованные значения составного свойства, которые будут для вас бесполезны. Если вы примените метод CIBlockProperty::GetList, то получите список самих свойств, а не их значений у элементов.

Если вы примените метод CIBlockElement::GetProperty, то можете получить для составного свойства массив VALUE, аналогичный описанному на вкладке "Установка".

Не подскажите, будет ли это свойство работать в бизнес процессах когда его использовать в присвоении типа переменно?

1.2.5 (10.03.2021) Автоматическая очистка лишних значений множ. файловых подсвойств при работе через API. 1.2.4 (04.03.2021) Дополнительные исправления для лучшей совместимости с административным интерфейсом Битрикс. 1.2.3 (06.02.2021) Дополнительные исправления для лучшей совместимости с административным интерфейсом Битрикс. 1.2.2 (12.11.2020) Исправления для лучшей совместимости с административным интерфейсом Битрикс. 1.2.1 (30.06.2020) Исправления для более корректной работы в рамках новых версий Битрикс. 1.2.0 (17.07.2019) Исправления для более корректной работы с списочными свойствами. 1.1.9 (05.07.2019) Исправления для более корректной работы с файловыми свойствами в списке элементов. 1.1.8 (05.07.2019) Исправления для более корректной работы с файловыми свойствами в списке элементов. 1.1.7 (13.11.2018) Исправления для более корректной работы с админ-панелью. 1.1.6 (15.10.2018) Еще дополнительные исправления для множественных файловых подсвойств. 1.1.5 (17.09.2018) Дополнительные исправления для множественных файловых подсвойств. 1.1.4 (16.09.2018) Устранены некоторые проблемы совместимости с php 7. 1.1.3 (28.08.2018) Исправление для возможной ошибки подсвойств. 1.1.2 (27.11.2017) Устранены некоторые проблемы при использовании файловых свойств в качестве подсвойств. "Новый" режим файловой загрузки внутри составного свойства принудительно отключен. 1.1.1 (14.11.2017) Устранены некоторые проблемы при использовании свойств типа "список" в режиме "Флажки" в качестве подсвойств. 1.1.0 (03.09.2017) Добавлена возможность устанавливать значения составного свойства через API битрикс (CIBlockElement::Add и CIBlockElement::Update). 1.0.4 (22.04.2017) Изменены некоторые визуальные стили для более компактного и удобного отображения полей редактирования. 1.0.3 (02.03.2017) Исправлены возможные проблемы с выдачей предупреждений при использовании составных свойств в элементах. 1.0.2 (19.01.2017) Исправлена проблема со сбросом значений подсвойств при редактировании элементов в режиме списка в адм. панели.

После установки модуля simai.complexprop становится доступным новый тип свойства инфоблоков - "составное свойство", которое позволяет объединять значения обычных свойств.

Выбрать свойства, участвующие в составном свойстве ("подсвойства"), можно в настройке составного свойства. Число подсвойств в данный момент ограничено: не более семи подсвойств.Внимание: эти свойства должны быть уже созданы, чтобы их можно было выбрать, т.е. одновременно создать составное свойство и его подсвойства нельзя!

На данный момент из стандартных типов НЕЛЬЗЯ использовать как подсвойства: видео, карты Яндекс и Гугл, привязку к элементам по xml, cчетчик, SCU-привязку к товарам. Перечисленные типы не будут предлагаться для выбора в качестве подсвойств, равно как и прочие составные свойства, если они есть (вложенность составных свойств невозможна).Остальные стандартные типы (строка, дата, список, файл, привязка к пользователю, к элементу и к разделу, в т.ч. с автозаполнением, текст/html и т.д.) использовать можно.

Использование нестандартных типов в качестве подсвойств не запрещено, но их корректная работа не гарантируется, особенно если они используют в своей работе поле описания.

Среди выбранных подсвойств в настройках составного свойства можно отметить обязательные для заполнения. В этом случае нельзя будет создать или отредактировать значение составного свойства, не заполнив такие обязательные подствойства.Использовать стандартный механизм обязательных свойств битрикса (в общем списке свойств) для подствойств тоже возможно, но категорически не рекомендуется, т.к. в этом случае нельзя будет полностью удалить значения составного свойства.Аналогично, крайне не рекомендуется отмечать само составное свойство как обязательное.

Составное свойство может быть как одиночным, так и множественным. Множественность подсвойств должна соответствовать правилу: множественное составное - множественные подсвойства, одиночное составное - одиночные подсвойства .Подсвойства, не удовлетворяющие этому правилу, не будут выведены среди полей редактирования значений составного свойства.

У множественного составного свойства значения добавляются с помощью кнопки "Добавить составное значение". Максимальное количество составных значений, добавляемых за раз, регулируется стандартным параметром "Количество полей для ввода новых множественных значений" в настройках составного свойства.Удаляются значения множественного составного свойства с помощью галочки "Удалить это составное значение", присутствующей у каждого существующего значения.Поля ввода подсвойств у каждого значения множественного составного свойства выглядят как поля одиночных свойств соответствующих типов.Поля описания подствойств используются в служебных целях, поэтому внутри составного свойства не выводятся. Если необходимо поле, аналогичное описанию для значения составного свойства, то это решается простым добавлением строкового подсвойства.

Настоятельно рекомендуется скрывать вывод полей подсвойств в форме редактирования элемента с помощью настроек вида этой формы, чтобы избежать дублирования ввода. В общем случае заполнение полей подсвойства внутри значений составного свойства имеет приоритет над заполнением полей этого же свойства вне составного свойства.

В одном инфоблоке может быть два и более составных свойств. Использование одних и тех же подствойств разными составными свойствами не допускается! Для предупреждения этого при настройке составных свойств не предлагаются к выбору подсвойства, уже задействованные в других составных свойствах.

Структура значений составного свойства при использовании в компонентах публичной части выглядит таким образом:

Array( [ELEMENT] => [SUB_VAL_IDS] => Array ( [] => , . ) [SUB_VALUES] => Array ( [] => , . )) Array( [ELEMENT] => [SUB_VALUES] => Array ( [] => , . )) Array( [0] => , [1] => , . ) Array( [0] => , [1] => , . )

Следует отметить, что если у множественного составного свойства задано только одно значение, то массив DISPLAY_VALUE будет аналогичен таковому для одиночного составного свойства.

Работа через API

Начиная с версии 1.1.0 есть возможность устанавливать значениясоставного свойства через API Битрикс, используя методы CIBlockElement::Add и CIBlockElement::Update.

Для этого нужно в массиве PROPERTY_VALUES указывать значения составного свойства -- обязательно в виде массива значений. Для каждого значения должен быть задан подмассив SUBPROP_VALUES, где должны быть указаны значения подсвойств, относящихся к данному значению составного свойства.При этом можно использовать как числовые иды свойств, так и их мнемонические коды.

Для метода CIBlockElement::Update массив PROPERTY_VALUES выглядит точно так же.

📎📎📎📎📎📎📎📎📎📎