ПолеНабораДанныхСхемыКомпоновкиДанных.ОграничениеИспользования

Свойства · UseRestriction

Тип: ОграничениеИспользованияПоляСхемыКомпоновкиДанных. Указывает ограничение использования данного поля в настройках. Заметим, что использование поля определяется самим набором данных. С помощью данного свойства можно лишь ограничить использование, но нельзя разрешить то, что запрещено в описании набора данных. Например, если в запросе указано, что поле может быть выбрано, но не указано, что поле может быть использовано в отборе, то отсутствие ограничения на отбор в данном свойстве не делает данное поле доступным для использования в отборе.

Полное описание, параметры и ограничения

ПолеНабораДанныхСхемыКомпоновкиДанных.ОграничениеИспользования (DataCompositionSchemaDataSetField.UseRestriction)

ПолеНабораДанныхСхемыКомпоновкиДанных (DataCompositionSchemaDataSetField)

ОграничениеИспользования (UseRestriction)

Доступен, начиная с версии 8.1.

Использование:
Чтение и запись.
Описание:
Тип: ОграничениеИспользованияПоляСхемыКомпоновкиДанных.
Указывает ограничение использования данного поля в настройках.
Заметим, что использование поля определяется самим набором данных.
С помощью данного свойства можно лишь ограничить использование, но нельзя разрешить то, что запрещено в описании набора данных. Например, если в запросе указано, что поле может быть выбрано, но не указано, что поле может быть использовано в отборе, то отсутствие ограничения на отбор в данном свойстве не делает данное поле доступным для использования в отборе.
Доступность:

Сервер, толстый клиент, внешнее соединение.

Использование в версии:

Доступен, начиная с версии 8.1.

Методическая информация

Практические примеры

Запретить цену в группировке и сортировке, оставив её видимой

Современный способ настройки — свойства описания поля. Это ограничение возможностей редактора списка, не запрет чтения цены.

Где и как запускать

Модуль собственной управляемой формы внешней обработки. Вставляйте готовые процедуры с директивами на уровне модуля; каждый урок — в отдельной копии формы.

Подготовка

  1. В учебной базе 8.5.1.1343 создайте новую внешнюю обработку УчебныйСписок85, пустую управляемую основную форму. Режим совместимости — 8.3.19 или выше. Не переделывайте список рабочей конфигурации.

  2. В реквизитах формы добавьте Список типа ДинамическийСписок. Создайте один элемент ТаблицаФормы с именем ТаблицаТоваров и путём к данным Список. Колонки вручную не добавляйте: их создаёт код. Это не ТаблицаЗначений и не коллекция строк для Добавить().

  3. В событиях формы назначьте ПриСозданииНаСервере одноимённой процедуре из примера. Не используйте одновременно другой обработчик заполнения этого списка.

  4. При открытии код задаёт произвольный запрос из четырёх константных строк. Основная таблица не указана; таблицы базы, файлы и внешние сервисы не используются. Запись данных отсутствует.

  5. Каждый раз открывайте отдельную копию формы. Автоматическое сохранение настроек отключено: старый пользовательский отбор не должен вмешиваться в упражнение.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Список.ПроизвольныйЗапрос = Истина;
    Список.ОсновнаяТаблица = "";
    Список.ДинамическоеСчитываниеДанных = Ложь;
    Список.АвтоЗаполнениеДоступныхПолей = Истина;
    Список.АвтоматическоеСохранениеПользовательскихНастроек = Ложь;
    Список.ВидКлюча = ВидКлючаДинамическогоСписка.ЗначениеПоля;
    КлючевыеПоля = Новый Массив;
    КлючевыеПоля.Добавить("УчебныйНомер");

    Список.ПоляКлюча = Новый ФиксированныйМассив(КлючевыеПоля);
    Список.ТекстЗапроса = "ВЫБРАТЬ
|    1 КАК УчебныйНомер,
|    ""Книга"" КАК Наименование,
|    ""Канцелярия"" КАК Категория,
|    3 КАК Количество,
|    250 КАК Цена
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 2, ""Ручка"", ""Канцелярия"", 1, 30
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 3, ""Чай"", ""Продукты"", 2, 150
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 4, ""Вода"", ""Продукты"", 0, 70";
    Элементы.ТаблицаТоваров.ТолькоПросмотр = Истина;
    ОписаниеЦены = Список.Поля.Найти("Цена");
    Если ОписаниеЦены = Неопределено Тогда
        ВызватьИсключение "В описании списка не найдено поле Цена";
    КонецЕсли;
    ОписаниеЦены.Заголовок = "Цена, руб.";
    ОписаниеЦены.ОграничениеИспользования.Группировка = Истина;
    ОписаниеЦены.ОграничениеИспользования.Порядок = Истина;
    ОписаниеЦены.ОграничениеИспользования.Условие = Ложь;
    ОписаниеЦены.ОграничениеИспользования.Поле = Ложь;
    ОписаниеЦены.Оформление.УстановитьЗначениеПараметра("Формат", "ЧДЦ=2");
    Сообщить(ОписаниеЦены.ПутьКДанным = "Цена");
    Сообщить(ОписаниеЦены.ОграничениеИспользования.Группировка);
    Сообщить(ОписаниеЦены.ОграничениеИспользования.Порядок);
    Сообщить(Не ОписаниеЦены.ОграничениеИспользования.Условие);
    Сообщить(Не ОписаниеЦены.ОграничениеИспользования.Поле);

    Для Каждого ИмяПоля Из СтрРазделить("УчебныйНомер,Наименование,Категория,Количество,Цена", ",") Цикл
        Колонка = Элементы.Добавить("Товары" + ИмяПоля, Тип("ПолеФормы"), Элементы.ТаблицаТоваров);
        Колонка.Вид = ВидПоляФормы.ПолеВвода;
        Колонка.ПутьКДанным = "Список." + ИмяПоля;
        Колонка.Заголовок = ИмяПоля;
    КонецЦикла;
КонецПроцедуры

Разбор по шагам

  1. Найти возвращает описание поля по пути к данным. Не подменяем всю коллекцию Поля новым объектом: свойство только для чтения, элементы настраиваются.

  2. Истина у Группировка/Порядок означает запрет использования в этих настройках. Ложь у Поле/Условие оставляет выбор поля и отбор доступными.

  3. Редактор списка должен убрать цену из доступных группировок и сортировок, но показывать значение и разрешать отбор. Это разные функции.

Как проверить результат

  1. Пять проверок дают Истина.

  2. В настройках списка Цена не предлагается для новой группировки и сортировки, но доступна для отбора. В строке Книги остаётся 250,00.

Ожидаемый результат

Адресное ограничение редактора списка при сохранении показов цены.

На что обратить внимание

  1. Ограничения СКД не являются RLS и не защищают секретные поля.

  2. Для стандартных и ключевых полей при основной таблице есть дополнительные ограничения платформы; этот урок использует собственный запрос без основной таблицы.

  3. Не используйте Роль и ВыражениеПредставления описания поля в этом списке: они не поддерживаются.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.