Тип: ОграничениеИспользованияПоляСхемыКомпоновкиДанных. Указывает ограничение использования данного поля в настройках. Заметим, что использование поля определяется самим набором данных. С помощью данного свойства можно лишь ограничить использование, но нельзя разрешить то, что запрещено в описании набора данных. Например, если в запросе указано, что поле может быть выбрано, но не указано, что поле может быть использовано в отборе, то отсутствие ограничения на отбор в данном свойстве не делает данное поле доступным для использования в отборе.
Полное описание, параметры и ограничения
ПолеНабораДанныхСхемыКомпоновкиДанных.ОграничениеИспользования (DataCompositionSchemaDataSetField.UseRestriction)
ПолеНабораДанныхСхемыКомпоновкиДанных (DataCompositionSchemaDataSetField)
ОграничениеИспользования (UseRestriction)
Доступен, начиная с версии 8.1.
Использование:
Чтение и запись.
Описание:
Тип: ОграничениеИспользованияПоляСхемыКомпоновкиДанных.
Указывает ограничение использования данного поля в настройках.
Заметим, что использование поля определяется самим набором данных.
С помощью данного свойства можно лишь ограничить использование, но нельзя разрешить то, что запрещено в описании набора данных. Например, если в запросе указано, что поле может быть выбрано, но не указано, что поле может быть использовано в отборе, то отсутствие ограничения на отбор в данном свойстве не делает данное поле доступным для использования в отборе.
Доступность:
Сервер, толстый клиент, внешнее соединение.
Использование в версии:
Доступен, начиная с версии 8.1.
Методическая информация
Практические примеры
Запретить цену в группировке и сортировке, оставив её видимой
Современный способ настройки — свойства описания поля. Это ограничение возможностей редактора списка, не запрет чтения цены.
Где и как запускать
Модуль собственной управляемой формы внешней обработки. Вставляйте готовые процедуры с директивами на уровне модуля; каждый урок — в отдельной копии формы.
Подготовка
В учебной базе 8.5.1.1343 создайте новую внешнюю обработку УчебныйСписок85, пустую управляемую основную форму. Режим совместимости — 8.3.19 или выше. Не переделывайте список рабочей конфигурации.
В реквизитах формы добавьте Список типа ДинамическийСписок. Создайте один элемент ТаблицаФормы с именем ТаблицаТоваров и путём к данным Список. Колонки вручную не добавляйте: их создаёт код. Это не ТаблицаЗначений и не коллекция строк для Добавить().
В событиях формы назначьте ПриСозданииНаСервере одноимённой процедуре из примера. Не используйте одновременно другой обработчик заполнения этого списка.
При открытии код задаёт произвольный запрос из четырёх константных строк. Основная таблица не указана; таблицы базы, файлы и внешние сервисы не используются. Запись данных отсутствует.
Каждый раз открывайте отдельную копию формы. Автоматическое сохранение настроек отключено: старый пользовательский отбор не должен вмешиваться в упражнение.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Список.ПроизвольныйЗапрос = Истина;
Список.ОсновнаяТаблица = "";
Список.ДинамическоеСчитываниеДанных = Ложь;
Список.АвтоЗаполнениеДоступныхПолей = Истина;
Список.АвтоматическоеСохранениеПользовательскихНастроек = Ложь;
Список.ВидКлюча = ВидКлючаДинамическогоСписка.ЗначениеПоля;
КлючевыеПоля = Новый Массив;
КлючевыеПоля.Добавить("УчебныйНомер");
Список.ПоляКлюча = Новый ФиксированныйМассив(КлючевыеПоля);
Список.ТекстЗапроса = "ВЫБРАТЬ
| 1 КАК УчебныйНомер,
| ""Книга"" КАК Наименование,
| ""Канцелярия"" КАК Категория,
| 3 КАК Количество,
| 250 КАК Цена
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 2, ""Ручка"", ""Канцелярия"", 1, 30
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 3, ""Чай"", ""Продукты"", 2, 150
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 4, ""Вода"", ""Продукты"", 0, 70";
Элементы.ТаблицаТоваров.ТолькоПросмотр = Истина;
ОписаниеЦены = Список.Поля.Найти("Цена");
Если ОписаниеЦены = Неопределено Тогда
ВызватьИсключение "В описании списка не найдено поле Цена";
КонецЕсли;
ОписаниеЦены.Заголовок = "Цена, руб.";
ОписаниеЦены.ОграничениеИспользования.Группировка = Истина;
ОписаниеЦены.ОграничениеИспользования.Порядок = Истина;
ОписаниеЦены.ОграничениеИспользования.Условие = Ложь;
ОписаниеЦены.ОграничениеИспользования.Поле = Ложь;
ОписаниеЦены.Оформление.УстановитьЗначениеПараметра("Формат", "ЧДЦ=2");
Сообщить(ОписаниеЦены.ПутьКДанным = "Цена");
Сообщить(ОписаниеЦены.ОграничениеИспользования.Группировка);
Сообщить(ОписаниеЦены.ОграничениеИспользования.Порядок);
Сообщить(Не ОписаниеЦены.ОграничениеИспользования.Условие);
Сообщить(Не ОписаниеЦены.ОграничениеИспользования.Поле);
Для Каждого ИмяПоля Из СтрРазделить("УчебныйНомер,Наименование,Категория,Количество,Цена", ",") Цикл
Колонка = Элементы.Добавить("Товары" + ИмяПоля, Тип("ПолеФормы"), Элементы.ТаблицаТоваров);
Колонка.Вид = ВидПоляФормы.ПолеВвода;
Колонка.ПутьКДанным = "Список." + ИмяПоля;
Колонка.Заголовок = ИмяПоля;
КонецЦикла;
КонецПроцедуры
Разбор по шагам
Найти возвращает описание поля по пути к данным. Не подменяем всю коллекцию Поля новым объектом: свойство только для чтения, элементы настраиваются.
Истина у Группировка/Порядок означает запрет использования в этих настройках. Ложь у Поле/Условие оставляет выбор поля и отбор доступными.
Редактор списка должен убрать цену из доступных группировок и сортировок, но показывать значение и разрешать отбор. Это разные функции.
Как проверить результат
Пять проверок дают Истина.
В настройках списка Цена не предлагается для новой группировки и сортировки, но доступна для отбора. В строке Книги остаётся 250,00.
Ожидаемый результат
Адресное ограничение редактора списка при сохранении показов цены.
На что обратить внимание
Ограничения СКД не являются RLS и не защищают секретные поля.
Для стандартных и ключевых полей при основной таблице есть дополнительные ограничения платформы; этот урок использует собственный запрос без основной таблицы.
Не используйте Роль и ВыражениеПредставления описания поля в этом списке: они не поддерживаются.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.