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