public static function ConvertFormatDiscount($intStep = 20, $intMaxExecutionTime = 15)
 {
     global $DBType;
     global $DB;
     global $APPLICATION;
     self::InitStep();
     $intStep = intval($intStep);
     if (0 >= $intStep) {
         $intStep = 20;
     }
     $startConvertTime = getmicrotime();
     $obDiscount = new CCatalogDiscount();
     $strTableName = '';
     switch (ToUpper($DBType)) {
         case 'MYSQL':
             $strTableName = 'b_catalog_discount';
             break;
         case 'MSSQL':
             $strTableName = 'B_CATALOG_DISCOUNT';
             break;
         case 'ORACLE':
             $strTableName = 'B_CATALOG_DISCOUNT';
             break;
     }
     if (!CCatalogDiscountConvertTmp::CreateTable()) {
         return false;
     }
     if (0 >= self::$intLastConvertID) {
         self::$intLastConvertID = CCatalogDiscountConvertTmp::GetLastID();
     }
     CTimeZone::Disable();
     self::$boolEmptyList = true;
     $rsDiscounts = CCatalogDiscount::GetList(array('ID' => 'ASC'), array('>ID' => self::$intLastConvertID, 'TYPE' => DISCOUNT_TYPE_STANDART, 'VERSION' => CATALOG_DISCOUNT_NEW_VERSION), false, array('nTopCount' => $intStep), array('ID', 'MODIFIED_BY', 'TIMESTAMP_X', 'CONDITIONS', 'NAME'));
     while ($arDiscount = $rsDiscounts->Fetch()) {
         $mxExist = CCatalogDiscountConvertTmp::IsExistID($arDiscount['ID']);
         if (false === $mxExist) {
             self::$intErrors++;
             return false;
         }
         self::$boolEmptyList = false;
         if (0 < $mxExist) {
             self::$intConverted++;
             self::$intConvertPerStep++;
             self::$intLastConvertID = $arDiscount['ID'];
             continue;
         }
         $arFields = array();
         $arFields['MODIFIED_BY'] = $arDiscount['MODIFIED_BY'];
         $arFields['CONDITIONS'] = $arDiscount['CONDITIONS'];
         $mxRes = $obDiscount->Update($arDiscount['ID'], $arFields);
         if (!$mxRes) {
             self::$intErrors++;
             $strError = '';
             if ($ex = $APPLICATION->GetException()) {
                 $strError = $ex->GetString();
             }
             if (empty($strError)) {
                 $strError = GetMessage('BT_MOD_CAT_DSC_FORMAT_ERR');
             }
             self::$arErrors[] = array('ID' => $arDiscount['ID'], 'NAME' => $arDiscount['NAME'], 'ERROR' => $strError);
             if (!CCatalogDiscountConvertTmp::SetID($arDiscount['ID'])) {
                 return false;
             }
             self::$intConverted++;
             self::$intConvertPerStep++;
             self::$intLastConvertID = $arDiscount['ID'];
         } else {
             $arTimeFields = array('~TIMESTAMP_X' => $DB->CharToDateFunction($arDiscount['TIMESTAMP_X'], "FULL"));
             $strUpdate = $DB->PrepareUpdate($strTableName, $arTimeFields);
             if (!empty($strUpdate)) {
                 $strQuery = "UPDATE " . $strTableName . " SET " . $strUpdate . " WHERE ID = " . $arDiscount['ID'] . " AND TYPE = " . DISCOUNT_TYPE_STANDART;
                 $DB->Query($strQuery, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);
             }
             if (!CCatalogDiscountConvertTmp::SetID($arDiscount['ID'])) {
                 return false;
             }
             self::$intConverted++;
             self::$intConvertPerStep++;
             self::$intLastConvertID = $arDiscount['ID'];
         }
         if ($intMaxExecutionTime > 0 && getmicrotime() - $startConvertTime > $intMaxExecutionTime) {
             break;
         }
     }
     CTimeZone::Enable();
     if ($intMaxExecutionTime > 2 * (getmicrotime() - $startConvertTime)) {
         self::$intNextConvertPerStep = $intStep * 2;
     } else {
         self::$intNextConvertPerStep = $intStep;
     }
     self::SaveStep();
     return true;
 }