С появлением Highload-блоков и вероятности появления десятков миллионов записей в HL-блоке хочется нормального свойства типа "Строка".
Этому (нормальности) мешает:
1. Невозможность указать допустимый размер свойства "Строка"
Когда вы создаете пользовательское свойство типа "Строка" - отрабатывает класс \CUserTypeString который создает колонку в базе данных по принципу:
switch(strtolower($DB->type))
{
case "mysql":
return "text";
case "oracle":
return "varchar2(2000 char)";
case "mssql":
return "varchar(2000)";
}
|
Т.е. даже если вы захотите хранить строку длиной 20 символов - все равно получите в разы больше.
Кроме того типовое свойство "Строка" как вы сами можете увидеть не позволит хранить более 2000 символов в Oracle и MS SQL. А ведь есть соответствующие типы.
2. Это можно было бы исправить если бы было событие OnAfterUpdate в классе CAllUserTypeEntity - но его нет. Так что даже в собственном типе свойства не получается невозможным сделать alt er table.
Хочется обратить внимание разработчиков 1С-Битрикс на комментарий в файле /bitrix/modules/main/classes/general/usertype.php на строке 563:
* Надо сказать, что для скорейшего завершения разработки было решено пока не реализовывать такую же гибкость как в инфоблоках (обойдемся пока без alter'ов и прочего).
Может пора вернуться и доделать те самые alter-ы и прочее (события)?