public function ToArray($fields = self::ALL, $notNull = array(), $forSQL = false, $row = null) { $row = $this->checkRow($row); $res = array(); $arFields = CSupportTools::prepareParamArray($fields, array_keys($this->_arFields[$row])); foreach ($arFields as $key => $name) { $fName = is_int($key) ? $name : $key; if (!array_key_exists($fName, $this->_arFieldsTypes)) { continue; } $v = $this->_arFields[$row][$fName]; $ft = $this->_arFieldsTypes[$fName]; if (in_array(self::ONLY_CHANGED, $notNull) && (!isset($this->_arModifiedFields[$row][$fName]) || $this->_arModifiedFields[$row][$fName] != true)) { continue; } elseif (in_array(self::NOT_NULL, $notNull) && $v === null) { continue; } elseif (in_array(self::NOT_DEFAULT, $notNull) && $v === $ft["DEF_VAL"]) { continue; } if ($forSQL) { if (array_key_exists("AUTO_CALCULATED", $ft)) { continue; } $res[$name] = self::ConvertForSQL($ft["TYPE"], $v); } else { $res[$name] = $v; } } return $res; }