Можно конечно.
Нужно, чтобы вместо Вашего поля выдавался какой либо шаблон с нужной логикой, где при помощи static_call вы подгрузите склады.
У Вас будет 2 поля. Одно показывает шаблон, а второе скрытое, которое обрабатывается на 2-х хуках:
orm.afterload.КОРОТКОЕ_ИМЯ_ORM_ОБЪЕКТА - для того, чтобы получить список из подгруженного объекта
orm.afterwrite.КОРОТКОЕ_ИМЯ_ORM_ОБЪЕКТА - для того, чтобы сохранить список.
Где в отдельную таблицу сохраняется связь Ваш ORM объект-id склада
Например:
'warehouse_ids_arr' => new Type\ArrayList(array(
'description' => t('Массив складов'),
'template' => '%имяпапкимодуля%/forms/warehouses/warehouses.tpl'
)),
'warehouse_ids' => new Type\ArrayList(array(
'description' => t('Склады сериализованное поле'),
'visible' => false
)),
В шаблоне через static_call загружаем список.
{static_call var=mylist callback=['\Catalog\Model\WarehouseApi', 'staticSelectList']}
В этом же шаблону нужно будет вывести галочки и проверить отмеченные в поле warehouse_ids_arr.
В afterwrite хуке собираем галочки:
$orm['warehouse_ids'] = @serialize($orm['warehouse_ids_arr']);
В beforewrite хуке получаем отмеченные после сохранения:
$orm['warehouse_ids_arr'] = @unserialize($orm['warehouse_ids']);