Как сделать работу с Highloadblock bitrix более сносной? Решение есть, описание сущности таблицы в ORM, данный способ позволит нам с легкостью обращаться к полям справочника как к любой другой таблице описанной в ORM, те доступны все методы Add, Update, GetList и т.д.

Только существует один ньюанс при обращении к полю множественного типа оно возращается строкой для которой надо применить unseriallize().

Подключить данный код можно в php_interface/init.php

Рекомендация — для каждой таблицы создавать отдельный файл с описанием сущности справочника

<?php
namespace Gw\Tables;
use Bitrix\Main\Entity\DataManager, Bitrix\Highloadblock as HL,
    Bitrix\Main\Entity\IntegerField,
    Bitrix\Main\Entity\TextField, Bitrix\Main\Entity\FloatField,
    Bitrix\Main\Loader, Bitrix\Highloadblock\HighloadBlockTable;
    Loader::includeModule('highloadblock');
/**
 * Class HlCityTable
 * @package Gw\Tables
 */

class HlStatusTable extends DataManager
{
    private static $id = 1;

    public static function getTableName()
    {
        return 'hl_order_status';
    }
    public static function getMap()
    {
        return array(
            'ID' => new IntegerField('ID', array(
                'primary' => true,
                'title' => "ID"
            )),
            'UF_ID' => new TextField('UF_ID', array(
                'title' => "UF_ID"
            )),
            'UF_COLOR' => new TextField('UF_COLOR', array(
                'title' => "UF_COLOR"
            )),
        );
    }
}