На самом деле все не так сложно. Колонку можно сделать с типом "ОтборКомпоновкиДанных". Основной вопрос здесь — как инициализировать доступные поля. Т.к. при попытке открыть колонку с типом "ОтборКомпоновкиДанных" и с не инициализированными доступными полями, происходит падение платформы.
Из данной ситуации вышел следующим образом:
- Создается реквизит формы с типом "КомпоновщикНастроекКомпоновкиДанных"
- Данный реквизит инициализируется, как и при создании формы на сервере
// помещаем СКД во временное хранилище по идентификатору формы, чтобы
// СКД жила, пока открыта форма
АдресСКД = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);
ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД);
КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);
При начале редактирования инициализируются доступные поля отбора
Процедура ТабличнаяЧастьПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
Если НоваяСтрока И НЕ Копирование Тогда
Элемент.ТекущиеДанные.Отбор = КомпоновщикНастроек.Настройки.Отбор;
КонецЕсли;
КонецПроцедуры
Основные сложности начинаются, когда эти отборы необходимо сохранить и восстанавливать где-нибудь в табличной части справочника. После чтения на сервере доступные поля отбора теряются при передаче на клиент. Изменение отбора в одной строке приводит к изменению отбора в других строках.
Выкрутился тем, что сохранял копию настроек компоновки данных и при необходимости инициализировал уже из копии настроек.
Приложил конфигурацию, в которой организовано хранение отборов компоновки данных в табличной части справочника. С возможностью редактирования, чтения, сохранения отборов. Версия 8.3.1 и выше.
Интересная мысль, блин как раз бьюсь тоже над такой задачей. Странно что в поиске больше на УФ ответов на подобный вопрос не нашел