Отбор компоновки данных в колонке таблицы формы

Использование отбора компоновки данных в шапке управляемой формы довольно распространено: создается реквизит с типом «Компоновщик настроек» и на форму выводится отбор в виде таблицы или поля. Но что делать, когда отбор компоновки требуется указывать в колонке таблицы (для каждой строки свой)? Компоновщик настроек недоступен в качестве типа колонки. В данной статье описывается опыт настройки отбора компоновки данных в колонке таблицы формы.

На самом деле все не так сложно. Колонку можно сделать с типом "ОтборКомпоновкиДанных". Основной вопрос здесь — как инициализировать доступные поля. Т.к. при попытке открыть колонку с типом "ОтборКомпоновкиДанных" и с не инициализированными доступными полями, происходит падение платформы.

Из данной ситуации вышел следующим образом:

  1. Создается реквизит формы с типом "КомпоновщикНастроекКомпоновкиДанных"
  2. Данный реквизит инициализируется, как и при создании формы на сервере
 // помещаем СКД во временное хранилище по идентификатору формы, чтобы
// СКД жила, пока открыта форма
АдресСКД = ПоместитьВоВременноеХранилище(СКД, УникальныйИдентификатор);

ИсточникДоступныхНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(АдресСКД);
КомпоновщикНастроек.Инициализировать(ИсточникДоступныхНастроек);

При начале редактирования инициализируются доступные поля отбора

Процедура ТабличнаяЧастьПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)

Если НоваяСтрока И НЕ Копирование Тогда

Элемент.ТекущиеДанные.Отбор = КомпоновщикНастроек.Настройки.Отбор;

КонецЕсли;

КонецПроцедуры

Основные сложности начинаются, когда эти отборы необходимо сохранить и восстанавливать где-нибудь в табличной части справочника. После чтения на сервере доступные поля отбора теряются при передаче на клиент. Изменение отбора в одной строке приводит к изменению отбора в других строках.

Выкрутился тем, что сохранял копию настроек компоновки данных и при необходимости инициализировал уже из копии настроек.

Приложил конфигурацию, в которой организовано хранение отборов компоновки данных в табличной части справочника. С возможностью редактирования, чтения, сохранения отборов. Версия 8.3.1 и выше.

1 Comment

  1. Arxxximed

    Интересная мысль, блин как раз бьюсь тоже над такой задачей. Странно что в поиске больше на УФ ответов на подобный вопрос не нашел

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *