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

Создание своего типа данных

00 голосов
4
Здравствуйте.Создал свой тип данных, как было описано в http://therabbit.ru/blog/user_type_property_iblock_bitrix/ .Редактирую данные инфоблока в админке.
Мой тип данных базируется на типе данных E - т.е. связи к элементам.Все данные сохраняются отлично, если код сделать по аналогии с кодом из iblock модуля.

Код
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);">' .
                    '&nbsp;<span id="sp_' . md5($strHTMLControlName['VALUE']) . '_n' . $GLOBALS['local_counter'] . '" >' . $ar_res['NAME'] . '</span>';

            $GLOBALS['local_counter']++;
            return $return;
        }
 
Но, как видно из приведённого мной кода, есть два поля - KOLVO[...] и <input name="' . $strHTMLControlName['VALUE'] . '" .Поле <input name="' . $strHTMLControlName['VALUE'] . '"  сохраняется нормально кодом

Код
function ConvertToDB($arProperty, $value) {  
$return = array();
            if (intVal($value['VALUE']) > 0)
                $return['VALUE'] = intVal($value['VALUE']);
            else
                $return['VALUE'] = '';

            $GLOBALS['local_counter']++;

            return $return;
} 
Но как мне отловить значение KOLVO[...] при сохранении? Дело в том, что выборка элемента - это товар, а поле KOLVO[...] - это кол-во единиц товара. И мне как-то это дело надо хранить.
Попробовал сделать

Код
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; 
******************************************* 


Но почему-то выводится лишь !!!!!! да и в цикл while ($arTypes = $iblocks->GetNext()) { не попадает исполнение.Есть ли у кого-нибудь идеи, почему не входит в цикл?
Может есть другой вариант решения задачи?
спросил 21 Июнь, 13 от JIineage (180 баллов)

4 Ответы

00 голосов
Цитата
arturlwww пишет:
echo $arTypes['CODE'] . '\r\n';
die;
Попробуйте убрать строчку die;
ответил 21 Июнь, 13 от SoLovei (180 баллов)
00 голосов
Цитата
Евгений Иоффе пишет:
Цитата
arturlwww пишет:
echo $arTypes['CODE'] . '\r\n';
die;
Попробуйте убрать строчку die;
А причём тут это? smile:)Если вы внимательно прочитаете мой пост, то поймёте, что ваш коммент не несёт конструктивности и информативности smile:).
ответил 11 Июль, 13 от JIineage (180 баллов)
00 голосов
Цитата
arturlwww пишет:
Цитата
Евгений Иоффе пишет:
Цитата
arturlwww пишет:
echo $arTypes['CODE'] . '\r\n';
die;
Попробуйте убрать строчку die;
А причём тут это? smile:)Если вы внимательно прочитаете мой пост, то поймёте, что ваш коммент не несёт конструктивности и информативности smile:).

Ок. Вопрос был: "да и в цикл while ($arTypes = $iblocks->GetNext()) { не попадает исполнение.Есть ли у кого-нибудь идеи, почему не входит в цикл?"
Для того, чтобы попадал попробуйте убрать die();
ответил 15 Окт, 13 от SoLovei (180 баллов)
00 голосов
Цитата
Евгений Иоффе пишет:
Цитата
arturlwww пишет:
Цитата
Евгений Иоффе пишет:
Цитата
arturlwww пишет:
echo $arTypes['CODE'] . '\r\n';
die;
Попробуйте убрать строчку die;
А причём тут это? smile:)Если вы внимательно прочитаете мой пост, то поймёте, что ваш коммент не несёт конструктивности и информативности smile:).

Ок. Вопрос был: "да и в цикл while ($arTypes = $iblocks->GetNext()) { не попадает исполнение.Есть ли у кого-нибудь идеи, почему не входит в цикл?"
Для того, чтобы попадал попробуйте убрать die();
Ещё внимательнее, пожалуйста, прочитайте...
ответил 17 Янв, 14 от JIineage (180 баллов)

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

0 голосов
2 ответов
спросил 20 Апр, 14 от Antitelo (200 баллов)
0 голосов
3 ответов
спросил 06 Фев, 14 от Casey (100 баллов)
0 голосов
2 ответов
спросил 28 Окт, 13 от TRIAL (180 баллов)
0 голосов
7 ответов
спросил 17 Июль, 13 от lik (160 баллов)