13 $arProperty = $rsProperty->Fetch();
20 if($arProperty[
"VERSION"]!=2)
24 $tableFields =
$DB->GetTableFields(
"b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"]);
30 INSERT INTO b_iblock_element_prop_m".$arProperty[
"IBLOCK_ID"].
"
31 (IBLOCK_ELEMENT_ID, IBLOCK_PROPERTY_ID, VALUE, VALUE_ENUM, VALUE_NUM
32 ".(isset($tableFields[
"DESCRIPTION_".$arProperty[
"ID"]])?
", DESCRIPTION":
"").
"
36 ,".$arProperty[
"ID"].
"
37 ,PROPERTY_".$arProperty[
"ID"].
"
38 ,".($arProperty[
"PROPERTY_TYPE"]==
"S" || $arProperty[
"PROPERTY_TYPE"]==
"s"?
40 "PROPERTY_".$arProperty[
"ID"]).
"
41 ,".($arProperty[
"PROPERTY_TYPE"]==
"S" || $arProperty[
"PROPERTY_TYPE"]==
"s"?
43 "PROPERTY_".$arProperty[
"ID"]).
"
44 ".(isset($tableFields[
"DESCRIPTION_".$arProperty[
"ID"]])?
",DESCRIPTION_".$arProperty[
"ID"]:
"").
"
46 b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
48 PROPERTY_".$arProperty[
"ID"].
" is not null
50 if(!
$DB->Query($strSql))
56 UPDATE b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
57 SET PROPERTY_".$arProperty[
"ID"].
"=null
58 ".(isset($tableFields[
"DESCRIPTION_".$arProperty[
"ID"]])?
", DESCRIPTION_".$arProperty[
"ID"].
"=null":
"").
"
60 if(!
$DB->Query($strSql))
65 if (
$DB->type ===
'MYSQL')
68 ALTER TABLE b_iblock_element_prop_s' . $arProperty[
'IBLOCK_ID'] .
'
69 CHANGE PROPERTY_' . $arProperty[
'ID'] .
' PROPERTY_' . $arProperty[
'ID'] .
' ' . self::getLongTextType() .
'
75 ALTER TABLE b_iblock_element_prop_s' . $arProperty[
'IBLOCK_ID'] .
'
76 ALTER COLUMN PROPERTY_' . $arProperty[
'ID'] .
' TYPE ' . self::getLongTextType() .
'
79 if(!
$DB->DDL($strSql))
93 $strType =
"numeric(18,4)";
99 $strType = self::getIntegerType();
102 $strType =
"varchar(255)";
105 UPDATE b_iblock_element_prop_s" . $arProperty[
"IBLOCK_ID"] .
"
106 SET PROPERTY_" . $arProperty[
"ID"] .
"=null
107 " . (isset($tableFields[
"DESCRIPTION_".$arProperty[
"ID"]]) ?
", DESCRIPTION_" . $arProperty[
"ID"] .
"=null":
"") .
"
109 if(!
$DB->Query($strSql))
115 if (
$DB->type ===
'MYSQL')
118 ALTER TABLE b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
119 CHANGE PROPERTY_".$arProperty[
"ID"].
" PROPERTY_".$arProperty[
"ID"].
" ".$strType.
"
125 ALTER TABLE b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
126 ALTER COLUMN PROPERTY_".$arProperty[
"ID"].
" TYPE ".$strType.
" USING PROPERTY_".$arProperty[
"ID"].
"::" .$strType.
"
129 if(!
$DB->DDL($strSql))
140 $strTrans =
"VALUE_NUM";
143 $strTrans =
"VALUE_ENUM";
146 $strTrans =
"SUBSTRING(VALUE, 0 ,255)";
152 $strSql = $helper->prepareCorrelatedUpdate(
153 'b_iblock_element_prop_s' . $arProperty[
"IBLOCK_ID"],
156 'PROPERTY_' .
$ID => $strTrans . (isset($tableFields[
'DESCRIPTION_' .
$ID]) ?
',DESCRIPTION_'.
$ID.
' = DESCRIPTION' :
'')
158 'b_iblock_element_prop_m' . $arProperty[
"IBLOCK_ID"] .
' AS EN',
159 'EN.IBLOCK_ELEMENT_ID = EL.IBLOCK_ELEMENT_ID AND EN.IBLOCK_PROPERTY_ID = ' .
$ID
161 if(!
$DB->Query($strSql))
168 b_iblock_element_prop_m".$arProperty[
"IBLOCK_ID"].
"
170 IBLOCK_PROPERTY_ID = ".
$ID.
"
172 if(!
$DB->Query($strSql))
182 &&
$arFields[
"PROPERTY_TYPE"]!=$arProperty[
"PROPERTY_TYPE"]
183 && $arProperty[
"MULTIPLE"]==
"N")
191 $strType =
"numeric(18,4)";
197 $strType = self::getIntegerType();
200 $strType =
"varchar(255)";
203 ALTER TABLE b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
204 CHANGE PROPERTY_".$arProperty[
"ID"].
" PROPERTY_".$arProperty[
"ID"].
" ".$strType.
"
206 if(!
$DB->DDL($strSql))
217 array_key_exists(
"WITH_DESCRIPTION",
$arFields)
218 &&
$arFields[
"WITH_DESCRIPTION"] != $arProperty[
"WITH_DESCRIPTION"]
222 if (
$arFields[
"WITH_DESCRIPTION"] ==
"Y")
224 if (!isset($tableFields[
"DESCRIPTION_".
$ID]))
227 ALTER TABLE b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
228 ADD DESCRIPTION_".
$ID.
" varchar(255)
230 if (!
$DB->DDL($strSql))
239 if (isset($tableFields[
"DESCRIPTION_".
$ID]))
243 FROM b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
244 WHERE DESCRIPTION_".
$ID.
" IS NOT NULL AND DESCRIPTION_".
$ID.
" <> ''
250 ALTER TABLE b_iblock_element_prop_s".$arProperty[
"IBLOCK_ID"].
"
251 DROP DESCRIPTION_".
$ID.
"
253 if (!
$DB->DDL($strSql))
297 $arFields[
'PROPERTY_TYPE'] ??= PropertyTable::TYPE_STRING;
303 $strType = self::getLongTextType();
309 case PropertyTable::TYPE_STRING:
312 case PropertyTable::TYPE_NUMBER:
313 $strType =
"numeric(18,4)";
315 case PropertyTable::TYPE_LIST:
316 case PropertyTable::TYPE_FILE:
317 case PropertyTable::TYPE_SECTION:
318 case PropertyTable::TYPE_ELEMENT:
319 $strType = self::getIntegerType();
322 $strType =
"varchar(255)";
326 ALTER TABLE b_iblock_element_prop_s".$arFields[
"IBLOCK_ID"].
"
327 ADD PROPERTY_".
$ID.
" ".$strType.
"
328 ".(
$arFields[
"WITH_DESCRIPTION"] ==
"Y"?
", ADD DESCRIPTION_".$ID.
" varchar(255)":
"").
"
331 return $DB->DDL($strSql,
true);