Здравствуйте, уважаемые форумчане!

Возникла необходимость поместить на форму динамического списка справочника "Партнеры" в УТ контрол, позволяющий задавать отборы элементов списка по значениям дополнительных свойств. Каждая строка должна содержать дополнительное свойство, вид сравнения и значение отбора. Причем вызов команды "Настроить список" по кнопке "Еще" начальство не устраивает - хотят, чтобы на той же форме, где список, задавался и произвольный отбор по свойствам. Я решил, что для это цели подходит объект КомпоновщикНастроек.
Я вывел на форму списка контрол с путем "КомпоновщикНастроек.Настройки.Отбор".
И в него можно вносить строки, у которых поле "ЛевоеЗначение" соответствует реквизитам справочника "Партнеры", но есть необходимость ограничить набор полей отбора ТОЛЬКО дополнительными свойствами. И сделать это у меня никак не получается. Пытался задать событие ПередНачаломИзменения:

ТекущаяСтрока = Элемент.ТекущаяСтрока;

В переменной ТекущаяСтрока возвращается числовой параметр типа "ИдентификаторКомпоновкиДанных". По идее, хотелось бы прописать выбор из списка дополнительных свойств, результат которого после выбора проставить в поле "ЛевоеЗначение" редактируемой строки. Но как потом по этому идентификатору найти эту строку в отборе настроек компоновщика? Не нашел я такого поиска! пробовал по-другому: задать полю "ЛевоеЗначение" программно список выбора - тоже не получилось!
Может, кто-нибудь сталкивался с таким объектом - подскажите, пожалуйcта, возможно ли решить эту задачу?

Заранее благодарю
---
Наконец разобрался сам
---
Наконец разобрался сам
---
Поделись пожалуйста как реализовал?
---
Вот таким путем:

На контрол с путем "КомпоновщикНастроек.Настройки.Отбор" повесил событие ПередНачаломИзменения:

```1c
    &НаКлиенте
    Процедура КомпоновщикНастроекНастройкиОтборПередНачаломИзменения(Элемент, Отказ)

    ИдентификаторКомпоновкиДанных = Элемент.ТекущаяСтрока;
    Если ИдентификаторКомпоновкиДанных = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ИдентификаторКомпоновкиДанных = Элемент.ТекущаяСтрока;
    Если ТекущаяКолонка.Имя = "КомпоновщикНастроекНастройкиОтборЛевоеЗначение" Тогда
    Отказ = Истина;
    СписокРеквизитов = ПолучитьСписокРеквизитов();
    Если СписокРеквизитов.Количество() = 0 Тогда
    Сообщить("Не обнаружены реквизиты!");
    Возврат;
    КонецЕсли;

    //Запуск выбора реквизита
    Пар = Новый Структура("ИдентификаторКомпоновкиДанных", ИдентификаторКомпоновкиДанных);
    Оповещение = Новый ОписаниеОповещения("КомпоновщикНастроекНастройкиОтбор_ПослеВыбораРеквизита", ЭтотОбъект, Пар);
    ПоказатьВыборИзСписка(Оповещение, СписокРеквизитовПортретаКлиента, Элемент);
    КонецЕсли;

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

    //Обработка выбора реквизита - изменение значения ЛевоеЗначение редактируемой строки
    &НаКлиенте
    Процедура КомпоновщикНастроекНастройкиОтбор_ПослеВыбораРеквизита(РезВыбора, Пар) Экспорт

    Если РезВыбора = Неопределено Тогда
    Возврат;
    КонецЕсли;

    ИмяРеквизита = РезВыбора.Значение;
    ИдентификаторКомпоновкиДанных = Пар.ИдентификаторКомпоновкиДанных;

    //Проблема была в этом - я никак не мог получить элемент отбора, соответствующий текущей строке отбора настроек компоновщика, пока не нашел в описании эту функцию
    ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.ПолучитьОбъектПоИдентификатору(ИдентификаторКомпоновкиДанных);
    Если ЭлементОтбора <> "Неопределено" Тогда
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных(ИмяРеквизита);
    ЭлементОтбора.Использование = Истина;
    КонецЕсли;

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

    //Получение наименований дополнительных реквизитов, преобразованных для последующего приведения к полю компоновки данных
    &НаСервере
    Функция ПолучитьСписокРеквизитов()

    УстановитьПривилегированныйРежим(Истина);
    НаборСвойствКлиенты = УправлениеСвойствами.НаборСвойствПоИмени("Справочник_Партнеры_Клиенты");

    Запрос = Новый Запрос;

    Запрос.Текст =
    "ВЫБРАТЬ
    | ДополнительныеРеквизиты.Свойство.Наименование КАК Наименование
    |ИЗ
    | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
    |ГДЕ
    | НЕ ДополнительныеРеквизиты.Свойство.ПометкаУдаления
    | И ДополнительныеРеквизиты.Ссылка = &НаборСвойствКлиенты
    |";

    Запрос.Параметры.Вставить("НаборСвойствКлиенты", НаборСвойствКлиенты);
    Выборка = Запрос.Выполнить().Выбрать();

    Рез = Новый СписокЗначений;
    Пока Выборка.Следующий() Цикл
    Рез.Добавить("Партнер.[" + Выборка.Наименование + "]");
    КонецЦикла;
    Возврат Рез;

    КонецФункции
```

Для оптимизации можно при открытии формы получить список доп.реквизитов, чтобы не делать это каждый раз перед изменением строки
---
Прошу прощения, подправил запрос в функции ПолучитьСписокРеквизитов() - не все наименования воспринимались как поля компоновки данных:

```1c
    "ВЫБРАТЬ
    | ДополнительныеРеквизиты.Свойство КАК Свойство,
    | ПРЕДСТАВЛЕНИЕ(ДополнительныеРеквизиты.Свойство) КАК Наименование
    |ИЗ
    | Справочник.НаборыДополнительныхРеквизитовИСведений.ДополнительныеРеквизиты КАК ДополнительныеРеквизиты
    |ГДЕ
    | НЕ ДополнительныеРеквизиты.Свойство.ПометкаУдаления
    | И ДополнительныеРеквизиты.Ссылка = &НаборСвойствКлиенты
    |";
```