Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Изменение элемента ИБ до сохранения

00 голосов
4
У элементов ИБ одними из свойств являются: make (Производитель), model (модель), year (год выпуска).
Пытаюсь сделать, чтобы имя элемента инфоблока до его сохранения составлялось из этих свойств (чтобы не вводить вручную).
Например: 2005 Volvo S40 (год, марка, модель).

В файле ...before_save.php могу записать в $_POST['NAME'] любое значение - все ок.
Также могу записать в $PROP['year'] любой год - все ок.
А вот пытаюсь сделать следующее:
Код
$_POST['NAME'] = $PROP['year'];

Имя остается пустым smile:(

Мне кажется что $PROP является пустым до сохранения и нужно пользоваться функцией BXIBlockAfterSave(), чтобы изменять имя элемента уже ПОСЛЕ сохранения, когда PROP заполнен.
Подскажите, пожалуйста...
спросил 30 Янв, 14 от Taran7 (100 баллов)

4 Ответы

00 голосов
Алексей Лактионов, а свойства случайно не типа "список"?
ответил 02 Июнь, 14 от Delp (7,220 баллов)
00 голосов
$PROP не является пустым до сохранения, просто в качестве индекса массива используется не код поля а ID свойства, посмотреть значения массива можно при помощи команды

Код
echo "<pre>"; print_r($PROP); echo "</pre>"; die();
ответил 29 Сен, 14 от Dakost (580 баллов)
00 голосов
Цитата
S Lee пишет:
Алексей Лактионов, а свойства случайно не типа "список"?

Больше того, свойства make и year - это привязка к разделам, а свойство model - привязка к элементам.
Ну ладно, я даже пытаюсь сделать:
Цитата
$_POST['NAME'] = $PROP['vin'];

, где vin - это свойство типа строка - результат тот же - "Не введено название".
Цитата
Николай Рыжонин пишет:
$PROP не является пустым до сохранения, просто в качестве индекса массива используется не код поля а ID свойства, посмотреть значения массива можно при помощи команды

Код
echo "<pre>"; print_r($PROP); echo "</pre>"; die();

Пробовал в качестве индекса использовать ID свойства:
Код
$_POST['NAME'] = $PROP['149'];

Результат тот же самый - "Не введено название".
По поводу вывода. А как можно вывести весь массив каким-либо другим способом, ведь при выполнении файла ...before_save.php который вызывается перед сохранением, не видно вывод от echo.
ответил 01 Фев, 15 от Taran7 (100 баллов)
00 голосов
Ага! Получилось сделать вывод массива благодаря совету Николая Рыжонина.
Получается следующая картина:
Код
Array
(
    [148] => Array
        (
            [7542] => 3200
        )

    [149] => Array
        (
            [7543] => YV1MS382352078104
        )
...

Т.е. внутри самого ID свойства (148, 149) оказывается есть еще один массив, значения элемента которого являются уже значениями свойств элемента ИБ.
У меня получилось взять значение ВИН номера, когда я обратился вот так:
Код
$PROP['149']['7543']

Так вот тогда немного непонятно, что за 7452 и 7543 и как можно брать значения свойств не зная наперед эти числа?
ответил 15 Май, 15 от Taran7 (100 баллов)

Похожие вопросы

0 голосов
2 ответов
спросил 19 Май, 13 от Oro4imarU (160 баллов)
0 голосов
5 ответов
спросил 20 Ноя, 13 от xARCHx (240 баллов)
0 голосов
4 ответов
0 голосов
1 ответ