&НаКлиенте
Процедура СегментПриИзменении(Элемент)
Сз = Новый СписокЗначений;
Если не Сегмент.Пустая() Тогда
МассивНом = ПолучитьСегмент();
Сз.ЗагрузитьЗначения(МассивНом);
КонецЕсли;
СсылкаОтбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
СсылкаОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СсылкаОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
СсылкаОтбор.ПравоеЗначение = Сз;
СсылкаОтбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;//Нельзя изменять
Если Сз.Количество()>0 и не Сегмент.Пустая() Тогда
СсылкаОтбор.Использование = Истина;
Элементы.Список.Отображение=ОтображениеТаблицы.Список;
Иначе
СсылкаОтбор.Использование = Ложь;
Список.Отбор.Элементы.Очистить();
Элементы.Список.Отображение=ОтображениеТаблицы.ИерархическийСписок;
КонецЕсли;
КонецПроцедуры
&НаСервере
функция ПолучитьСегмент()
З = Новый Запрос("ВЫБРАТЬ
| НоменклатураСегмента.Номенклатура
|ИЗ
| РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
|ГДЕ
| НоменклатураСегмента.Сегмент = &Сегмент");
З.УстановитьПараметр("Сегмент",Сегмент);
Возврат З.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура");
КонецФункции
Процедура СегментПриИзменении(Элемент)
Сз = Новый СписокЗначений;
Если не Сегмент.Пустая() Тогда
МассивНом = ПолучитьСегмент();
Сз.ЗагрузитьЗначения(МассивНом);
КонецЕсли;
СсылкаОтбор = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
СсылкаОтбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
СсылкаОтбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
СсылкаОтбор.ПравоеЗначение = Сз;
СсылкаОтбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;//Нельзя изменять
Если Сз.Количество()>0 и не Сегмент.Пустая() Тогда
СсылкаОтбор.Использование = Истина;
Элементы.Список.Отображение=ОтображениеТаблицы.Список;
Иначе
СсылкаОтбор.Использование = Ложь;
Список.Отбор.Элементы.Очистить();
Элементы.Список.Отображение=ОтображениеТаблицы.ИерархическийСписок;
КонецЕсли;
КонецПроцедуры
&НаСервере
функция ПолучитьСегмент()
З = Новый Запрос("ВЫБРАТЬ
| НоменклатураСегмента.Номенклатура
|ИЗ
| РегистрСведений.НоменклатураСегмента КАК НоменклатураСегмента
|ГДЕ
| НоменклатураСегмента.Сегмент = &Сегмент");
З.УстановитьПараметр("Сегмент",Сегмент);
Возврат З.Выполнить().Выгрузить().ВыгрузитьКолонку("Номенклатура");
КонецФункции