1с битрикс получить свойства элемента

Обновлено: 06.07.2024

Цитатник веб-разработчиков В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.

Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте "1С-Битрикс". .

Курс для разработчиков - продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.

Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:

  • Интерфейс программы - в главе Элементы управления курса Контент-менеджер.
  • Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
  • Информационные блоки - в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
  • Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
  • Работа с инструментами системы - в главе Работа с инструментами курса Администратор. Базовый.
  • Модуль Поиск - в главе Поиск курса Администратор. Базовый.
  • Вся информация по администрированию модулей размещена в курсах:
      - модули "1С-Битрикс: Управление сайтом" - модули "1С-Битрикс: Управление сайтом", связанные с коммерческой деятельностью в Интернете. - модули "1С-Битрикс: Корпоративный портал"

    Как построен курс

    Общепринятая градация квалификации разработчиков в рамках курса обозначает что:

    • Junior сможет создавать простые сайты работая со штатными компонентами и модифицируя их шаблоны.
    • Middle разработчик может работать с API Bitrix Framework.
    • Senior умеет работать над производительностью и безопасностью сайтов, создавать свои модули и компоненты.
    Примечание: Такое построение удобно для пошагового изучения принципов работы Bitrix Framework. По этому же принципу построены и тесты. Но такая структура не очень удобна для использования содержания курса как постоянного источника информации. Что бы переключить курс в режим Справочника, воспользуйтесь переключателем в верхнем правом углу шапки курса.

    Начальные требования к подготовке

    Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):

    • основами PHP, баз данных;
    • основами HTML, CSS.

    У нас часто спрашивают, сколько нужно заплатить

    Курс полностью бесплатен. Изучение курса, прохождение итоговых тестов и получение сертификатов - ничего из этого оплачивать не нужно.

    Ещё у нас есть Академия 1С-Битрикс, где можно обучиться на платной основе на курсах нашей компании либо наших партнёров.

    Баллы опыта

    В конце каждого урока есть кнопка Прочитано! . При клике на неё в Вашу итоговую таблицу опыта добавляется то количество баллов, которое указано в прочитанном После нажатия кнопки Прочитано! появится
    окно подтверждения:


    уроке.

    Периодически мы заново оцениваем сложность уроков, увеличивая/уменьшая число баллов, поэтому итоговое количество набранных Вами баллов может отличаться от максимально возможного. Не переживайте! Отличный результат - это если общее число набранных Вами баллов отличается от максимального на 1-2%.

    Тесты

    После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.

    Комментарии к статьям

    Что дальше?

    Одновременно с изучением курса Разработчик Bitrix Framework вам придётся обращаться к информации о других технологиях Bitrix Framework. Эта информация размещена в следующих курсах:

    Для преподавания оффлайн

    Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).

    Если нет интернета

    iPhone:
    FBReader
    CoolReader
    iBook
    Bookmate

    Windows:
    Calibre
    FBReader
    Icecream Ebook Reader
    Плагины для браузеров:
    EpuBReader – для Firefox
    Readium – для Google Chrome

    iOS
    Marvin for iOS
    ShortBook
    обновляются периодически, поэтому возможно некоторое отставание их от онлайновой версии курса.

    Подскажите, пожалуйста, каким образом я могу получить свойства элемента, которые сам создал. К примеру я выбираю все элементы из информационного блока, которые подходят по имени, а затем мне необходимо уже из этих элементов выбрать окончательные. Я предварительно создал в иблоке свойство, как к нему можно получить доступ?

    $firstitems = GetIBlockElementListEx("routers", Array(), Array(), Array("name"=>"asc"), false, Array("NAME"=>$_POST["firstpoint"]), Array(), false);
    $seconditems = GetIBlockElementListEx("routers", Array(), Array(), Array("name"=>"asc"), false, Array("NAME"=>$_POST["secondpoint"]), Array(), false);

    while ($arItem = $firstitems->GetNext())
    while ($SecarItem = $seconditems->GetNext())
    // Что здесь необходимо вызвать, что бы получить доступ?
    >
    >

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

    Сделал как вы подсказали - но ничего не выводит. Просмотрел массив print_r($SecarItem) на существование [PROPERTIES] - такового не оказалось. Свойство строка и немножественное. В чем может быть трабл?

    Пофиксил этот трабл только таким способом - вызвал свойства только для конкретного элемента.

    Вывод значения свойства типа список осуществляется точно также, только если он не множественный.
    Element["PROPERTIES"]["<имя свойства>"]["VALUE"]
    Цитата
    Вывод значения свойства типа список осуществляется точно также, только если он не множественный.
    Element["PROPERTIES"]["<имя свойства>"]["VALUE"]

    Может стоит быть хоть немного более внимательными с ответами.

    Все зависит от того, что вы хотите вывести.

    Если вы хотите вывести текущее значение не множественного свойства типа список, то используйте

    Если же вы хотите вывести все возможные значения свойства типа список, то нужно использовать другую конструкцию:

    А если вы хотите вывести значения множественного свойства типа список, то воспользуйтесь следующей конструкцией:

    Подскажите, пожалуйста, как вывести все значения множественного свойства типа строка. $Element["PROPERTIES"]["<имя свойства>"]["VALUE"]
    $Element - будет массивом, каждый элемент которого будет соответствовать значению свойства.
    $Element = Array("<1-е значение свойства>", "<2-е значение свойства>", "<3-е значение свойства>", "<4-е значение свойства>". )
    Цитата
    Anton Ezhkov пишет:
    $Element["PROPERTIES"]["<имя свойства>"]["VALUE"]
    $Element - будет массивом, каждый элемент которого будет соответствовать значению свойства.
    $Element = Array("<1-е значение свойства>", "<2-е значение свойства>", "<3-е значение свойства>", "<4-е значение свойства>". )

    То есть получается что в любом случае для получения множественных параметров нужно вызывать для каждой записи дополнительную функцию?

    Как это отразится если у меня 25000 записей надо их все вывести? А у каждой записи есть множественное поле в котором иногда бывает аж по 200 элементов??

    Предположим на сайт заходит 30-50 тыс. человек в день. для ускорения задачи будем выводить по 20 наименований на страницу. (хотя я не уверен что эти сильно спасет). мне кажется что это не позволит обрабатывать клиентов быстро.

    Как можно решить эту проблему?? можете ли вы доработать функцию CIBlockElement::GetList по уму, чтоб если она наталкивается на множественное значение, чтоб она формировала массив. Это очень критично при больших нагрузках! Я более чем уверен, что это можно сделать средствами PHP без пополнительных запросов к БД.

    Привязал к элементу множественное свойство "Пользователи",
    пробовал получить этим dev.1c-bitrix.ru/api_help/iblock/classes/ciblockel.
    $db_props = CIBlockElement::GetProperty($iblock_id, $el_id, Array("sort" => "asc"), Array("CODE" => "PERSONS"));
    ничего не получается.

    Как это правильно сделать?

    0f93e0a3ec7a44e2ac30e4ffe66e35e0.jpg
    6de59239c9cf48a2997baab038ac0e2d.jpg

    AlexeyGfi

    Используете правильную функцию. Там на странице и пример есть для получения значений множественного свойства: "Пример 2".

    С другой стороны: "ничего не получается" — слишком размыто.

    garinov

    с int iblock_id,
    int element_id - все понятно,

    а что это такое
    $IBLOCKS['brands'],
    $BRAND_ID,

    AlexeyGfi

    Вы про пример?
    IKSO_CUSTOM::$IBLOCKS['brands'] - код (ID) инфоблока
    $BRAND_ID - код элемента.
    Ваш вызов синтаксически верный (если множественное слово имеет символьный код буквально "PERSONS")

    Возможно проблема в том, как из выборки получить результат.
    В примере это делается в цикле
    while ($ob = $res->GetNext())

    garinov

    делаю так
    $db_props = CIBlockElement::GetProperty(18, 363, Array("sort" => "asc"), Array("CODE" => "PERSON")); //
    echo "".print_r($db_props)."";
    var_dump($db_props);

    $VALUES = array();
    $res = CIBlockElement::GetProperty(IKSO_CUSTOM::18, 363, "sort", "asc", Array("CODE" => "PERSONS"));
    while ($ob = $res->GetNext())
    var_dump($ob);
    $VALUES[] = $ob['VALUE'];
    >
    var_dump($res);

    для (катинка ниже). Пусто, ничего не ыводит.

    6de59239c9cf48a2997baab038ac0e2d.jpg

    AlexeyGfi

    //18 — ID инфоблока, 363 — код элемента?

    $VALUES = array();
    $res = CIBlockElement::GetProperty( 18, 363, array( "sort" => "asc" ), Array("CODE" => "PERSONS"));
    while ($ob = $res->GetNext()) $VALUES[] = $ob['VALUE'];
    >
    var_dump( $VALUES );

    ===
    А просто CIBlockElement::GetByID( 363 ) читает элемент?
    Что показывает?

    garinov

    $res = CIBlockElement::GetByID(5922);
    if($ar_res = $res->GetNext())
    echo "".print_r($ar_res['NAME'])."

    // теперь по ID элемента получаем в объект айдишники юзеров
    $db_props = CIBlockElement::GetProperty(18, 5922, Array("sort" => "asc"), Array("CODE" => "PERSON"));
    echo "".print_r($db_props)."";

    =====
    Один черт , показывает не то что нужно:

    Down Light? Down price!

    CIBlockPropertyResult Object
    (
    [IBLOCK_ID:protected] => 0
    [VERSION:protected] => 0
    [arProperties:protected] => Array
    (
    )

    [lastRes:protected] =>
    [extMode:protected] =>
    [arPropertyValuesID:protected] => Array
    (
    )

    [bModuleConnection] =>
    [bNodeConnection] =>
    [node_id] =>
    [obSlave] =>
    [cntQuery] => 0
    [timeQuery] => 0
    [arQueryDebug] => Array
    (
    )

    [NavRecordCountChangeDisable] =>
    [is_filtered] =>
    [nStartPage] => 0
    [nEndPage] => 0
    [resultObject] =>
    )

    Читайте также: