[spoiler]
Привязка к элементам - наверное, второй по частоте использования тип свойства. Однако работать в админке с ним не очень удобно - в фильтрах надо набирать ID элемента, в форме редактирования (при работе со справочниками) внезапно обнаруживается, что нужная запись отсутствует, чтобы выбрать нужную запись, необходимо либо помнить ее ID, либо искать в списке всех элементов привязанного инфоблока. Вот эти проблемы и призвано решить новое свойство.
В первую очередь рассмотрим настройки:
Настройки свойства
Из настроек нас интересует, в первую очередь, интерфейс показа. Можно выбрать один из трех вариантов:
- строка с автозаполнением
- строка с автозаполнением и выбор из списка
- строка с автозаполнением и выбор из окна поиска
Базовый вариант - строка с автозаполнением
Кроме выбора интерфейса можно включить возможность добавления элементов в связанный инфоблок:
В форме редактирования элемента инфоблока свойство выглядит так:
строка с автозаполнением
строка с автозаполнением и выбор из списка
строка с автозаполнением и выбор из окна поиска
Если Вы включили возможность добавления элементов в связанный инфоблок, под строкой ввода будет кнопка добавления:
При нажатии во всплывающем окне откроется форма добавления элемента инфоблока
После создания элемента он будет выбран в поле свойства:
Автозаполнение работает и в фильтре списка элементов:
Результат:
Надеемся, это свойство облегчит работу в админке.
Очень важно, и очень многие этого давно ждали!
Евгений, планируются ли доработки по реализации связанных свойств? От банальной доступности редактирования свойства в зависимости от выбранного значения да/нет в связанном свойстве, до использования фильтров по полю связанного свойства (динамические списки итп)?
Как и связанных свойств, в общем-то.
зы. Ещё раз спасибо за "постанонс" =) Очень нужный тип, давно не хватало =)
Просто довольно часто возникает задача сделать зависимые поля. Ограничить значения списка в одном поле в зависимости от выбранного значения в другом поле. Это в основном касается различных проявлений типа "элементы в виде списка".
Простейший пример:
Два иблока - "Страны" и "Города", в "городах" свойство "привязка к элементу" из "стран". Создаём ещё один иблок, где нам потребуются свойства "Страна" и "Город", тип - привязка к элементу. В настройке свойства "Город" указываем, что оно зависимое от свойства "Страна" по такому-то полю, всё. При заведении элемента в нашем новом инфоблоке выбираем страну и получаем отфильтрованный по стране список элементов для выбора в поле "город".
Более сложный случай, но более универсальная реализация, закрывающая также первый пример - фильтр по совпадающим значениям полей/свойств связанных элементов:
Имеем два иблока, пусть это будут какие-нибудь "Статьи бюджетов" и "Подразделения", а также ещё имеем список какой-нибудь "Категории статей". Каждая статья имеет свойство типа список (да или пусть "элементы в виде списка", можем категории тоже иблоком сделать, не суть) "Категория" (значение из списка "Категории статей";), каждое подразделение имеет множественное свойство "доступные категории" (значения из того же списка). Делаем новый иблок, в котором нам нужны свойства "Подразделение" и "Статьи бюджета". В настройках свойства "Статьи бюджета" указываем, что оно связано полем "Категория" с полем "Доступные категории" свойства "Подразделение". Всё. Заводим новый элемент нашего нового иблока, выбираем подразделение и получаем отфильтрованный по доступным этому подразделению категориям список статей.
Как это может выглядеть? Как дополнительный блок в детальных настройках свойства, например "Настройка связи", в виде навроде такого: Поле: ___ текущего свойства связано со свойством: ___ по полю: ___. Или ещё круче - пишем в текстовое поле условие связи в духе current.#field# == #linkedproperty#.#field#. Тогда можно будет делать более крутые условия, а не просто на совпадение =) типа current.level >= linked.level, current.blabla IN linked.blabla =)
Эх мечты, мечты
Задача непростая, но наличие такой фичи было бы очень удобно, настроил свойство, настроил форму и отдал контентам заполнять, не надо для каждого такого случая городить свои формы/компоненты/шаблоны. По-сути, это вполне обычный функционал справочников/связанных реквизитов форм.
Просто будут ли разработки в таком направлении в обозримом будущем? В ближайшие там пару месяцев, например.
А то бывает числовое поле поменяешь на привязку к инфоблоку и все значения слетают.
Потом импортом накатывать приходится.
Единственное что смутило - при интерфейсе "строка с автозаполнением" не учитывается активность элементов, непонятно какой активный какой нет.
У нас клиент сразу же наткнулся на это - подобрал себе элементы, а они не выводятся, я стал голову ломать, а потом смотрю - они неактивные... Можно было бы настройку для свойства сделать или в списке обозначать как-то активность например.
пример кода добавления элемента с такими свойствами методом CIBlockElement::Add
Я предлагаю сделать какой-то аналог работы со справочниками в 1С для публички, расширить возможности текущего автокомплита. Появление автокомплита вообще - это большой плюс, хотя там есть куда ещё стремиться, на мой взгляд. Если у вас 5 элементов с одинаковым названием - как вы с ними будете разбираться? Запоминать ID каждого? Открывать во втором окне список элементов и искать там, какой? Ибо нельзя настроить перечень отображаемых полей в автокомплите.
Да, для этого есть ещё открывающаяся в отдельном окне форма на CAdminList, которую можно настроить и даже искать по ней, это хорошо. Для админки и продвинутых юзеров, для публички уже хуже и не так удобно. Инфоблок, например, поменять можно. Набитую уже в автокомплите строку она не подхватывает в фильтр.
Причём хотелось бы, чтобы поля, по которым производится поиск в автокомплите - настраивались, а не использовалось наименование только. У меня, например, справочник контрагентов, я хочу не только по названию поискать, а по свойству "ИНН", например.
Может это неактуально для БУСа, я не знаю. Но вы на рынке корпортала с "готовым решением", а пользователи таких ресурсов часто хотят хранить и удобно работать с кучей структурированной связанной информации. Причём в публичке. А текущие инструменты для этого пока слабоваты. Я уже упоминал концепцию справочников, работы со связанными данными, связанными полями. Буду упоминать и ещё.
Моя идея может и спорная, не возражаю, но тем не менее проблема удобства работы со связанными данными существует.
А этот блог страдает, потому что тут хоть какое-то продвижение вперёд было озвучено =)
Да, кстати, почему грид? Да потому что таблица, удобно сделать вывод нескольких полей, он уже есть (функционал гридов) и имеет почти все нужные табличных механизмы, а зачем постраничка - а чтоб не перегружать вывод, если совпадений много, но можно было их все просмотреть. И аякс, ессно =)
Подскажите как вывести свойство типа Привязка к элементам в форме добавления/редактирования элемента инфоблока bitrix:iblock element add form?
Не выводит, никак! А нужен он исключительно из-за формы его автозаполняемого списка. Спасибо
Где тот тип свойства, который отобразится в дефолтном компоненте bitrix:iblock element add form в составе модуля Добавление элементов? Подскажите точнее пожалуйста.
Я специально не стал колдовать над различными костылями и что-то переписывать, я поковырял всевозможные настройки в самих компонентах, в настройке инфоблока только не менял вид отображения - множественный список, хотя и его менял, но интересен именно вид с автозаполнением.
Ситуация такая, странная - из админки все прекрасно заполняется, в универсальных списках в форме lists.element.edit все запоняется и выводится, в отображении каталога, свойство так же выводится, хоть и в виде списка (оно там не нужно, но проверку проходит), а в форме добавления элементов нет, его просто нет в списке возможных отображаемых свойств. Хотелось выяснить что и как настроить изначально, по дефолту, многие идут другим путем, а я решил узнать здесь.
И ладно бы, если бы я это мог обойти, но я не могу это обойти). Я понимаю, что я чего-то не понимаю.
Значит, в основном инфоблоке (Каталог) создано свойство с типом Привязка к элементам с автозаполнением. Создан другой инфоблок (так же создавался в Типе инфоблоков Каталог, создавался в справочниках), в котором значения этого свойства размещены как элементы, первый (основной) инфоблок настраивается на служебный, в котором свойства.
Везде выводится, но в форме нет. Любое свойство, которое имеет тип Привязка к элементам или Привязка к разделам (кроме поля, привязка к разделам внутри инфоблока) в той или иной интерпретации не выводится в свойствах, возможных к выводу в форме.