Здравствуйте.Создал свой тип данных, как было описано в [url]http://therabbit.ru/blog/user_type_property_iblock_bitrix/[/url] .Редактирую данные инфоблока в админке.
Мой тип данных базируется на типе данных E - т.е. связи к элементам.Все данные сохраняются отлично, если код сделать по аналогии с кодом из iblock модуля.
[CODE]function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName) {
global $USER;
if (!$USER->IsAdmin())
$strTemp = ' readonly ';
$db_res = CIBlockElement::GetByID($value['VALUE']);
$ar_res = $db_res->GetNext();
$return = '<input name="KOLVO[' . $GLOBALS['local_counter'] . ']" size="5" type="text">' .
$return = '<input name="' . $strHTMLControlName['VALUE'] . '" id="' . $strHTMLControlName['VALUE'] . '[n' . $GLOBALS['local_counter'] . ']" value="' . htmlspecialcharsex($value['VALUE']) . '" size="5" type="text" readonly="readonly">' .
'<input type="button" value="..." onC lick="jsUtils.OpenWindow (\'/bitrix/admin/iblock_element_search.php?lang=' . LANG . '&IBLOCK_ID=' . $property_fields["LINK_IBLOCK_ID"] . '&n=' . $strHTMLControlName['VALUE'] . '&k=n' . $GLOBALS['local_counter'] . '\', 600, 500);">' .
' <span id="sp_' . md5($strHTMLControlName['VALUE']) . '_n' . $GLOBALS['local_counter'] . '" >' . $ar_res['NAME'] . '</span>';
$GLOBALS['local_counter']++;
return $return;
}
[/CODE]Но, как видно из приведённого мной кода, есть два поля - KOLVO[...] и <input name="' . $strHTMLControlName['VALUE'] . '" .Поле <input name="' . $strHTMLControlName['VALUE'] . '" сохраняется нормально кодом
[CODE]function ConvertToDB($arProperty, $value) {
$return = array();
if (intVal($value['VALUE']) > 0)
$return['VALUE'] = intVal($value['VALUE']);
else
$return['VALUE'] = '';
$GLOBALS['local_counter']++;
return $return;
} [/CODE]Но как мне отловить значение KOLVO[...] при сохранении? Дело в том, что выборка элемента - это товар, а поле KOLVO[...] - это кол-во единиц товара. И мне как-то это дело надо хранить.
Попробовал сделать
[CODE]function ConvertToDB($arProperty, $value) {
if ($GLOBALS['local_counter'] == 0) {
CModule::IncludeModule("iblock");
$iblocks = GetIBlockList("my_data");
while ($arTypes = $iblocks->GetNext()) {
echo $arTypes['CODE'] . '\r\n';
die;
if ($arTypes['CODE'] == 'system_razdel') {
$IBLOCK_ID = $arTypes['ID'];
}
}
echo "!!!" . $IBLOCK_ID . "!!!";
die;
******************************************* [/CODE]
Но почему-то выводится лишь !!!!!! да и в цикл while ($arTypes = $iblocks->GetNext()) { не попадает исполнение.Есть ли у кого-нибудь идеи, почему не входит в цикл?
Может есть другой вариант решения задачи?