//Собираем данные об установленном отборе
ЭлементыОтбора = Новый Соответствие;
Для Каждого ЭлементОтбора Из КомпоновщикНастроек.Настройки.Отбор.Элементы Цикл
Если Тип(ЭлементОтбора) = Тип("ЭлементОтбораКомпоновкиДанных") Тогда
ЭлементыОтбора.Вставить(ЭлементОтбора.ЛевоеЗначение, ЭлементОтбора);
КонецЕсли;
КонецЦикла;
//Устанавливаем отбор по полю МоёПоле1
ЭлементОтбора = ЭлементыОтбора.Получить(Новый ПолеКомпоновкиДанных("МоёПоле1"));
Если ЭлементОтбора = Неопределено Тогда
//Отбора по полю МоёПоле ещё нет, добавляем строку отбора
ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МоёПоле1");
КонецЕсли;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = МоёПоле1;
ЭлементОтбора.Использование = Истина;
//Устанавливаем отбор по полю МоёПоле2
ЭлементОтбора = ЭлементыОтбора.Получить(Новый ПолеКомпоновкиДанных("МоёПоле2"));
Если ЭлементОтбора = Неопределено Тогда
//Отбора по полю МоёПоле ещё нет, добавляем строку отбора
ЭлементОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("МоёПоле2");
КонецЕсли;
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.ПравоеЗначение = МоёПоле2;
ЭлементОтбора.Использование = Истина;
(2) Да мелочи, главное же нечто "умное" написать :)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший