Устанавливает коллекцию полей, доступных для отбора. Внимание! Метод не доступен для отбора динамических списков (свойство Отбор объектов СправочникСписок.<Имя справочника>, ДокументСписок.<Имя документа> и т.д.).
Синтаксис
УстановитьДоступныеПоля(<Поля>)Полное описание, параметры и ограничения
Отбор.УстановитьДоступныеПоля (Filter.SetAvailableFields)
Отбор (Filter)
УстановитьДоступныеПоля (SetAvailableFields)
Доступен, начиная с версии 8.0.
Синтаксис:
УстановитьДоступныеПоля(<Поля>)
Параметры:
<Поля> (обязательный)
Тип: ПоляНастройки.
Коллекция полей, доступных для отбора.
Описание:
Устанавливает коллекцию полей, доступных для отбора.
Внимание! Метод не доступен для отбора динамических списков (свойство Отбор объектов СправочникСписок.<Имя справочника>, ДокументСписок.<Имя документа> и т.д.).
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:
// см. пример метода ПолучитьДоступныеПоля
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Настроить доступные поля и действительно отобрать книгу с коробкой
Получаем настоящую коллекцию допустимых полей из собственного построителя, выполняем все её операции и передаём её отбору. Итог проверяется по результату выполнения.
Где и как запускать
Полный модуль управляемой формы собственной учебной EPF: клиентский просмотр и серверное формирование отчёта.
Подготовка
Учебная внешняя обработка с пустой управляемой основной формой. Создайте команду УчебныйПример, кнопку команды и назначьте действие УчебныйПример.
Вставьте полный модуль урока: клиентский обработчик и серверную функцию. Каждый урок — отдельная копия модуля.
Откройте EPF в тонком клиенте Windows. Данные Книга/Ручка/Коробка создаются только в памяти; запрос урока с параметрами не читает таблицы базы.
ПостроительОтчета — существующий API для изучения/сопровождения старого кода. Это не СистемаКомпоновкиДанных и не рекомендация заменять ею современные отчёты.
Отдельная собственная конфигурация называется УчебнаяКонфигурацияСинтаксиса. Примеры создают только данные в памяти и собственный отчёт.
Используйте толстый клиент Windows 8.5.1.1343. УсловноеОформление в этих уроках относится к старому построителю, не к классу УсловноеОформлениеКомпоновкиДанных.
В исходных данных Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; Коробка: 2 × 30 = 60. Общий итог 860, Канцелярия 800, Упаковка 60.
&НаКлиенте
Процедура УчебныйПример(Команда)
ТабДок = СформироватьУчебныйОтчет();
ТабДок.ТолькоПросмотр = Истина;
ТабДок.Показать("Учебный ПостроительОтчета");
КонецПроцедуры
&НаСервере
Функция СформироватьУчебныйОтчет()
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Категория", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Цена", Новый ОписаниеТипов("Число"));
Данные.Колонки.Добавить("Сумма", Новый ОписаниеТипов("Число"));
Образцы = Новый Массив;
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Книга", 3, 250));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Канцелярия", "Ручка", 1, 50));
Образцы.Добавить(Новый Структура("Категория,Наименование,Количество,Цена", "Упаковка", "Коробка", 2, 30));
Для Каждого Образец Из Образцы Цикл
СтрокаДанных = Данные.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаДанных, Образец);
СтрокаДанных.Сумма = СтрокаДанных.Количество * СтрокаДанных.Цена;
КонецЦикла;
Описание = Новый ОписаниеИсточникаДанных(Данные);
Для Каждого Колонка Из Описание.Колонки Цикл
Колонка.Поле = Истина;
Колонка.Отбор = Истина;
Колонка.Порядок = Истина;
Колонка.Измерение = Колонка.Имя = "Категория";
КонецЦикла;
Построитель = Новый ПостроительОтчета;
Построитель.ИсточникДанных = Описание;
Построитель.АвтоДетальныеЗаписи = Ложь;
Построитель.ВыводитьДетальныеЗаписи = Истина;
Построитель.ВыводитьЗаголовокОтчета = Истина;
Построитель.ВыводитьОбщиеИтоги = Ложь;
Построитель.ВыводитьПодвалОтчета = Ложь;
Построитель.ВыводитьПодвалТаблицы = Ложь;
Построитель.ВыводитьШапкуТаблицы = Истина;
Построитель.ОтображатьСостояние = Ложь;
Построитель.ОбрабатыватьПрерываниеПользователя = Истина;
Построитель.ТекстЗаголовка = "Учебный отчёт — вымышленные данные";
Построитель.ЗаполнитьНастройки();
Построитель.ИзмеренияСтроки.Очистить();
Построитель.ИзмеренияКолонки.Очистить();
Построитель.ВыбранныеПоля.Очистить();
Построитель.ВыбранныеПоля.Добавить("Наименование", "Товар");
Построитель.ВыбранныеПоля.Добавить("Количество", "Количество");
Построитель.ВыбранныеПоля.Добавить("Сумма", "Сумма");
Доступные = Построитель.ДоступныеПоля;
Доступные.Очистить();
Категории = Новый СписокЗначений;
Категории.Добавить("Канцелярия");
Категории.Добавить("Упаковка");
Категория = Доступные.Добавить("Категория", "Учебная категория", Новый ОписаниеТипов("Строка"), Категории);
Сумма = Доступные.Добавить("Сумма", "Учебная сумма", Новый ОписаниеТипов("Число"));
Количество = Доступные.Вставить("Количество", "Учебное количество", Новый ОписаниеТипов("Число"), Новый СписокЗначений, 1);
Доступные.Добавить("Наименование", "Собственный товар", Новый ОписаниеТипов("Строка"));
ЦенаПроба = Доступные.Добавить("Цена", "Только проверка коллекции", Новый ОписаниеТипов("Число"));
Доступные.Сдвинуть(ЦенаПроба, -4);
Сообщить(Доступные.Получить(0) = ЦенаПроба);
Доступные.Удалить(ЦенаПроба);
Для Каждого Поле Из Доступные Цикл
Поле.Поле = Истина;
Поле.Отбор = Истина;
Поле.Порядок = Истина;
Поле.Измерение = Поле.Имя = "Категория";
КонецЦикла;
Количество.Представление = "Количество для учебного отбора";
Количество.ТипЗначения = Новый ОписаниеТипов("Число");
Сообщить(Доступные.Количество() = 4);
Сообщить(Доступные.Найти("Количество") = Количество);
Сообщить(Доступные.Индекс(Количество) = 1);
Сообщить(Категория.Имя = "Категория");
Сообщить(Категория.ПутьКДанным = "Категория");
Сообщить(Категория.Родитель = Неопределено);
Сообщить(Категория.Поля.Количество() = 0);
Сообщить(Категория.СписокЗначений.Количество() = 2);
Сообщить(Категория.Измерение И Категория.Поле И Категория.Отбор И Категория.Порядок);
Сообщить(Сумма.ТипЗначения.СодержитТип(Тип("Число")));
Сообщить(Количество.Представление = "Количество для учебного отбора");
Построитель.Отбор.УстановитьДоступныеПоля(Доступные);
Условие = Построитель.Отбор.Добавить("Количество", "КоличествоОтДвух", "Не менее двух");
Если Условие = Неопределено Тогда
ВызватьИсключение "Собственное поле количества не доступно для отбора";
КонецЕсли;
Условие.ВидСравнения = ВидСравнения.БольшеИлиРавно;
Условие.Установить(2, Истина);
Построитель.Выполнить();
Отобранные = Построитель.Результат.Выгрузить();
Сообщить(Отобранные.Количество() = 2);
Сообщить(Отобранные.Итог("Сумма") = 810);
ТабДок = Новый ТабличныйДокумент;
Построитель.Вывести(ТабДок);
Возврат ТабДок;
КонецФункции
Разбор по шагам
Сформировать плоские настройки собственного построителя. ПоляНастройки не создаётся конструктором: коллекция получается через ДоступныеПоля.
Очистить только свой набор допустимых полей и добавить категорию, сумму, количество и наименование с типами. Все выбранные поля отчёта остаются допустимыми; количество вставляется в позицию 1 последним аргументом.
Временно добавить цену, сдвинуть и удалить только этот элемент. Установить признаки разрешения поля, отбора, порядка и измерения.
Прочитать имя, путь, родителя, дочерние поля и список категорий. Корневой плоский дескриптор не имеет родителя и дочерних полей.
Передать допустимые поля отбору, установить Количество >= 2 и выполнить настоящий отчёт. Проверить два товара и сумму 810.
Как проверить результат
Четырнадцать булевых проверок дают Истина. В доступных полях после удаления пробы четыре элемента; список категорий содержит две собственные строки.
Отчёт оставляет Книгу 750 и Коробку 60, всего 810. Ручка с количеством 1 исключается.
Ожидаемый результат
Коллекция дескрипторов участвует в реальном отборе, а не выдаётся за данные или настройки неизвестного объекта.
На что обратить внимание
ПоляНастройки не имеет конструктора. Свойство ДоступныеПоля только читается как ссылка, а полученная собственная коллекция имеет методы изменения.
ПутьКДанным, Родитель, Поля и СписокЗначений только читаются. Список допустимых категорий передан при добавлении, не присваивается свойству.
Признак Отбор разрешает поле для настройки, но сам по себе не отбирает строки. Для результата нужны условие, вид сравнения и Выполнить.
Удалить и Сдвинуть этой коллекции принимают элемент, не индекс. Позиция Вставить — пятый параметр.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.