static function getColumnList()
{
IncludeModuleLangFile(__FILE__);
$columnList = array(
'ID',
'ACCOUNT_NUMBER',
'ORDER_TOPIC',
'STATUS_ID',
'STATUS_SUB' => array(
'IS_WORK',
'IS_PAYED',
'IS_CANCELED'
),
'DATE_BILL_SHORT',
'DATE_FINISHED_SHORT',
'DATE_PAY_BEFORE_SHORT',
'PAY_VOUCHER_DATE_SHORT',
'PAY_VOUCHER_NUM',
'DATE_MARKED_SHORT',
'REASON_MARKED',
'PRICE',
'PRICE_WORK',
'PRICE_PAYED',
'PRICE_CANCELED',
'CURRENCY',
'PERSON_TYPE_ID',
'PAY_SYSTEM_ID',
'ASSIGNED_BY' => array(
'ID',
'SHORT_NAME',
'NAME',
'LAST_NAME',
'WORK_POSITION'
),
'INVOICE_UTS.DEAL_BY' => array(
'ID',
'TITLE',
'WEBFORM_ID',
'IS_RETURN_CUSTOMER_BL'
),
'INVOICE_UTS.CONTACT_BY' => array(
'ID',
'SHORT_NAME',
'NAME',
'LAST_NAME',
'SECOND_NAME',
'BIRTHDATE'
),
'INVOICE_UTS.COMPANY_BY' => array(
'ID',
'TITLE'
),
'InvoiceSpec:INVOICE' => array(
'ID',
'PRODUCT_ID',
'NAME',
'IBLOCK_ELEMENT.NAME',
'QUANTITY',
'PRICE',
'VAT_RATE_PRC',
'SUMMARY_PRICE'
)
);
foreach (array_keys(static::getUTMFieldMap()) as $fieldId)
{
$columnList['INVOICE_UTS.DEAL_BY'][] = $fieldId.self::UTM_FIELD_POSTFIX;
}
// Append user fields
$blPostfix = defined('self::UF_BOOLEAN_POSTFIX') ? self::UF_BOOLEAN_POSTFIX : '_BLINL';
self::prepareUFInfo();
if (is_array(self::$ufInfo) && count(self::$ufInfo) > 0)
{
if (isset(self::$ufInfo['CRM_INVOICE']) && is_array(self::$ufInfo['CRM_INVOICE'])
&& count(self::$ufInfo['CRM_INVOICE']) > 0)
{
foreach (self::$ufInfo['CRM_INVOICE'] as $ufKey => $uf)
{
if (($uf['USER_TYPE_ID'] !== 'datetime' && $uf['USER_TYPE_ID'] !== 'boolean')
|| $uf['MULTIPLE'] === 'Y'
|| mb_substr($ufKey, -mb_strlen(self::UF_DATETIME_SHORT_POSTFIX)) === self::UF_DATETIME_SHORT_POSTFIX
|| mb_substr($ufKey, -mb_strlen($blPostfix)) === $blPostfix)
{
$columnList[] = $ufKey;
}
}
}
}
return $columnList;
}