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

Пользовательский тип свойства

00 голосов
0
Всем доброго времени суток.
Возникла необходимость создания пользовательского свойства типа "список", отличающегося от обычного только наличием дополнительной настройки - текстового поля, куда вводится описание свойства.
При интеграции его в 10-й битрикс все шикарно работало без каких-либо нареканий, в 11-м появилась проблема: при редактировании свойства в Информ. блоках для задания ему значений списка эти значения не сохраняются, в то время как в 10-м, повторюсь, это происходило. Информация в новом текстовом поле сохраняется.
Вопросы следующие:
из-за чего это происходит?
что нужно сделать, чтобы значения списка сохранялись? 
Код приведен ниже, он дописывается в bitrix/php_interface/init.php

Код
if (CModule::IncludeModule("iblock"))
{
   class filterEnumClass extends CIBlockPropertyElementList //класс, описывающий пользовательское свойство
   {
      function GetUserTypeDescription()
      {
         return array(
            'PROPERTY_TYPE'   => 'L',
            'USER_TYPE'       => 'Filter_enum',
            'DESCRIPTION'         => 'Фильтр_список',
            'PrepareSettings' => array('filterEnumClass','PrepareSettings'),
            'GetPropertyFieldHtml'  => array('filterEnumClass','GetPropertyFieldHtml'),
            'GetSettingsHTML' => array('filterEnumClass','GetSettingsHTML'),
            'CheckFields' => array('filterEnumClass','CheckFields'),
         );
      }

      
      function PrepareSettings($arUserField) 
      {
         return array(      
            "DESCRIPTION" => $arUserField["USER_TYPE_SETTINGS"]["DESCRIPTION"],
            );
      }
         
      function GetSettingsHTML($arUserField, $arHtmlControl, $bVarsFromForm)
      {
         $result = '';
         $value = $arUserField["USER_TYPE_SETTINGS"]["DESCRIPTION"];
         $result .= '
         <tr valign="top">
            <td>Описание свойства:</td>
            <td>
               <textarea name="'.$arHtmlControl["NAME"].'[DESCRIPTION]" rows="10" cols="40">'.$value.'</textarea>
            </td>
         </tr>
         ';
         return $result;
      }
         
      function CheckFields($arUserField, $value) 
      {
         $aMsg = array();
         return $aMsg;
      }
   
      function GetPropertyFieldHtml($arProperty, $value, $strHTMLControlName)
      {
         //функция отвечает за отображение в редактировании карточки товара - не думаю, что есть смысл ее тут приводить
      }
   }
}
AddEventHandler("iblock",'OnIBlockPropertyBuildList',array('filterEnumClass','GetUserTypeDescription'));
 
спросил 19 Авг, 13 от ilYA007OY (120 баллов)

Ваш ответ

Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

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

0 голосов
6 ответов
спросил 13 Сен, 13 от Itkkb (180 баллов)
0 голосов
3 ответов
спросил 10 Март, 14 от Texnik (1,860 баллов)
0 голосов
9 ответов
0 голосов
1 ответ
0 голосов
1 ответ